github.com/klaytn/klaytn@v1.10.2/contracts/extbridge/ext_bridge.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 extbridge
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	"github.com/klaytn/klaytn"
    11  	"github.com/klaytn/klaytn/accounts/abi"
    12  	"github.com/klaytn/klaytn/accounts/abi/bind"
    13  	"github.com/klaytn/klaytn/blockchain/types"
    14  	"github.com/klaytn/klaytn/common"
    15  	"github.com/klaytn/klaytn/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = klaytn.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // AddressABI is the input ABI used to generate the binding from.
    30  const AddressABI = "[]"
    31  
    32  // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
    33  const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b7534b8b203852d9ead56352219b5abb5424533d9bb1b9cf84c0b1d15d11fee50029`
    34  
    35  // AddressBin is the compiled bytecode used for deploying new contracts.
    36  var AddressBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b7534b8b203852d9ead56352219b5abb5424533d9bb1b9cf84c0b1d15d11fee50029"
    37  
    38  // DeployAddress deploys a new Klaytn contract, binding an instance of Address to it.
    39  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    40  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
    41  	if err != nil {
    42  		return common.Address{}, nil, nil, err
    43  	}
    44  
    45  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AddressBin), backend)
    46  	if err != nil {
    47  		return common.Address{}, nil, nil, err
    48  	}
    49  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
    50  }
    51  
    52  // Address is an auto generated Go binding around a Klaytn contract.
    53  type Address struct {
    54  	AddressCaller     // Read-only binding to the contract
    55  	AddressTransactor // Write-only binding to the contract
    56  	AddressFilterer   // Log filterer for contract events
    57  }
    58  
    59  // AddressCaller is an auto generated read-only Go binding around a Klaytn contract.
    60  type AddressCaller struct {
    61  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    62  }
    63  
    64  // AddressTransactor is an auto generated write-only Go binding around a Klaytn contract.
    65  type AddressTransactor struct {
    66  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    67  }
    68  
    69  // AddressFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
    70  type AddressFilterer struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // AddressSession is an auto generated Go binding around a Klaytn contract,
    75  // with pre-set call and transact options.
    76  type AddressSession struct {
    77  	Contract     *Address          // Generic contract binding to set the session for
    78  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    79  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    80  }
    81  
    82  // AddressCallerSession is an auto generated read-only Go binding around a Klaytn contract,
    83  // with pre-set call options.
    84  type AddressCallerSession struct {
    85  	Contract *AddressCaller // Generic contract caller binding to set the session for
    86  	CallOpts bind.CallOpts  // Call options to use throughout this session
    87  }
    88  
    89  // AddressTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
    90  // with pre-set transact options.
    91  type AddressTransactorSession struct {
    92  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
    93  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    94  }
    95  
    96  // AddressRaw is an auto generated low-level Go binding around a Klaytn contract.
    97  type AddressRaw struct {
    98  	Contract *Address // Generic contract binding to access the raw methods on
    99  }
   100  
   101  // AddressCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   102  type AddressCallerRaw struct {
   103  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   104  }
   105  
   106  // AddressTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   107  type AddressTransactorRaw struct {
   108  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   109  }
   110  
   111  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   112  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   113  	contract, err := bindAddress(address, backend, backend, backend)
   114  	if err != nil {
   115  		return nil, err
   116  	}
   117  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   118  }
   119  
   120  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   121  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   122  	contract, err := bindAddress(address, caller, nil, nil)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	return &AddressCaller{contract: contract}, nil
   127  }
   128  
   129  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   130  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   131  	contract, err := bindAddress(address, nil, transactor, nil)
   132  	if err != nil {
   133  		return nil, err
   134  	}
   135  	return &AddressTransactor{contract: contract}, nil
   136  }
   137  
   138  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   139  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   140  	contract, err := bindAddress(address, nil, nil, filterer)
   141  	if err != nil {
   142  		return nil, err
   143  	}
   144  	return &AddressFilterer{contract: contract}, nil
   145  }
   146  
   147  // bindAddress binds a generic wrapper to an already deployed contract.
   148  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   149  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   150  	if err != nil {
   151  		return nil, err
   152  	}
   153  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   154  }
   155  
   156  // Call invokes the (constant) contract method with params as input values and
   157  // sets the output to result. The result type might be a single field for simple
   158  // returns, a slice of interfaces for anonymous returns and a struct for named
   159  // returns.
   160  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   161  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   162  }
   163  
   164  // Transfer initiates a plain transaction to move funds to the contract, calling
   165  // its default method if one is available.
   166  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   167  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   168  }
   169  
   170  // Transact invokes the (paid) contract method with params as input values.
   171  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   172  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   173  }
   174  
   175  // Call invokes the (constant) contract method with params as input values and
   176  // sets the output to result. The result type might be a single field for simple
   177  // returns, a slice of interfaces for anonymous returns and a struct for named
   178  // returns.
   179  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   180  	return _Address.Contract.contract.Call(opts, result, method, params...)
   181  }
   182  
   183  // Transfer initiates a plain transaction to move funds to the contract, calling
   184  // its default method if one is available.
   185  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   186  	return _Address.Contract.contract.Transfer(opts)
   187  }
   188  
   189  // Transact invokes the (paid) contract method with params as input values.
   190  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   191  	return _Address.Contract.contract.Transact(opts, method, params...)
   192  }
   193  
   194  // BridgeFeeABI is the input ABI used to generate the binding from.
   195  const BridgeFeeABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
   196  
   197  // BridgeFeeBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   198  const BridgeFeeBinRuntime = ``
   199  
   200  // BridgeFeeFuncSigs maps the 4-byte function signature to its string representation.
   201  var BridgeFeeFuncSigs = map[string]string{
   202  	"488af871": "feeOfERC20(address)",
   203  	"c263b5d6": "feeOfKLAY()",
   204  	"b3f00674": "feeReceiver()",
   205  }
   206  
   207  // BridgeFee is an auto generated Go binding around a Klaytn contract.
   208  type BridgeFee struct {
   209  	BridgeFeeCaller     // Read-only binding to the contract
   210  	BridgeFeeTransactor // Write-only binding to the contract
   211  	BridgeFeeFilterer   // Log filterer for contract events
   212  }
   213  
   214  // BridgeFeeCaller is an auto generated read-only Go binding around a Klaytn contract.
   215  type BridgeFeeCaller struct {
   216  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   217  }
   218  
   219  // BridgeFeeTransactor is an auto generated write-only Go binding around a Klaytn contract.
   220  type BridgeFeeTransactor struct {
   221  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   222  }
   223  
   224  // BridgeFeeFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
   225  type BridgeFeeFilterer struct {
   226  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   227  }
   228  
   229  // BridgeFeeSession is an auto generated Go binding around a Klaytn contract,
   230  // with pre-set call and transact options.
   231  type BridgeFeeSession struct {
   232  	Contract     *BridgeFee        // Generic contract binding to set the session for
   233  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   234  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   235  }
   236  
   237  // BridgeFeeCallerSession is an auto generated read-only Go binding around a Klaytn contract,
   238  // with pre-set call options.
   239  type BridgeFeeCallerSession struct {
   240  	Contract *BridgeFeeCaller // Generic contract caller binding to set the session for
   241  	CallOpts bind.CallOpts    // Call options to use throughout this session
   242  }
   243  
   244  // BridgeFeeTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   245  // with pre-set transact options.
   246  type BridgeFeeTransactorSession struct {
   247  	Contract     *BridgeFeeTransactor // Generic contract transactor binding to set the session for
   248  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
   249  }
   250  
   251  // BridgeFeeRaw is an auto generated low-level Go binding around a Klaytn contract.
   252  type BridgeFeeRaw struct {
   253  	Contract *BridgeFee // Generic contract binding to access the raw methods on
   254  }
   255  
   256  // BridgeFeeCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   257  type BridgeFeeCallerRaw struct {
   258  	Contract *BridgeFeeCaller // Generic read-only contract binding to access the raw methods on
   259  }
   260  
   261  // BridgeFeeTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   262  type BridgeFeeTransactorRaw struct {
   263  	Contract *BridgeFeeTransactor // Generic write-only contract binding to access the raw methods on
   264  }
   265  
   266  // NewBridgeFee creates a new instance of BridgeFee, bound to a specific deployed contract.
   267  func NewBridgeFee(address common.Address, backend bind.ContractBackend) (*BridgeFee, error) {
   268  	contract, err := bindBridgeFee(address, backend, backend, backend)
   269  	if err != nil {
   270  		return nil, err
   271  	}
   272  	return &BridgeFee{BridgeFeeCaller: BridgeFeeCaller{contract: contract}, BridgeFeeTransactor: BridgeFeeTransactor{contract: contract}, BridgeFeeFilterer: BridgeFeeFilterer{contract: contract}}, nil
   273  }
   274  
   275  // NewBridgeFeeCaller creates a new read-only instance of BridgeFee, bound to a specific deployed contract.
   276  func NewBridgeFeeCaller(address common.Address, caller bind.ContractCaller) (*BridgeFeeCaller, error) {
   277  	contract, err := bindBridgeFee(address, caller, nil, nil)
   278  	if err != nil {
   279  		return nil, err
   280  	}
   281  	return &BridgeFeeCaller{contract: contract}, nil
   282  }
   283  
   284  // NewBridgeFeeTransactor creates a new write-only instance of BridgeFee, bound to a specific deployed contract.
   285  func NewBridgeFeeTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeFeeTransactor, error) {
   286  	contract, err := bindBridgeFee(address, nil, transactor, nil)
   287  	if err != nil {
   288  		return nil, err
   289  	}
   290  	return &BridgeFeeTransactor{contract: contract}, nil
   291  }
   292  
   293  // NewBridgeFeeFilterer creates a new log filterer instance of BridgeFee, bound to a specific deployed contract.
   294  func NewBridgeFeeFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeFeeFilterer, error) {
   295  	contract, err := bindBridgeFee(address, nil, nil, filterer)
   296  	if err != nil {
   297  		return nil, err
   298  	}
   299  	return &BridgeFeeFilterer{contract: contract}, nil
   300  }
   301  
   302  // bindBridgeFee binds a generic wrapper to an already deployed contract.
   303  func bindBridgeFee(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   304  	parsed, err := abi.JSON(strings.NewReader(BridgeFeeABI))
   305  	if err != nil {
   306  		return nil, err
   307  	}
   308  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   309  }
   310  
   311  // Call invokes the (constant) contract method with params as input values and
   312  // sets the output to result. The result type might be a single field for simple
   313  // returns, a slice of interfaces for anonymous returns and a struct for named
   314  // returns.
   315  func (_BridgeFee *BridgeFeeRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   316  	return _BridgeFee.Contract.BridgeFeeCaller.contract.Call(opts, result, method, params...)
   317  }
   318  
   319  // Transfer initiates a plain transaction to move funds to the contract, calling
   320  // its default method if one is available.
   321  func (_BridgeFee *BridgeFeeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   322  	return _BridgeFee.Contract.BridgeFeeTransactor.contract.Transfer(opts)
   323  }
   324  
   325  // Transact invokes the (paid) contract method with params as input values.
   326  func (_BridgeFee *BridgeFeeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   327  	return _BridgeFee.Contract.BridgeFeeTransactor.contract.Transact(opts, method, params...)
   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 (_BridgeFee *BridgeFeeCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   335  	return _BridgeFee.Contract.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 (_BridgeFee *BridgeFeeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   341  	return _BridgeFee.Contract.contract.Transfer(opts)
   342  }
   343  
   344  // Transact invokes the (paid) contract method with params as input values.
   345  func (_BridgeFee *BridgeFeeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   346  	return _BridgeFee.Contract.contract.Transact(opts, method, params...)
   347  }
   348  
   349  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
   350  //
   351  // Solidity: function feeOfERC20(address ) view returns(uint256)
   352  func (_BridgeFee *BridgeFeeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
   353  	var (
   354  		ret0 = new(*big.Int)
   355  	)
   356  	out := ret0
   357  	err := _BridgeFee.contract.Call(opts, out, "feeOfERC20", arg0)
   358  	return *ret0, err
   359  }
   360  
   361  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
   362  //
   363  // Solidity: function feeOfERC20(address ) view returns(uint256)
   364  func (_BridgeFee *BridgeFeeSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
   365  	return _BridgeFee.Contract.FeeOfERC20(&_BridgeFee.CallOpts, arg0)
   366  }
   367  
   368  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
   369  //
   370  // Solidity: function feeOfERC20(address ) view returns(uint256)
   371  func (_BridgeFee *BridgeFeeCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
   372  	return _BridgeFee.Contract.FeeOfERC20(&_BridgeFee.CallOpts, arg0)
   373  }
   374  
   375  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
   376  //
   377  // Solidity: function feeOfKLAY() view returns(uint256)
   378  func (_BridgeFee *BridgeFeeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
   379  	var (
   380  		ret0 = new(*big.Int)
   381  	)
   382  	out := ret0
   383  	err := _BridgeFee.contract.Call(opts, out, "feeOfKLAY")
   384  	return *ret0, err
   385  }
   386  
   387  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
   388  //
   389  // Solidity: function feeOfKLAY() view returns(uint256)
   390  func (_BridgeFee *BridgeFeeSession) FeeOfKLAY() (*big.Int, error) {
   391  	return _BridgeFee.Contract.FeeOfKLAY(&_BridgeFee.CallOpts)
   392  }
   393  
   394  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
   395  //
   396  // Solidity: function feeOfKLAY() view returns(uint256)
   397  func (_BridgeFee *BridgeFeeCallerSession) FeeOfKLAY() (*big.Int, error) {
   398  	return _BridgeFee.Contract.FeeOfKLAY(&_BridgeFee.CallOpts)
   399  }
   400  
   401  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
   402  //
   403  // Solidity: function feeReceiver() view returns(address)
   404  func (_BridgeFee *BridgeFeeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
   405  	var (
   406  		ret0 = new(common.Address)
   407  	)
   408  	out := ret0
   409  	err := _BridgeFee.contract.Call(opts, out, "feeReceiver")
   410  	return *ret0, err
   411  }
   412  
   413  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
   414  //
   415  // Solidity: function feeReceiver() view returns(address)
   416  func (_BridgeFee *BridgeFeeSession) FeeReceiver() (common.Address, error) {
   417  	return _BridgeFee.Contract.FeeReceiver(&_BridgeFee.CallOpts)
   418  }
   419  
   420  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
   421  //
   422  // Solidity: function feeReceiver() view returns(address)
   423  func (_BridgeFee *BridgeFeeCallerSession) FeeReceiver() (common.Address, error) {
   424  	return _BridgeFee.Contract.FeeReceiver(&_BridgeFee.CallOpts)
   425  }
   426  
   427  // BridgeFeeERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeFee contract.
   428  type BridgeFeeERC20FeeChangedIterator struct {
   429  	Event *BridgeFeeERC20FeeChanged // Event containing the contract specifics and raw log
   430  
   431  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   432  	event    string              // Event name to use for unpacking event data
   433  
   434  	logs chan types.Log      // Log channel receiving the found contract events
   435  	sub  klaytn.Subscription // Subscription for errors, completion and termination
   436  	done bool                // Whether the subscription completed delivering logs
   437  	fail error               // Occurred error to stop iteration
   438  }
   439  
   440  // Next advances the iterator to the subsequent event, returning whether there
   441  // are any more events found. In case of a retrieval or parsing error, false is
   442  // returned and Error() can be queried for the exact failure.
   443  func (it *BridgeFeeERC20FeeChangedIterator) Next() bool {
   444  	// If the iterator failed, stop iterating
   445  	if it.fail != nil {
   446  		return false
   447  	}
   448  	// If the iterator completed, deliver directly whatever's available
   449  	if it.done {
   450  		select {
   451  		case log := <-it.logs:
   452  			it.Event = new(BridgeFeeERC20FeeChanged)
   453  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   454  				it.fail = err
   455  				return false
   456  			}
   457  			it.Event.Raw = log
   458  			return true
   459  
   460  		default:
   461  			return false
   462  		}
   463  	}
   464  	// Iterator still in progress, wait for either a data or an error event
   465  	select {
   466  	case log := <-it.logs:
   467  		it.Event = new(BridgeFeeERC20FeeChanged)
   468  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   469  			it.fail = err
   470  			return false
   471  		}
   472  		it.Event.Raw = log
   473  		return true
   474  
   475  	case err := <-it.sub.Err():
   476  		it.done = true
   477  		it.fail = err
   478  		return it.Next()
   479  	}
   480  }
   481  
   482  // Error returns any retrieval or parsing error occurred during filtering.
   483  func (it *BridgeFeeERC20FeeChangedIterator) Error() error {
   484  	return it.fail
   485  }
   486  
   487  // Close terminates the iteration process, releasing any pending underlying
   488  // resources.
   489  func (it *BridgeFeeERC20FeeChangedIterator) Close() error {
   490  	it.sub.Unsubscribe()
   491  	return nil
   492  }
   493  
   494  // BridgeFeeERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeFee contract.
   495  type BridgeFeeERC20FeeChanged struct {
   496  	Token common.Address
   497  	Fee   *big.Int
   498  	Raw   types.Log // Blockchain specific contextual infos
   499  }
   500  
   501  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
   502  //
   503  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
   504  func (_BridgeFee *BridgeFeeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeFeeERC20FeeChangedIterator, error) {
   505  
   506  	var tokenRule []interface{}
   507  	for _, tokenItem := range token {
   508  		tokenRule = append(tokenRule, tokenItem)
   509  	}
   510  	var feeRule []interface{}
   511  	for _, feeItem := range fee {
   512  		feeRule = append(feeRule, feeItem)
   513  	}
   514  
   515  	logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
   516  	if err != nil {
   517  		return nil, err
   518  	}
   519  	return &BridgeFeeERC20FeeChangedIterator{contract: _BridgeFee.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
   520  }
   521  
   522  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
   523  //
   524  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
   525  func (_BridgeFee *BridgeFeeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
   526  
   527  	var tokenRule []interface{}
   528  	for _, tokenItem := range token {
   529  		tokenRule = append(tokenRule, tokenItem)
   530  	}
   531  	var feeRule []interface{}
   532  	for _, feeItem := range fee {
   533  		feeRule = append(feeRule, feeItem)
   534  	}
   535  
   536  	logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
   537  	if err != nil {
   538  		return nil, err
   539  	}
   540  	return event.NewSubscription(func(quit <-chan struct{}) error {
   541  		defer sub.Unsubscribe()
   542  		for {
   543  			select {
   544  			case log := <-logs:
   545  				// New log arrived, parse the event and forward to the user
   546  				event := new(BridgeFeeERC20FeeChanged)
   547  				if err := _BridgeFee.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
   548  					return err
   549  				}
   550  				event.Raw = log
   551  
   552  				select {
   553  				case sink <- event:
   554  				case err := <-sub.Err():
   555  					return err
   556  				case <-quit:
   557  					return nil
   558  				}
   559  			case err := <-sub.Err():
   560  				return err
   561  			case <-quit:
   562  				return nil
   563  			}
   564  		}
   565  	}), nil
   566  }
   567  
   568  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
   569  //
   570  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
   571  func (_BridgeFee *BridgeFeeFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeFeeERC20FeeChanged, error) {
   572  	event := new(BridgeFeeERC20FeeChanged)
   573  	if err := _BridgeFee.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
   574  		return nil, err
   575  	}
   576  	return event, nil
   577  }
   578  
   579  // BridgeFeeFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeFee contract.
   580  type BridgeFeeFeeReceiverChangedIterator struct {
   581  	Event *BridgeFeeFeeReceiverChanged // Event containing the contract specifics and raw log
   582  
   583  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   584  	event    string              // Event name to use for unpacking event data
   585  
   586  	logs chan types.Log      // Log channel receiving the found contract events
   587  	sub  klaytn.Subscription // Subscription for errors, completion and termination
   588  	done bool                // Whether the subscription completed delivering logs
   589  	fail error               // Occurred error to stop iteration
   590  }
   591  
   592  // Next advances the iterator to the subsequent event, returning whether there
   593  // are any more events found. In case of a retrieval or parsing error, false is
   594  // returned and Error() can be queried for the exact failure.
   595  func (it *BridgeFeeFeeReceiverChangedIterator) Next() bool {
   596  	// If the iterator failed, stop iterating
   597  	if it.fail != nil {
   598  		return false
   599  	}
   600  	// If the iterator completed, deliver directly whatever's available
   601  	if it.done {
   602  		select {
   603  		case log := <-it.logs:
   604  			it.Event = new(BridgeFeeFeeReceiverChanged)
   605  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   606  				it.fail = err
   607  				return false
   608  			}
   609  			it.Event.Raw = log
   610  			return true
   611  
   612  		default:
   613  			return false
   614  		}
   615  	}
   616  	// Iterator still in progress, wait for either a data or an error event
   617  	select {
   618  	case log := <-it.logs:
   619  		it.Event = new(BridgeFeeFeeReceiverChanged)
   620  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   621  			it.fail = err
   622  			return false
   623  		}
   624  		it.Event.Raw = log
   625  		return true
   626  
   627  	case err := <-it.sub.Err():
   628  		it.done = true
   629  		it.fail = err
   630  		return it.Next()
   631  	}
   632  }
   633  
   634  // Error returns any retrieval or parsing error occurred during filtering.
   635  func (it *BridgeFeeFeeReceiverChangedIterator) Error() error {
   636  	return it.fail
   637  }
   638  
   639  // Close terminates the iteration process, releasing any pending underlying
   640  // resources.
   641  func (it *BridgeFeeFeeReceiverChangedIterator) Close() error {
   642  	it.sub.Unsubscribe()
   643  	return nil
   644  }
   645  
   646  // BridgeFeeFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeFee contract.
   647  type BridgeFeeFeeReceiverChanged struct {
   648  	FeeReceiver common.Address
   649  	Raw         types.Log // Blockchain specific contextual infos
   650  }
   651  
   652  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
   653  //
   654  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
   655  func (_BridgeFee *BridgeFeeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeFeeFeeReceiverChangedIterator, error) {
   656  
   657  	var feeReceiverRule []interface{}
   658  	for _, feeReceiverItem := range feeReceiver {
   659  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
   660  	}
   661  
   662  	logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
   663  	if err != nil {
   664  		return nil, err
   665  	}
   666  	return &BridgeFeeFeeReceiverChangedIterator{contract: _BridgeFee.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
   667  }
   668  
   669  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
   670  //
   671  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
   672  func (_BridgeFee *BridgeFeeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
   673  
   674  	var feeReceiverRule []interface{}
   675  	for _, feeReceiverItem := range feeReceiver {
   676  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
   677  	}
   678  
   679  	logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
   680  	if err != nil {
   681  		return nil, err
   682  	}
   683  	return event.NewSubscription(func(quit <-chan struct{}) error {
   684  		defer sub.Unsubscribe()
   685  		for {
   686  			select {
   687  			case log := <-logs:
   688  				// New log arrived, parse the event and forward to the user
   689  				event := new(BridgeFeeFeeReceiverChanged)
   690  				if err := _BridgeFee.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
   691  					return err
   692  				}
   693  				event.Raw = log
   694  
   695  				select {
   696  				case sink <- event:
   697  				case err := <-sub.Err():
   698  					return err
   699  				case <-quit:
   700  					return nil
   701  				}
   702  			case err := <-sub.Err():
   703  				return err
   704  			case <-quit:
   705  				return nil
   706  			}
   707  		}
   708  	}), nil
   709  }
   710  
   711  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
   712  //
   713  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
   714  func (_BridgeFee *BridgeFeeFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeFeeFeeReceiverChanged, error) {
   715  	event := new(BridgeFeeFeeReceiverChanged)
   716  	if err := _BridgeFee.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
   717  		return nil, err
   718  	}
   719  	return event, nil
   720  }
   721  
   722  // BridgeFeeKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeFee contract.
   723  type BridgeFeeKLAYFeeChangedIterator struct {
   724  	Event *BridgeFeeKLAYFeeChanged // Event containing the contract specifics and raw log
   725  
   726  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   727  	event    string              // Event name to use for unpacking event data
   728  
   729  	logs chan types.Log      // Log channel receiving the found contract events
   730  	sub  klaytn.Subscription // Subscription for errors, completion and termination
   731  	done bool                // Whether the subscription completed delivering logs
   732  	fail error               // Occurred error to stop iteration
   733  }
   734  
   735  // Next advances the iterator to the subsequent event, returning whether there
   736  // are any more events found. In case of a retrieval or parsing error, false is
   737  // returned and Error() can be queried for the exact failure.
   738  func (it *BridgeFeeKLAYFeeChangedIterator) Next() bool {
   739  	// If the iterator failed, stop iterating
   740  	if it.fail != nil {
   741  		return false
   742  	}
   743  	// If the iterator completed, deliver directly whatever's available
   744  	if it.done {
   745  		select {
   746  		case log := <-it.logs:
   747  			it.Event = new(BridgeFeeKLAYFeeChanged)
   748  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   749  				it.fail = err
   750  				return false
   751  			}
   752  			it.Event.Raw = log
   753  			return true
   754  
   755  		default:
   756  			return false
   757  		}
   758  	}
   759  	// Iterator still in progress, wait for either a data or an error event
   760  	select {
   761  	case log := <-it.logs:
   762  		it.Event = new(BridgeFeeKLAYFeeChanged)
   763  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   764  			it.fail = err
   765  			return false
   766  		}
   767  		it.Event.Raw = log
   768  		return true
   769  
   770  	case err := <-it.sub.Err():
   771  		it.done = true
   772  		it.fail = err
   773  		return it.Next()
   774  	}
   775  }
   776  
   777  // Error returns any retrieval or parsing error occurred during filtering.
   778  func (it *BridgeFeeKLAYFeeChangedIterator) Error() error {
   779  	return it.fail
   780  }
   781  
   782  // Close terminates the iteration process, releasing any pending underlying
   783  // resources.
   784  func (it *BridgeFeeKLAYFeeChangedIterator) Close() error {
   785  	it.sub.Unsubscribe()
   786  	return nil
   787  }
   788  
   789  // BridgeFeeKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeFee contract.
   790  type BridgeFeeKLAYFeeChanged struct {
   791  	Fee *big.Int
   792  	Raw types.Log // Blockchain specific contextual infos
   793  }
   794  
   795  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
   796  //
   797  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
   798  func (_BridgeFee *BridgeFeeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeFeeKLAYFeeChangedIterator, error) {
   799  
   800  	var feeRule []interface{}
   801  	for _, feeItem := range fee {
   802  		feeRule = append(feeRule, feeItem)
   803  	}
   804  
   805  	logs, sub, err := _BridgeFee.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
   806  	if err != nil {
   807  		return nil, err
   808  	}
   809  	return &BridgeFeeKLAYFeeChangedIterator{contract: _BridgeFee.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
   810  }
   811  
   812  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
   813  //
   814  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
   815  func (_BridgeFee *BridgeFeeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeFeeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
   816  
   817  	var feeRule []interface{}
   818  	for _, feeItem := range fee {
   819  		feeRule = append(feeRule, feeItem)
   820  	}
   821  
   822  	logs, sub, err := _BridgeFee.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
   823  	if err != nil {
   824  		return nil, err
   825  	}
   826  	return event.NewSubscription(func(quit <-chan struct{}) error {
   827  		defer sub.Unsubscribe()
   828  		for {
   829  			select {
   830  			case log := <-logs:
   831  				// New log arrived, parse the event and forward to the user
   832  				event := new(BridgeFeeKLAYFeeChanged)
   833  				if err := _BridgeFee.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
   834  					return err
   835  				}
   836  				event.Raw = log
   837  
   838  				select {
   839  				case sink <- event:
   840  				case err := <-sub.Err():
   841  					return err
   842  				case <-quit:
   843  					return nil
   844  				}
   845  			case err := <-sub.Err():
   846  				return err
   847  			case <-quit:
   848  				return nil
   849  			}
   850  		}
   851  	}), nil
   852  }
   853  
   854  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
   855  //
   856  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
   857  func (_BridgeFee *BridgeFeeFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeFeeKLAYFeeChanged, error) {
   858  	event := new(BridgeFeeKLAYFeeChanged)
   859  	if err := _BridgeFee.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
   860  		return nil, err
   861  	}
   862  	return event, nil
   863  }
   864  
   865  // BridgeHandledRequestsABI is the input ABI used to generate the binding from.
   866  const BridgeHandledRequestsABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
   867  
   868  // BridgeHandledRequestsBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   869  const BridgeHandledRequestsBinRuntime = `6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a7230582054bec1bfef8dbf6d9ea6ecdde40b22f8311c9878c20f777a262b732b023f6e870029`
   870  
   871  // BridgeHandledRequestsFuncSigs maps the 4-byte function signature to its string representation.
   872  var BridgeHandledRequestsFuncSigs = map[string]string{
   873  	"8a75eee2": "handledRequestTx(bytes32)",
   874  }
   875  
   876  // BridgeHandledRequestsBin is the compiled bytecode used for deploying new contracts.
   877  var BridgeHandledRequestsBin = "0x6080604052348015600f57600080fd5b50609c8061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638a75eee214602d575b600080fd5b604760048036036020811015604157600080fd5b5035605b565b604080519115158252519081900360200190f35b60006020819052908152604090205460ff168156fea165627a7a7230582054bec1bfef8dbf6d9ea6ecdde40b22f8311c9878c20f777a262b732b023f6e870029"
   878  
   879  // DeployBridgeHandledRequests deploys a new Klaytn contract, binding an instance of BridgeHandledRequests to it.
   880  func DeployBridgeHandledRequests(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeHandledRequests, error) {
   881  	parsed, err := abi.JSON(strings.NewReader(BridgeHandledRequestsABI))
   882  	if err != nil {
   883  		return common.Address{}, nil, nil, err
   884  	}
   885  
   886  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BridgeHandledRequestsBin), backend)
   887  	if err != nil {
   888  		return common.Address{}, nil, nil, err
   889  	}
   890  	return address, tx, &BridgeHandledRequests{BridgeHandledRequestsCaller: BridgeHandledRequestsCaller{contract: contract}, BridgeHandledRequestsTransactor: BridgeHandledRequestsTransactor{contract: contract}, BridgeHandledRequestsFilterer: BridgeHandledRequestsFilterer{contract: contract}}, nil
   891  }
   892  
   893  // BridgeHandledRequests is an auto generated Go binding around a Klaytn contract.
   894  type BridgeHandledRequests struct {
   895  	BridgeHandledRequestsCaller     // Read-only binding to the contract
   896  	BridgeHandledRequestsTransactor // Write-only binding to the contract
   897  	BridgeHandledRequestsFilterer   // Log filterer for contract events
   898  }
   899  
   900  // BridgeHandledRequestsCaller is an auto generated read-only Go binding around a Klaytn contract.
   901  type BridgeHandledRequestsCaller struct {
   902  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   903  }
   904  
   905  // BridgeHandledRequestsTransactor is an auto generated write-only Go binding around a Klaytn contract.
   906  type BridgeHandledRequestsTransactor struct {
   907  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   908  }
   909  
   910  // BridgeHandledRequestsFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
   911  type BridgeHandledRequestsFilterer struct {
   912  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   913  }
   914  
   915  // BridgeHandledRequestsSession is an auto generated Go binding around a Klaytn contract,
   916  // with pre-set call and transact options.
   917  type BridgeHandledRequestsSession struct {
   918  	Contract     *BridgeHandledRequests // Generic contract binding to set the session for
   919  	CallOpts     bind.CallOpts          // Call options to use throughout this session
   920  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
   921  }
   922  
   923  // BridgeHandledRequestsCallerSession is an auto generated read-only Go binding around a Klaytn contract,
   924  // with pre-set call options.
   925  type BridgeHandledRequestsCallerSession struct {
   926  	Contract *BridgeHandledRequestsCaller // Generic contract caller binding to set the session for
   927  	CallOpts bind.CallOpts                // Call options to use throughout this session
   928  }
   929  
   930  // BridgeHandledRequestsTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   931  // with pre-set transact options.
   932  type BridgeHandledRequestsTransactorSession struct {
   933  	Contract     *BridgeHandledRequestsTransactor // Generic contract transactor binding to set the session for
   934  	TransactOpts bind.TransactOpts                // Transaction auth options to use throughout this session
   935  }
   936  
   937  // BridgeHandledRequestsRaw is an auto generated low-level Go binding around a Klaytn contract.
   938  type BridgeHandledRequestsRaw struct {
   939  	Contract *BridgeHandledRequests // Generic contract binding to access the raw methods on
   940  }
   941  
   942  // BridgeHandledRequestsCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   943  type BridgeHandledRequestsCallerRaw struct {
   944  	Contract *BridgeHandledRequestsCaller // Generic read-only contract binding to access the raw methods on
   945  }
   946  
   947  // BridgeHandledRequestsTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   948  type BridgeHandledRequestsTransactorRaw struct {
   949  	Contract *BridgeHandledRequestsTransactor // Generic write-only contract binding to access the raw methods on
   950  }
   951  
   952  // NewBridgeHandledRequests creates a new instance of BridgeHandledRequests, bound to a specific deployed contract.
   953  func NewBridgeHandledRequests(address common.Address, backend bind.ContractBackend) (*BridgeHandledRequests, error) {
   954  	contract, err := bindBridgeHandledRequests(address, backend, backend, backend)
   955  	if err != nil {
   956  		return nil, err
   957  	}
   958  	return &BridgeHandledRequests{BridgeHandledRequestsCaller: BridgeHandledRequestsCaller{contract: contract}, BridgeHandledRequestsTransactor: BridgeHandledRequestsTransactor{contract: contract}, BridgeHandledRequestsFilterer: BridgeHandledRequestsFilterer{contract: contract}}, nil
   959  }
   960  
   961  // NewBridgeHandledRequestsCaller creates a new read-only instance of BridgeHandledRequests, bound to a specific deployed contract.
   962  func NewBridgeHandledRequestsCaller(address common.Address, caller bind.ContractCaller) (*BridgeHandledRequestsCaller, error) {
   963  	contract, err := bindBridgeHandledRequests(address, caller, nil, nil)
   964  	if err != nil {
   965  		return nil, err
   966  	}
   967  	return &BridgeHandledRequestsCaller{contract: contract}, nil
   968  }
   969  
   970  // NewBridgeHandledRequestsTransactor creates a new write-only instance of BridgeHandledRequests, bound to a specific deployed contract.
   971  func NewBridgeHandledRequestsTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeHandledRequestsTransactor, error) {
   972  	contract, err := bindBridgeHandledRequests(address, nil, transactor, nil)
   973  	if err != nil {
   974  		return nil, err
   975  	}
   976  	return &BridgeHandledRequestsTransactor{contract: contract}, nil
   977  }
   978  
   979  // NewBridgeHandledRequestsFilterer creates a new log filterer instance of BridgeHandledRequests, bound to a specific deployed contract.
   980  func NewBridgeHandledRequestsFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeHandledRequestsFilterer, error) {
   981  	contract, err := bindBridgeHandledRequests(address, nil, nil, filterer)
   982  	if err != nil {
   983  		return nil, err
   984  	}
   985  	return &BridgeHandledRequestsFilterer{contract: contract}, nil
   986  }
   987  
   988  // bindBridgeHandledRequests binds a generic wrapper to an already deployed contract.
   989  func bindBridgeHandledRequests(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   990  	parsed, err := abi.JSON(strings.NewReader(BridgeHandledRequestsABI))
   991  	if err != nil {
   992  		return nil, err
   993  	}
   994  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   995  }
   996  
   997  // Call invokes the (constant) contract method with params as input values and
   998  // sets the output to result. The result type might be a single field for simple
   999  // returns, a slice of interfaces for anonymous returns and a struct for named
  1000  // returns.
  1001  func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1002  	return _BridgeHandledRequests.Contract.BridgeHandledRequestsCaller.contract.Call(opts, result, method, params...)
  1003  }
  1004  
  1005  // Transfer initiates a plain transaction to move funds to the contract, calling
  1006  // its default method if one is available.
  1007  func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1008  	return _BridgeHandledRequests.Contract.BridgeHandledRequestsTransactor.contract.Transfer(opts)
  1009  }
  1010  
  1011  // Transact invokes the (paid) contract method with params as input values.
  1012  func (_BridgeHandledRequests *BridgeHandledRequestsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1013  	return _BridgeHandledRequests.Contract.BridgeHandledRequestsTransactor.contract.Transact(opts, method, params...)
  1014  }
  1015  
  1016  // Call invokes the (constant) contract method with params as input values and
  1017  // sets the output to result. The result type might be a single field for simple
  1018  // returns, a slice of interfaces for anonymous returns and a struct for named
  1019  // returns.
  1020  func (_BridgeHandledRequests *BridgeHandledRequestsCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1021  	return _BridgeHandledRequests.Contract.contract.Call(opts, result, method, params...)
  1022  }
  1023  
  1024  // Transfer initiates a plain transaction to move funds to the contract, calling
  1025  // its default method if one is available.
  1026  func (_BridgeHandledRequests *BridgeHandledRequestsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1027  	return _BridgeHandledRequests.Contract.contract.Transfer(opts)
  1028  }
  1029  
  1030  // Transact invokes the (paid) contract method with params as input values.
  1031  func (_BridgeHandledRequests *BridgeHandledRequestsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1032  	return _BridgeHandledRequests.Contract.contract.Transact(opts, method, params...)
  1033  }
  1034  
  1035  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  1036  //
  1037  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  1038  func (_BridgeHandledRequests *BridgeHandledRequestsCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
  1039  	var (
  1040  		ret0 = new(bool)
  1041  	)
  1042  	out := ret0
  1043  	err := _BridgeHandledRequests.contract.Call(opts, out, "handledRequestTx", arg0)
  1044  	return *ret0, err
  1045  }
  1046  
  1047  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  1048  //
  1049  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  1050  func (_BridgeHandledRequests *BridgeHandledRequestsSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  1051  	return _BridgeHandledRequests.Contract.HandledRequestTx(&_BridgeHandledRequests.CallOpts, arg0)
  1052  }
  1053  
  1054  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  1055  //
  1056  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  1057  func (_BridgeHandledRequests *BridgeHandledRequestsCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  1058  	return _BridgeHandledRequests.Contract.HandledRequestTx(&_BridgeHandledRequests.CallOpts, arg0)
  1059  }
  1060  
  1061  // BridgeOperatorABI is the input ABI used to generate the binding from.
  1062  const BridgeOperatorABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]"
  1063  
  1064  // BridgeOperatorBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  1065  const BridgeOperatorBinRuntime = ``
  1066  
  1067  // BridgeOperatorFuncSigs maps the 4-byte function signature to its string representation.
  1068  var BridgeOperatorFuncSigs = map[string]string{
  1069  	"3a3099d1": "MAX_OPERATOR()",
  1070  	"9832c1d7": "closedValueTransferVotes(uint64)",
  1071  	"ac6fff0b": "configurationNonce()",
  1072  	"d8cf98ca": "deregisterOperator(address)",
  1073  	"b2c01030": "getOperatorList()",
  1074  	"8f32d59b": "isOwner()",
  1075  	"cb38f407": "operatorList(uint256)",
  1076  	"5526f76b": "operatorThresholds(uint8)",
  1077  	"13e7c9d8": "operators(address)",
  1078  	"8da5cb5b": "owner()",
  1079  	"3682a450": "registerOperator(address)",
  1080  	"715018a6": "renounceOwnership()",
  1081  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
  1082  	"f2fde38b": "transferOwnership(address)",
  1083  }
  1084  
  1085  // BridgeOperator is an auto generated Go binding around a Klaytn contract.
  1086  type BridgeOperator struct {
  1087  	BridgeOperatorCaller     // Read-only binding to the contract
  1088  	BridgeOperatorTransactor // Write-only binding to the contract
  1089  	BridgeOperatorFilterer   // Log filterer for contract events
  1090  }
  1091  
  1092  // BridgeOperatorCaller is an auto generated read-only Go binding around a Klaytn contract.
  1093  type BridgeOperatorCaller struct {
  1094  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1095  }
  1096  
  1097  // BridgeOperatorTransactor is an auto generated write-only Go binding around a Klaytn contract.
  1098  type BridgeOperatorTransactor struct {
  1099  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1100  }
  1101  
  1102  // BridgeOperatorFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  1103  type BridgeOperatorFilterer struct {
  1104  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1105  }
  1106  
  1107  // BridgeOperatorSession is an auto generated Go binding around a Klaytn contract,
  1108  // with pre-set call and transact options.
  1109  type BridgeOperatorSession struct {
  1110  	Contract     *BridgeOperator   // Generic contract binding to set the session for
  1111  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1112  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1113  }
  1114  
  1115  // BridgeOperatorCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  1116  // with pre-set call options.
  1117  type BridgeOperatorCallerSession struct {
  1118  	Contract *BridgeOperatorCaller // Generic contract caller binding to set the session for
  1119  	CallOpts bind.CallOpts         // Call options to use throughout this session
  1120  }
  1121  
  1122  // BridgeOperatorTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  1123  // with pre-set transact options.
  1124  type BridgeOperatorTransactorSession struct {
  1125  	Contract     *BridgeOperatorTransactor // Generic contract transactor binding to set the session for
  1126  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  1127  }
  1128  
  1129  // BridgeOperatorRaw is an auto generated low-level Go binding around a Klaytn contract.
  1130  type BridgeOperatorRaw struct {
  1131  	Contract *BridgeOperator // Generic contract binding to access the raw methods on
  1132  }
  1133  
  1134  // BridgeOperatorCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  1135  type BridgeOperatorCallerRaw struct {
  1136  	Contract *BridgeOperatorCaller // Generic read-only contract binding to access the raw methods on
  1137  }
  1138  
  1139  // BridgeOperatorTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  1140  type BridgeOperatorTransactorRaw struct {
  1141  	Contract *BridgeOperatorTransactor // Generic write-only contract binding to access the raw methods on
  1142  }
  1143  
  1144  // NewBridgeOperator creates a new instance of BridgeOperator, bound to a specific deployed contract.
  1145  func NewBridgeOperator(address common.Address, backend bind.ContractBackend) (*BridgeOperator, error) {
  1146  	contract, err := bindBridgeOperator(address, backend, backend, backend)
  1147  	if err != nil {
  1148  		return nil, err
  1149  	}
  1150  	return &BridgeOperator{BridgeOperatorCaller: BridgeOperatorCaller{contract: contract}, BridgeOperatorTransactor: BridgeOperatorTransactor{contract: contract}, BridgeOperatorFilterer: BridgeOperatorFilterer{contract: contract}}, nil
  1151  }
  1152  
  1153  // NewBridgeOperatorCaller creates a new read-only instance of BridgeOperator, bound to a specific deployed contract.
  1154  func NewBridgeOperatorCaller(address common.Address, caller bind.ContractCaller) (*BridgeOperatorCaller, error) {
  1155  	contract, err := bindBridgeOperator(address, caller, nil, nil)
  1156  	if err != nil {
  1157  		return nil, err
  1158  	}
  1159  	return &BridgeOperatorCaller{contract: contract}, nil
  1160  }
  1161  
  1162  // NewBridgeOperatorTransactor creates a new write-only instance of BridgeOperator, bound to a specific deployed contract.
  1163  func NewBridgeOperatorTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeOperatorTransactor, error) {
  1164  	contract, err := bindBridgeOperator(address, nil, transactor, nil)
  1165  	if err != nil {
  1166  		return nil, err
  1167  	}
  1168  	return &BridgeOperatorTransactor{contract: contract}, nil
  1169  }
  1170  
  1171  // NewBridgeOperatorFilterer creates a new log filterer instance of BridgeOperator, bound to a specific deployed contract.
  1172  func NewBridgeOperatorFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeOperatorFilterer, error) {
  1173  	contract, err := bindBridgeOperator(address, nil, nil, filterer)
  1174  	if err != nil {
  1175  		return nil, err
  1176  	}
  1177  	return &BridgeOperatorFilterer{contract: contract}, nil
  1178  }
  1179  
  1180  // bindBridgeOperator binds a generic wrapper to an already deployed contract.
  1181  func bindBridgeOperator(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1182  	parsed, err := abi.JSON(strings.NewReader(BridgeOperatorABI))
  1183  	if err != nil {
  1184  		return nil, err
  1185  	}
  1186  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1187  }
  1188  
  1189  // Call invokes the (constant) contract method with params as input values and
  1190  // sets the output to result. The result type might be a single field for simple
  1191  // returns, a slice of interfaces for anonymous returns and a struct for named
  1192  // returns.
  1193  func (_BridgeOperator *BridgeOperatorRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1194  	return _BridgeOperator.Contract.BridgeOperatorCaller.contract.Call(opts, result, method, params...)
  1195  }
  1196  
  1197  // Transfer initiates a plain transaction to move funds to the contract, calling
  1198  // its default method if one is available.
  1199  func (_BridgeOperator *BridgeOperatorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1200  	return _BridgeOperator.Contract.BridgeOperatorTransactor.contract.Transfer(opts)
  1201  }
  1202  
  1203  // Transact invokes the (paid) contract method with params as input values.
  1204  func (_BridgeOperator *BridgeOperatorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1205  	return _BridgeOperator.Contract.BridgeOperatorTransactor.contract.Transact(opts, method, params...)
  1206  }
  1207  
  1208  // Call invokes the (constant) contract method with params as input values and
  1209  // sets the output to result. The result type might be a single field for simple
  1210  // returns, a slice of interfaces for anonymous returns and a struct for named
  1211  // returns.
  1212  func (_BridgeOperator *BridgeOperatorCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1213  	return _BridgeOperator.Contract.contract.Call(opts, result, method, params...)
  1214  }
  1215  
  1216  // Transfer initiates a plain transaction to move funds to the contract, calling
  1217  // its default method if one is available.
  1218  func (_BridgeOperator *BridgeOperatorTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1219  	return _BridgeOperator.Contract.contract.Transfer(opts)
  1220  }
  1221  
  1222  // Transact invokes the (paid) contract method with params as input values.
  1223  func (_BridgeOperator *BridgeOperatorTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1224  	return _BridgeOperator.Contract.contract.Transact(opts, method, params...)
  1225  }
  1226  
  1227  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  1228  //
  1229  // Solidity: function MAX_OPERATOR() view returns(uint64)
  1230  func (_BridgeOperator *BridgeOperatorCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
  1231  	var (
  1232  		ret0 = new(uint64)
  1233  	)
  1234  	out := ret0
  1235  	err := _BridgeOperator.contract.Call(opts, out, "MAX_OPERATOR")
  1236  	return *ret0, err
  1237  }
  1238  
  1239  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  1240  //
  1241  // Solidity: function MAX_OPERATOR() view returns(uint64)
  1242  func (_BridgeOperator *BridgeOperatorSession) MAXOPERATOR() (uint64, error) {
  1243  	return _BridgeOperator.Contract.MAXOPERATOR(&_BridgeOperator.CallOpts)
  1244  }
  1245  
  1246  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  1247  //
  1248  // Solidity: function MAX_OPERATOR() view returns(uint64)
  1249  func (_BridgeOperator *BridgeOperatorCallerSession) MAXOPERATOR() (uint64, error) {
  1250  	return _BridgeOperator.Contract.MAXOPERATOR(&_BridgeOperator.CallOpts)
  1251  }
  1252  
  1253  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  1254  //
  1255  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  1256  func (_BridgeOperator *BridgeOperatorCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
  1257  	var (
  1258  		ret0 = new(bool)
  1259  	)
  1260  	out := ret0
  1261  	err := _BridgeOperator.contract.Call(opts, out, "closedValueTransferVotes", arg0)
  1262  	return *ret0, err
  1263  }
  1264  
  1265  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  1266  //
  1267  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  1268  func (_BridgeOperator *BridgeOperatorSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  1269  	return _BridgeOperator.Contract.ClosedValueTransferVotes(&_BridgeOperator.CallOpts, arg0)
  1270  }
  1271  
  1272  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  1273  //
  1274  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  1275  func (_BridgeOperator *BridgeOperatorCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  1276  	return _BridgeOperator.Contract.ClosedValueTransferVotes(&_BridgeOperator.CallOpts, arg0)
  1277  }
  1278  
  1279  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  1280  //
  1281  // Solidity: function configurationNonce() view returns(uint64)
  1282  func (_BridgeOperator *BridgeOperatorCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
  1283  	var (
  1284  		ret0 = new(uint64)
  1285  	)
  1286  	out := ret0
  1287  	err := _BridgeOperator.contract.Call(opts, out, "configurationNonce")
  1288  	return *ret0, err
  1289  }
  1290  
  1291  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  1292  //
  1293  // Solidity: function configurationNonce() view returns(uint64)
  1294  func (_BridgeOperator *BridgeOperatorSession) ConfigurationNonce() (uint64, error) {
  1295  	return _BridgeOperator.Contract.ConfigurationNonce(&_BridgeOperator.CallOpts)
  1296  }
  1297  
  1298  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  1299  //
  1300  // Solidity: function configurationNonce() view returns(uint64)
  1301  func (_BridgeOperator *BridgeOperatorCallerSession) ConfigurationNonce() (uint64, error) {
  1302  	return _BridgeOperator.Contract.ConfigurationNonce(&_BridgeOperator.CallOpts)
  1303  }
  1304  
  1305  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  1306  //
  1307  // Solidity: function getOperatorList() view returns(address[])
  1308  func (_BridgeOperator *BridgeOperatorCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
  1309  	var (
  1310  		ret0 = new([]common.Address)
  1311  	)
  1312  	out := ret0
  1313  	err := _BridgeOperator.contract.Call(opts, out, "getOperatorList")
  1314  	return *ret0, err
  1315  }
  1316  
  1317  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  1318  //
  1319  // Solidity: function getOperatorList() view returns(address[])
  1320  func (_BridgeOperator *BridgeOperatorSession) GetOperatorList() ([]common.Address, error) {
  1321  	return _BridgeOperator.Contract.GetOperatorList(&_BridgeOperator.CallOpts)
  1322  }
  1323  
  1324  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  1325  //
  1326  // Solidity: function getOperatorList() view returns(address[])
  1327  func (_BridgeOperator *BridgeOperatorCallerSession) GetOperatorList() ([]common.Address, error) {
  1328  	return _BridgeOperator.Contract.GetOperatorList(&_BridgeOperator.CallOpts)
  1329  }
  1330  
  1331  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1332  //
  1333  // Solidity: function isOwner() view returns(bool)
  1334  func (_BridgeOperator *BridgeOperatorCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  1335  	var (
  1336  		ret0 = new(bool)
  1337  	)
  1338  	out := ret0
  1339  	err := _BridgeOperator.contract.Call(opts, out, "isOwner")
  1340  	return *ret0, err
  1341  }
  1342  
  1343  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1344  //
  1345  // Solidity: function isOwner() view returns(bool)
  1346  func (_BridgeOperator *BridgeOperatorSession) IsOwner() (bool, error) {
  1347  	return _BridgeOperator.Contract.IsOwner(&_BridgeOperator.CallOpts)
  1348  }
  1349  
  1350  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1351  //
  1352  // Solidity: function isOwner() view returns(bool)
  1353  func (_BridgeOperator *BridgeOperatorCallerSession) IsOwner() (bool, error) {
  1354  	return _BridgeOperator.Contract.IsOwner(&_BridgeOperator.CallOpts)
  1355  }
  1356  
  1357  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  1358  //
  1359  // Solidity: function operatorList(uint256 ) view returns(address)
  1360  func (_BridgeOperator *BridgeOperatorCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  1361  	var (
  1362  		ret0 = new(common.Address)
  1363  	)
  1364  	out := ret0
  1365  	err := _BridgeOperator.contract.Call(opts, out, "operatorList", arg0)
  1366  	return *ret0, err
  1367  }
  1368  
  1369  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  1370  //
  1371  // Solidity: function operatorList(uint256 ) view returns(address)
  1372  func (_BridgeOperator *BridgeOperatorSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  1373  	return _BridgeOperator.Contract.OperatorList(&_BridgeOperator.CallOpts, arg0)
  1374  }
  1375  
  1376  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  1377  //
  1378  // Solidity: function operatorList(uint256 ) view returns(address)
  1379  func (_BridgeOperator *BridgeOperatorCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  1380  	return _BridgeOperator.Contract.OperatorList(&_BridgeOperator.CallOpts, arg0)
  1381  }
  1382  
  1383  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  1384  //
  1385  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  1386  func (_BridgeOperator *BridgeOperatorCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
  1387  	var (
  1388  		ret0 = new(uint8)
  1389  	)
  1390  	out := ret0
  1391  	err := _BridgeOperator.contract.Call(opts, out, "operatorThresholds", arg0)
  1392  	return *ret0, err
  1393  }
  1394  
  1395  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  1396  //
  1397  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  1398  func (_BridgeOperator *BridgeOperatorSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  1399  	return _BridgeOperator.Contract.OperatorThresholds(&_BridgeOperator.CallOpts, arg0)
  1400  }
  1401  
  1402  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  1403  //
  1404  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  1405  func (_BridgeOperator *BridgeOperatorCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  1406  	return _BridgeOperator.Contract.OperatorThresholds(&_BridgeOperator.CallOpts, arg0)
  1407  }
  1408  
  1409  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  1410  //
  1411  // Solidity: function operators(address ) view returns(bool)
  1412  func (_BridgeOperator *BridgeOperatorCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  1413  	var (
  1414  		ret0 = new(bool)
  1415  	)
  1416  	out := ret0
  1417  	err := _BridgeOperator.contract.Call(opts, out, "operators", arg0)
  1418  	return *ret0, err
  1419  }
  1420  
  1421  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  1422  //
  1423  // Solidity: function operators(address ) view returns(bool)
  1424  func (_BridgeOperator *BridgeOperatorSession) Operators(arg0 common.Address) (bool, error) {
  1425  	return _BridgeOperator.Contract.Operators(&_BridgeOperator.CallOpts, arg0)
  1426  }
  1427  
  1428  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  1429  //
  1430  // Solidity: function operators(address ) view returns(bool)
  1431  func (_BridgeOperator *BridgeOperatorCallerSession) Operators(arg0 common.Address) (bool, error) {
  1432  	return _BridgeOperator.Contract.Operators(&_BridgeOperator.CallOpts, arg0)
  1433  }
  1434  
  1435  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1436  //
  1437  // Solidity: function owner() view returns(address)
  1438  func (_BridgeOperator *BridgeOperatorCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  1439  	var (
  1440  		ret0 = new(common.Address)
  1441  	)
  1442  	out := ret0
  1443  	err := _BridgeOperator.contract.Call(opts, out, "owner")
  1444  	return *ret0, err
  1445  }
  1446  
  1447  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1448  //
  1449  // Solidity: function owner() view returns(address)
  1450  func (_BridgeOperator *BridgeOperatorSession) Owner() (common.Address, error) {
  1451  	return _BridgeOperator.Contract.Owner(&_BridgeOperator.CallOpts)
  1452  }
  1453  
  1454  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  1455  //
  1456  // Solidity: function owner() view returns(address)
  1457  func (_BridgeOperator *BridgeOperatorCallerSession) Owner() (common.Address, error) {
  1458  	return _BridgeOperator.Contract.Owner(&_BridgeOperator.CallOpts)
  1459  }
  1460  
  1461  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  1462  //
  1463  // Solidity: function deregisterOperator(address _operator) returns()
  1464  func (_BridgeOperator *BridgeOperatorTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  1465  	return _BridgeOperator.contract.Transact(opts, "deregisterOperator", _operator)
  1466  }
  1467  
  1468  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  1469  //
  1470  // Solidity: function deregisterOperator(address _operator) returns()
  1471  func (_BridgeOperator *BridgeOperatorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  1472  	return _BridgeOperator.Contract.DeregisterOperator(&_BridgeOperator.TransactOpts, _operator)
  1473  }
  1474  
  1475  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  1476  //
  1477  // Solidity: function deregisterOperator(address _operator) returns()
  1478  func (_BridgeOperator *BridgeOperatorTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  1479  	return _BridgeOperator.Contract.DeregisterOperator(&_BridgeOperator.TransactOpts, _operator)
  1480  }
  1481  
  1482  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  1483  //
  1484  // Solidity: function registerOperator(address _operator) returns()
  1485  func (_BridgeOperator *BridgeOperatorTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  1486  	return _BridgeOperator.contract.Transact(opts, "registerOperator", _operator)
  1487  }
  1488  
  1489  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  1490  //
  1491  // Solidity: function registerOperator(address _operator) returns()
  1492  func (_BridgeOperator *BridgeOperatorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  1493  	return _BridgeOperator.Contract.RegisterOperator(&_BridgeOperator.TransactOpts, _operator)
  1494  }
  1495  
  1496  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  1497  //
  1498  // Solidity: function registerOperator(address _operator) returns()
  1499  func (_BridgeOperator *BridgeOperatorTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  1500  	return _BridgeOperator.Contract.RegisterOperator(&_BridgeOperator.TransactOpts, _operator)
  1501  }
  1502  
  1503  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1504  //
  1505  // Solidity: function renounceOwnership() returns()
  1506  func (_BridgeOperator *BridgeOperatorTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  1507  	return _BridgeOperator.contract.Transact(opts, "renounceOwnership")
  1508  }
  1509  
  1510  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1511  //
  1512  // Solidity: function renounceOwnership() returns()
  1513  func (_BridgeOperator *BridgeOperatorSession) RenounceOwnership() (*types.Transaction, error) {
  1514  	return _BridgeOperator.Contract.RenounceOwnership(&_BridgeOperator.TransactOpts)
  1515  }
  1516  
  1517  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  1518  //
  1519  // Solidity: function renounceOwnership() returns()
  1520  func (_BridgeOperator *BridgeOperatorTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  1521  	return _BridgeOperator.Contract.RenounceOwnership(&_BridgeOperator.TransactOpts)
  1522  }
  1523  
  1524  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  1525  //
  1526  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  1527  func (_BridgeOperator *BridgeOperatorTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
  1528  	return _BridgeOperator.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
  1529  }
  1530  
  1531  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  1532  //
  1533  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  1534  func (_BridgeOperator *BridgeOperatorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  1535  	return _BridgeOperator.Contract.SetOperatorThreshold(&_BridgeOperator.TransactOpts, _voteType, _threshold)
  1536  }
  1537  
  1538  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  1539  //
  1540  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  1541  func (_BridgeOperator *BridgeOperatorTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  1542  	return _BridgeOperator.Contract.SetOperatorThreshold(&_BridgeOperator.TransactOpts, _voteType, _threshold)
  1543  }
  1544  
  1545  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1546  //
  1547  // Solidity: function transferOwnership(address newOwner) returns()
  1548  func (_BridgeOperator *BridgeOperatorTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  1549  	return _BridgeOperator.contract.Transact(opts, "transferOwnership", newOwner)
  1550  }
  1551  
  1552  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1553  //
  1554  // Solidity: function transferOwnership(address newOwner) returns()
  1555  func (_BridgeOperator *BridgeOperatorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1556  	return _BridgeOperator.Contract.TransferOwnership(&_BridgeOperator.TransactOpts, newOwner)
  1557  }
  1558  
  1559  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  1560  //
  1561  // Solidity: function transferOwnership(address newOwner) returns()
  1562  func (_BridgeOperator *BridgeOperatorTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  1563  	return _BridgeOperator.Contract.TransferOwnership(&_BridgeOperator.TransactOpts, newOwner)
  1564  }
  1565  
  1566  // BridgeOperatorOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeOperator contract.
  1567  type BridgeOperatorOwnershipTransferredIterator struct {
  1568  	Event *BridgeOperatorOwnershipTransferred // Event containing the contract specifics and raw log
  1569  
  1570  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1571  	event    string              // Event name to use for unpacking event data
  1572  
  1573  	logs chan types.Log      // Log channel receiving the found contract events
  1574  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1575  	done bool                // Whether the subscription completed delivering logs
  1576  	fail error               // Occurred error to stop iteration
  1577  }
  1578  
  1579  // Next advances the iterator to the subsequent event, returning whether there
  1580  // are any more events found. In case of a retrieval or parsing error, false is
  1581  // returned and Error() can be queried for the exact failure.
  1582  func (it *BridgeOperatorOwnershipTransferredIterator) Next() bool {
  1583  	// If the iterator failed, stop iterating
  1584  	if it.fail != nil {
  1585  		return false
  1586  	}
  1587  	// If the iterator completed, deliver directly whatever's available
  1588  	if it.done {
  1589  		select {
  1590  		case log := <-it.logs:
  1591  			it.Event = new(BridgeOperatorOwnershipTransferred)
  1592  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1593  				it.fail = err
  1594  				return false
  1595  			}
  1596  			it.Event.Raw = log
  1597  			return true
  1598  
  1599  		default:
  1600  			return false
  1601  		}
  1602  	}
  1603  	// Iterator still in progress, wait for either a data or an error event
  1604  	select {
  1605  	case log := <-it.logs:
  1606  		it.Event = new(BridgeOperatorOwnershipTransferred)
  1607  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1608  			it.fail = err
  1609  			return false
  1610  		}
  1611  		it.Event.Raw = log
  1612  		return true
  1613  
  1614  	case err := <-it.sub.Err():
  1615  		it.done = true
  1616  		it.fail = err
  1617  		return it.Next()
  1618  	}
  1619  }
  1620  
  1621  // Error returns any retrieval or parsing error occurred during filtering.
  1622  func (it *BridgeOperatorOwnershipTransferredIterator) Error() error {
  1623  	return it.fail
  1624  }
  1625  
  1626  // Close terminates the iteration process, releasing any pending underlying
  1627  // resources.
  1628  func (it *BridgeOperatorOwnershipTransferredIterator) Close() error {
  1629  	it.sub.Unsubscribe()
  1630  	return nil
  1631  }
  1632  
  1633  // BridgeOperatorOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeOperator contract.
  1634  type BridgeOperatorOwnershipTransferred struct {
  1635  	PreviousOwner common.Address
  1636  	NewOwner      common.Address
  1637  	Raw           types.Log // Blockchain specific contextual infos
  1638  }
  1639  
  1640  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  1641  //
  1642  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  1643  func (_BridgeOperator *BridgeOperatorFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeOperatorOwnershipTransferredIterator, error) {
  1644  
  1645  	var previousOwnerRule []interface{}
  1646  	for _, previousOwnerItem := range previousOwner {
  1647  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  1648  	}
  1649  	var newOwnerRule []interface{}
  1650  	for _, newOwnerItem := range newOwner {
  1651  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  1652  	}
  1653  
  1654  	logs, sub, err := _BridgeOperator.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  1655  	if err != nil {
  1656  		return nil, err
  1657  	}
  1658  	return &BridgeOperatorOwnershipTransferredIterator{contract: _BridgeOperator.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  1659  }
  1660  
  1661  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  1662  //
  1663  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  1664  func (_BridgeOperator *BridgeOperatorFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeOperatorOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  1665  
  1666  	var previousOwnerRule []interface{}
  1667  	for _, previousOwnerItem := range previousOwner {
  1668  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  1669  	}
  1670  	var newOwnerRule []interface{}
  1671  	for _, newOwnerItem := range newOwner {
  1672  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  1673  	}
  1674  
  1675  	logs, sub, err := _BridgeOperator.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  1676  	if err != nil {
  1677  		return nil, err
  1678  	}
  1679  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1680  		defer sub.Unsubscribe()
  1681  		for {
  1682  			select {
  1683  			case log := <-logs:
  1684  				// New log arrived, parse the event and forward to the user
  1685  				event := new(BridgeOperatorOwnershipTransferred)
  1686  				if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  1687  					return err
  1688  				}
  1689  				event.Raw = log
  1690  
  1691  				select {
  1692  				case sink <- event:
  1693  				case err := <-sub.Err():
  1694  					return err
  1695  				case <-quit:
  1696  					return nil
  1697  				}
  1698  			case err := <-sub.Err():
  1699  				return err
  1700  			case <-quit:
  1701  				return nil
  1702  			}
  1703  		}
  1704  	}), nil
  1705  }
  1706  
  1707  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  1708  //
  1709  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  1710  func (_BridgeOperator *BridgeOperatorFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeOperatorOwnershipTransferred, error) {
  1711  	event := new(BridgeOperatorOwnershipTransferred)
  1712  	if err := _BridgeOperator.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  1713  		return nil, err
  1714  	}
  1715  	return event, nil
  1716  }
  1717  
  1718  // BridgeTokensABI is the input ABI used to generate the binding from.
  1719  const BridgeTokensABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]"
  1720  
  1721  // BridgeTokensBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  1722  const BridgeTokensBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b03166105d2565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6100fa6105f9565b610119600480360360208110156101f357600080fd5b50356001600160a01b031661068d565b6101196106a8565b6101c16106b8565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b03166106c9565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b031661083d565b610267610a2c565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610a8e565b6102e56106b8565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f6106b8565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b6106016106b8565b6106435760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b6106d16106b8565b6107135760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661077b5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff1615156001146107f25760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b6108456106b8565b6108875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166108ef5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff19169055600290915281208054919055600354600019018110156109df5760038054600019810190811061095357fe5b600091825260209091200154600380546001600160a01b03909216918390811061097957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109b957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b60038054906109f2906000198301610b87565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610a8457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a66575b5050505050905090565b610a966106b8565b610ad85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b610ae181610ae4565b50565b6001600160a01b038116610b2c57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610bcf6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bab57600083815260209020610bab918101908301610bb0565b505050565b6106b591905b80821115610bca5760008155600101610bb6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a723058201ec54bb9eb49a58b0e627e2314c55d2f67a57eea0384269bf5e48b2a1aafc3440029`
  1723  
  1724  // BridgeTokensFuncSigs maps the 4-byte function signature to its string representation.
  1725  var BridgeTokensFuncSigs = map[string]string{
  1726  	"bab2af1d": "deregisterToken(address)",
  1727  	"ea21eade": "getRegisteredTokenList()",
  1728  	"48a18a6a": "indexOfTokens(address)",
  1729  	"8f32d59b": "isOwner()",
  1730  	"10693fcd": "lockToken(address)",
  1731  	"5eb7413a": "lockedTokens(address)",
  1732  	"8da5cb5b": "owner()",
  1733  	"4739f7e5": "registerToken(address,address)",
  1734  	"3e4fe949": "registeredTokenList(uint256)",
  1735  	"8c0bd916": "registeredTokens(address)",
  1736  	"715018a6": "renounceOwnership()",
  1737  	"f2fde38b": "transferOwnership(address)",
  1738  	"9ef2017b": "unlockToken(address)",
  1739  }
  1740  
  1741  // BridgeTokensBin is the compiled bytecode used for deploying new contracts.
  1742  var BridgeTokensBin = "0x60806040819052600080546001600160a01b03191633178082556001600160a01b0316917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3610c40806100576000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638c0bd9161161008c5780639ef2017b116100665780639ef2017b14610213578063bab2af1d14610239578063ea21eade1461025f578063f2fde38b146102b7576100cf565b80638c0bd916146101dd5780638da5cb5b146102035780638f32d59b1461020b576100cf565b806310693fcd146100d45780633e4fe949146100fc5780634739f7e51461013557806348a18a6a146101635780635eb7413a1461019b578063715018a6146101d5575b600080fd5b6100fa600480360360208110156100ea57600080fd5b50356001600160a01b03166102dd565b005b6101196004803603602081101561011257600080fd5b5035610450565b604080516001600160a01b039092168252519081900360200190f35b6100fa6004803603604081101561014b57600080fd5b506001600160a01b0381358116916020013516610477565b6101896004803603602081101561017957600080fd5b50356001600160a01b03166105d2565b60408051918252519081900360200190f35b6101c1600480360360208110156101b157600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6100fa6105f9565b610119600480360360208110156101f357600080fd5b50356001600160a01b031661068d565b6101196106a8565b6101c16106b8565b6100fa6004803603602081101561022957600080fd5b50356001600160a01b03166106c9565b6100fa6004803603602081101561024f57600080fd5b50356001600160a01b031661083d565b610267610a2c565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102a357818101518382015260200161028b565b505050509050019250505060405180910390f35b6100fa600480360360208110156102cd57600080fd5b50356001600160a01b0316610a8e565b6102e56106b8565b6103275760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661038f5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff16156104025760408051600160e51b62461bcd02815260206004820152600c60248201527f6c6f636b656420746f6b656e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6003818154811061045d57fe5b6000918252602090912001546001600160a01b0316905081565b61047f6106b8565b6104c15760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260016020526040902054839116156105335760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260016020818152604080842080549689166001600160a01b031997881617905560038054600290935281852083905592820183559183527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60026020526000908152604090205481565b60046020526000908152604090205460ff1681565b6106016106b8565b6106435760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160a01b031681565b6000546001600160a01b03165b90565b6000546001600160a01b0316331490565b6106d16106b8565b6107135760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b0380821660009081526001602052604090205482911661077b5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054829060ff1615156001146107f25760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260046020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b6108456106b8565b6108875760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600160205260409020548291166108ef5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260016020908152604080832080546001600160a01b031916905560048252808320805460ff19169055600290915281208054919055600354600019018110156109df5760038054600019810190811061095357fe5b600091825260209091200154600380546001600160a01b03909216918390811061097957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508060026000600384815481106109b957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b60038054906109f2906000198301610b87565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60606003805480602002602001604051908101604052809291908181526020018280548015610a8457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a66575b5050505050905090565b610a966106b8565b610ad85760408051600160e51b62461bcd0281526020600482018190526024820152600080516020610bf5833981519152604482015290519081900360640190fd5b610ae181610ae4565b50565b6001600160a01b038116610b2c57604051600160e51b62461bcd028152600401808060200182810382526026815260200180610bcf6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b815481835581811115610bab57600083815260209020610bab918101908301610bb0565b505050565b6106b591905b80821115610bca5760008155600101610bb6565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a165627a7a723058201ec54bb9eb49a58b0e627e2314c55d2f67a57eea0384269bf5e48b2a1aafc3440029"
  1743  
  1744  // DeployBridgeTokens deploys a new Klaytn contract, binding an instance of BridgeTokens to it.
  1745  func DeployBridgeTokens(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *BridgeTokens, error) {
  1746  	parsed, err := abi.JSON(strings.NewReader(BridgeTokensABI))
  1747  	if err != nil {
  1748  		return common.Address{}, nil, nil, err
  1749  	}
  1750  
  1751  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BridgeTokensBin), backend)
  1752  	if err != nil {
  1753  		return common.Address{}, nil, nil, err
  1754  	}
  1755  	return address, tx, &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil
  1756  }
  1757  
  1758  // BridgeTokens is an auto generated Go binding around a Klaytn contract.
  1759  type BridgeTokens struct {
  1760  	BridgeTokensCaller     // Read-only binding to the contract
  1761  	BridgeTokensTransactor // Write-only binding to the contract
  1762  	BridgeTokensFilterer   // Log filterer for contract events
  1763  }
  1764  
  1765  // BridgeTokensCaller is an auto generated read-only Go binding around a Klaytn contract.
  1766  type BridgeTokensCaller struct {
  1767  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1768  }
  1769  
  1770  // BridgeTokensTransactor is an auto generated write-only Go binding around a Klaytn contract.
  1771  type BridgeTokensTransactor struct {
  1772  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1773  }
  1774  
  1775  // BridgeTokensFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  1776  type BridgeTokensFilterer struct {
  1777  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1778  }
  1779  
  1780  // BridgeTokensSession is an auto generated Go binding around a Klaytn contract,
  1781  // with pre-set call and transact options.
  1782  type BridgeTokensSession struct {
  1783  	Contract     *BridgeTokens     // Generic contract binding to set the session for
  1784  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1785  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1786  }
  1787  
  1788  // BridgeTokensCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  1789  // with pre-set call options.
  1790  type BridgeTokensCallerSession struct {
  1791  	Contract *BridgeTokensCaller // Generic contract caller binding to set the session for
  1792  	CallOpts bind.CallOpts       // Call options to use throughout this session
  1793  }
  1794  
  1795  // BridgeTokensTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  1796  // with pre-set transact options.
  1797  type BridgeTokensTransactorSession struct {
  1798  	Contract     *BridgeTokensTransactor // Generic contract transactor binding to set the session for
  1799  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  1800  }
  1801  
  1802  // BridgeTokensRaw is an auto generated low-level Go binding around a Klaytn contract.
  1803  type BridgeTokensRaw struct {
  1804  	Contract *BridgeTokens // Generic contract binding to access the raw methods on
  1805  }
  1806  
  1807  // BridgeTokensCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  1808  type BridgeTokensCallerRaw struct {
  1809  	Contract *BridgeTokensCaller // Generic read-only contract binding to access the raw methods on
  1810  }
  1811  
  1812  // BridgeTokensTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  1813  type BridgeTokensTransactorRaw struct {
  1814  	Contract *BridgeTokensTransactor // Generic write-only contract binding to access the raw methods on
  1815  }
  1816  
  1817  // NewBridgeTokens creates a new instance of BridgeTokens, bound to a specific deployed contract.
  1818  func NewBridgeTokens(address common.Address, backend bind.ContractBackend) (*BridgeTokens, error) {
  1819  	contract, err := bindBridgeTokens(address, backend, backend, backend)
  1820  	if err != nil {
  1821  		return nil, err
  1822  	}
  1823  	return &BridgeTokens{BridgeTokensCaller: BridgeTokensCaller{contract: contract}, BridgeTokensTransactor: BridgeTokensTransactor{contract: contract}, BridgeTokensFilterer: BridgeTokensFilterer{contract: contract}}, nil
  1824  }
  1825  
  1826  // NewBridgeTokensCaller creates a new read-only instance of BridgeTokens, bound to a specific deployed contract.
  1827  func NewBridgeTokensCaller(address common.Address, caller bind.ContractCaller) (*BridgeTokensCaller, error) {
  1828  	contract, err := bindBridgeTokens(address, caller, nil, nil)
  1829  	if err != nil {
  1830  		return nil, err
  1831  	}
  1832  	return &BridgeTokensCaller{contract: contract}, nil
  1833  }
  1834  
  1835  // NewBridgeTokensTransactor creates a new write-only instance of BridgeTokens, bound to a specific deployed contract.
  1836  func NewBridgeTokensTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTokensTransactor, error) {
  1837  	contract, err := bindBridgeTokens(address, nil, transactor, nil)
  1838  	if err != nil {
  1839  		return nil, err
  1840  	}
  1841  	return &BridgeTokensTransactor{contract: contract}, nil
  1842  }
  1843  
  1844  // NewBridgeTokensFilterer creates a new log filterer instance of BridgeTokens, bound to a specific deployed contract.
  1845  func NewBridgeTokensFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTokensFilterer, error) {
  1846  	contract, err := bindBridgeTokens(address, nil, nil, filterer)
  1847  	if err != nil {
  1848  		return nil, err
  1849  	}
  1850  	return &BridgeTokensFilterer{contract: contract}, nil
  1851  }
  1852  
  1853  // bindBridgeTokens binds a generic wrapper to an already deployed contract.
  1854  func bindBridgeTokens(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1855  	parsed, err := abi.JSON(strings.NewReader(BridgeTokensABI))
  1856  	if err != nil {
  1857  		return nil, err
  1858  	}
  1859  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1860  }
  1861  
  1862  // Call invokes the (constant) contract method with params as input values and
  1863  // sets the output to result. The result type might be a single field for simple
  1864  // returns, a slice of interfaces for anonymous returns and a struct for named
  1865  // returns.
  1866  func (_BridgeTokens *BridgeTokensRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1867  	return _BridgeTokens.Contract.BridgeTokensCaller.contract.Call(opts, result, method, params...)
  1868  }
  1869  
  1870  // Transfer initiates a plain transaction to move funds to the contract, calling
  1871  // its default method if one is available.
  1872  func (_BridgeTokens *BridgeTokensRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1873  	return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transfer(opts)
  1874  }
  1875  
  1876  // Transact invokes the (paid) contract method with params as input values.
  1877  func (_BridgeTokens *BridgeTokensRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1878  	return _BridgeTokens.Contract.BridgeTokensTransactor.contract.Transact(opts, method, params...)
  1879  }
  1880  
  1881  // Call invokes the (constant) contract method with params as input values and
  1882  // sets the output to result. The result type might be a single field for simple
  1883  // returns, a slice of interfaces for anonymous returns and a struct for named
  1884  // returns.
  1885  func (_BridgeTokens *BridgeTokensCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1886  	return _BridgeTokens.Contract.contract.Call(opts, result, method, params...)
  1887  }
  1888  
  1889  // Transfer initiates a plain transaction to move funds to the contract, calling
  1890  // its default method if one is available.
  1891  func (_BridgeTokens *BridgeTokensTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1892  	return _BridgeTokens.Contract.contract.Transfer(opts)
  1893  }
  1894  
  1895  // Transact invokes the (paid) contract method with params as input values.
  1896  func (_BridgeTokens *BridgeTokensTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1897  	return _BridgeTokens.Contract.contract.Transact(opts, method, params...)
  1898  }
  1899  
  1900  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  1901  //
  1902  // Solidity: function getRegisteredTokenList() view returns(address[])
  1903  func (_BridgeTokens *BridgeTokensCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) {
  1904  	var (
  1905  		ret0 = new([]common.Address)
  1906  	)
  1907  	out := ret0
  1908  	err := _BridgeTokens.contract.Call(opts, out, "getRegisteredTokenList")
  1909  	return *ret0, err
  1910  }
  1911  
  1912  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  1913  //
  1914  // Solidity: function getRegisteredTokenList() view returns(address[])
  1915  func (_BridgeTokens *BridgeTokensSession) GetRegisteredTokenList() ([]common.Address, error) {
  1916  	return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts)
  1917  }
  1918  
  1919  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  1920  //
  1921  // Solidity: function getRegisteredTokenList() view returns(address[])
  1922  func (_BridgeTokens *BridgeTokensCallerSession) GetRegisteredTokenList() ([]common.Address, error) {
  1923  	return _BridgeTokens.Contract.GetRegisteredTokenList(&_BridgeTokens.CallOpts)
  1924  }
  1925  
  1926  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  1927  //
  1928  // Solidity: function indexOfTokens(address ) view returns(uint256)
  1929  func (_BridgeTokens *BridgeTokensCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  1930  	var (
  1931  		ret0 = new(*big.Int)
  1932  	)
  1933  	out := ret0
  1934  	err := _BridgeTokens.contract.Call(opts, out, "indexOfTokens", arg0)
  1935  	return *ret0, err
  1936  }
  1937  
  1938  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  1939  //
  1940  // Solidity: function indexOfTokens(address ) view returns(uint256)
  1941  func (_BridgeTokens *BridgeTokensSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  1942  	return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0)
  1943  }
  1944  
  1945  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  1946  //
  1947  // Solidity: function indexOfTokens(address ) view returns(uint256)
  1948  func (_BridgeTokens *BridgeTokensCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  1949  	return _BridgeTokens.Contract.IndexOfTokens(&_BridgeTokens.CallOpts, arg0)
  1950  }
  1951  
  1952  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1953  //
  1954  // Solidity: function isOwner() view returns(bool)
  1955  func (_BridgeTokens *BridgeTokensCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  1956  	var (
  1957  		ret0 = new(bool)
  1958  	)
  1959  	out := ret0
  1960  	err := _BridgeTokens.contract.Call(opts, out, "isOwner")
  1961  	return *ret0, err
  1962  }
  1963  
  1964  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1965  //
  1966  // Solidity: function isOwner() view returns(bool)
  1967  func (_BridgeTokens *BridgeTokensSession) IsOwner() (bool, error) {
  1968  	return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts)
  1969  }
  1970  
  1971  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  1972  //
  1973  // Solidity: function isOwner() view returns(bool)
  1974  func (_BridgeTokens *BridgeTokensCallerSession) IsOwner() (bool, error) {
  1975  	return _BridgeTokens.Contract.IsOwner(&_BridgeTokens.CallOpts)
  1976  }
  1977  
  1978  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  1979  //
  1980  // Solidity: function lockedTokens(address ) view returns(bool)
  1981  func (_BridgeTokens *BridgeTokensCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  1982  	var (
  1983  		ret0 = new(bool)
  1984  	)
  1985  	out := ret0
  1986  	err := _BridgeTokens.contract.Call(opts, out, "lockedTokens", arg0)
  1987  	return *ret0, err
  1988  }
  1989  
  1990  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  1991  //
  1992  // Solidity: function lockedTokens(address ) view returns(bool)
  1993  func (_BridgeTokens *BridgeTokensSession) LockedTokens(arg0 common.Address) (bool, error) {
  1994  	return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0)
  1995  }
  1996  
  1997  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  1998  //
  1999  // Solidity: function lockedTokens(address ) view returns(bool)
  2000  func (_BridgeTokens *BridgeTokensCallerSession) LockedTokens(arg0 common.Address) (bool, error) {
  2001  	return _BridgeTokens.Contract.LockedTokens(&_BridgeTokens.CallOpts, arg0)
  2002  }
  2003  
  2004  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  2005  //
  2006  // Solidity: function owner() view returns(address)
  2007  func (_BridgeTokens *BridgeTokensCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  2008  	var (
  2009  		ret0 = new(common.Address)
  2010  	)
  2011  	out := ret0
  2012  	err := _BridgeTokens.contract.Call(opts, out, "owner")
  2013  	return *ret0, err
  2014  }
  2015  
  2016  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  2017  //
  2018  // Solidity: function owner() view returns(address)
  2019  func (_BridgeTokens *BridgeTokensSession) Owner() (common.Address, error) {
  2020  	return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts)
  2021  }
  2022  
  2023  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  2024  //
  2025  // Solidity: function owner() view returns(address)
  2026  func (_BridgeTokens *BridgeTokensCallerSession) Owner() (common.Address, error) {
  2027  	return _BridgeTokens.Contract.Owner(&_BridgeTokens.CallOpts)
  2028  }
  2029  
  2030  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  2031  //
  2032  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  2033  func (_BridgeTokens *BridgeTokensCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  2034  	var (
  2035  		ret0 = new(common.Address)
  2036  	)
  2037  	out := ret0
  2038  	err := _BridgeTokens.contract.Call(opts, out, "registeredTokenList", arg0)
  2039  	return *ret0, err
  2040  }
  2041  
  2042  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  2043  //
  2044  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  2045  func (_BridgeTokens *BridgeTokensSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  2046  	return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0)
  2047  }
  2048  
  2049  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  2050  //
  2051  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  2052  func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  2053  	return _BridgeTokens.Contract.RegisteredTokenList(&_BridgeTokens.CallOpts, arg0)
  2054  }
  2055  
  2056  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  2057  //
  2058  // Solidity: function registeredTokens(address ) view returns(address)
  2059  func (_BridgeTokens *BridgeTokensCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  2060  	var (
  2061  		ret0 = new(common.Address)
  2062  	)
  2063  	out := ret0
  2064  	err := _BridgeTokens.contract.Call(opts, out, "registeredTokens", arg0)
  2065  	return *ret0, err
  2066  }
  2067  
  2068  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  2069  //
  2070  // Solidity: function registeredTokens(address ) view returns(address)
  2071  func (_BridgeTokens *BridgeTokensSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  2072  	return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0)
  2073  }
  2074  
  2075  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  2076  //
  2077  // Solidity: function registeredTokens(address ) view returns(address)
  2078  func (_BridgeTokens *BridgeTokensCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  2079  	return _BridgeTokens.Contract.RegisteredTokens(&_BridgeTokens.CallOpts, arg0)
  2080  }
  2081  
  2082  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  2083  //
  2084  // Solidity: function deregisterToken(address _token) returns()
  2085  func (_BridgeTokens *BridgeTokensTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  2086  	return _BridgeTokens.contract.Transact(opts, "deregisterToken", _token)
  2087  }
  2088  
  2089  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  2090  //
  2091  // Solidity: function deregisterToken(address _token) returns()
  2092  func (_BridgeTokens *BridgeTokensSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  2093  	return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token)
  2094  }
  2095  
  2096  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  2097  //
  2098  // Solidity: function deregisterToken(address _token) returns()
  2099  func (_BridgeTokens *BridgeTokensTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  2100  	return _BridgeTokens.Contract.DeregisterToken(&_BridgeTokens.TransactOpts, _token)
  2101  }
  2102  
  2103  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  2104  //
  2105  // Solidity: function lockToken(address _token) returns()
  2106  func (_BridgeTokens *BridgeTokensTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  2107  	return _BridgeTokens.contract.Transact(opts, "lockToken", _token)
  2108  }
  2109  
  2110  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  2111  //
  2112  // Solidity: function lockToken(address _token) returns()
  2113  func (_BridgeTokens *BridgeTokensSession) LockToken(_token common.Address) (*types.Transaction, error) {
  2114  	return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token)
  2115  }
  2116  
  2117  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  2118  //
  2119  // Solidity: function lockToken(address _token) returns()
  2120  func (_BridgeTokens *BridgeTokensTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) {
  2121  	return _BridgeTokens.Contract.LockToken(&_BridgeTokens.TransactOpts, _token)
  2122  }
  2123  
  2124  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  2125  //
  2126  // Solidity: function registerToken(address _token, address _cToken) returns()
  2127  func (_BridgeTokens *BridgeTokensTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) {
  2128  	return _BridgeTokens.contract.Transact(opts, "registerToken", _token, _cToken)
  2129  }
  2130  
  2131  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  2132  //
  2133  // Solidity: function registerToken(address _token, address _cToken) returns()
  2134  func (_BridgeTokens *BridgeTokensSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  2135  	return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken)
  2136  }
  2137  
  2138  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  2139  //
  2140  // Solidity: function registerToken(address _token, address _cToken) returns()
  2141  func (_BridgeTokens *BridgeTokensTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  2142  	return _BridgeTokens.Contract.RegisterToken(&_BridgeTokens.TransactOpts, _token, _cToken)
  2143  }
  2144  
  2145  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  2146  //
  2147  // Solidity: function renounceOwnership() returns()
  2148  func (_BridgeTokens *BridgeTokensTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  2149  	return _BridgeTokens.contract.Transact(opts, "renounceOwnership")
  2150  }
  2151  
  2152  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  2153  //
  2154  // Solidity: function renounceOwnership() returns()
  2155  func (_BridgeTokens *BridgeTokensSession) RenounceOwnership() (*types.Transaction, error) {
  2156  	return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts)
  2157  }
  2158  
  2159  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  2160  //
  2161  // Solidity: function renounceOwnership() returns()
  2162  func (_BridgeTokens *BridgeTokensTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  2163  	return _BridgeTokens.Contract.RenounceOwnership(&_BridgeTokens.TransactOpts)
  2164  }
  2165  
  2166  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  2167  //
  2168  // Solidity: function transferOwnership(address newOwner) returns()
  2169  func (_BridgeTokens *BridgeTokensTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  2170  	return _BridgeTokens.contract.Transact(opts, "transferOwnership", newOwner)
  2171  }
  2172  
  2173  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  2174  //
  2175  // Solidity: function transferOwnership(address newOwner) returns()
  2176  func (_BridgeTokens *BridgeTokensSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  2177  	return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner)
  2178  }
  2179  
  2180  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  2181  //
  2182  // Solidity: function transferOwnership(address newOwner) returns()
  2183  func (_BridgeTokens *BridgeTokensTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  2184  	return _BridgeTokens.Contract.TransferOwnership(&_BridgeTokens.TransactOpts, newOwner)
  2185  }
  2186  
  2187  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  2188  //
  2189  // Solidity: function unlockToken(address _token) returns()
  2190  func (_BridgeTokens *BridgeTokensTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  2191  	return _BridgeTokens.contract.Transact(opts, "unlockToken", _token)
  2192  }
  2193  
  2194  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  2195  //
  2196  // Solidity: function unlockToken(address _token) returns()
  2197  func (_BridgeTokens *BridgeTokensSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
  2198  	return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token)
  2199  }
  2200  
  2201  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  2202  //
  2203  // Solidity: function unlockToken(address _token) returns()
  2204  func (_BridgeTokens *BridgeTokensTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
  2205  	return _BridgeTokens.Contract.UnlockToken(&_BridgeTokens.TransactOpts, _token)
  2206  }
  2207  
  2208  // BridgeTokensOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTokens contract.
  2209  type BridgeTokensOwnershipTransferredIterator struct {
  2210  	Event *BridgeTokensOwnershipTransferred // Event containing the contract specifics and raw log
  2211  
  2212  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2213  	event    string              // Event name to use for unpacking event data
  2214  
  2215  	logs chan types.Log      // Log channel receiving the found contract events
  2216  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2217  	done bool                // Whether the subscription completed delivering logs
  2218  	fail error               // Occurred error to stop iteration
  2219  }
  2220  
  2221  // Next advances the iterator to the subsequent event, returning whether there
  2222  // are any more events found. In case of a retrieval or parsing error, false is
  2223  // returned and Error() can be queried for the exact failure.
  2224  func (it *BridgeTokensOwnershipTransferredIterator) Next() bool {
  2225  	// If the iterator failed, stop iterating
  2226  	if it.fail != nil {
  2227  		return false
  2228  	}
  2229  	// If the iterator completed, deliver directly whatever's available
  2230  	if it.done {
  2231  		select {
  2232  		case log := <-it.logs:
  2233  			it.Event = new(BridgeTokensOwnershipTransferred)
  2234  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2235  				it.fail = err
  2236  				return false
  2237  			}
  2238  			it.Event.Raw = log
  2239  			return true
  2240  
  2241  		default:
  2242  			return false
  2243  		}
  2244  	}
  2245  	// Iterator still in progress, wait for either a data or an error event
  2246  	select {
  2247  	case log := <-it.logs:
  2248  		it.Event = new(BridgeTokensOwnershipTransferred)
  2249  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2250  			it.fail = err
  2251  			return false
  2252  		}
  2253  		it.Event.Raw = log
  2254  		return true
  2255  
  2256  	case err := <-it.sub.Err():
  2257  		it.done = true
  2258  		it.fail = err
  2259  		return it.Next()
  2260  	}
  2261  }
  2262  
  2263  // Error returns any retrieval or parsing error occurred during filtering.
  2264  func (it *BridgeTokensOwnershipTransferredIterator) Error() error {
  2265  	return it.fail
  2266  }
  2267  
  2268  // Close terminates the iteration process, releasing any pending underlying
  2269  // resources.
  2270  func (it *BridgeTokensOwnershipTransferredIterator) Close() error {
  2271  	it.sub.Unsubscribe()
  2272  	return nil
  2273  }
  2274  
  2275  // BridgeTokensOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTokens contract.
  2276  type BridgeTokensOwnershipTransferred struct {
  2277  	PreviousOwner common.Address
  2278  	NewOwner      common.Address
  2279  	Raw           types.Log // Blockchain specific contextual infos
  2280  }
  2281  
  2282  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  2283  //
  2284  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  2285  func (_BridgeTokens *BridgeTokensFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTokensOwnershipTransferredIterator, error) {
  2286  
  2287  	var previousOwnerRule []interface{}
  2288  	for _, previousOwnerItem := range previousOwner {
  2289  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  2290  	}
  2291  	var newOwnerRule []interface{}
  2292  	for _, newOwnerItem := range newOwner {
  2293  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  2294  	}
  2295  
  2296  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  2297  	if err != nil {
  2298  		return nil, err
  2299  	}
  2300  	return &BridgeTokensOwnershipTransferredIterator{contract: _BridgeTokens.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  2301  }
  2302  
  2303  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  2304  //
  2305  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  2306  func (_BridgeTokens *BridgeTokensFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTokensOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  2307  
  2308  	var previousOwnerRule []interface{}
  2309  	for _, previousOwnerItem := range previousOwner {
  2310  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  2311  	}
  2312  	var newOwnerRule []interface{}
  2313  	for _, newOwnerItem := range newOwner {
  2314  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  2315  	}
  2316  
  2317  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  2318  	if err != nil {
  2319  		return nil, err
  2320  	}
  2321  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2322  		defer sub.Unsubscribe()
  2323  		for {
  2324  			select {
  2325  			case log := <-logs:
  2326  				// New log arrived, parse the event and forward to the user
  2327  				event := new(BridgeTokensOwnershipTransferred)
  2328  				if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  2329  					return err
  2330  				}
  2331  				event.Raw = log
  2332  
  2333  				select {
  2334  				case sink <- event:
  2335  				case err := <-sub.Err():
  2336  					return err
  2337  				case <-quit:
  2338  					return nil
  2339  				}
  2340  			case err := <-sub.Err():
  2341  				return err
  2342  			case <-quit:
  2343  				return nil
  2344  			}
  2345  		}
  2346  	}), nil
  2347  }
  2348  
  2349  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  2350  //
  2351  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  2352  func (_BridgeTokens *BridgeTokensFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTokensOwnershipTransferred, error) {
  2353  	event := new(BridgeTokensOwnershipTransferred)
  2354  	if err := _BridgeTokens.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  2355  		return nil, err
  2356  	}
  2357  	return event, nil
  2358  }
  2359  
  2360  // BridgeTokensTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTokens contract.
  2361  type BridgeTokensTokenDeregisteredIterator struct {
  2362  	Event *BridgeTokensTokenDeregistered // Event containing the contract specifics and raw log
  2363  
  2364  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2365  	event    string              // Event name to use for unpacking event data
  2366  
  2367  	logs chan types.Log      // Log channel receiving the found contract events
  2368  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2369  	done bool                // Whether the subscription completed delivering logs
  2370  	fail error               // Occurred error to stop iteration
  2371  }
  2372  
  2373  // Next advances the iterator to the subsequent event, returning whether there
  2374  // are any more events found. In case of a retrieval or parsing error, false is
  2375  // returned and Error() can be queried for the exact failure.
  2376  func (it *BridgeTokensTokenDeregisteredIterator) Next() bool {
  2377  	// If the iterator failed, stop iterating
  2378  	if it.fail != nil {
  2379  		return false
  2380  	}
  2381  	// If the iterator completed, deliver directly whatever's available
  2382  	if it.done {
  2383  		select {
  2384  		case log := <-it.logs:
  2385  			it.Event = new(BridgeTokensTokenDeregistered)
  2386  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2387  				it.fail = err
  2388  				return false
  2389  			}
  2390  			it.Event.Raw = log
  2391  			return true
  2392  
  2393  		default:
  2394  			return false
  2395  		}
  2396  	}
  2397  	// Iterator still in progress, wait for either a data or an error event
  2398  	select {
  2399  	case log := <-it.logs:
  2400  		it.Event = new(BridgeTokensTokenDeregistered)
  2401  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2402  			it.fail = err
  2403  			return false
  2404  		}
  2405  		it.Event.Raw = log
  2406  		return true
  2407  
  2408  	case err := <-it.sub.Err():
  2409  		it.done = true
  2410  		it.fail = err
  2411  		return it.Next()
  2412  	}
  2413  }
  2414  
  2415  // Error returns any retrieval or parsing error occurred during filtering.
  2416  func (it *BridgeTokensTokenDeregisteredIterator) Error() error {
  2417  	return it.fail
  2418  }
  2419  
  2420  // Close terminates the iteration process, releasing any pending underlying
  2421  // resources.
  2422  func (it *BridgeTokensTokenDeregisteredIterator) Close() error {
  2423  	it.sub.Unsubscribe()
  2424  	return nil
  2425  }
  2426  
  2427  // BridgeTokensTokenDeregistered represents a TokenDeregistered event raised by the BridgeTokens contract.
  2428  type BridgeTokensTokenDeregistered struct {
  2429  	Token common.Address
  2430  	Raw   types.Log // Blockchain specific contextual infos
  2431  }
  2432  
  2433  // FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  2434  //
  2435  // Solidity: event TokenDeregistered(address indexed token)
  2436  func (_BridgeTokens *BridgeTokensFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenDeregisteredIterator, error) {
  2437  
  2438  	var tokenRule []interface{}
  2439  	for _, tokenItem := range token {
  2440  		tokenRule = append(tokenRule, tokenItem)
  2441  	}
  2442  
  2443  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenDeregistered", tokenRule)
  2444  	if err != nil {
  2445  		return nil, err
  2446  	}
  2447  	return &BridgeTokensTokenDeregisteredIterator{contract: _BridgeTokens.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil
  2448  }
  2449  
  2450  // WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  2451  //
  2452  // Solidity: event TokenDeregistered(address indexed token)
  2453  func (_BridgeTokens *BridgeTokensFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenDeregistered, token []common.Address) (event.Subscription, error) {
  2454  
  2455  	var tokenRule []interface{}
  2456  	for _, tokenItem := range token {
  2457  		tokenRule = append(tokenRule, tokenItem)
  2458  	}
  2459  
  2460  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenDeregistered", tokenRule)
  2461  	if err != nil {
  2462  		return nil, err
  2463  	}
  2464  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2465  		defer sub.Unsubscribe()
  2466  		for {
  2467  			select {
  2468  			case log := <-logs:
  2469  				// New log arrived, parse the event and forward to the user
  2470  				event := new(BridgeTokensTokenDeregistered)
  2471  				if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
  2472  					return err
  2473  				}
  2474  				event.Raw = log
  2475  
  2476  				select {
  2477  				case sink <- event:
  2478  				case err := <-sub.Err():
  2479  					return err
  2480  				case <-quit:
  2481  					return nil
  2482  				}
  2483  			case err := <-sub.Err():
  2484  				return err
  2485  			case <-quit:
  2486  				return nil
  2487  			}
  2488  		}
  2489  	}), nil
  2490  }
  2491  
  2492  // ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  2493  //
  2494  // Solidity: event TokenDeregistered(address indexed token)
  2495  func (_BridgeTokens *BridgeTokensFilterer) ParseTokenDeregistered(log types.Log) (*BridgeTokensTokenDeregistered, error) {
  2496  	event := new(BridgeTokensTokenDeregistered)
  2497  	if err := _BridgeTokens.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
  2498  		return nil, err
  2499  	}
  2500  	return event, nil
  2501  }
  2502  
  2503  // BridgeTokensTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTokens contract.
  2504  type BridgeTokensTokenLockedIterator struct {
  2505  	Event *BridgeTokensTokenLocked // Event containing the contract specifics and raw log
  2506  
  2507  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2508  	event    string              // Event name to use for unpacking event data
  2509  
  2510  	logs chan types.Log      // Log channel receiving the found contract events
  2511  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2512  	done bool                // Whether the subscription completed delivering logs
  2513  	fail error               // Occurred error to stop iteration
  2514  }
  2515  
  2516  // Next advances the iterator to the subsequent event, returning whether there
  2517  // are any more events found. In case of a retrieval or parsing error, false is
  2518  // returned and Error() can be queried for the exact failure.
  2519  func (it *BridgeTokensTokenLockedIterator) Next() bool {
  2520  	// If the iterator failed, stop iterating
  2521  	if it.fail != nil {
  2522  		return false
  2523  	}
  2524  	// If the iterator completed, deliver directly whatever's available
  2525  	if it.done {
  2526  		select {
  2527  		case log := <-it.logs:
  2528  			it.Event = new(BridgeTokensTokenLocked)
  2529  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2530  				it.fail = err
  2531  				return false
  2532  			}
  2533  			it.Event.Raw = log
  2534  			return true
  2535  
  2536  		default:
  2537  			return false
  2538  		}
  2539  	}
  2540  	// Iterator still in progress, wait for either a data or an error event
  2541  	select {
  2542  	case log := <-it.logs:
  2543  		it.Event = new(BridgeTokensTokenLocked)
  2544  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2545  			it.fail = err
  2546  			return false
  2547  		}
  2548  		it.Event.Raw = log
  2549  		return true
  2550  
  2551  	case err := <-it.sub.Err():
  2552  		it.done = true
  2553  		it.fail = err
  2554  		return it.Next()
  2555  	}
  2556  }
  2557  
  2558  // Error returns any retrieval or parsing error occurred during filtering.
  2559  func (it *BridgeTokensTokenLockedIterator) Error() error {
  2560  	return it.fail
  2561  }
  2562  
  2563  // Close terminates the iteration process, releasing any pending underlying
  2564  // resources.
  2565  func (it *BridgeTokensTokenLockedIterator) Close() error {
  2566  	it.sub.Unsubscribe()
  2567  	return nil
  2568  }
  2569  
  2570  // BridgeTokensTokenLocked represents a TokenLocked event raised by the BridgeTokens contract.
  2571  type BridgeTokensTokenLocked struct {
  2572  	Token common.Address
  2573  	Raw   types.Log // Blockchain specific contextual infos
  2574  }
  2575  
  2576  // FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  2577  //
  2578  // Solidity: event TokenLocked(address indexed token)
  2579  func (_BridgeTokens *BridgeTokensFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenLockedIterator, error) {
  2580  
  2581  	var tokenRule []interface{}
  2582  	for _, tokenItem := range token {
  2583  		tokenRule = append(tokenRule, tokenItem)
  2584  	}
  2585  
  2586  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenLocked", tokenRule)
  2587  	if err != nil {
  2588  		return nil, err
  2589  	}
  2590  	return &BridgeTokensTokenLockedIterator{contract: _BridgeTokens.contract, event: "TokenLocked", logs: logs, sub: sub}, nil
  2591  }
  2592  
  2593  // WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  2594  //
  2595  // Solidity: event TokenLocked(address indexed token)
  2596  func (_BridgeTokens *BridgeTokensFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenLocked, token []common.Address) (event.Subscription, error) {
  2597  
  2598  	var tokenRule []interface{}
  2599  	for _, tokenItem := range token {
  2600  		tokenRule = append(tokenRule, tokenItem)
  2601  	}
  2602  
  2603  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenLocked", tokenRule)
  2604  	if err != nil {
  2605  		return nil, err
  2606  	}
  2607  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2608  		defer sub.Unsubscribe()
  2609  		for {
  2610  			select {
  2611  			case log := <-logs:
  2612  				// New log arrived, parse the event and forward to the user
  2613  				event := new(BridgeTokensTokenLocked)
  2614  				if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil {
  2615  					return err
  2616  				}
  2617  				event.Raw = log
  2618  
  2619  				select {
  2620  				case sink <- event:
  2621  				case err := <-sub.Err():
  2622  					return err
  2623  				case <-quit:
  2624  					return nil
  2625  				}
  2626  			case err := <-sub.Err():
  2627  				return err
  2628  			case <-quit:
  2629  				return nil
  2630  			}
  2631  		}
  2632  	}), nil
  2633  }
  2634  
  2635  // ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  2636  //
  2637  // Solidity: event TokenLocked(address indexed token)
  2638  func (_BridgeTokens *BridgeTokensFilterer) ParseTokenLocked(log types.Log) (*BridgeTokensTokenLocked, error) {
  2639  	event := new(BridgeTokensTokenLocked)
  2640  	if err := _BridgeTokens.contract.UnpackLog(event, "TokenLocked", log); err != nil {
  2641  		return nil, err
  2642  	}
  2643  	return event, nil
  2644  }
  2645  
  2646  // BridgeTokensTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTokens contract.
  2647  type BridgeTokensTokenRegisteredIterator struct {
  2648  	Event *BridgeTokensTokenRegistered // Event containing the contract specifics and raw log
  2649  
  2650  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2651  	event    string              // Event name to use for unpacking event data
  2652  
  2653  	logs chan types.Log      // Log channel receiving the found contract events
  2654  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2655  	done bool                // Whether the subscription completed delivering logs
  2656  	fail error               // Occurred error to stop iteration
  2657  }
  2658  
  2659  // Next advances the iterator to the subsequent event, returning whether there
  2660  // are any more events found. In case of a retrieval or parsing error, false is
  2661  // returned and Error() can be queried for the exact failure.
  2662  func (it *BridgeTokensTokenRegisteredIterator) Next() bool {
  2663  	// If the iterator failed, stop iterating
  2664  	if it.fail != nil {
  2665  		return false
  2666  	}
  2667  	// If the iterator completed, deliver directly whatever's available
  2668  	if it.done {
  2669  		select {
  2670  		case log := <-it.logs:
  2671  			it.Event = new(BridgeTokensTokenRegistered)
  2672  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2673  				it.fail = err
  2674  				return false
  2675  			}
  2676  			it.Event.Raw = log
  2677  			return true
  2678  
  2679  		default:
  2680  			return false
  2681  		}
  2682  	}
  2683  	// Iterator still in progress, wait for either a data or an error event
  2684  	select {
  2685  	case log := <-it.logs:
  2686  		it.Event = new(BridgeTokensTokenRegistered)
  2687  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2688  			it.fail = err
  2689  			return false
  2690  		}
  2691  		it.Event.Raw = log
  2692  		return true
  2693  
  2694  	case err := <-it.sub.Err():
  2695  		it.done = true
  2696  		it.fail = err
  2697  		return it.Next()
  2698  	}
  2699  }
  2700  
  2701  // Error returns any retrieval or parsing error occurred during filtering.
  2702  func (it *BridgeTokensTokenRegisteredIterator) Error() error {
  2703  	return it.fail
  2704  }
  2705  
  2706  // Close terminates the iteration process, releasing any pending underlying
  2707  // resources.
  2708  func (it *BridgeTokensTokenRegisteredIterator) Close() error {
  2709  	it.sub.Unsubscribe()
  2710  	return nil
  2711  }
  2712  
  2713  // BridgeTokensTokenRegistered represents a TokenRegistered event raised by the BridgeTokens contract.
  2714  type BridgeTokensTokenRegistered struct {
  2715  	Token common.Address
  2716  	Raw   types.Log // Blockchain specific contextual infos
  2717  }
  2718  
  2719  // FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  2720  //
  2721  // Solidity: event TokenRegistered(address indexed token)
  2722  func (_BridgeTokens *BridgeTokensFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenRegisteredIterator, error) {
  2723  
  2724  	var tokenRule []interface{}
  2725  	for _, tokenItem := range token {
  2726  		tokenRule = append(tokenRule, tokenItem)
  2727  	}
  2728  
  2729  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenRegistered", tokenRule)
  2730  	if err != nil {
  2731  		return nil, err
  2732  	}
  2733  	return &BridgeTokensTokenRegisteredIterator{contract: _BridgeTokens.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil
  2734  }
  2735  
  2736  // WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  2737  //
  2738  // Solidity: event TokenRegistered(address indexed token)
  2739  func (_BridgeTokens *BridgeTokensFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenRegistered, token []common.Address) (event.Subscription, error) {
  2740  
  2741  	var tokenRule []interface{}
  2742  	for _, tokenItem := range token {
  2743  		tokenRule = append(tokenRule, tokenItem)
  2744  	}
  2745  
  2746  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenRegistered", tokenRule)
  2747  	if err != nil {
  2748  		return nil, err
  2749  	}
  2750  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2751  		defer sub.Unsubscribe()
  2752  		for {
  2753  			select {
  2754  			case log := <-logs:
  2755  				// New log arrived, parse the event and forward to the user
  2756  				event := new(BridgeTokensTokenRegistered)
  2757  				if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
  2758  					return err
  2759  				}
  2760  				event.Raw = log
  2761  
  2762  				select {
  2763  				case sink <- event:
  2764  				case err := <-sub.Err():
  2765  					return err
  2766  				case <-quit:
  2767  					return nil
  2768  				}
  2769  			case err := <-sub.Err():
  2770  				return err
  2771  			case <-quit:
  2772  				return nil
  2773  			}
  2774  		}
  2775  	}), nil
  2776  }
  2777  
  2778  // ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  2779  //
  2780  // Solidity: event TokenRegistered(address indexed token)
  2781  func (_BridgeTokens *BridgeTokensFilterer) ParseTokenRegistered(log types.Log) (*BridgeTokensTokenRegistered, error) {
  2782  	event := new(BridgeTokensTokenRegistered)
  2783  	if err := _BridgeTokens.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
  2784  		return nil, err
  2785  	}
  2786  	return event, nil
  2787  }
  2788  
  2789  // BridgeTokensTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTokens contract.
  2790  type BridgeTokensTokenUnlockedIterator struct {
  2791  	Event *BridgeTokensTokenUnlocked // Event containing the contract specifics and raw log
  2792  
  2793  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2794  	event    string              // Event name to use for unpacking event data
  2795  
  2796  	logs chan types.Log      // Log channel receiving the found contract events
  2797  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2798  	done bool                // Whether the subscription completed delivering logs
  2799  	fail error               // Occurred error to stop iteration
  2800  }
  2801  
  2802  // Next advances the iterator to the subsequent event, returning whether there
  2803  // are any more events found. In case of a retrieval or parsing error, false is
  2804  // returned and Error() can be queried for the exact failure.
  2805  func (it *BridgeTokensTokenUnlockedIterator) Next() bool {
  2806  	// If the iterator failed, stop iterating
  2807  	if it.fail != nil {
  2808  		return false
  2809  	}
  2810  	// If the iterator completed, deliver directly whatever's available
  2811  	if it.done {
  2812  		select {
  2813  		case log := <-it.logs:
  2814  			it.Event = new(BridgeTokensTokenUnlocked)
  2815  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2816  				it.fail = err
  2817  				return false
  2818  			}
  2819  			it.Event.Raw = log
  2820  			return true
  2821  
  2822  		default:
  2823  			return false
  2824  		}
  2825  	}
  2826  	// Iterator still in progress, wait for either a data or an error event
  2827  	select {
  2828  	case log := <-it.logs:
  2829  		it.Event = new(BridgeTokensTokenUnlocked)
  2830  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2831  			it.fail = err
  2832  			return false
  2833  		}
  2834  		it.Event.Raw = log
  2835  		return true
  2836  
  2837  	case err := <-it.sub.Err():
  2838  		it.done = true
  2839  		it.fail = err
  2840  		return it.Next()
  2841  	}
  2842  }
  2843  
  2844  // Error returns any retrieval or parsing error occurred during filtering.
  2845  func (it *BridgeTokensTokenUnlockedIterator) Error() error {
  2846  	return it.fail
  2847  }
  2848  
  2849  // Close terminates the iteration process, releasing any pending underlying
  2850  // resources.
  2851  func (it *BridgeTokensTokenUnlockedIterator) Close() error {
  2852  	it.sub.Unsubscribe()
  2853  	return nil
  2854  }
  2855  
  2856  // BridgeTokensTokenUnlocked represents a TokenUnlocked event raised by the BridgeTokens contract.
  2857  type BridgeTokensTokenUnlocked struct {
  2858  	Token common.Address
  2859  	Raw   types.Log // Blockchain specific contextual infos
  2860  }
  2861  
  2862  // FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  2863  //
  2864  // Solidity: event TokenUnlocked(address indexed token)
  2865  func (_BridgeTokens *BridgeTokensFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTokensTokenUnlockedIterator, error) {
  2866  
  2867  	var tokenRule []interface{}
  2868  	for _, tokenItem := range token {
  2869  		tokenRule = append(tokenRule, tokenItem)
  2870  	}
  2871  
  2872  	logs, sub, err := _BridgeTokens.contract.FilterLogs(opts, "TokenUnlocked", tokenRule)
  2873  	if err != nil {
  2874  		return nil, err
  2875  	}
  2876  	return &BridgeTokensTokenUnlockedIterator{contract: _BridgeTokens.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil
  2877  }
  2878  
  2879  // WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  2880  //
  2881  // Solidity: event TokenUnlocked(address indexed token)
  2882  func (_BridgeTokens *BridgeTokensFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTokensTokenUnlocked, token []common.Address) (event.Subscription, error) {
  2883  
  2884  	var tokenRule []interface{}
  2885  	for _, tokenItem := range token {
  2886  		tokenRule = append(tokenRule, tokenItem)
  2887  	}
  2888  
  2889  	logs, sub, err := _BridgeTokens.contract.WatchLogs(opts, "TokenUnlocked", tokenRule)
  2890  	if err != nil {
  2891  		return nil, err
  2892  	}
  2893  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2894  		defer sub.Unsubscribe()
  2895  		for {
  2896  			select {
  2897  			case log := <-logs:
  2898  				// New log arrived, parse the event and forward to the user
  2899  				event := new(BridgeTokensTokenUnlocked)
  2900  				if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
  2901  					return err
  2902  				}
  2903  				event.Raw = log
  2904  
  2905  				select {
  2906  				case sink <- event:
  2907  				case err := <-sub.Err():
  2908  					return err
  2909  				case <-quit:
  2910  					return nil
  2911  				}
  2912  			case err := <-sub.Err():
  2913  				return err
  2914  			case <-quit:
  2915  				return nil
  2916  			}
  2917  		}
  2918  	}), nil
  2919  }
  2920  
  2921  // ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  2922  //
  2923  // Solidity: event TokenUnlocked(address indexed token)
  2924  func (_BridgeTokens *BridgeTokensFilterer) ParseTokenUnlocked(log types.Log) (*BridgeTokensTokenUnlocked, error) {
  2925  	event := new(BridgeTokensTokenUnlocked)
  2926  	if err := _BridgeTokens.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
  2927  		return nil, err
  2928  	}
  2929  	return event, nil
  2930  }
  2931  
  2932  // BridgeTransferABI is the input ABI used to generate the binding from.
  2933  const BridgeTransferABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
  2934  
  2935  // BridgeTransferBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  2936  const BridgeTransferBinRuntime = ``
  2937  
  2938  // BridgeTransferFuncSigs maps the 4-byte function signature to its string representation.
  2939  var BridgeTransferFuncSigs = map[string]string{
  2940  	"3a3099d1": "MAX_OPERATOR()",
  2941  	"9832c1d7": "closedValueTransferVotes(uint64)",
  2942  	"ac6fff0b": "configurationNonce()",
  2943  	"d8cf98ca": "deregisterOperator(address)",
  2944  	"488af871": "feeOfERC20(address)",
  2945  	"c263b5d6": "feeOfKLAY()",
  2946  	"b3f00674": "feeReceiver()",
  2947  	"b2c01030": "getOperatorList()",
  2948  	"13a6738a": "handleNoncesToBlockNums(uint64)",
  2949  	"8a75eee2": "handledRequestTx(bytes32)",
  2950  	"8f32d59b": "isOwner()",
  2951  	"2014e5d1": "isRunning()",
  2952  	"4b40b826": "lowerHandleNonce()",
  2953  	"6e176ec2": "modeMintBurn()",
  2954  	"cb38f407": "operatorList(uint256)",
  2955  	"5526f76b": "operatorThresholds(uint8)",
  2956  	"13e7c9d8": "operators(address)",
  2957  	"8da5cb5b": "owner()",
  2958  	"989ba0d3": "recoveryBlockNumber()",
  2959  	"3682a450": "registerOperator(address)",
  2960  	"715018a6": "renounceOwnership()",
  2961  	"7c1a0302": "requestNonce()",
  2962  	"efdcd974": "setFeeReceiver(address)",
  2963  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
  2964  	"c877cf37": "start(bool)",
  2965  	"f2fde38b": "transferOwnership(address)",
  2966  	"54edad72": "upperHandleNonce()",
  2967  }
  2968  
  2969  // BridgeTransfer is an auto generated Go binding around a Klaytn contract.
  2970  type BridgeTransfer struct {
  2971  	BridgeTransferCaller     // Read-only binding to the contract
  2972  	BridgeTransferTransactor // Write-only binding to the contract
  2973  	BridgeTransferFilterer   // Log filterer for contract events
  2974  }
  2975  
  2976  // BridgeTransferCaller is an auto generated read-only Go binding around a Klaytn contract.
  2977  type BridgeTransferCaller struct {
  2978  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2979  }
  2980  
  2981  // BridgeTransferTransactor is an auto generated write-only Go binding around a Klaytn contract.
  2982  type BridgeTransferTransactor struct {
  2983  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2984  }
  2985  
  2986  // BridgeTransferFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  2987  type BridgeTransferFilterer struct {
  2988  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2989  }
  2990  
  2991  // BridgeTransferSession is an auto generated Go binding around a Klaytn contract,
  2992  // with pre-set call and transact options.
  2993  type BridgeTransferSession struct {
  2994  	Contract     *BridgeTransfer   // Generic contract binding to set the session for
  2995  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2996  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2997  }
  2998  
  2999  // BridgeTransferCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  3000  // with pre-set call options.
  3001  type BridgeTransferCallerSession struct {
  3002  	Contract *BridgeTransferCaller // Generic contract caller binding to set the session for
  3003  	CallOpts bind.CallOpts         // Call options to use throughout this session
  3004  }
  3005  
  3006  // BridgeTransferTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  3007  // with pre-set transact options.
  3008  type BridgeTransferTransactorSession struct {
  3009  	Contract     *BridgeTransferTransactor // Generic contract transactor binding to set the session for
  3010  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  3011  }
  3012  
  3013  // BridgeTransferRaw is an auto generated low-level Go binding around a Klaytn contract.
  3014  type BridgeTransferRaw struct {
  3015  	Contract *BridgeTransfer // Generic contract binding to access the raw methods on
  3016  }
  3017  
  3018  // BridgeTransferCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  3019  type BridgeTransferCallerRaw struct {
  3020  	Contract *BridgeTransferCaller // Generic read-only contract binding to access the raw methods on
  3021  }
  3022  
  3023  // BridgeTransferTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  3024  type BridgeTransferTransactorRaw struct {
  3025  	Contract *BridgeTransferTransactor // Generic write-only contract binding to access the raw methods on
  3026  }
  3027  
  3028  // NewBridgeTransfer creates a new instance of BridgeTransfer, bound to a specific deployed contract.
  3029  func NewBridgeTransfer(address common.Address, backend bind.ContractBackend) (*BridgeTransfer, error) {
  3030  	contract, err := bindBridgeTransfer(address, backend, backend, backend)
  3031  	if err != nil {
  3032  		return nil, err
  3033  	}
  3034  	return &BridgeTransfer{BridgeTransferCaller: BridgeTransferCaller{contract: contract}, BridgeTransferTransactor: BridgeTransferTransactor{contract: contract}, BridgeTransferFilterer: BridgeTransferFilterer{contract: contract}}, nil
  3035  }
  3036  
  3037  // NewBridgeTransferCaller creates a new read-only instance of BridgeTransfer, bound to a specific deployed contract.
  3038  func NewBridgeTransferCaller(address common.Address, caller bind.ContractCaller) (*BridgeTransferCaller, error) {
  3039  	contract, err := bindBridgeTransfer(address, caller, nil, nil)
  3040  	if err != nil {
  3041  		return nil, err
  3042  	}
  3043  	return &BridgeTransferCaller{contract: contract}, nil
  3044  }
  3045  
  3046  // NewBridgeTransferTransactor creates a new write-only instance of BridgeTransfer, bound to a specific deployed contract.
  3047  func NewBridgeTransferTransactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferTransactor, error) {
  3048  	contract, err := bindBridgeTransfer(address, nil, transactor, nil)
  3049  	if err != nil {
  3050  		return nil, err
  3051  	}
  3052  	return &BridgeTransferTransactor{contract: contract}, nil
  3053  }
  3054  
  3055  // NewBridgeTransferFilterer creates a new log filterer instance of BridgeTransfer, bound to a specific deployed contract.
  3056  func NewBridgeTransferFilterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferFilterer, error) {
  3057  	contract, err := bindBridgeTransfer(address, nil, nil, filterer)
  3058  	if err != nil {
  3059  		return nil, err
  3060  	}
  3061  	return &BridgeTransferFilterer{contract: contract}, nil
  3062  }
  3063  
  3064  // bindBridgeTransfer binds a generic wrapper to an already deployed contract.
  3065  func bindBridgeTransfer(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3066  	parsed, err := abi.JSON(strings.NewReader(BridgeTransferABI))
  3067  	if err != nil {
  3068  		return nil, err
  3069  	}
  3070  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  3071  }
  3072  
  3073  // Call invokes the (constant) contract method with params as input values and
  3074  // sets the output to result. The result type might be a single field for simple
  3075  // returns, a slice of interfaces for anonymous returns and a struct for named
  3076  // returns.
  3077  func (_BridgeTransfer *BridgeTransferRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3078  	return _BridgeTransfer.Contract.BridgeTransferCaller.contract.Call(opts, result, method, params...)
  3079  }
  3080  
  3081  // Transfer initiates a plain transaction to move funds to the contract, calling
  3082  // its default method if one is available.
  3083  func (_BridgeTransfer *BridgeTransferRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3084  	return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transfer(opts)
  3085  }
  3086  
  3087  // Transact invokes the (paid) contract method with params as input values.
  3088  func (_BridgeTransfer *BridgeTransferRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3089  	return _BridgeTransfer.Contract.BridgeTransferTransactor.contract.Transact(opts, method, params...)
  3090  }
  3091  
  3092  // Call invokes the (constant) contract method with params as input values and
  3093  // sets the output to result. The result type might be a single field for simple
  3094  // returns, a slice of interfaces for anonymous returns and a struct for named
  3095  // returns.
  3096  func (_BridgeTransfer *BridgeTransferCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3097  	return _BridgeTransfer.Contract.contract.Call(opts, result, method, params...)
  3098  }
  3099  
  3100  // Transfer initiates a plain transaction to move funds to the contract, calling
  3101  // its default method if one is available.
  3102  func (_BridgeTransfer *BridgeTransferTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3103  	return _BridgeTransfer.Contract.contract.Transfer(opts)
  3104  }
  3105  
  3106  // Transact invokes the (paid) contract method with params as input values.
  3107  func (_BridgeTransfer *BridgeTransferTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3108  	return _BridgeTransfer.Contract.contract.Transact(opts, method, params...)
  3109  }
  3110  
  3111  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  3112  //
  3113  // Solidity: function MAX_OPERATOR() view returns(uint64)
  3114  func (_BridgeTransfer *BridgeTransferCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
  3115  	var (
  3116  		ret0 = new(uint64)
  3117  	)
  3118  	out := ret0
  3119  	err := _BridgeTransfer.contract.Call(opts, out, "MAX_OPERATOR")
  3120  	return *ret0, err
  3121  }
  3122  
  3123  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  3124  //
  3125  // Solidity: function MAX_OPERATOR() view returns(uint64)
  3126  func (_BridgeTransfer *BridgeTransferSession) MAXOPERATOR() (uint64, error) {
  3127  	return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts)
  3128  }
  3129  
  3130  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  3131  //
  3132  // Solidity: function MAX_OPERATOR() view returns(uint64)
  3133  func (_BridgeTransfer *BridgeTransferCallerSession) MAXOPERATOR() (uint64, error) {
  3134  	return _BridgeTransfer.Contract.MAXOPERATOR(&_BridgeTransfer.CallOpts)
  3135  }
  3136  
  3137  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  3138  //
  3139  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  3140  func (_BridgeTransfer *BridgeTransferCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
  3141  	var (
  3142  		ret0 = new(bool)
  3143  	)
  3144  	out := ret0
  3145  	err := _BridgeTransfer.contract.Call(opts, out, "closedValueTransferVotes", arg0)
  3146  	return *ret0, err
  3147  }
  3148  
  3149  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  3150  //
  3151  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  3152  func (_BridgeTransfer *BridgeTransferSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  3153  	return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0)
  3154  }
  3155  
  3156  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  3157  //
  3158  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  3159  func (_BridgeTransfer *BridgeTransferCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  3160  	return _BridgeTransfer.Contract.ClosedValueTransferVotes(&_BridgeTransfer.CallOpts, arg0)
  3161  }
  3162  
  3163  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  3164  //
  3165  // Solidity: function configurationNonce() view returns(uint64)
  3166  func (_BridgeTransfer *BridgeTransferCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
  3167  	var (
  3168  		ret0 = new(uint64)
  3169  	)
  3170  	out := ret0
  3171  	err := _BridgeTransfer.contract.Call(opts, out, "configurationNonce")
  3172  	return *ret0, err
  3173  }
  3174  
  3175  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  3176  //
  3177  // Solidity: function configurationNonce() view returns(uint64)
  3178  func (_BridgeTransfer *BridgeTransferSession) ConfigurationNonce() (uint64, error) {
  3179  	return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts)
  3180  }
  3181  
  3182  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  3183  //
  3184  // Solidity: function configurationNonce() view returns(uint64)
  3185  func (_BridgeTransfer *BridgeTransferCallerSession) ConfigurationNonce() (uint64, error) {
  3186  	return _BridgeTransfer.Contract.ConfigurationNonce(&_BridgeTransfer.CallOpts)
  3187  }
  3188  
  3189  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  3190  //
  3191  // Solidity: function feeOfERC20(address ) view returns(uint256)
  3192  func (_BridgeTransfer *BridgeTransferCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  3193  	var (
  3194  		ret0 = new(*big.Int)
  3195  	)
  3196  	out := ret0
  3197  	err := _BridgeTransfer.contract.Call(opts, out, "feeOfERC20", arg0)
  3198  	return *ret0, err
  3199  }
  3200  
  3201  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  3202  //
  3203  // Solidity: function feeOfERC20(address ) view returns(uint256)
  3204  func (_BridgeTransfer *BridgeTransferSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  3205  	return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0)
  3206  }
  3207  
  3208  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  3209  //
  3210  // Solidity: function feeOfERC20(address ) view returns(uint256)
  3211  func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  3212  	return _BridgeTransfer.Contract.FeeOfERC20(&_BridgeTransfer.CallOpts, arg0)
  3213  }
  3214  
  3215  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  3216  //
  3217  // Solidity: function feeOfKLAY() view returns(uint256)
  3218  func (_BridgeTransfer *BridgeTransferCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
  3219  	var (
  3220  		ret0 = new(*big.Int)
  3221  	)
  3222  	out := ret0
  3223  	err := _BridgeTransfer.contract.Call(opts, out, "feeOfKLAY")
  3224  	return *ret0, err
  3225  }
  3226  
  3227  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  3228  //
  3229  // Solidity: function feeOfKLAY() view returns(uint256)
  3230  func (_BridgeTransfer *BridgeTransferSession) FeeOfKLAY() (*big.Int, error) {
  3231  	return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts)
  3232  }
  3233  
  3234  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  3235  //
  3236  // Solidity: function feeOfKLAY() view returns(uint256)
  3237  func (_BridgeTransfer *BridgeTransferCallerSession) FeeOfKLAY() (*big.Int, error) {
  3238  	return _BridgeTransfer.Contract.FeeOfKLAY(&_BridgeTransfer.CallOpts)
  3239  }
  3240  
  3241  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  3242  //
  3243  // Solidity: function feeReceiver() view returns(address)
  3244  func (_BridgeTransfer *BridgeTransferCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
  3245  	var (
  3246  		ret0 = new(common.Address)
  3247  	)
  3248  	out := ret0
  3249  	err := _BridgeTransfer.contract.Call(opts, out, "feeReceiver")
  3250  	return *ret0, err
  3251  }
  3252  
  3253  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  3254  //
  3255  // Solidity: function feeReceiver() view returns(address)
  3256  func (_BridgeTransfer *BridgeTransferSession) FeeReceiver() (common.Address, error) {
  3257  	return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts)
  3258  }
  3259  
  3260  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  3261  //
  3262  // Solidity: function feeReceiver() view returns(address)
  3263  func (_BridgeTransfer *BridgeTransferCallerSession) FeeReceiver() (common.Address, error) {
  3264  	return _BridgeTransfer.Contract.FeeReceiver(&_BridgeTransfer.CallOpts)
  3265  }
  3266  
  3267  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  3268  //
  3269  // Solidity: function getOperatorList() view returns(address[])
  3270  func (_BridgeTransfer *BridgeTransferCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
  3271  	var (
  3272  		ret0 = new([]common.Address)
  3273  	)
  3274  	out := ret0
  3275  	err := _BridgeTransfer.contract.Call(opts, out, "getOperatorList")
  3276  	return *ret0, err
  3277  }
  3278  
  3279  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  3280  //
  3281  // Solidity: function getOperatorList() view returns(address[])
  3282  func (_BridgeTransfer *BridgeTransferSession) GetOperatorList() ([]common.Address, error) {
  3283  	return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts)
  3284  }
  3285  
  3286  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  3287  //
  3288  // Solidity: function getOperatorList() view returns(address[])
  3289  func (_BridgeTransfer *BridgeTransferCallerSession) GetOperatorList() ([]common.Address, error) {
  3290  	return _BridgeTransfer.Contract.GetOperatorList(&_BridgeTransfer.CallOpts)
  3291  }
  3292  
  3293  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  3294  //
  3295  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  3296  func (_BridgeTransfer *BridgeTransferCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) {
  3297  	var (
  3298  		ret0 = new(uint64)
  3299  	)
  3300  	out := ret0
  3301  	err := _BridgeTransfer.contract.Call(opts, out, "handleNoncesToBlockNums", arg0)
  3302  	return *ret0, err
  3303  }
  3304  
  3305  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  3306  //
  3307  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  3308  func (_BridgeTransfer *BridgeTransferSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  3309  	return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0)
  3310  }
  3311  
  3312  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  3313  //
  3314  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  3315  func (_BridgeTransfer *BridgeTransferCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  3316  	return _BridgeTransfer.Contract.HandleNoncesToBlockNums(&_BridgeTransfer.CallOpts, arg0)
  3317  }
  3318  
  3319  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  3320  //
  3321  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  3322  func (_BridgeTransfer *BridgeTransferCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
  3323  	var (
  3324  		ret0 = new(bool)
  3325  	)
  3326  	out := ret0
  3327  	err := _BridgeTransfer.contract.Call(opts, out, "handledRequestTx", arg0)
  3328  	return *ret0, err
  3329  }
  3330  
  3331  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  3332  //
  3333  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  3334  func (_BridgeTransfer *BridgeTransferSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  3335  	return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0)
  3336  }
  3337  
  3338  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  3339  //
  3340  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  3341  func (_BridgeTransfer *BridgeTransferCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  3342  	return _BridgeTransfer.Contract.HandledRequestTx(&_BridgeTransfer.CallOpts, arg0)
  3343  }
  3344  
  3345  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3346  //
  3347  // Solidity: function isOwner() view returns(bool)
  3348  func (_BridgeTransfer *BridgeTransferCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  3349  	var (
  3350  		ret0 = new(bool)
  3351  	)
  3352  	out := ret0
  3353  	err := _BridgeTransfer.contract.Call(opts, out, "isOwner")
  3354  	return *ret0, err
  3355  }
  3356  
  3357  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3358  //
  3359  // Solidity: function isOwner() view returns(bool)
  3360  func (_BridgeTransfer *BridgeTransferSession) IsOwner() (bool, error) {
  3361  	return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts)
  3362  }
  3363  
  3364  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  3365  //
  3366  // Solidity: function isOwner() view returns(bool)
  3367  func (_BridgeTransfer *BridgeTransferCallerSession) IsOwner() (bool, error) {
  3368  	return _BridgeTransfer.Contract.IsOwner(&_BridgeTransfer.CallOpts)
  3369  }
  3370  
  3371  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  3372  //
  3373  // Solidity: function isRunning() view returns(bool)
  3374  func (_BridgeTransfer *BridgeTransferCaller) IsRunning(opts *bind.CallOpts) (bool, error) {
  3375  	var (
  3376  		ret0 = new(bool)
  3377  	)
  3378  	out := ret0
  3379  	err := _BridgeTransfer.contract.Call(opts, out, "isRunning")
  3380  	return *ret0, err
  3381  }
  3382  
  3383  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  3384  //
  3385  // Solidity: function isRunning() view returns(bool)
  3386  func (_BridgeTransfer *BridgeTransferSession) IsRunning() (bool, error) {
  3387  	return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts)
  3388  }
  3389  
  3390  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  3391  //
  3392  // Solidity: function isRunning() view returns(bool)
  3393  func (_BridgeTransfer *BridgeTransferCallerSession) IsRunning() (bool, error) {
  3394  	return _BridgeTransfer.Contract.IsRunning(&_BridgeTransfer.CallOpts)
  3395  }
  3396  
  3397  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  3398  //
  3399  // Solidity: function lowerHandleNonce() view returns(uint64)
  3400  func (_BridgeTransfer *BridgeTransferCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) {
  3401  	var (
  3402  		ret0 = new(uint64)
  3403  	)
  3404  	out := ret0
  3405  	err := _BridgeTransfer.contract.Call(opts, out, "lowerHandleNonce")
  3406  	return *ret0, err
  3407  }
  3408  
  3409  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  3410  //
  3411  // Solidity: function lowerHandleNonce() view returns(uint64)
  3412  func (_BridgeTransfer *BridgeTransferSession) LowerHandleNonce() (uint64, error) {
  3413  	return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts)
  3414  }
  3415  
  3416  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  3417  //
  3418  // Solidity: function lowerHandleNonce() view returns(uint64)
  3419  func (_BridgeTransfer *BridgeTransferCallerSession) LowerHandleNonce() (uint64, error) {
  3420  	return _BridgeTransfer.Contract.LowerHandleNonce(&_BridgeTransfer.CallOpts)
  3421  }
  3422  
  3423  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  3424  //
  3425  // Solidity: function modeMintBurn() view returns(bool)
  3426  func (_BridgeTransfer *BridgeTransferCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) {
  3427  	var (
  3428  		ret0 = new(bool)
  3429  	)
  3430  	out := ret0
  3431  	err := _BridgeTransfer.contract.Call(opts, out, "modeMintBurn")
  3432  	return *ret0, err
  3433  }
  3434  
  3435  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  3436  //
  3437  // Solidity: function modeMintBurn() view returns(bool)
  3438  func (_BridgeTransfer *BridgeTransferSession) ModeMintBurn() (bool, error) {
  3439  	return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts)
  3440  }
  3441  
  3442  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  3443  //
  3444  // Solidity: function modeMintBurn() view returns(bool)
  3445  func (_BridgeTransfer *BridgeTransferCallerSession) ModeMintBurn() (bool, error) {
  3446  	return _BridgeTransfer.Contract.ModeMintBurn(&_BridgeTransfer.CallOpts)
  3447  }
  3448  
  3449  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  3450  //
  3451  // Solidity: function operatorList(uint256 ) view returns(address)
  3452  func (_BridgeTransfer *BridgeTransferCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  3453  	var (
  3454  		ret0 = new(common.Address)
  3455  	)
  3456  	out := ret0
  3457  	err := _BridgeTransfer.contract.Call(opts, out, "operatorList", arg0)
  3458  	return *ret0, err
  3459  }
  3460  
  3461  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  3462  //
  3463  // Solidity: function operatorList(uint256 ) view returns(address)
  3464  func (_BridgeTransfer *BridgeTransferSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  3465  	return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0)
  3466  }
  3467  
  3468  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  3469  //
  3470  // Solidity: function operatorList(uint256 ) view returns(address)
  3471  func (_BridgeTransfer *BridgeTransferCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  3472  	return _BridgeTransfer.Contract.OperatorList(&_BridgeTransfer.CallOpts, arg0)
  3473  }
  3474  
  3475  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  3476  //
  3477  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  3478  func (_BridgeTransfer *BridgeTransferCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
  3479  	var (
  3480  		ret0 = new(uint8)
  3481  	)
  3482  	out := ret0
  3483  	err := _BridgeTransfer.contract.Call(opts, out, "operatorThresholds", arg0)
  3484  	return *ret0, err
  3485  }
  3486  
  3487  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  3488  //
  3489  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  3490  func (_BridgeTransfer *BridgeTransferSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  3491  	return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0)
  3492  }
  3493  
  3494  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  3495  //
  3496  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  3497  func (_BridgeTransfer *BridgeTransferCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  3498  	return _BridgeTransfer.Contract.OperatorThresholds(&_BridgeTransfer.CallOpts, arg0)
  3499  }
  3500  
  3501  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  3502  //
  3503  // Solidity: function operators(address ) view returns(bool)
  3504  func (_BridgeTransfer *BridgeTransferCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  3505  	var (
  3506  		ret0 = new(bool)
  3507  	)
  3508  	out := ret0
  3509  	err := _BridgeTransfer.contract.Call(opts, out, "operators", arg0)
  3510  	return *ret0, err
  3511  }
  3512  
  3513  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  3514  //
  3515  // Solidity: function operators(address ) view returns(bool)
  3516  func (_BridgeTransfer *BridgeTransferSession) Operators(arg0 common.Address) (bool, error) {
  3517  	return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0)
  3518  }
  3519  
  3520  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  3521  //
  3522  // Solidity: function operators(address ) view returns(bool)
  3523  func (_BridgeTransfer *BridgeTransferCallerSession) Operators(arg0 common.Address) (bool, error) {
  3524  	return _BridgeTransfer.Contract.Operators(&_BridgeTransfer.CallOpts, arg0)
  3525  }
  3526  
  3527  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3528  //
  3529  // Solidity: function owner() view returns(address)
  3530  func (_BridgeTransfer *BridgeTransferCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  3531  	var (
  3532  		ret0 = new(common.Address)
  3533  	)
  3534  	out := ret0
  3535  	err := _BridgeTransfer.contract.Call(opts, out, "owner")
  3536  	return *ret0, err
  3537  }
  3538  
  3539  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3540  //
  3541  // Solidity: function owner() view returns(address)
  3542  func (_BridgeTransfer *BridgeTransferSession) Owner() (common.Address, error) {
  3543  	return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts)
  3544  }
  3545  
  3546  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  3547  //
  3548  // Solidity: function owner() view returns(address)
  3549  func (_BridgeTransfer *BridgeTransferCallerSession) Owner() (common.Address, error) {
  3550  	return _BridgeTransfer.Contract.Owner(&_BridgeTransfer.CallOpts)
  3551  }
  3552  
  3553  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  3554  //
  3555  // Solidity: function recoveryBlockNumber() view returns(uint64)
  3556  func (_BridgeTransfer *BridgeTransferCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) {
  3557  	var (
  3558  		ret0 = new(uint64)
  3559  	)
  3560  	out := ret0
  3561  	err := _BridgeTransfer.contract.Call(opts, out, "recoveryBlockNumber")
  3562  	return *ret0, err
  3563  }
  3564  
  3565  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  3566  //
  3567  // Solidity: function recoveryBlockNumber() view returns(uint64)
  3568  func (_BridgeTransfer *BridgeTransferSession) RecoveryBlockNumber() (uint64, error) {
  3569  	return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts)
  3570  }
  3571  
  3572  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  3573  //
  3574  // Solidity: function recoveryBlockNumber() view returns(uint64)
  3575  func (_BridgeTransfer *BridgeTransferCallerSession) RecoveryBlockNumber() (uint64, error) {
  3576  	return _BridgeTransfer.Contract.RecoveryBlockNumber(&_BridgeTransfer.CallOpts)
  3577  }
  3578  
  3579  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  3580  //
  3581  // Solidity: function requestNonce() view returns(uint64)
  3582  func (_BridgeTransfer *BridgeTransferCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) {
  3583  	var (
  3584  		ret0 = new(uint64)
  3585  	)
  3586  	out := ret0
  3587  	err := _BridgeTransfer.contract.Call(opts, out, "requestNonce")
  3588  	return *ret0, err
  3589  }
  3590  
  3591  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  3592  //
  3593  // Solidity: function requestNonce() view returns(uint64)
  3594  func (_BridgeTransfer *BridgeTransferSession) RequestNonce() (uint64, error) {
  3595  	return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts)
  3596  }
  3597  
  3598  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  3599  //
  3600  // Solidity: function requestNonce() view returns(uint64)
  3601  func (_BridgeTransfer *BridgeTransferCallerSession) RequestNonce() (uint64, error) {
  3602  	return _BridgeTransfer.Contract.RequestNonce(&_BridgeTransfer.CallOpts)
  3603  }
  3604  
  3605  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  3606  //
  3607  // Solidity: function upperHandleNonce() view returns(uint64)
  3608  func (_BridgeTransfer *BridgeTransferCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) {
  3609  	var (
  3610  		ret0 = new(uint64)
  3611  	)
  3612  	out := ret0
  3613  	err := _BridgeTransfer.contract.Call(opts, out, "upperHandleNonce")
  3614  	return *ret0, err
  3615  }
  3616  
  3617  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  3618  //
  3619  // Solidity: function upperHandleNonce() view returns(uint64)
  3620  func (_BridgeTransfer *BridgeTransferSession) UpperHandleNonce() (uint64, error) {
  3621  	return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts)
  3622  }
  3623  
  3624  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  3625  //
  3626  // Solidity: function upperHandleNonce() view returns(uint64)
  3627  func (_BridgeTransfer *BridgeTransferCallerSession) UpperHandleNonce() (uint64, error) {
  3628  	return _BridgeTransfer.Contract.UpperHandleNonce(&_BridgeTransfer.CallOpts)
  3629  }
  3630  
  3631  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  3632  //
  3633  // Solidity: function deregisterOperator(address _operator) returns()
  3634  func (_BridgeTransfer *BridgeTransferTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  3635  	return _BridgeTransfer.contract.Transact(opts, "deregisterOperator", _operator)
  3636  }
  3637  
  3638  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  3639  //
  3640  // Solidity: function deregisterOperator(address _operator) returns()
  3641  func (_BridgeTransfer *BridgeTransferSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  3642  	return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator)
  3643  }
  3644  
  3645  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  3646  //
  3647  // Solidity: function deregisterOperator(address _operator) returns()
  3648  func (_BridgeTransfer *BridgeTransferTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  3649  	return _BridgeTransfer.Contract.DeregisterOperator(&_BridgeTransfer.TransactOpts, _operator)
  3650  }
  3651  
  3652  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  3653  //
  3654  // Solidity: function registerOperator(address _operator) returns()
  3655  func (_BridgeTransfer *BridgeTransferTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  3656  	return _BridgeTransfer.contract.Transact(opts, "registerOperator", _operator)
  3657  }
  3658  
  3659  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  3660  //
  3661  // Solidity: function registerOperator(address _operator) returns()
  3662  func (_BridgeTransfer *BridgeTransferSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  3663  	return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator)
  3664  }
  3665  
  3666  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  3667  //
  3668  // Solidity: function registerOperator(address _operator) returns()
  3669  func (_BridgeTransfer *BridgeTransferTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  3670  	return _BridgeTransfer.Contract.RegisterOperator(&_BridgeTransfer.TransactOpts, _operator)
  3671  }
  3672  
  3673  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  3674  //
  3675  // Solidity: function renounceOwnership() returns()
  3676  func (_BridgeTransfer *BridgeTransferTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  3677  	return _BridgeTransfer.contract.Transact(opts, "renounceOwnership")
  3678  }
  3679  
  3680  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  3681  //
  3682  // Solidity: function renounceOwnership() returns()
  3683  func (_BridgeTransfer *BridgeTransferSession) RenounceOwnership() (*types.Transaction, error) {
  3684  	return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts)
  3685  }
  3686  
  3687  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  3688  //
  3689  // Solidity: function renounceOwnership() returns()
  3690  func (_BridgeTransfer *BridgeTransferTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  3691  	return _BridgeTransfer.Contract.RenounceOwnership(&_BridgeTransfer.TransactOpts)
  3692  }
  3693  
  3694  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  3695  //
  3696  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  3697  func (_BridgeTransfer *BridgeTransferTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) {
  3698  	return _BridgeTransfer.contract.Transact(opts, "setFeeReceiver", _feeReceiver)
  3699  }
  3700  
  3701  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  3702  //
  3703  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  3704  func (_BridgeTransfer *BridgeTransferSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  3705  	return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver)
  3706  }
  3707  
  3708  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  3709  //
  3710  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  3711  func (_BridgeTransfer *BridgeTransferTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  3712  	return _BridgeTransfer.Contract.SetFeeReceiver(&_BridgeTransfer.TransactOpts, _feeReceiver)
  3713  }
  3714  
  3715  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  3716  //
  3717  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  3718  func (_BridgeTransfer *BridgeTransferTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
  3719  	return _BridgeTransfer.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
  3720  }
  3721  
  3722  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  3723  //
  3724  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  3725  func (_BridgeTransfer *BridgeTransferSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  3726  	return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold)
  3727  }
  3728  
  3729  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  3730  //
  3731  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  3732  func (_BridgeTransfer *BridgeTransferTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  3733  	return _BridgeTransfer.Contract.SetOperatorThreshold(&_BridgeTransfer.TransactOpts, _voteType, _threshold)
  3734  }
  3735  
  3736  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  3737  //
  3738  // Solidity: function start(bool _status) returns()
  3739  func (_BridgeTransfer *BridgeTransferTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) {
  3740  	return _BridgeTransfer.contract.Transact(opts, "start", _status)
  3741  }
  3742  
  3743  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  3744  //
  3745  // Solidity: function start(bool _status) returns()
  3746  func (_BridgeTransfer *BridgeTransferSession) Start(_status bool) (*types.Transaction, error) {
  3747  	return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status)
  3748  }
  3749  
  3750  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  3751  //
  3752  // Solidity: function start(bool _status) returns()
  3753  func (_BridgeTransfer *BridgeTransferTransactorSession) Start(_status bool) (*types.Transaction, error) {
  3754  	return _BridgeTransfer.Contract.Start(&_BridgeTransfer.TransactOpts, _status)
  3755  }
  3756  
  3757  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  3758  //
  3759  // Solidity: function transferOwnership(address newOwner) returns()
  3760  func (_BridgeTransfer *BridgeTransferTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  3761  	return _BridgeTransfer.contract.Transact(opts, "transferOwnership", newOwner)
  3762  }
  3763  
  3764  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  3765  //
  3766  // Solidity: function transferOwnership(address newOwner) returns()
  3767  func (_BridgeTransfer *BridgeTransferSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  3768  	return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner)
  3769  }
  3770  
  3771  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  3772  //
  3773  // Solidity: function transferOwnership(address newOwner) returns()
  3774  func (_BridgeTransfer *BridgeTransferTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  3775  	return _BridgeTransfer.Contract.TransferOwnership(&_BridgeTransfer.TransactOpts, newOwner)
  3776  }
  3777  
  3778  // BridgeTransferERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransfer contract.
  3779  type BridgeTransferERC20FeeChangedIterator struct {
  3780  	Event *BridgeTransferERC20FeeChanged // Event containing the contract specifics and raw log
  3781  
  3782  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3783  	event    string              // Event name to use for unpacking event data
  3784  
  3785  	logs chan types.Log      // Log channel receiving the found contract events
  3786  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3787  	done bool                // Whether the subscription completed delivering logs
  3788  	fail error               // Occurred error to stop iteration
  3789  }
  3790  
  3791  // Next advances the iterator to the subsequent event, returning whether there
  3792  // are any more events found. In case of a retrieval or parsing error, false is
  3793  // returned and Error() can be queried for the exact failure.
  3794  func (it *BridgeTransferERC20FeeChangedIterator) Next() bool {
  3795  	// If the iterator failed, stop iterating
  3796  	if it.fail != nil {
  3797  		return false
  3798  	}
  3799  	// If the iterator completed, deliver directly whatever's available
  3800  	if it.done {
  3801  		select {
  3802  		case log := <-it.logs:
  3803  			it.Event = new(BridgeTransferERC20FeeChanged)
  3804  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3805  				it.fail = err
  3806  				return false
  3807  			}
  3808  			it.Event.Raw = log
  3809  			return true
  3810  
  3811  		default:
  3812  			return false
  3813  		}
  3814  	}
  3815  	// Iterator still in progress, wait for either a data or an error event
  3816  	select {
  3817  	case log := <-it.logs:
  3818  		it.Event = new(BridgeTransferERC20FeeChanged)
  3819  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3820  			it.fail = err
  3821  			return false
  3822  		}
  3823  		it.Event.Raw = log
  3824  		return true
  3825  
  3826  	case err := <-it.sub.Err():
  3827  		it.done = true
  3828  		it.fail = err
  3829  		return it.Next()
  3830  	}
  3831  }
  3832  
  3833  // Error returns any retrieval or parsing error occurred during filtering.
  3834  func (it *BridgeTransferERC20FeeChangedIterator) Error() error {
  3835  	return it.fail
  3836  }
  3837  
  3838  // Close terminates the iteration process, releasing any pending underlying
  3839  // resources.
  3840  func (it *BridgeTransferERC20FeeChangedIterator) Close() error {
  3841  	it.sub.Unsubscribe()
  3842  	return nil
  3843  }
  3844  
  3845  // BridgeTransferERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransfer contract.
  3846  type BridgeTransferERC20FeeChanged struct {
  3847  	Token common.Address
  3848  	Fee   *big.Int
  3849  	Raw   types.Log // Blockchain specific contextual infos
  3850  }
  3851  
  3852  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  3853  //
  3854  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  3855  func (_BridgeTransfer *BridgeTransferFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20FeeChangedIterator, error) {
  3856  
  3857  	var tokenRule []interface{}
  3858  	for _, tokenItem := range token {
  3859  		tokenRule = append(tokenRule, tokenItem)
  3860  	}
  3861  	var feeRule []interface{}
  3862  	for _, feeItem := range fee {
  3863  		feeRule = append(feeRule, feeItem)
  3864  	}
  3865  
  3866  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  3867  	if err != nil {
  3868  		return nil, err
  3869  	}
  3870  	return &BridgeTransferERC20FeeChangedIterator{contract: _BridgeTransfer.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
  3871  }
  3872  
  3873  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  3874  //
  3875  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  3876  func (_BridgeTransfer *BridgeTransferFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
  3877  
  3878  	var tokenRule []interface{}
  3879  	for _, tokenItem := range token {
  3880  		tokenRule = append(tokenRule, tokenItem)
  3881  	}
  3882  	var feeRule []interface{}
  3883  	for _, feeItem := range fee {
  3884  		feeRule = append(feeRule, feeItem)
  3885  	}
  3886  
  3887  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  3888  	if err != nil {
  3889  		return nil, err
  3890  	}
  3891  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3892  		defer sub.Unsubscribe()
  3893  		for {
  3894  			select {
  3895  			case log := <-logs:
  3896  				// New log arrived, parse the event and forward to the user
  3897  				event := new(BridgeTransferERC20FeeChanged)
  3898  				if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  3899  					return err
  3900  				}
  3901  				event.Raw = log
  3902  
  3903  				select {
  3904  				case sink <- event:
  3905  				case err := <-sub.Err():
  3906  					return err
  3907  				case <-quit:
  3908  					return nil
  3909  				}
  3910  			case err := <-sub.Err():
  3911  				return err
  3912  			case <-quit:
  3913  				return nil
  3914  			}
  3915  		}
  3916  	}), nil
  3917  }
  3918  
  3919  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  3920  //
  3921  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  3922  func (_BridgeTransfer *BridgeTransferFilterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20FeeChanged, error) {
  3923  	event := new(BridgeTransferERC20FeeChanged)
  3924  	if err := _BridgeTransfer.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  3925  		return nil, err
  3926  	}
  3927  	return event, nil
  3928  }
  3929  
  3930  // BridgeTransferFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransfer contract.
  3931  type BridgeTransferFeeReceiverChangedIterator struct {
  3932  	Event *BridgeTransferFeeReceiverChanged // Event containing the contract specifics and raw log
  3933  
  3934  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3935  	event    string              // Event name to use for unpacking event data
  3936  
  3937  	logs chan types.Log      // Log channel receiving the found contract events
  3938  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3939  	done bool                // Whether the subscription completed delivering logs
  3940  	fail error               // Occurred error to stop iteration
  3941  }
  3942  
  3943  // Next advances the iterator to the subsequent event, returning whether there
  3944  // are any more events found. In case of a retrieval or parsing error, false is
  3945  // returned and Error() can be queried for the exact failure.
  3946  func (it *BridgeTransferFeeReceiverChangedIterator) Next() bool {
  3947  	// If the iterator failed, stop iterating
  3948  	if it.fail != nil {
  3949  		return false
  3950  	}
  3951  	// If the iterator completed, deliver directly whatever's available
  3952  	if it.done {
  3953  		select {
  3954  		case log := <-it.logs:
  3955  			it.Event = new(BridgeTransferFeeReceiverChanged)
  3956  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3957  				it.fail = err
  3958  				return false
  3959  			}
  3960  			it.Event.Raw = log
  3961  			return true
  3962  
  3963  		default:
  3964  			return false
  3965  		}
  3966  	}
  3967  	// Iterator still in progress, wait for either a data or an error event
  3968  	select {
  3969  	case log := <-it.logs:
  3970  		it.Event = new(BridgeTransferFeeReceiverChanged)
  3971  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3972  			it.fail = err
  3973  			return false
  3974  		}
  3975  		it.Event.Raw = log
  3976  		return true
  3977  
  3978  	case err := <-it.sub.Err():
  3979  		it.done = true
  3980  		it.fail = err
  3981  		return it.Next()
  3982  	}
  3983  }
  3984  
  3985  // Error returns any retrieval or parsing error occurred during filtering.
  3986  func (it *BridgeTransferFeeReceiverChangedIterator) Error() error {
  3987  	return it.fail
  3988  }
  3989  
  3990  // Close terminates the iteration process, releasing any pending underlying
  3991  // resources.
  3992  func (it *BridgeTransferFeeReceiverChangedIterator) Close() error {
  3993  	it.sub.Unsubscribe()
  3994  	return nil
  3995  }
  3996  
  3997  // BridgeTransferFeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransfer contract.
  3998  type BridgeTransferFeeReceiverChanged struct {
  3999  	FeeReceiver common.Address
  4000  	Raw         types.Log // Blockchain specific contextual infos
  4001  }
  4002  
  4003  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  4004  //
  4005  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  4006  func (_BridgeTransfer *BridgeTransferFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferFeeReceiverChangedIterator, error) {
  4007  
  4008  	var feeReceiverRule []interface{}
  4009  	for _, feeReceiverItem := range feeReceiver {
  4010  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  4011  	}
  4012  
  4013  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  4014  	if err != nil {
  4015  		return nil, err
  4016  	}
  4017  	return &BridgeTransferFeeReceiverChangedIterator{contract: _BridgeTransfer.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
  4018  }
  4019  
  4020  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  4021  //
  4022  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  4023  func (_BridgeTransfer *BridgeTransferFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
  4024  
  4025  	var feeReceiverRule []interface{}
  4026  	for _, feeReceiverItem := range feeReceiver {
  4027  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  4028  	}
  4029  
  4030  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  4031  	if err != nil {
  4032  		return nil, err
  4033  	}
  4034  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4035  		defer sub.Unsubscribe()
  4036  		for {
  4037  			select {
  4038  			case log := <-logs:
  4039  				// New log arrived, parse the event and forward to the user
  4040  				event := new(BridgeTransferFeeReceiverChanged)
  4041  				if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  4042  					return err
  4043  				}
  4044  				event.Raw = log
  4045  
  4046  				select {
  4047  				case sink <- event:
  4048  				case err := <-sub.Err():
  4049  					return err
  4050  				case <-quit:
  4051  					return nil
  4052  				}
  4053  			case err := <-sub.Err():
  4054  				return err
  4055  			case <-quit:
  4056  				return nil
  4057  			}
  4058  		}
  4059  	}), nil
  4060  }
  4061  
  4062  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  4063  //
  4064  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  4065  func (_BridgeTransfer *BridgeTransferFilterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferFeeReceiverChanged, error) {
  4066  	event := new(BridgeTransferFeeReceiverChanged)
  4067  	if err := _BridgeTransfer.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  4068  		return nil, err
  4069  	}
  4070  	return event, nil
  4071  }
  4072  
  4073  // BridgeTransferHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransfer contract.
  4074  type BridgeTransferHandleValueTransferIterator struct {
  4075  	Event *BridgeTransferHandleValueTransfer // Event containing the contract specifics and raw log
  4076  
  4077  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4078  	event    string              // Event name to use for unpacking event data
  4079  
  4080  	logs chan types.Log      // Log channel receiving the found contract events
  4081  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4082  	done bool                // Whether the subscription completed delivering logs
  4083  	fail error               // Occurred error to stop iteration
  4084  }
  4085  
  4086  // Next advances the iterator to the subsequent event, returning whether there
  4087  // are any more events found. In case of a retrieval or parsing error, false is
  4088  // returned and Error() can be queried for the exact failure.
  4089  func (it *BridgeTransferHandleValueTransferIterator) Next() bool {
  4090  	// If the iterator failed, stop iterating
  4091  	if it.fail != nil {
  4092  		return false
  4093  	}
  4094  	// If the iterator completed, deliver directly whatever's available
  4095  	if it.done {
  4096  		select {
  4097  		case log := <-it.logs:
  4098  			it.Event = new(BridgeTransferHandleValueTransfer)
  4099  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4100  				it.fail = err
  4101  				return false
  4102  			}
  4103  			it.Event.Raw = log
  4104  			return true
  4105  
  4106  		default:
  4107  			return false
  4108  		}
  4109  	}
  4110  	// Iterator still in progress, wait for either a data or an error event
  4111  	select {
  4112  	case log := <-it.logs:
  4113  		it.Event = new(BridgeTransferHandleValueTransfer)
  4114  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4115  			it.fail = err
  4116  			return false
  4117  		}
  4118  		it.Event.Raw = log
  4119  		return true
  4120  
  4121  	case err := <-it.sub.Err():
  4122  		it.done = true
  4123  		it.fail = err
  4124  		return it.Next()
  4125  	}
  4126  }
  4127  
  4128  // Error returns any retrieval or parsing error occurred during filtering.
  4129  func (it *BridgeTransferHandleValueTransferIterator) Error() error {
  4130  	return it.fail
  4131  }
  4132  
  4133  // Close terminates the iteration process, releasing any pending underlying
  4134  // resources.
  4135  func (it *BridgeTransferHandleValueTransferIterator) Close() error {
  4136  	it.sub.Unsubscribe()
  4137  	return nil
  4138  }
  4139  
  4140  // BridgeTransferHandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransfer contract.
  4141  type BridgeTransferHandleValueTransfer struct {
  4142  	RequestTxHash    [32]byte
  4143  	TokenType        uint8
  4144  	From             common.Address
  4145  	To               common.Address
  4146  	TokenAddress     common.Address
  4147  	ValueOrTokenId   *big.Int
  4148  	HandleNonce      uint64
  4149  	LowerHandleNonce uint64
  4150  	ExtraData        []byte
  4151  	Raw              types.Log // Blockchain specific contextual infos
  4152  }
  4153  
  4154  // FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  4155  //
  4156  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  4157  func (_BridgeTransfer *BridgeTransferFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferHandleValueTransferIterator, error) {
  4158  
  4159  	var fromRule []interface{}
  4160  	for _, fromItem := range from {
  4161  		fromRule = append(fromRule, fromItem)
  4162  	}
  4163  	var toRule []interface{}
  4164  	for _, toItem := range to {
  4165  		toRule = append(toRule, toItem)
  4166  	}
  4167  	var tokenAddressRule []interface{}
  4168  	for _, tokenAddressItem := range tokenAddress {
  4169  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  4170  	}
  4171  
  4172  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  4173  	if err != nil {
  4174  		return nil, err
  4175  	}
  4176  	return &BridgeTransferHandleValueTransferIterator{contract: _BridgeTransfer.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil
  4177  }
  4178  
  4179  // WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  4180  //
  4181  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  4182  func (_BridgeTransfer *BridgeTransferFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  4183  
  4184  	var fromRule []interface{}
  4185  	for _, fromItem := range from {
  4186  		fromRule = append(fromRule, fromItem)
  4187  	}
  4188  	var toRule []interface{}
  4189  	for _, toItem := range to {
  4190  		toRule = append(toRule, toItem)
  4191  	}
  4192  	var tokenAddressRule []interface{}
  4193  	for _, tokenAddressItem := range tokenAddress {
  4194  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  4195  	}
  4196  
  4197  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  4198  	if err != nil {
  4199  		return nil, err
  4200  	}
  4201  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4202  		defer sub.Unsubscribe()
  4203  		for {
  4204  			select {
  4205  			case log := <-logs:
  4206  				// New log arrived, parse the event and forward to the user
  4207  				event := new(BridgeTransferHandleValueTransfer)
  4208  				if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  4209  					return err
  4210  				}
  4211  				event.Raw = log
  4212  
  4213  				select {
  4214  				case sink <- event:
  4215  				case err := <-sub.Err():
  4216  					return err
  4217  				case <-quit:
  4218  					return nil
  4219  				}
  4220  			case err := <-sub.Err():
  4221  				return err
  4222  			case <-quit:
  4223  				return nil
  4224  			}
  4225  		}
  4226  	}), nil
  4227  }
  4228  
  4229  // ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  4230  //
  4231  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  4232  func (_BridgeTransfer *BridgeTransferFilterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferHandleValueTransfer, error) {
  4233  	event := new(BridgeTransferHandleValueTransfer)
  4234  	if err := _BridgeTransfer.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  4235  		return nil, err
  4236  	}
  4237  	return event, nil
  4238  }
  4239  
  4240  // BridgeTransferKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransfer contract.
  4241  type BridgeTransferKLAYFeeChangedIterator struct {
  4242  	Event *BridgeTransferKLAYFeeChanged // Event containing the contract specifics and raw log
  4243  
  4244  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4245  	event    string              // Event name to use for unpacking event data
  4246  
  4247  	logs chan types.Log      // Log channel receiving the found contract events
  4248  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4249  	done bool                // Whether the subscription completed delivering logs
  4250  	fail error               // Occurred error to stop iteration
  4251  }
  4252  
  4253  // Next advances the iterator to the subsequent event, returning whether there
  4254  // are any more events found. In case of a retrieval or parsing error, false is
  4255  // returned and Error() can be queried for the exact failure.
  4256  func (it *BridgeTransferKLAYFeeChangedIterator) Next() bool {
  4257  	// If the iterator failed, stop iterating
  4258  	if it.fail != nil {
  4259  		return false
  4260  	}
  4261  	// If the iterator completed, deliver directly whatever's available
  4262  	if it.done {
  4263  		select {
  4264  		case log := <-it.logs:
  4265  			it.Event = new(BridgeTransferKLAYFeeChanged)
  4266  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4267  				it.fail = err
  4268  				return false
  4269  			}
  4270  			it.Event.Raw = log
  4271  			return true
  4272  
  4273  		default:
  4274  			return false
  4275  		}
  4276  	}
  4277  	// Iterator still in progress, wait for either a data or an error event
  4278  	select {
  4279  	case log := <-it.logs:
  4280  		it.Event = new(BridgeTransferKLAYFeeChanged)
  4281  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4282  			it.fail = err
  4283  			return false
  4284  		}
  4285  		it.Event.Raw = log
  4286  		return true
  4287  
  4288  	case err := <-it.sub.Err():
  4289  		it.done = true
  4290  		it.fail = err
  4291  		return it.Next()
  4292  	}
  4293  }
  4294  
  4295  // Error returns any retrieval or parsing error occurred during filtering.
  4296  func (it *BridgeTransferKLAYFeeChangedIterator) Error() error {
  4297  	return it.fail
  4298  }
  4299  
  4300  // Close terminates the iteration process, releasing any pending underlying
  4301  // resources.
  4302  func (it *BridgeTransferKLAYFeeChangedIterator) Close() error {
  4303  	it.sub.Unsubscribe()
  4304  	return nil
  4305  }
  4306  
  4307  // BridgeTransferKLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransfer contract.
  4308  type BridgeTransferKLAYFeeChanged struct {
  4309  	Fee *big.Int
  4310  	Raw types.Log // Blockchain specific contextual infos
  4311  }
  4312  
  4313  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  4314  //
  4315  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  4316  func (_BridgeTransfer *BridgeTransferFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferKLAYFeeChangedIterator, error) {
  4317  
  4318  	var feeRule []interface{}
  4319  	for _, feeItem := range fee {
  4320  		feeRule = append(feeRule, feeItem)
  4321  	}
  4322  
  4323  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
  4324  	if err != nil {
  4325  		return nil, err
  4326  	}
  4327  	return &BridgeTransferKLAYFeeChangedIterator{contract: _BridgeTransfer.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
  4328  }
  4329  
  4330  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  4331  //
  4332  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  4333  func (_BridgeTransfer *BridgeTransferFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
  4334  
  4335  	var feeRule []interface{}
  4336  	for _, feeItem := range fee {
  4337  		feeRule = append(feeRule, feeItem)
  4338  	}
  4339  
  4340  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
  4341  	if err != nil {
  4342  		return nil, err
  4343  	}
  4344  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4345  		defer sub.Unsubscribe()
  4346  		for {
  4347  			select {
  4348  			case log := <-logs:
  4349  				// New log arrived, parse the event and forward to the user
  4350  				event := new(BridgeTransferKLAYFeeChanged)
  4351  				if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  4352  					return err
  4353  				}
  4354  				event.Raw = log
  4355  
  4356  				select {
  4357  				case sink <- event:
  4358  				case err := <-sub.Err():
  4359  					return err
  4360  				case <-quit:
  4361  					return nil
  4362  				}
  4363  			case err := <-sub.Err():
  4364  				return err
  4365  			case <-quit:
  4366  				return nil
  4367  			}
  4368  		}
  4369  	}), nil
  4370  }
  4371  
  4372  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  4373  //
  4374  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  4375  func (_BridgeTransfer *BridgeTransferFilterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferKLAYFeeChanged, error) {
  4376  	event := new(BridgeTransferKLAYFeeChanged)
  4377  	if err := _BridgeTransfer.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  4378  		return nil, err
  4379  	}
  4380  	return event, nil
  4381  }
  4382  
  4383  // BridgeTransferOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransfer contract.
  4384  type BridgeTransferOwnershipTransferredIterator struct {
  4385  	Event *BridgeTransferOwnershipTransferred // Event containing the contract specifics and raw log
  4386  
  4387  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4388  	event    string              // Event name to use for unpacking event data
  4389  
  4390  	logs chan types.Log      // Log channel receiving the found contract events
  4391  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4392  	done bool                // Whether the subscription completed delivering logs
  4393  	fail error               // Occurred error to stop iteration
  4394  }
  4395  
  4396  // Next advances the iterator to the subsequent event, returning whether there
  4397  // are any more events found. In case of a retrieval or parsing error, false is
  4398  // returned and Error() can be queried for the exact failure.
  4399  func (it *BridgeTransferOwnershipTransferredIterator) Next() bool {
  4400  	// If the iterator failed, stop iterating
  4401  	if it.fail != nil {
  4402  		return false
  4403  	}
  4404  	// If the iterator completed, deliver directly whatever's available
  4405  	if it.done {
  4406  		select {
  4407  		case log := <-it.logs:
  4408  			it.Event = new(BridgeTransferOwnershipTransferred)
  4409  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4410  				it.fail = err
  4411  				return false
  4412  			}
  4413  			it.Event.Raw = log
  4414  			return true
  4415  
  4416  		default:
  4417  			return false
  4418  		}
  4419  	}
  4420  	// Iterator still in progress, wait for either a data or an error event
  4421  	select {
  4422  	case log := <-it.logs:
  4423  		it.Event = new(BridgeTransferOwnershipTransferred)
  4424  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4425  			it.fail = err
  4426  			return false
  4427  		}
  4428  		it.Event.Raw = log
  4429  		return true
  4430  
  4431  	case err := <-it.sub.Err():
  4432  		it.done = true
  4433  		it.fail = err
  4434  		return it.Next()
  4435  	}
  4436  }
  4437  
  4438  // Error returns any retrieval or parsing error occurred during filtering.
  4439  func (it *BridgeTransferOwnershipTransferredIterator) Error() error {
  4440  	return it.fail
  4441  }
  4442  
  4443  // Close terminates the iteration process, releasing any pending underlying
  4444  // resources.
  4445  func (it *BridgeTransferOwnershipTransferredIterator) Close() error {
  4446  	it.sub.Unsubscribe()
  4447  	return nil
  4448  }
  4449  
  4450  // BridgeTransferOwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransfer contract.
  4451  type BridgeTransferOwnershipTransferred struct {
  4452  	PreviousOwner common.Address
  4453  	NewOwner      common.Address
  4454  	Raw           types.Log // Blockchain specific contextual infos
  4455  }
  4456  
  4457  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  4458  //
  4459  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  4460  func (_BridgeTransfer *BridgeTransferFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferOwnershipTransferredIterator, error) {
  4461  
  4462  	var previousOwnerRule []interface{}
  4463  	for _, previousOwnerItem := range previousOwner {
  4464  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  4465  	}
  4466  	var newOwnerRule []interface{}
  4467  	for _, newOwnerItem := range newOwner {
  4468  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  4469  	}
  4470  
  4471  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  4472  	if err != nil {
  4473  		return nil, err
  4474  	}
  4475  	return &BridgeTransferOwnershipTransferredIterator{contract: _BridgeTransfer.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  4476  }
  4477  
  4478  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  4479  //
  4480  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  4481  func (_BridgeTransfer *BridgeTransferFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  4482  
  4483  	var previousOwnerRule []interface{}
  4484  	for _, previousOwnerItem := range previousOwner {
  4485  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  4486  	}
  4487  	var newOwnerRule []interface{}
  4488  	for _, newOwnerItem := range newOwner {
  4489  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  4490  	}
  4491  
  4492  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  4493  	if err != nil {
  4494  		return nil, err
  4495  	}
  4496  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4497  		defer sub.Unsubscribe()
  4498  		for {
  4499  			select {
  4500  			case log := <-logs:
  4501  				// New log arrived, parse the event and forward to the user
  4502  				event := new(BridgeTransferOwnershipTransferred)
  4503  				if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  4504  					return err
  4505  				}
  4506  				event.Raw = log
  4507  
  4508  				select {
  4509  				case sink <- event:
  4510  				case err := <-sub.Err():
  4511  					return err
  4512  				case <-quit:
  4513  					return nil
  4514  				}
  4515  			case err := <-sub.Err():
  4516  				return err
  4517  			case <-quit:
  4518  				return nil
  4519  			}
  4520  		}
  4521  	}), nil
  4522  }
  4523  
  4524  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  4525  //
  4526  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  4527  func (_BridgeTransfer *BridgeTransferFilterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferOwnershipTransferred, error) {
  4528  	event := new(BridgeTransferOwnershipTransferred)
  4529  	if err := _BridgeTransfer.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  4530  		return nil, err
  4531  	}
  4532  	return event, nil
  4533  }
  4534  
  4535  // BridgeTransferRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransfer contract.
  4536  type BridgeTransferRequestValueTransferIterator struct {
  4537  	Event *BridgeTransferRequestValueTransfer // Event containing the contract specifics and raw log
  4538  
  4539  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4540  	event    string              // Event name to use for unpacking event data
  4541  
  4542  	logs chan types.Log      // Log channel receiving the found contract events
  4543  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4544  	done bool                // Whether the subscription completed delivering logs
  4545  	fail error               // Occurred error to stop iteration
  4546  }
  4547  
  4548  // Next advances the iterator to the subsequent event, returning whether there
  4549  // are any more events found. In case of a retrieval or parsing error, false is
  4550  // returned and Error() can be queried for the exact failure.
  4551  func (it *BridgeTransferRequestValueTransferIterator) Next() bool {
  4552  	// If the iterator failed, stop iterating
  4553  	if it.fail != nil {
  4554  		return false
  4555  	}
  4556  	// If the iterator completed, deliver directly whatever's available
  4557  	if it.done {
  4558  		select {
  4559  		case log := <-it.logs:
  4560  			it.Event = new(BridgeTransferRequestValueTransfer)
  4561  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4562  				it.fail = err
  4563  				return false
  4564  			}
  4565  			it.Event.Raw = log
  4566  			return true
  4567  
  4568  		default:
  4569  			return false
  4570  		}
  4571  	}
  4572  	// Iterator still in progress, wait for either a data or an error event
  4573  	select {
  4574  	case log := <-it.logs:
  4575  		it.Event = new(BridgeTransferRequestValueTransfer)
  4576  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4577  			it.fail = err
  4578  			return false
  4579  		}
  4580  		it.Event.Raw = log
  4581  		return true
  4582  
  4583  	case err := <-it.sub.Err():
  4584  		it.done = true
  4585  		it.fail = err
  4586  		return it.Next()
  4587  	}
  4588  }
  4589  
  4590  // Error returns any retrieval or parsing error occurred during filtering.
  4591  func (it *BridgeTransferRequestValueTransferIterator) Error() error {
  4592  	return it.fail
  4593  }
  4594  
  4595  // Close terminates the iteration process, releasing any pending underlying
  4596  // resources.
  4597  func (it *BridgeTransferRequestValueTransferIterator) Close() error {
  4598  	it.sub.Unsubscribe()
  4599  	return nil
  4600  }
  4601  
  4602  // BridgeTransferRequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransfer contract.
  4603  type BridgeTransferRequestValueTransfer struct {
  4604  	TokenType      uint8
  4605  	From           common.Address
  4606  	To             common.Address
  4607  	TokenAddress   common.Address
  4608  	ValueOrTokenId *big.Int
  4609  	RequestNonce   uint64
  4610  	Fee            *big.Int
  4611  	ExtraData      []byte
  4612  	Raw            types.Log // Blockchain specific contextual infos
  4613  }
  4614  
  4615  // FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  4616  //
  4617  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  4618  func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferIterator, error) {
  4619  
  4620  	var fromRule []interface{}
  4621  	for _, fromItem := range from {
  4622  		fromRule = append(fromRule, fromItem)
  4623  	}
  4624  	var toRule []interface{}
  4625  	for _, toItem := range to {
  4626  		toRule = append(toRule, toItem)
  4627  	}
  4628  	var tokenAddressRule []interface{}
  4629  	for _, tokenAddressItem := range tokenAddress {
  4630  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  4631  	}
  4632  
  4633  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  4634  	if err != nil {
  4635  		return nil, err
  4636  	}
  4637  	return &BridgeTransferRequestValueTransferIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil
  4638  }
  4639  
  4640  // WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  4641  //
  4642  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  4643  func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  4644  
  4645  	var fromRule []interface{}
  4646  	for _, fromItem := range from {
  4647  		fromRule = append(fromRule, fromItem)
  4648  	}
  4649  	var toRule []interface{}
  4650  	for _, toItem := range to {
  4651  		toRule = append(toRule, toItem)
  4652  	}
  4653  	var tokenAddressRule []interface{}
  4654  	for _, tokenAddressItem := range tokenAddress {
  4655  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  4656  	}
  4657  
  4658  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  4659  	if err != nil {
  4660  		return nil, err
  4661  	}
  4662  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4663  		defer sub.Unsubscribe()
  4664  		for {
  4665  			select {
  4666  			case log := <-logs:
  4667  				// New log arrived, parse the event and forward to the user
  4668  				event := new(BridgeTransferRequestValueTransfer)
  4669  				if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  4670  					return err
  4671  				}
  4672  				event.Raw = log
  4673  
  4674  				select {
  4675  				case sink <- event:
  4676  				case err := <-sub.Err():
  4677  					return err
  4678  				case <-quit:
  4679  					return nil
  4680  				}
  4681  			case err := <-sub.Err():
  4682  				return err
  4683  			case <-quit:
  4684  				return nil
  4685  			}
  4686  		}
  4687  	}), nil
  4688  }
  4689  
  4690  // ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  4691  //
  4692  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  4693  func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferRequestValueTransfer, error) {
  4694  	event := new(BridgeTransferRequestValueTransfer)
  4695  	if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  4696  		return nil, err
  4697  	}
  4698  	return event, nil
  4699  }
  4700  
  4701  // BridgeTransferRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransfer contract.
  4702  type BridgeTransferRequestValueTransferEncodedIterator struct {
  4703  	Event *BridgeTransferRequestValueTransferEncoded // Event containing the contract specifics and raw log
  4704  
  4705  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4706  	event    string              // Event name to use for unpacking event data
  4707  
  4708  	logs chan types.Log      // Log channel receiving the found contract events
  4709  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4710  	done bool                // Whether the subscription completed delivering logs
  4711  	fail error               // Occurred error to stop iteration
  4712  }
  4713  
  4714  // Next advances the iterator to the subsequent event, returning whether there
  4715  // are any more events found. In case of a retrieval or parsing error, false is
  4716  // returned and Error() can be queried for the exact failure.
  4717  func (it *BridgeTransferRequestValueTransferEncodedIterator) Next() bool {
  4718  	// If the iterator failed, stop iterating
  4719  	if it.fail != nil {
  4720  		return false
  4721  	}
  4722  	// If the iterator completed, deliver directly whatever's available
  4723  	if it.done {
  4724  		select {
  4725  		case log := <-it.logs:
  4726  			it.Event = new(BridgeTransferRequestValueTransferEncoded)
  4727  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4728  				it.fail = err
  4729  				return false
  4730  			}
  4731  			it.Event.Raw = log
  4732  			return true
  4733  
  4734  		default:
  4735  			return false
  4736  		}
  4737  	}
  4738  	// Iterator still in progress, wait for either a data or an error event
  4739  	select {
  4740  	case log := <-it.logs:
  4741  		it.Event = new(BridgeTransferRequestValueTransferEncoded)
  4742  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4743  			it.fail = err
  4744  			return false
  4745  		}
  4746  		it.Event.Raw = log
  4747  		return true
  4748  
  4749  	case err := <-it.sub.Err():
  4750  		it.done = true
  4751  		it.fail = err
  4752  		return it.Next()
  4753  	}
  4754  }
  4755  
  4756  // Error returns any retrieval or parsing error occurred during filtering.
  4757  func (it *BridgeTransferRequestValueTransferEncodedIterator) Error() error {
  4758  	return it.fail
  4759  }
  4760  
  4761  // Close terminates the iteration process, releasing any pending underlying
  4762  // resources.
  4763  func (it *BridgeTransferRequestValueTransferEncodedIterator) Close() error {
  4764  	it.sub.Unsubscribe()
  4765  	return nil
  4766  }
  4767  
  4768  // BridgeTransferRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransfer contract.
  4769  type BridgeTransferRequestValueTransferEncoded struct {
  4770  	TokenType      uint8
  4771  	From           common.Address
  4772  	To             common.Address
  4773  	TokenAddress   common.Address
  4774  	ValueOrTokenId *big.Int
  4775  	RequestNonce   uint64
  4776  	Fee            *big.Int
  4777  	ExtraData      []byte
  4778  	EncodingVer    uint8
  4779  	EncodedData    []byte
  4780  	Raw            types.Log // Blockchain specific contextual infos
  4781  }
  4782  
  4783  // FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  4784  //
  4785  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  4786  func (_BridgeTransfer *BridgeTransferFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferRequestValueTransferEncodedIterator, error) {
  4787  
  4788  	var fromRule []interface{}
  4789  	for _, fromItem := range from {
  4790  		fromRule = append(fromRule, fromItem)
  4791  	}
  4792  	var toRule []interface{}
  4793  	for _, toItem := range to {
  4794  		toRule = append(toRule, toItem)
  4795  	}
  4796  	var tokenAddressRule []interface{}
  4797  	for _, tokenAddressItem := range tokenAddress {
  4798  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  4799  	}
  4800  
  4801  	logs, sub, err := _BridgeTransfer.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  4802  	if err != nil {
  4803  		return nil, err
  4804  	}
  4805  	return &BridgeTransferRequestValueTransferEncodedIterator{contract: _BridgeTransfer.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil
  4806  }
  4807  
  4808  // WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  4809  //
  4810  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  4811  func (_BridgeTransfer *BridgeTransferFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  4812  
  4813  	var fromRule []interface{}
  4814  	for _, fromItem := range from {
  4815  		fromRule = append(fromRule, fromItem)
  4816  	}
  4817  	var toRule []interface{}
  4818  	for _, toItem := range to {
  4819  		toRule = append(toRule, toItem)
  4820  	}
  4821  	var tokenAddressRule []interface{}
  4822  	for _, tokenAddressItem := range tokenAddress {
  4823  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  4824  	}
  4825  
  4826  	logs, sub, err := _BridgeTransfer.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  4827  	if err != nil {
  4828  		return nil, err
  4829  	}
  4830  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4831  		defer sub.Unsubscribe()
  4832  		for {
  4833  			select {
  4834  			case log := <-logs:
  4835  				// New log arrived, parse the event and forward to the user
  4836  				event := new(BridgeTransferRequestValueTransferEncoded)
  4837  				if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  4838  					return err
  4839  				}
  4840  				event.Raw = log
  4841  
  4842  				select {
  4843  				case sink <- event:
  4844  				case err := <-sub.Err():
  4845  					return err
  4846  				case <-quit:
  4847  					return nil
  4848  				}
  4849  			case err := <-sub.Err():
  4850  				return err
  4851  			case <-quit:
  4852  				return nil
  4853  			}
  4854  		}
  4855  	}), nil
  4856  }
  4857  
  4858  // ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  4859  //
  4860  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  4861  func (_BridgeTransfer *BridgeTransferFilterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferRequestValueTransferEncoded, error) {
  4862  	event := new(BridgeTransferRequestValueTransferEncoded)
  4863  	if err := _BridgeTransfer.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  4864  		return nil, err
  4865  	}
  4866  	return event, nil
  4867  }
  4868  
  4869  // BridgeTransferERC20ABI is the input ABI used to generate the binding from.
  4870  const BridgeTransferERC20ABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
  4871  
  4872  // BridgeTransferERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4873  const BridgeTransferERC20BinRuntime = ``
  4874  
  4875  // BridgeTransferERC20FuncSigs maps the 4-byte function signature to its string representation.
  4876  var BridgeTransferERC20FuncSigs = map[string]string{
  4877  	"3a3099d1": "MAX_OPERATOR()",
  4878  	"9832c1d7": "closedValueTransferVotes(uint64)",
  4879  	"ac6fff0b": "configurationNonce()",
  4880  	"d8cf98ca": "deregisterOperator(address)",
  4881  	"bab2af1d": "deregisterToken(address)",
  4882  	"488af871": "feeOfERC20(address)",
  4883  	"c263b5d6": "feeOfKLAY()",
  4884  	"b3f00674": "feeReceiver()",
  4885  	"b2c01030": "getOperatorList()",
  4886  	"ea21eade": "getRegisteredTokenList()",
  4887  	"407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)",
  4888  	"13a6738a": "handleNoncesToBlockNums(uint64)",
  4889  	"8a75eee2": "handledRequestTx(bytes32)",
  4890  	"48a18a6a": "indexOfTokens(address)",
  4891  	"8f32d59b": "isOwner()",
  4892  	"2014e5d1": "isRunning()",
  4893  	"10693fcd": "lockToken(address)",
  4894  	"5eb7413a": "lockedTokens(address)",
  4895  	"4b40b826": "lowerHandleNonce()",
  4896  	"6e176ec2": "modeMintBurn()",
  4897  	"f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)",
  4898  	"cb38f407": "operatorList(uint256)",
  4899  	"5526f76b": "operatorThresholds(uint8)",
  4900  	"13e7c9d8": "operators(address)",
  4901  	"8da5cb5b": "owner()",
  4902  	"989ba0d3": "recoveryBlockNumber()",
  4903  	"3682a450": "registerOperator(address)",
  4904  	"4739f7e5": "registerToken(address,address)",
  4905  	"3e4fe949": "registeredTokenList(uint256)",
  4906  	"8c0bd916": "registeredTokens(address)",
  4907  	"715018a6": "renounceOwnership()",
  4908  	"26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)",
  4909  	"7c1a0302": "requestNonce()",
  4910  	"2f88396c": "setERC20Fee(address,uint256,uint64)",
  4911  	"efdcd974": "setFeeReceiver(address)",
  4912  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
  4913  	"c877cf37": "start(bool)",
  4914  	"f2fde38b": "transferOwnership(address)",
  4915  	"9ef2017b": "unlockToken(address)",
  4916  	"54edad72": "upperHandleNonce()",
  4917  }
  4918  
  4919  // BridgeTransferERC20 is an auto generated Go binding around a Klaytn contract.
  4920  type BridgeTransferERC20 struct {
  4921  	BridgeTransferERC20Caller     // Read-only binding to the contract
  4922  	BridgeTransferERC20Transactor // Write-only binding to the contract
  4923  	BridgeTransferERC20Filterer   // Log filterer for contract events
  4924  }
  4925  
  4926  // BridgeTransferERC20Caller is an auto generated read-only Go binding around a Klaytn contract.
  4927  type BridgeTransferERC20Caller struct {
  4928  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4929  }
  4930  
  4931  // BridgeTransferERC20Transactor is an auto generated write-only Go binding around a Klaytn contract.
  4932  type BridgeTransferERC20Transactor struct {
  4933  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4934  }
  4935  
  4936  // BridgeTransferERC20Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  4937  type BridgeTransferERC20Filterer struct {
  4938  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4939  }
  4940  
  4941  // BridgeTransferERC20Session is an auto generated Go binding around a Klaytn contract,
  4942  // with pre-set call and transact options.
  4943  type BridgeTransferERC20Session struct {
  4944  	Contract     *BridgeTransferERC20 // Generic contract binding to set the session for
  4945  	CallOpts     bind.CallOpts        // Call options to use throughout this session
  4946  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
  4947  }
  4948  
  4949  // BridgeTransferERC20CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  4950  // with pre-set call options.
  4951  type BridgeTransferERC20CallerSession struct {
  4952  	Contract *BridgeTransferERC20Caller // Generic contract caller binding to set the session for
  4953  	CallOpts bind.CallOpts              // Call options to use throughout this session
  4954  }
  4955  
  4956  // BridgeTransferERC20TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  4957  // with pre-set transact options.
  4958  type BridgeTransferERC20TransactorSession struct {
  4959  	Contract     *BridgeTransferERC20Transactor // Generic contract transactor binding to set the session for
  4960  	TransactOpts bind.TransactOpts              // Transaction auth options to use throughout this session
  4961  }
  4962  
  4963  // BridgeTransferERC20Raw is an auto generated low-level Go binding around a Klaytn contract.
  4964  type BridgeTransferERC20Raw struct {
  4965  	Contract *BridgeTransferERC20 // Generic contract binding to access the raw methods on
  4966  }
  4967  
  4968  // BridgeTransferERC20CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  4969  type BridgeTransferERC20CallerRaw struct {
  4970  	Contract *BridgeTransferERC20Caller // Generic read-only contract binding to access the raw methods on
  4971  }
  4972  
  4973  // BridgeTransferERC20TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  4974  type BridgeTransferERC20TransactorRaw struct {
  4975  	Contract *BridgeTransferERC20Transactor // Generic write-only contract binding to access the raw methods on
  4976  }
  4977  
  4978  // NewBridgeTransferERC20 creates a new instance of BridgeTransferERC20, bound to a specific deployed contract.
  4979  func NewBridgeTransferERC20(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC20, error) {
  4980  	contract, err := bindBridgeTransferERC20(address, backend, backend, backend)
  4981  	if err != nil {
  4982  		return nil, err
  4983  	}
  4984  	return &BridgeTransferERC20{BridgeTransferERC20Caller: BridgeTransferERC20Caller{contract: contract}, BridgeTransferERC20Transactor: BridgeTransferERC20Transactor{contract: contract}, BridgeTransferERC20Filterer: BridgeTransferERC20Filterer{contract: contract}}, nil
  4985  }
  4986  
  4987  // NewBridgeTransferERC20Caller creates a new read-only instance of BridgeTransferERC20, bound to a specific deployed contract.
  4988  func NewBridgeTransferERC20Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC20Caller, error) {
  4989  	contract, err := bindBridgeTransferERC20(address, caller, nil, nil)
  4990  	if err != nil {
  4991  		return nil, err
  4992  	}
  4993  	return &BridgeTransferERC20Caller{contract: contract}, nil
  4994  }
  4995  
  4996  // NewBridgeTransferERC20Transactor creates a new write-only instance of BridgeTransferERC20, bound to a specific deployed contract.
  4997  func NewBridgeTransferERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC20Transactor, error) {
  4998  	contract, err := bindBridgeTransferERC20(address, nil, transactor, nil)
  4999  	if err != nil {
  5000  		return nil, err
  5001  	}
  5002  	return &BridgeTransferERC20Transactor{contract: contract}, nil
  5003  }
  5004  
  5005  // NewBridgeTransferERC20Filterer creates a new log filterer instance of BridgeTransferERC20, bound to a specific deployed contract.
  5006  func NewBridgeTransferERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC20Filterer, error) {
  5007  	contract, err := bindBridgeTransferERC20(address, nil, nil, filterer)
  5008  	if err != nil {
  5009  		return nil, err
  5010  	}
  5011  	return &BridgeTransferERC20Filterer{contract: contract}, nil
  5012  }
  5013  
  5014  // bindBridgeTransferERC20 binds a generic wrapper to an already deployed contract.
  5015  func bindBridgeTransferERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5016  	parsed, err := abi.JSON(strings.NewReader(BridgeTransferERC20ABI))
  5017  	if err != nil {
  5018  		return nil, err
  5019  	}
  5020  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5021  }
  5022  
  5023  // Call invokes the (constant) contract method with params as input values and
  5024  // sets the output to result. The result type might be a single field for simple
  5025  // returns, a slice of interfaces for anonymous returns and a struct for named
  5026  // returns.
  5027  func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5028  	return _BridgeTransferERC20.Contract.BridgeTransferERC20Caller.contract.Call(opts, result, method, params...)
  5029  }
  5030  
  5031  // Transfer initiates a plain transaction to move funds to the contract, calling
  5032  // its default method if one is available.
  5033  func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5034  	return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transfer(opts)
  5035  }
  5036  
  5037  // Transact invokes the (paid) contract method with params as input values.
  5038  func (_BridgeTransferERC20 *BridgeTransferERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5039  	return _BridgeTransferERC20.Contract.BridgeTransferERC20Transactor.contract.Transact(opts, method, params...)
  5040  }
  5041  
  5042  // Call invokes the (constant) contract method with params as input values and
  5043  // sets the output to result. The result type might be a single field for simple
  5044  // returns, a slice of interfaces for anonymous returns and a struct for named
  5045  // returns.
  5046  func (_BridgeTransferERC20 *BridgeTransferERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5047  	return _BridgeTransferERC20.Contract.contract.Call(opts, result, method, params...)
  5048  }
  5049  
  5050  // Transfer initiates a plain transaction to move funds to the contract, calling
  5051  // its default method if one is available.
  5052  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5053  	return _BridgeTransferERC20.Contract.contract.Transfer(opts)
  5054  }
  5055  
  5056  // Transact invokes the (paid) contract method with params as input values.
  5057  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5058  	return _BridgeTransferERC20.Contract.contract.Transact(opts, method, params...)
  5059  }
  5060  
  5061  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  5062  //
  5063  // Solidity: function MAX_OPERATOR() view returns(uint64)
  5064  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
  5065  	var (
  5066  		ret0 = new(uint64)
  5067  	)
  5068  	out := ret0
  5069  	err := _BridgeTransferERC20.contract.Call(opts, out, "MAX_OPERATOR")
  5070  	return *ret0, err
  5071  }
  5072  
  5073  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  5074  //
  5075  // Solidity: function MAX_OPERATOR() view returns(uint64)
  5076  func (_BridgeTransferERC20 *BridgeTransferERC20Session) MAXOPERATOR() (uint64, error) {
  5077  	return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts)
  5078  }
  5079  
  5080  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  5081  //
  5082  // Solidity: function MAX_OPERATOR() view returns(uint64)
  5083  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) MAXOPERATOR() (uint64, error) {
  5084  	return _BridgeTransferERC20.Contract.MAXOPERATOR(&_BridgeTransferERC20.CallOpts)
  5085  }
  5086  
  5087  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  5088  //
  5089  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  5090  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
  5091  	var (
  5092  		ret0 = new(bool)
  5093  	)
  5094  	out := ret0
  5095  	err := _BridgeTransferERC20.contract.Call(opts, out, "closedValueTransferVotes", arg0)
  5096  	return *ret0, err
  5097  }
  5098  
  5099  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  5100  //
  5101  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  5102  func (_BridgeTransferERC20 *BridgeTransferERC20Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  5103  	return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0)
  5104  }
  5105  
  5106  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  5107  //
  5108  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  5109  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  5110  	return _BridgeTransferERC20.Contract.ClosedValueTransferVotes(&_BridgeTransferERC20.CallOpts, arg0)
  5111  }
  5112  
  5113  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  5114  //
  5115  // Solidity: function configurationNonce() view returns(uint64)
  5116  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
  5117  	var (
  5118  		ret0 = new(uint64)
  5119  	)
  5120  	out := ret0
  5121  	err := _BridgeTransferERC20.contract.Call(opts, out, "configurationNonce")
  5122  	return *ret0, err
  5123  }
  5124  
  5125  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  5126  //
  5127  // Solidity: function configurationNonce() view returns(uint64)
  5128  func (_BridgeTransferERC20 *BridgeTransferERC20Session) ConfigurationNonce() (uint64, error) {
  5129  	return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts)
  5130  }
  5131  
  5132  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  5133  //
  5134  // Solidity: function configurationNonce() view returns(uint64)
  5135  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ConfigurationNonce() (uint64, error) {
  5136  	return _BridgeTransferERC20.Contract.ConfigurationNonce(&_BridgeTransferERC20.CallOpts)
  5137  }
  5138  
  5139  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  5140  //
  5141  // Solidity: function feeOfERC20(address ) view returns(uint256)
  5142  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  5143  	var (
  5144  		ret0 = new(*big.Int)
  5145  	)
  5146  	out := ret0
  5147  	err := _BridgeTransferERC20.contract.Call(opts, out, "feeOfERC20", arg0)
  5148  	return *ret0, err
  5149  }
  5150  
  5151  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  5152  //
  5153  // Solidity: function feeOfERC20(address ) view returns(uint256)
  5154  func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  5155  	return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0)
  5156  }
  5157  
  5158  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  5159  //
  5160  // Solidity: function feeOfERC20(address ) view returns(uint256)
  5161  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  5162  	return _BridgeTransferERC20.Contract.FeeOfERC20(&_BridgeTransferERC20.CallOpts, arg0)
  5163  }
  5164  
  5165  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  5166  //
  5167  // Solidity: function feeOfKLAY() view returns(uint256)
  5168  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
  5169  	var (
  5170  		ret0 = new(*big.Int)
  5171  	)
  5172  	out := ret0
  5173  	err := _BridgeTransferERC20.contract.Call(opts, out, "feeOfKLAY")
  5174  	return *ret0, err
  5175  }
  5176  
  5177  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  5178  //
  5179  // Solidity: function feeOfKLAY() view returns(uint256)
  5180  func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeOfKLAY() (*big.Int, error) {
  5181  	return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts)
  5182  }
  5183  
  5184  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  5185  //
  5186  // Solidity: function feeOfKLAY() view returns(uint256)
  5187  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeOfKLAY() (*big.Int, error) {
  5188  	return _BridgeTransferERC20.Contract.FeeOfKLAY(&_BridgeTransferERC20.CallOpts)
  5189  }
  5190  
  5191  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  5192  //
  5193  // Solidity: function feeReceiver() view returns(address)
  5194  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
  5195  	var (
  5196  		ret0 = new(common.Address)
  5197  	)
  5198  	out := ret0
  5199  	err := _BridgeTransferERC20.contract.Call(opts, out, "feeReceiver")
  5200  	return *ret0, err
  5201  }
  5202  
  5203  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  5204  //
  5205  // Solidity: function feeReceiver() view returns(address)
  5206  func (_BridgeTransferERC20 *BridgeTransferERC20Session) FeeReceiver() (common.Address, error) {
  5207  	return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts)
  5208  }
  5209  
  5210  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  5211  //
  5212  // Solidity: function feeReceiver() view returns(address)
  5213  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) FeeReceiver() (common.Address, error) {
  5214  	return _BridgeTransferERC20.Contract.FeeReceiver(&_BridgeTransferERC20.CallOpts)
  5215  }
  5216  
  5217  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  5218  //
  5219  // Solidity: function getOperatorList() view returns(address[])
  5220  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
  5221  	var (
  5222  		ret0 = new([]common.Address)
  5223  	)
  5224  	out := ret0
  5225  	err := _BridgeTransferERC20.contract.Call(opts, out, "getOperatorList")
  5226  	return *ret0, err
  5227  }
  5228  
  5229  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  5230  //
  5231  // Solidity: function getOperatorList() view returns(address[])
  5232  func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetOperatorList() ([]common.Address, error) {
  5233  	return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts)
  5234  }
  5235  
  5236  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  5237  //
  5238  // Solidity: function getOperatorList() view returns(address[])
  5239  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetOperatorList() ([]common.Address, error) {
  5240  	return _BridgeTransferERC20.Contract.GetOperatorList(&_BridgeTransferERC20.CallOpts)
  5241  }
  5242  
  5243  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  5244  //
  5245  // Solidity: function getRegisteredTokenList() view returns(address[])
  5246  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) {
  5247  	var (
  5248  		ret0 = new([]common.Address)
  5249  	)
  5250  	out := ret0
  5251  	err := _BridgeTransferERC20.contract.Call(opts, out, "getRegisteredTokenList")
  5252  	return *ret0, err
  5253  }
  5254  
  5255  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  5256  //
  5257  // Solidity: function getRegisteredTokenList() view returns(address[])
  5258  func (_BridgeTransferERC20 *BridgeTransferERC20Session) GetRegisteredTokenList() ([]common.Address, error) {
  5259  	return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts)
  5260  }
  5261  
  5262  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  5263  //
  5264  // Solidity: function getRegisteredTokenList() view returns(address[])
  5265  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) GetRegisteredTokenList() ([]common.Address, error) {
  5266  	return _BridgeTransferERC20.Contract.GetRegisteredTokenList(&_BridgeTransferERC20.CallOpts)
  5267  }
  5268  
  5269  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  5270  //
  5271  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  5272  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) {
  5273  	var (
  5274  		ret0 = new(uint64)
  5275  	)
  5276  	out := ret0
  5277  	err := _BridgeTransferERC20.contract.Call(opts, out, "handleNoncesToBlockNums", arg0)
  5278  	return *ret0, err
  5279  }
  5280  
  5281  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  5282  //
  5283  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  5284  func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  5285  	return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0)
  5286  }
  5287  
  5288  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  5289  //
  5290  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  5291  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  5292  	return _BridgeTransferERC20.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC20.CallOpts, arg0)
  5293  }
  5294  
  5295  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  5296  //
  5297  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  5298  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
  5299  	var (
  5300  		ret0 = new(bool)
  5301  	)
  5302  	out := ret0
  5303  	err := _BridgeTransferERC20.contract.Call(opts, out, "handledRequestTx", arg0)
  5304  	return *ret0, err
  5305  }
  5306  
  5307  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  5308  //
  5309  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  5310  func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandledRequestTx(arg0 [32]byte) (bool, error) {
  5311  	return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0)
  5312  }
  5313  
  5314  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  5315  //
  5316  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  5317  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  5318  	return _BridgeTransferERC20.Contract.HandledRequestTx(&_BridgeTransferERC20.CallOpts, arg0)
  5319  }
  5320  
  5321  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  5322  //
  5323  // Solidity: function indexOfTokens(address ) view returns(uint256)
  5324  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  5325  	var (
  5326  		ret0 = new(*big.Int)
  5327  	)
  5328  	out := ret0
  5329  	err := _BridgeTransferERC20.contract.Call(opts, out, "indexOfTokens", arg0)
  5330  	return *ret0, err
  5331  }
  5332  
  5333  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  5334  //
  5335  // Solidity: function indexOfTokens(address ) view returns(uint256)
  5336  func (_BridgeTransferERC20 *BridgeTransferERC20Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  5337  	return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0)
  5338  }
  5339  
  5340  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  5341  //
  5342  // Solidity: function indexOfTokens(address ) view returns(uint256)
  5343  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  5344  	return _BridgeTransferERC20.Contract.IndexOfTokens(&_BridgeTransferERC20.CallOpts, arg0)
  5345  }
  5346  
  5347  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5348  //
  5349  // Solidity: function isOwner() view returns(bool)
  5350  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsOwner(opts *bind.CallOpts) (bool, error) {
  5351  	var (
  5352  		ret0 = new(bool)
  5353  	)
  5354  	out := ret0
  5355  	err := _BridgeTransferERC20.contract.Call(opts, out, "isOwner")
  5356  	return *ret0, err
  5357  }
  5358  
  5359  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5360  //
  5361  // Solidity: function isOwner() view returns(bool)
  5362  func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsOwner() (bool, error) {
  5363  	return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts)
  5364  }
  5365  
  5366  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  5367  //
  5368  // Solidity: function isOwner() view returns(bool)
  5369  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsOwner() (bool, error) {
  5370  	return _BridgeTransferERC20.Contract.IsOwner(&_BridgeTransferERC20.CallOpts)
  5371  }
  5372  
  5373  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  5374  //
  5375  // Solidity: function isRunning() view returns(bool)
  5376  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) IsRunning(opts *bind.CallOpts) (bool, error) {
  5377  	var (
  5378  		ret0 = new(bool)
  5379  	)
  5380  	out := ret0
  5381  	err := _BridgeTransferERC20.contract.Call(opts, out, "isRunning")
  5382  	return *ret0, err
  5383  }
  5384  
  5385  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  5386  //
  5387  // Solidity: function isRunning() view returns(bool)
  5388  func (_BridgeTransferERC20 *BridgeTransferERC20Session) IsRunning() (bool, error) {
  5389  	return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts)
  5390  }
  5391  
  5392  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  5393  //
  5394  // Solidity: function isRunning() view returns(bool)
  5395  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) IsRunning() (bool, error) {
  5396  	return _BridgeTransferERC20.Contract.IsRunning(&_BridgeTransferERC20.CallOpts)
  5397  }
  5398  
  5399  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  5400  //
  5401  // Solidity: function lockedTokens(address ) view returns(bool)
  5402  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  5403  	var (
  5404  		ret0 = new(bool)
  5405  	)
  5406  	out := ret0
  5407  	err := _BridgeTransferERC20.contract.Call(opts, out, "lockedTokens", arg0)
  5408  	return *ret0, err
  5409  }
  5410  
  5411  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  5412  //
  5413  // Solidity: function lockedTokens(address ) view returns(bool)
  5414  func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockedTokens(arg0 common.Address) (bool, error) {
  5415  	return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0)
  5416  }
  5417  
  5418  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  5419  //
  5420  // Solidity: function lockedTokens(address ) view returns(bool)
  5421  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LockedTokens(arg0 common.Address) (bool, error) {
  5422  	return _BridgeTransferERC20.Contract.LockedTokens(&_BridgeTransferERC20.CallOpts, arg0)
  5423  }
  5424  
  5425  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  5426  //
  5427  // Solidity: function lowerHandleNonce() view returns(uint64)
  5428  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) {
  5429  	var (
  5430  		ret0 = new(uint64)
  5431  	)
  5432  	out := ret0
  5433  	err := _BridgeTransferERC20.contract.Call(opts, out, "lowerHandleNonce")
  5434  	return *ret0, err
  5435  }
  5436  
  5437  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  5438  //
  5439  // Solidity: function lowerHandleNonce() view returns(uint64)
  5440  func (_BridgeTransferERC20 *BridgeTransferERC20Session) LowerHandleNonce() (uint64, error) {
  5441  	return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts)
  5442  }
  5443  
  5444  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  5445  //
  5446  // Solidity: function lowerHandleNonce() view returns(uint64)
  5447  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) LowerHandleNonce() (uint64, error) {
  5448  	return _BridgeTransferERC20.Contract.LowerHandleNonce(&_BridgeTransferERC20.CallOpts)
  5449  }
  5450  
  5451  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  5452  //
  5453  // Solidity: function modeMintBurn() view returns(bool)
  5454  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) {
  5455  	var (
  5456  		ret0 = new(bool)
  5457  	)
  5458  	out := ret0
  5459  	err := _BridgeTransferERC20.contract.Call(opts, out, "modeMintBurn")
  5460  	return *ret0, err
  5461  }
  5462  
  5463  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  5464  //
  5465  // Solidity: function modeMintBurn() view returns(bool)
  5466  func (_BridgeTransferERC20 *BridgeTransferERC20Session) ModeMintBurn() (bool, error) {
  5467  	return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts)
  5468  }
  5469  
  5470  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  5471  //
  5472  // Solidity: function modeMintBurn() view returns(bool)
  5473  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) ModeMintBurn() (bool, error) {
  5474  	return _BridgeTransferERC20.Contract.ModeMintBurn(&_BridgeTransferERC20.CallOpts)
  5475  }
  5476  
  5477  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  5478  //
  5479  // Solidity: function operatorList(uint256 ) view returns(address)
  5480  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  5481  	var (
  5482  		ret0 = new(common.Address)
  5483  	)
  5484  	out := ret0
  5485  	err := _BridgeTransferERC20.contract.Call(opts, out, "operatorList", arg0)
  5486  	return *ret0, err
  5487  }
  5488  
  5489  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  5490  //
  5491  // Solidity: function operatorList(uint256 ) view returns(address)
  5492  func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorList(arg0 *big.Int) (common.Address, error) {
  5493  	return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0)
  5494  }
  5495  
  5496  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  5497  //
  5498  // Solidity: function operatorList(uint256 ) view returns(address)
  5499  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  5500  	return _BridgeTransferERC20.Contract.OperatorList(&_BridgeTransferERC20.CallOpts, arg0)
  5501  }
  5502  
  5503  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  5504  //
  5505  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  5506  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
  5507  	var (
  5508  		ret0 = new(uint8)
  5509  	)
  5510  	out := ret0
  5511  	err := _BridgeTransferERC20.contract.Call(opts, out, "operatorThresholds", arg0)
  5512  	return *ret0, err
  5513  }
  5514  
  5515  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  5516  //
  5517  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  5518  func (_BridgeTransferERC20 *BridgeTransferERC20Session) OperatorThresholds(arg0 uint8) (uint8, error) {
  5519  	return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0)
  5520  }
  5521  
  5522  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  5523  //
  5524  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  5525  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  5526  	return _BridgeTransferERC20.Contract.OperatorThresholds(&_BridgeTransferERC20.CallOpts, arg0)
  5527  }
  5528  
  5529  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  5530  //
  5531  // Solidity: function operators(address ) view returns(bool)
  5532  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  5533  	var (
  5534  		ret0 = new(bool)
  5535  	)
  5536  	out := ret0
  5537  	err := _BridgeTransferERC20.contract.Call(opts, out, "operators", arg0)
  5538  	return *ret0, err
  5539  }
  5540  
  5541  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  5542  //
  5543  // Solidity: function operators(address ) view returns(bool)
  5544  func (_BridgeTransferERC20 *BridgeTransferERC20Session) Operators(arg0 common.Address) (bool, error) {
  5545  	return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0)
  5546  }
  5547  
  5548  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  5549  //
  5550  // Solidity: function operators(address ) view returns(bool)
  5551  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Operators(arg0 common.Address) (bool, error) {
  5552  	return _BridgeTransferERC20.Contract.Operators(&_BridgeTransferERC20.CallOpts, arg0)
  5553  }
  5554  
  5555  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5556  //
  5557  // Solidity: function owner() view returns(address)
  5558  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) Owner(opts *bind.CallOpts) (common.Address, error) {
  5559  	var (
  5560  		ret0 = new(common.Address)
  5561  	)
  5562  	out := ret0
  5563  	err := _BridgeTransferERC20.contract.Call(opts, out, "owner")
  5564  	return *ret0, err
  5565  }
  5566  
  5567  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5568  //
  5569  // Solidity: function owner() view returns(address)
  5570  func (_BridgeTransferERC20 *BridgeTransferERC20Session) Owner() (common.Address, error) {
  5571  	return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts)
  5572  }
  5573  
  5574  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  5575  //
  5576  // Solidity: function owner() view returns(address)
  5577  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) Owner() (common.Address, error) {
  5578  	return _BridgeTransferERC20.Contract.Owner(&_BridgeTransferERC20.CallOpts)
  5579  }
  5580  
  5581  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  5582  //
  5583  // Solidity: function recoveryBlockNumber() view returns(uint64)
  5584  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) {
  5585  	var (
  5586  		ret0 = new(uint64)
  5587  	)
  5588  	out := ret0
  5589  	err := _BridgeTransferERC20.contract.Call(opts, out, "recoveryBlockNumber")
  5590  	return *ret0, err
  5591  }
  5592  
  5593  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  5594  //
  5595  // Solidity: function recoveryBlockNumber() view returns(uint64)
  5596  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RecoveryBlockNumber() (uint64, error) {
  5597  	return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts)
  5598  }
  5599  
  5600  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  5601  //
  5602  // Solidity: function recoveryBlockNumber() view returns(uint64)
  5603  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RecoveryBlockNumber() (uint64, error) {
  5604  	return _BridgeTransferERC20.Contract.RecoveryBlockNumber(&_BridgeTransferERC20.CallOpts)
  5605  }
  5606  
  5607  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  5608  //
  5609  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  5610  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  5611  	var (
  5612  		ret0 = new(common.Address)
  5613  	)
  5614  	out := ret0
  5615  	err := _BridgeTransferERC20.contract.Call(opts, out, "registeredTokenList", arg0)
  5616  	return *ret0, err
  5617  }
  5618  
  5619  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  5620  //
  5621  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  5622  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  5623  	return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0)
  5624  }
  5625  
  5626  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  5627  //
  5628  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  5629  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  5630  	return _BridgeTransferERC20.Contract.RegisteredTokenList(&_BridgeTransferERC20.CallOpts, arg0)
  5631  }
  5632  
  5633  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  5634  //
  5635  // Solidity: function registeredTokens(address ) view returns(address)
  5636  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  5637  	var (
  5638  		ret0 = new(common.Address)
  5639  	)
  5640  	out := ret0
  5641  	err := _BridgeTransferERC20.contract.Call(opts, out, "registeredTokens", arg0)
  5642  	return *ret0, err
  5643  }
  5644  
  5645  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  5646  //
  5647  // Solidity: function registeredTokens(address ) view returns(address)
  5648  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  5649  	return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0)
  5650  }
  5651  
  5652  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  5653  //
  5654  // Solidity: function registeredTokens(address ) view returns(address)
  5655  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  5656  	return _BridgeTransferERC20.Contract.RegisteredTokens(&_BridgeTransferERC20.CallOpts, arg0)
  5657  }
  5658  
  5659  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  5660  //
  5661  // Solidity: function requestNonce() view returns(uint64)
  5662  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) {
  5663  	var (
  5664  		ret0 = new(uint64)
  5665  	)
  5666  	out := ret0
  5667  	err := _BridgeTransferERC20.contract.Call(opts, out, "requestNonce")
  5668  	return *ret0, err
  5669  }
  5670  
  5671  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  5672  //
  5673  // Solidity: function requestNonce() view returns(uint64)
  5674  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestNonce() (uint64, error) {
  5675  	return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts)
  5676  }
  5677  
  5678  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  5679  //
  5680  // Solidity: function requestNonce() view returns(uint64)
  5681  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) RequestNonce() (uint64, error) {
  5682  	return _BridgeTransferERC20.Contract.RequestNonce(&_BridgeTransferERC20.CallOpts)
  5683  }
  5684  
  5685  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  5686  //
  5687  // Solidity: function upperHandleNonce() view returns(uint64)
  5688  func (_BridgeTransferERC20 *BridgeTransferERC20Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) {
  5689  	var (
  5690  		ret0 = new(uint64)
  5691  	)
  5692  	out := ret0
  5693  	err := _BridgeTransferERC20.contract.Call(opts, out, "upperHandleNonce")
  5694  	return *ret0, err
  5695  }
  5696  
  5697  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  5698  //
  5699  // Solidity: function upperHandleNonce() view returns(uint64)
  5700  func (_BridgeTransferERC20 *BridgeTransferERC20Session) UpperHandleNonce() (uint64, error) {
  5701  	return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts)
  5702  }
  5703  
  5704  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  5705  //
  5706  // Solidity: function upperHandleNonce() view returns(uint64)
  5707  func (_BridgeTransferERC20 *BridgeTransferERC20CallerSession) UpperHandleNonce() (uint64, error) {
  5708  	return _BridgeTransferERC20.Contract.UpperHandleNonce(&_BridgeTransferERC20.CallOpts)
  5709  }
  5710  
  5711  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  5712  //
  5713  // Solidity: function deregisterOperator(address _operator) returns()
  5714  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  5715  	return _BridgeTransferERC20.contract.Transact(opts, "deregisterOperator", _operator)
  5716  }
  5717  
  5718  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  5719  //
  5720  // Solidity: function deregisterOperator(address _operator) returns()
  5721  func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  5722  	return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator)
  5723  }
  5724  
  5725  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  5726  //
  5727  // Solidity: function deregisterOperator(address _operator) returns()
  5728  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  5729  	return _BridgeTransferERC20.Contract.DeregisterOperator(&_BridgeTransferERC20.TransactOpts, _operator)
  5730  }
  5731  
  5732  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  5733  //
  5734  // Solidity: function deregisterToken(address _token) returns()
  5735  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  5736  	return _BridgeTransferERC20.contract.Transact(opts, "deregisterToken", _token)
  5737  }
  5738  
  5739  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  5740  //
  5741  // Solidity: function deregisterToken(address _token) returns()
  5742  func (_BridgeTransferERC20 *BridgeTransferERC20Session) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  5743  	return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token)
  5744  }
  5745  
  5746  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  5747  //
  5748  // Solidity: function deregisterToken(address _token) returns()
  5749  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  5750  	return _BridgeTransferERC20.Contract.DeregisterToken(&_BridgeTransferERC20.TransactOpts, _token)
  5751  }
  5752  
  5753  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
  5754  //
  5755  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  5756  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  5757  	return _BridgeTransferERC20.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  5758  }
  5759  
  5760  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
  5761  //
  5762  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  5763  func (_BridgeTransferERC20 *BridgeTransferERC20Session) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  5764  	return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  5765  }
  5766  
  5767  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
  5768  //
  5769  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestedNonce, uint64 _requestedBlockNumber, bytes _extraData) returns()
  5770  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
  5771  	return _BridgeTransferERC20.Contract.HandleERC20Transfer(&_BridgeTransferERC20.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestedNonce, _requestedBlockNumber, _extraData)
  5772  }
  5773  
  5774  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  5775  //
  5776  // Solidity: function lockToken(address _token) returns()
  5777  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  5778  	return _BridgeTransferERC20.contract.Transact(opts, "lockToken", _token)
  5779  }
  5780  
  5781  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  5782  //
  5783  // Solidity: function lockToken(address _token) returns()
  5784  func (_BridgeTransferERC20 *BridgeTransferERC20Session) LockToken(_token common.Address) (*types.Transaction, error) {
  5785  	return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token)
  5786  }
  5787  
  5788  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  5789  //
  5790  // Solidity: function lockToken(address _token) returns()
  5791  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) {
  5792  	return _BridgeTransferERC20.Contract.LockToken(&_BridgeTransferERC20.TransactOpts, _token)
  5793  }
  5794  
  5795  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  5796  //
  5797  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  5798  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  5799  	return _BridgeTransferERC20.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData)
  5800  }
  5801  
  5802  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  5803  //
  5804  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  5805  func (_BridgeTransferERC20 *BridgeTransferERC20Session) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  5806  	return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData)
  5807  }
  5808  
  5809  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
  5810  //
  5811  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  5812  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  5813  	return _BridgeTransferERC20.Contract.OnERC20Received(&_BridgeTransferERC20.TransactOpts, _from, _to, _value, _feeLimit, _extraData)
  5814  }
  5815  
  5816  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  5817  //
  5818  // Solidity: function registerOperator(address _operator) returns()
  5819  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  5820  	return _BridgeTransferERC20.contract.Transact(opts, "registerOperator", _operator)
  5821  }
  5822  
  5823  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  5824  //
  5825  // Solidity: function registerOperator(address _operator) returns()
  5826  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  5827  	return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator)
  5828  }
  5829  
  5830  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  5831  //
  5832  // Solidity: function registerOperator(address _operator) returns()
  5833  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  5834  	return _BridgeTransferERC20.Contract.RegisterOperator(&_BridgeTransferERC20.TransactOpts, _operator)
  5835  }
  5836  
  5837  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  5838  //
  5839  // Solidity: function registerToken(address _token, address _cToken) returns()
  5840  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) {
  5841  	return _BridgeTransferERC20.contract.Transact(opts, "registerToken", _token, _cToken)
  5842  }
  5843  
  5844  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  5845  //
  5846  // Solidity: function registerToken(address _token, address _cToken) returns()
  5847  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  5848  	return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken)
  5849  }
  5850  
  5851  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  5852  //
  5853  // Solidity: function registerToken(address _token, address _cToken) returns()
  5854  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  5855  	return _BridgeTransferERC20.Contract.RegisterToken(&_BridgeTransferERC20.TransactOpts, _token, _cToken)
  5856  }
  5857  
  5858  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  5859  //
  5860  // Solidity: function renounceOwnership() returns()
  5861  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  5862  	return _BridgeTransferERC20.contract.Transact(opts, "renounceOwnership")
  5863  }
  5864  
  5865  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  5866  //
  5867  // Solidity: function renounceOwnership() returns()
  5868  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RenounceOwnership() (*types.Transaction, error) {
  5869  	return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts)
  5870  }
  5871  
  5872  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  5873  //
  5874  // Solidity: function renounceOwnership() returns()
  5875  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RenounceOwnership() (*types.Transaction, error) {
  5876  	return _BridgeTransferERC20.Contract.RenounceOwnership(&_BridgeTransferERC20.TransactOpts)
  5877  }
  5878  
  5879  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
  5880  //
  5881  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  5882  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  5883  	return _BridgeTransferERC20.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData)
  5884  }
  5885  
  5886  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
  5887  //
  5888  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  5889  func (_BridgeTransferERC20 *BridgeTransferERC20Session) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  5890  	return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData)
  5891  }
  5892  
  5893  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
  5894  //
  5895  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
  5896  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
  5897  	return _BridgeTransferERC20.Contract.RequestERC20Transfer(&_BridgeTransferERC20.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData)
  5898  }
  5899  
  5900  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
  5901  //
  5902  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
  5903  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  5904  	return _BridgeTransferERC20.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce)
  5905  }
  5906  
  5907  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
  5908  //
  5909  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
  5910  func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  5911  	return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce)
  5912  }
  5913  
  5914  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
  5915  //
  5916  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
  5917  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
  5918  	return _BridgeTransferERC20.Contract.SetERC20Fee(&_BridgeTransferERC20.TransactOpts, _token, _fee, _requestNonce)
  5919  }
  5920  
  5921  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  5922  //
  5923  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  5924  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) {
  5925  	return _BridgeTransferERC20.contract.Transact(opts, "setFeeReceiver", _feeReceiver)
  5926  }
  5927  
  5928  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  5929  //
  5930  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  5931  func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  5932  	return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver)
  5933  }
  5934  
  5935  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  5936  //
  5937  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  5938  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  5939  	return _BridgeTransferERC20.Contract.SetFeeReceiver(&_BridgeTransferERC20.TransactOpts, _feeReceiver)
  5940  }
  5941  
  5942  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  5943  //
  5944  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  5945  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
  5946  	return _BridgeTransferERC20.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
  5947  }
  5948  
  5949  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  5950  //
  5951  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  5952  func (_BridgeTransferERC20 *BridgeTransferERC20Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  5953  	return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold)
  5954  }
  5955  
  5956  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  5957  //
  5958  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  5959  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  5960  	return _BridgeTransferERC20.Contract.SetOperatorThreshold(&_BridgeTransferERC20.TransactOpts, _voteType, _threshold)
  5961  }
  5962  
  5963  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  5964  //
  5965  // Solidity: function start(bool _status) returns()
  5966  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) {
  5967  	return _BridgeTransferERC20.contract.Transact(opts, "start", _status)
  5968  }
  5969  
  5970  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  5971  //
  5972  // Solidity: function start(bool _status) returns()
  5973  func (_BridgeTransferERC20 *BridgeTransferERC20Session) Start(_status bool) (*types.Transaction, error) {
  5974  	return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status)
  5975  }
  5976  
  5977  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  5978  //
  5979  // Solidity: function start(bool _status) returns()
  5980  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) Start(_status bool) (*types.Transaction, error) {
  5981  	return _BridgeTransferERC20.Contract.Start(&_BridgeTransferERC20.TransactOpts, _status)
  5982  }
  5983  
  5984  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  5985  //
  5986  // Solidity: function transferOwnership(address newOwner) returns()
  5987  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  5988  	return _BridgeTransferERC20.contract.Transact(opts, "transferOwnership", newOwner)
  5989  }
  5990  
  5991  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  5992  //
  5993  // Solidity: function transferOwnership(address newOwner) returns()
  5994  func (_BridgeTransferERC20 *BridgeTransferERC20Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  5995  	return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner)
  5996  }
  5997  
  5998  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  5999  //
  6000  // Solidity: function transferOwnership(address newOwner) returns()
  6001  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  6002  	return _BridgeTransferERC20.Contract.TransferOwnership(&_BridgeTransferERC20.TransactOpts, newOwner)
  6003  }
  6004  
  6005  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  6006  //
  6007  // Solidity: function unlockToken(address _token) returns()
  6008  func (_BridgeTransferERC20 *BridgeTransferERC20Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  6009  	return _BridgeTransferERC20.contract.Transact(opts, "unlockToken", _token)
  6010  }
  6011  
  6012  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  6013  //
  6014  // Solidity: function unlockToken(address _token) returns()
  6015  func (_BridgeTransferERC20 *BridgeTransferERC20Session) UnlockToken(_token common.Address) (*types.Transaction, error) {
  6016  	return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token)
  6017  }
  6018  
  6019  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  6020  //
  6021  // Solidity: function unlockToken(address _token) returns()
  6022  func (_BridgeTransferERC20 *BridgeTransferERC20TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
  6023  	return _BridgeTransferERC20.Contract.UnlockToken(&_BridgeTransferERC20.TransactOpts, _token)
  6024  }
  6025  
  6026  // BridgeTransferERC20ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC20 contract.
  6027  type BridgeTransferERC20ERC20FeeChangedIterator struct {
  6028  	Event *BridgeTransferERC20ERC20FeeChanged // Event containing the contract specifics and raw log
  6029  
  6030  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6031  	event    string              // Event name to use for unpacking event data
  6032  
  6033  	logs chan types.Log      // Log channel receiving the found contract events
  6034  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6035  	done bool                // Whether the subscription completed delivering logs
  6036  	fail error               // Occurred error to stop iteration
  6037  }
  6038  
  6039  // Next advances the iterator to the subsequent event, returning whether there
  6040  // are any more events found. In case of a retrieval or parsing error, false is
  6041  // returned and Error() can be queried for the exact failure.
  6042  func (it *BridgeTransferERC20ERC20FeeChangedIterator) Next() bool {
  6043  	// If the iterator failed, stop iterating
  6044  	if it.fail != nil {
  6045  		return false
  6046  	}
  6047  	// If the iterator completed, deliver directly whatever's available
  6048  	if it.done {
  6049  		select {
  6050  		case log := <-it.logs:
  6051  			it.Event = new(BridgeTransferERC20ERC20FeeChanged)
  6052  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6053  				it.fail = err
  6054  				return false
  6055  			}
  6056  			it.Event.Raw = log
  6057  			return true
  6058  
  6059  		default:
  6060  			return false
  6061  		}
  6062  	}
  6063  	// Iterator still in progress, wait for either a data or an error event
  6064  	select {
  6065  	case log := <-it.logs:
  6066  		it.Event = new(BridgeTransferERC20ERC20FeeChanged)
  6067  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6068  			it.fail = err
  6069  			return false
  6070  		}
  6071  		it.Event.Raw = log
  6072  		return true
  6073  
  6074  	case err := <-it.sub.Err():
  6075  		it.done = true
  6076  		it.fail = err
  6077  		return it.Next()
  6078  	}
  6079  }
  6080  
  6081  // Error returns any retrieval or parsing error occurred during filtering.
  6082  func (it *BridgeTransferERC20ERC20FeeChangedIterator) Error() error {
  6083  	return it.fail
  6084  }
  6085  
  6086  // Close terminates the iteration process, releasing any pending underlying
  6087  // resources.
  6088  func (it *BridgeTransferERC20ERC20FeeChangedIterator) Close() error {
  6089  	it.sub.Unsubscribe()
  6090  	return nil
  6091  }
  6092  
  6093  // BridgeTransferERC20ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC20 contract.
  6094  type BridgeTransferERC20ERC20FeeChanged struct {
  6095  	Token common.Address
  6096  	Fee   *big.Int
  6097  	Raw   types.Log // Blockchain specific contextual infos
  6098  }
  6099  
  6100  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  6101  //
  6102  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  6103  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC20ERC20FeeChangedIterator, error) {
  6104  
  6105  	var tokenRule []interface{}
  6106  	for _, tokenItem := range token {
  6107  		tokenRule = append(tokenRule, tokenItem)
  6108  	}
  6109  	var feeRule []interface{}
  6110  	for _, feeItem := range fee {
  6111  		feeRule = append(feeRule, feeItem)
  6112  	}
  6113  
  6114  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  6115  	if err != nil {
  6116  		return nil, err
  6117  	}
  6118  	return &BridgeTransferERC20ERC20FeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
  6119  }
  6120  
  6121  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  6122  //
  6123  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  6124  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
  6125  
  6126  	var tokenRule []interface{}
  6127  	for _, tokenItem := range token {
  6128  		tokenRule = append(tokenRule, tokenItem)
  6129  	}
  6130  	var feeRule []interface{}
  6131  	for _, feeItem := range fee {
  6132  		feeRule = append(feeRule, feeItem)
  6133  	}
  6134  
  6135  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  6136  	if err != nil {
  6137  		return nil, err
  6138  	}
  6139  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6140  		defer sub.Unsubscribe()
  6141  		for {
  6142  			select {
  6143  			case log := <-logs:
  6144  				// New log arrived, parse the event and forward to the user
  6145  				event := new(BridgeTransferERC20ERC20FeeChanged)
  6146  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  6147  					return err
  6148  				}
  6149  				event.Raw = log
  6150  
  6151  				select {
  6152  				case sink <- event:
  6153  				case err := <-sub.Err():
  6154  					return err
  6155  				case <-quit:
  6156  					return nil
  6157  				}
  6158  			case err := <-sub.Err():
  6159  				return err
  6160  			case <-quit:
  6161  				return nil
  6162  			}
  6163  		}
  6164  	}), nil
  6165  }
  6166  
  6167  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  6168  //
  6169  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  6170  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC20ERC20FeeChanged, error) {
  6171  	event := new(BridgeTransferERC20ERC20FeeChanged)
  6172  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  6173  		return nil, err
  6174  	}
  6175  	return event, nil
  6176  }
  6177  
  6178  // BridgeTransferERC20FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC20 contract.
  6179  type BridgeTransferERC20FeeReceiverChangedIterator struct {
  6180  	Event *BridgeTransferERC20FeeReceiverChanged // Event containing the contract specifics and raw log
  6181  
  6182  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6183  	event    string              // Event name to use for unpacking event data
  6184  
  6185  	logs chan types.Log      // Log channel receiving the found contract events
  6186  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6187  	done bool                // Whether the subscription completed delivering logs
  6188  	fail error               // Occurred error to stop iteration
  6189  }
  6190  
  6191  // Next advances the iterator to the subsequent event, returning whether there
  6192  // are any more events found. In case of a retrieval or parsing error, false is
  6193  // returned and Error() can be queried for the exact failure.
  6194  func (it *BridgeTransferERC20FeeReceiverChangedIterator) Next() bool {
  6195  	// If the iterator failed, stop iterating
  6196  	if it.fail != nil {
  6197  		return false
  6198  	}
  6199  	// If the iterator completed, deliver directly whatever's available
  6200  	if it.done {
  6201  		select {
  6202  		case log := <-it.logs:
  6203  			it.Event = new(BridgeTransferERC20FeeReceiverChanged)
  6204  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6205  				it.fail = err
  6206  				return false
  6207  			}
  6208  			it.Event.Raw = log
  6209  			return true
  6210  
  6211  		default:
  6212  			return false
  6213  		}
  6214  	}
  6215  	// Iterator still in progress, wait for either a data or an error event
  6216  	select {
  6217  	case log := <-it.logs:
  6218  		it.Event = new(BridgeTransferERC20FeeReceiverChanged)
  6219  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6220  			it.fail = err
  6221  			return false
  6222  		}
  6223  		it.Event.Raw = log
  6224  		return true
  6225  
  6226  	case err := <-it.sub.Err():
  6227  		it.done = true
  6228  		it.fail = err
  6229  		return it.Next()
  6230  	}
  6231  }
  6232  
  6233  // Error returns any retrieval or parsing error occurred during filtering.
  6234  func (it *BridgeTransferERC20FeeReceiverChangedIterator) Error() error {
  6235  	return it.fail
  6236  }
  6237  
  6238  // Close terminates the iteration process, releasing any pending underlying
  6239  // resources.
  6240  func (it *BridgeTransferERC20FeeReceiverChangedIterator) Close() error {
  6241  	it.sub.Unsubscribe()
  6242  	return nil
  6243  }
  6244  
  6245  // BridgeTransferERC20FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC20 contract.
  6246  type BridgeTransferERC20FeeReceiverChanged struct {
  6247  	FeeReceiver common.Address
  6248  	Raw         types.Log // Blockchain specific contextual infos
  6249  }
  6250  
  6251  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  6252  //
  6253  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  6254  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC20FeeReceiverChangedIterator, error) {
  6255  
  6256  	var feeReceiverRule []interface{}
  6257  	for _, feeReceiverItem := range feeReceiver {
  6258  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  6259  	}
  6260  
  6261  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  6262  	if err != nil {
  6263  		return nil, err
  6264  	}
  6265  	return &BridgeTransferERC20FeeReceiverChangedIterator{contract: _BridgeTransferERC20.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
  6266  }
  6267  
  6268  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  6269  //
  6270  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  6271  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
  6272  
  6273  	var feeReceiverRule []interface{}
  6274  	for _, feeReceiverItem := range feeReceiver {
  6275  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  6276  	}
  6277  
  6278  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  6279  	if err != nil {
  6280  		return nil, err
  6281  	}
  6282  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6283  		defer sub.Unsubscribe()
  6284  		for {
  6285  			select {
  6286  			case log := <-logs:
  6287  				// New log arrived, parse the event and forward to the user
  6288  				event := new(BridgeTransferERC20FeeReceiverChanged)
  6289  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  6290  					return err
  6291  				}
  6292  				event.Raw = log
  6293  
  6294  				select {
  6295  				case sink <- event:
  6296  				case err := <-sub.Err():
  6297  					return err
  6298  				case <-quit:
  6299  					return nil
  6300  				}
  6301  			case err := <-sub.Err():
  6302  				return err
  6303  			case <-quit:
  6304  				return nil
  6305  			}
  6306  		}
  6307  	}), nil
  6308  }
  6309  
  6310  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  6311  //
  6312  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  6313  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC20FeeReceiverChanged, error) {
  6314  	event := new(BridgeTransferERC20FeeReceiverChanged)
  6315  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  6316  		return nil, err
  6317  	}
  6318  	return event, nil
  6319  }
  6320  
  6321  // BridgeTransferERC20HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC20 contract.
  6322  type BridgeTransferERC20HandleValueTransferIterator struct {
  6323  	Event *BridgeTransferERC20HandleValueTransfer // Event containing the contract specifics and raw log
  6324  
  6325  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6326  	event    string              // Event name to use for unpacking event data
  6327  
  6328  	logs chan types.Log      // Log channel receiving the found contract events
  6329  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6330  	done bool                // Whether the subscription completed delivering logs
  6331  	fail error               // Occurred error to stop iteration
  6332  }
  6333  
  6334  // Next advances the iterator to the subsequent event, returning whether there
  6335  // are any more events found. In case of a retrieval or parsing error, false is
  6336  // returned and Error() can be queried for the exact failure.
  6337  func (it *BridgeTransferERC20HandleValueTransferIterator) Next() bool {
  6338  	// If the iterator failed, stop iterating
  6339  	if it.fail != nil {
  6340  		return false
  6341  	}
  6342  	// If the iterator completed, deliver directly whatever's available
  6343  	if it.done {
  6344  		select {
  6345  		case log := <-it.logs:
  6346  			it.Event = new(BridgeTransferERC20HandleValueTransfer)
  6347  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6348  				it.fail = err
  6349  				return false
  6350  			}
  6351  			it.Event.Raw = log
  6352  			return true
  6353  
  6354  		default:
  6355  			return false
  6356  		}
  6357  	}
  6358  	// Iterator still in progress, wait for either a data or an error event
  6359  	select {
  6360  	case log := <-it.logs:
  6361  		it.Event = new(BridgeTransferERC20HandleValueTransfer)
  6362  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6363  			it.fail = err
  6364  			return false
  6365  		}
  6366  		it.Event.Raw = log
  6367  		return true
  6368  
  6369  	case err := <-it.sub.Err():
  6370  		it.done = true
  6371  		it.fail = err
  6372  		return it.Next()
  6373  	}
  6374  }
  6375  
  6376  // Error returns any retrieval or parsing error occurred during filtering.
  6377  func (it *BridgeTransferERC20HandleValueTransferIterator) Error() error {
  6378  	return it.fail
  6379  }
  6380  
  6381  // Close terminates the iteration process, releasing any pending underlying
  6382  // resources.
  6383  func (it *BridgeTransferERC20HandleValueTransferIterator) Close() error {
  6384  	it.sub.Unsubscribe()
  6385  	return nil
  6386  }
  6387  
  6388  // BridgeTransferERC20HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC20 contract.
  6389  type BridgeTransferERC20HandleValueTransfer struct {
  6390  	RequestTxHash    [32]byte
  6391  	TokenType        uint8
  6392  	From             common.Address
  6393  	To               common.Address
  6394  	TokenAddress     common.Address
  6395  	ValueOrTokenId   *big.Int
  6396  	HandleNonce      uint64
  6397  	LowerHandleNonce uint64
  6398  	ExtraData        []byte
  6399  	Raw              types.Log // Blockchain specific contextual infos
  6400  }
  6401  
  6402  // FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  6403  //
  6404  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  6405  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20HandleValueTransferIterator, error) {
  6406  
  6407  	var fromRule []interface{}
  6408  	for _, fromItem := range from {
  6409  		fromRule = append(fromRule, fromItem)
  6410  	}
  6411  	var toRule []interface{}
  6412  	for _, toItem := range to {
  6413  		toRule = append(toRule, toItem)
  6414  	}
  6415  	var tokenAddressRule []interface{}
  6416  	for _, tokenAddressItem := range tokenAddress {
  6417  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  6418  	}
  6419  
  6420  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  6421  	if err != nil {
  6422  		return nil, err
  6423  	}
  6424  	return &BridgeTransferERC20HandleValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil
  6425  }
  6426  
  6427  // WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  6428  //
  6429  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  6430  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  6431  
  6432  	var fromRule []interface{}
  6433  	for _, fromItem := range from {
  6434  		fromRule = append(fromRule, fromItem)
  6435  	}
  6436  	var toRule []interface{}
  6437  	for _, toItem := range to {
  6438  		toRule = append(toRule, toItem)
  6439  	}
  6440  	var tokenAddressRule []interface{}
  6441  	for _, tokenAddressItem := range tokenAddress {
  6442  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  6443  	}
  6444  
  6445  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  6446  	if err != nil {
  6447  		return nil, err
  6448  	}
  6449  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6450  		defer sub.Unsubscribe()
  6451  		for {
  6452  			select {
  6453  			case log := <-logs:
  6454  				// New log arrived, parse the event and forward to the user
  6455  				event := new(BridgeTransferERC20HandleValueTransfer)
  6456  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  6457  					return err
  6458  				}
  6459  				event.Raw = log
  6460  
  6461  				select {
  6462  				case sink <- event:
  6463  				case err := <-sub.Err():
  6464  					return err
  6465  				case <-quit:
  6466  					return nil
  6467  				}
  6468  			case err := <-sub.Err():
  6469  				return err
  6470  			case <-quit:
  6471  				return nil
  6472  			}
  6473  		}
  6474  	}), nil
  6475  }
  6476  
  6477  // ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  6478  //
  6479  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  6480  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC20HandleValueTransfer, error) {
  6481  	event := new(BridgeTransferERC20HandleValueTransfer)
  6482  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  6483  		return nil, err
  6484  	}
  6485  	return event, nil
  6486  }
  6487  
  6488  // BridgeTransferERC20KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC20 contract.
  6489  type BridgeTransferERC20KLAYFeeChangedIterator struct {
  6490  	Event *BridgeTransferERC20KLAYFeeChanged // Event containing the contract specifics and raw log
  6491  
  6492  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6493  	event    string              // Event name to use for unpacking event data
  6494  
  6495  	logs chan types.Log      // Log channel receiving the found contract events
  6496  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6497  	done bool                // Whether the subscription completed delivering logs
  6498  	fail error               // Occurred error to stop iteration
  6499  }
  6500  
  6501  // Next advances the iterator to the subsequent event, returning whether there
  6502  // are any more events found. In case of a retrieval or parsing error, false is
  6503  // returned and Error() can be queried for the exact failure.
  6504  func (it *BridgeTransferERC20KLAYFeeChangedIterator) Next() bool {
  6505  	// If the iterator failed, stop iterating
  6506  	if it.fail != nil {
  6507  		return false
  6508  	}
  6509  	// If the iterator completed, deliver directly whatever's available
  6510  	if it.done {
  6511  		select {
  6512  		case log := <-it.logs:
  6513  			it.Event = new(BridgeTransferERC20KLAYFeeChanged)
  6514  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6515  				it.fail = err
  6516  				return false
  6517  			}
  6518  			it.Event.Raw = log
  6519  			return true
  6520  
  6521  		default:
  6522  			return false
  6523  		}
  6524  	}
  6525  	// Iterator still in progress, wait for either a data or an error event
  6526  	select {
  6527  	case log := <-it.logs:
  6528  		it.Event = new(BridgeTransferERC20KLAYFeeChanged)
  6529  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6530  			it.fail = err
  6531  			return false
  6532  		}
  6533  		it.Event.Raw = log
  6534  		return true
  6535  
  6536  	case err := <-it.sub.Err():
  6537  		it.done = true
  6538  		it.fail = err
  6539  		return it.Next()
  6540  	}
  6541  }
  6542  
  6543  // Error returns any retrieval or parsing error occurred during filtering.
  6544  func (it *BridgeTransferERC20KLAYFeeChangedIterator) Error() error {
  6545  	return it.fail
  6546  }
  6547  
  6548  // Close terminates the iteration process, releasing any pending underlying
  6549  // resources.
  6550  func (it *BridgeTransferERC20KLAYFeeChangedIterator) Close() error {
  6551  	it.sub.Unsubscribe()
  6552  	return nil
  6553  }
  6554  
  6555  // BridgeTransferERC20KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC20 contract.
  6556  type BridgeTransferERC20KLAYFeeChanged struct {
  6557  	Fee *big.Int
  6558  	Raw types.Log // Blockchain specific contextual infos
  6559  }
  6560  
  6561  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  6562  //
  6563  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  6564  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC20KLAYFeeChangedIterator, error) {
  6565  
  6566  	var feeRule []interface{}
  6567  	for _, feeItem := range fee {
  6568  		feeRule = append(feeRule, feeItem)
  6569  	}
  6570  
  6571  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
  6572  	if err != nil {
  6573  		return nil, err
  6574  	}
  6575  	return &BridgeTransferERC20KLAYFeeChangedIterator{contract: _BridgeTransferERC20.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
  6576  }
  6577  
  6578  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  6579  //
  6580  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  6581  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
  6582  
  6583  	var feeRule []interface{}
  6584  	for _, feeItem := range fee {
  6585  		feeRule = append(feeRule, feeItem)
  6586  	}
  6587  
  6588  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
  6589  	if err != nil {
  6590  		return nil, err
  6591  	}
  6592  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6593  		defer sub.Unsubscribe()
  6594  		for {
  6595  			select {
  6596  			case log := <-logs:
  6597  				// New log arrived, parse the event and forward to the user
  6598  				event := new(BridgeTransferERC20KLAYFeeChanged)
  6599  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  6600  					return err
  6601  				}
  6602  				event.Raw = log
  6603  
  6604  				select {
  6605  				case sink <- event:
  6606  				case err := <-sub.Err():
  6607  					return err
  6608  				case <-quit:
  6609  					return nil
  6610  				}
  6611  			case err := <-sub.Err():
  6612  				return err
  6613  			case <-quit:
  6614  				return nil
  6615  			}
  6616  		}
  6617  	}), nil
  6618  }
  6619  
  6620  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  6621  //
  6622  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  6623  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC20KLAYFeeChanged, error) {
  6624  	event := new(BridgeTransferERC20KLAYFeeChanged)
  6625  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  6626  		return nil, err
  6627  	}
  6628  	return event, nil
  6629  }
  6630  
  6631  // BridgeTransferERC20OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC20 contract.
  6632  type BridgeTransferERC20OwnershipTransferredIterator struct {
  6633  	Event *BridgeTransferERC20OwnershipTransferred // Event containing the contract specifics and raw log
  6634  
  6635  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6636  	event    string              // Event name to use for unpacking event data
  6637  
  6638  	logs chan types.Log      // Log channel receiving the found contract events
  6639  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6640  	done bool                // Whether the subscription completed delivering logs
  6641  	fail error               // Occurred error to stop iteration
  6642  }
  6643  
  6644  // Next advances the iterator to the subsequent event, returning whether there
  6645  // are any more events found. In case of a retrieval or parsing error, false is
  6646  // returned and Error() can be queried for the exact failure.
  6647  func (it *BridgeTransferERC20OwnershipTransferredIterator) Next() bool {
  6648  	// If the iterator failed, stop iterating
  6649  	if it.fail != nil {
  6650  		return false
  6651  	}
  6652  	// If the iterator completed, deliver directly whatever's available
  6653  	if it.done {
  6654  		select {
  6655  		case log := <-it.logs:
  6656  			it.Event = new(BridgeTransferERC20OwnershipTransferred)
  6657  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6658  				it.fail = err
  6659  				return false
  6660  			}
  6661  			it.Event.Raw = log
  6662  			return true
  6663  
  6664  		default:
  6665  			return false
  6666  		}
  6667  	}
  6668  	// Iterator still in progress, wait for either a data or an error event
  6669  	select {
  6670  	case log := <-it.logs:
  6671  		it.Event = new(BridgeTransferERC20OwnershipTransferred)
  6672  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6673  			it.fail = err
  6674  			return false
  6675  		}
  6676  		it.Event.Raw = log
  6677  		return true
  6678  
  6679  	case err := <-it.sub.Err():
  6680  		it.done = true
  6681  		it.fail = err
  6682  		return it.Next()
  6683  	}
  6684  }
  6685  
  6686  // Error returns any retrieval or parsing error occurred during filtering.
  6687  func (it *BridgeTransferERC20OwnershipTransferredIterator) Error() error {
  6688  	return it.fail
  6689  }
  6690  
  6691  // Close terminates the iteration process, releasing any pending underlying
  6692  // resources.
  6693  func (it *BridgeTransferERC20OwnershipTransferredIterator) Close() error {
  6694  	it.sub.Unsubscribe()
  6695  	return nil
  6696  }
  6697  
  6698  // BridgeTransferERC20OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC20 contract.
  6699  type BridgeTransferERC20OwnershipTransferred struct {
  6700  	PreviousOwner common.Address
  6701  	NewOwner      common.Address
  6702  	Raw           types.Log // Blockchain specific contextual infos
  6703  }
  6704  
  6705  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  6706  //
  6707  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  6708  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC20OwnershipTransferredIterator, error) {
  6709  
  6710  	var previousOwnerRule []interface{}
  6711  	for _, previousOwnerItem := range previousOwner {
  6712  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  6713  	}
  6714  	var newOwnerRule []interface{}
  6715  	for _, newOwnerItem := range newOwner {
  6716  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  6717  	}
  6718  
  6719  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  6720  	if err != nil {
  6721  		return nil, err
  6722  	}
  6723  	return &BridgeTransferERC20OwnershipTransferredIterator{contract: _BridgeTransferERC20.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  6724  }
  6725  
  6726  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  6727  //
  6728  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  6729  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  6730  
  6731  	var previousOwnerRule []interface{}
  6732  	for _, previousOwnerItem := range previousOwner {
  6733  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  6734  	}
  6735  	var newOwnerRule []interface{}
  6736  	for _, newOwnerItem := range newOwner {
  6737  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  6738  	}
  6739  
  6740  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  6741  	if err != nil {
  6742  		return nil, err
  6743  	}
  6744  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6745  		defer sub.Unsubscribe()
  6746  		for {
  6747  			select {
  6748  			case log := <-logs:
  6749  				// New log arrived, parse the event and forward to the user
  6750  				event := new(BridgeTransferERC20OwnershipTransferred)
  6751  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  6752  					return err
  6753  				}
  6754  				event.Raw = log
  6755  
  6756  				select {
  6757  				case sink <- event:
  6758  				case err := <-sub.Err():
  6759  					return err
  6760  				case <-quit:
  6761  					return nil
  6762  				}
  6763  			case err := <-sub.Err():
  6764  				return err
  6765  			case <-quit:
  6766  				return nil
  6767  			}
  6768  		}
  6769  	}), nil
  6770  }
  6771  
  6772  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  6773  //
  6774  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  6775  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC20OwnershipTransferred, error) {
  6776  	event := new(BridgeTransferERC20OwnershipTransferred)
  6777  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  6778  		return nil, err
  6779  	}
  6780  	return event, nil
  6781  }
  6782  
  6783  // BridgeTransferERC20RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC20 contract.
  6784  type BridgeTransferERC20RequestValueTransferIterator struct {
  6785  	Event *BridgeTransferERC20RequestValueTransfer // Event containing the contract specifics and raw log
  6786  
  6787  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6788  	event    string              // Event name to use for unpacking event data
  6789  
  6790  	logs chan types.Log      // Log channel receiving the found contract events
  6791  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6792  	done bool                // Whether the subscription completed delivering logs
  6793  	fail error               // Occurred error to stop iteration
  6794  }
  6795  
  6796  // Next advances the iterator to the subsequent event, returning whether there
  6797  // are any more events found. In case of a retrieval or parsing error, false is
  6798  // returned and Error() can be queried for the exact failure.
  6799  func (it *BridgeTransferERC20RequestValueTransferIterator) Next() bool {
  6800  	// If the iterator failed, stop iterating
  6801  	if it.fail != nil {
  6802  		return false
  6803  	}
  6804  	// If the iterator completed, deliver directly whatever's available
  6805  	if it.done {
  6806  		select {
  6807  		case log := <-it.logs:
  6808  			it.Event = new(BridgeTransferERC20RequestValueTransfer)
  6809  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6810  				it.fail = err
  6811  				return false
  6812  			}
  6813  			it.Event.Raw = log
  6814  			return true
  6815  
  6816  		default:
  6817  			return false
  6818  		}
  6819  	}
  6820  	// Iterator still in progress, wait for either a data or an error event
  6821  	select {
  6822  	case log := <-it.logs:
  6823  		it.Event = new(BridgeTransferERC20RequestValueTransfer)
  6824  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6825  			it.fail = err
  6826  			return false
  6827  		}
  6828  		it.Event.Raw = log
  6829  		return true
  6830  
  6831  	case err := <-it.sub.Err():
  6832  		it.done = true
  6833  		it.fail = err
  6834  		return it.Next()
  6835  	}
  6836  }
  6837  
  6838  // Error returns any retrieval or parsing error occurred during filtering.
  6839  func (it *BridgeTransferERC20RequestValueTransferIterator) Error() error {
  6840  	return it.fail
  6841  }
  6842  
  6843  // Close terminates the iteration process, releasing any pending underlying
  6844  // resources.
  6845  func (it *BridgeTransferERC20RequestValueTransferIterator) Close() error {
  6846  	it.sub.Unsubscribe()
  6847  	return nil
  6848  }
  6849  
  6850  // BridgeTransferERC20RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC20 contract.
  6851  type BridgeTransferERC20RequestValueTransfer struct {
  6852  	TokenType      uint8
  6853  	From           common.Address
  6854  	To             common.Address
  6855  	TokenAddress   common.Address
  6856  	ValueOrTokenId *big.Int
  6857  	RequestNonce   uint64
  6858  	Fee            *big.Int
  6859  	ExtraData      []byte
  6860  	Raw            types.Log // Blockchain specific contextual infos
  6861  }
  6862  
  6863  // FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  6864  //
  6865  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  6866  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferIterator, error) {
  6867  
  6868  	var fromRule []interface{}
  6869  	for _, fromItem := range from {
  6870  		fromRule = append(fromRule, fromItem)
  6871  	}
  6872  	var toRule []interface{}
  6873  	for _, toItem := range to {
  6874  		toRule = append(toRule, toItem)
  6875  	}
  6876  	var tokenAddressRule []interface{}
  6877  	for _, tokenAddressItem := range tokenAddress {
  6878  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  6879  	}
  6880  
  6881  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  6882  	if err != nil {
  6883  		return nil, err
  6884  	}
  6885  	return &BridgeTransferERC20RequestValueTransferIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil
  6886  }
  6887  
  6888  // WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  6889  //
  6890  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  6891  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  6892  
  6893  	var fromRule []interface{}
  6894  	for _, fromItem := range from {
  6895  		fromRule = append(fromRule, fromItem)
  6896  	}
  6897  	var toRule []interface{}
  6898  	for _, toItem := range to {
  6899  		toRule = append(toRule, toItem)
  6900  	}
  6901  	var tokenAddressRule []interface{}
  6902  	for _, tokenAddressItem := range tokenAddress {
  6903  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  6904  	}
  6905  
  6906  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  6907  	if err != nil {
  6908  		return nil, err
  6909  	}
  6910  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6911  		defer sub.Unsubscribe()
  6912  		for {
  6913  			select {
  6914  			case log := <-logs:
  6915  				// New log arrived, parse the event and forward to the user
  6916  				event := new(BridgeTransferERC20RequestValueTransfer)
  6917  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  6918  					return err
  6919  				}
  6920  				event.Raw = log
  6921  
  6922  				select {
  6923  				case sink <- event:
  6924  				case err := <-sub.Err():
  6925  					return err
  6926  				case <-quit:
  6927  					return nil
  6928  				}
  6929  			case err := <-sub.Err():
  6930  				return err
  6931  			case <-quit:
  6932  				return nil
  6933  			}
  6934  		}
  6935  	}), nil
  6936  }
  6937  
  6938  // ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  6939  //
  6940  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  6941  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC20RequestValueTransfer, error) {
  6942  	event := new(BridgeTransferERC20RequestValueTransfer)
  6943  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  6944  		return nil, err
  6945  	}
  6946  	return event, nil
  6947  }
  6948  
  6949  // BridgeTransferERC20RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC20 contract.
  6950  type BridgeTransferERC20RequestValueTransferEncodedIterator struct {
  6951  	Event *BridgeTransferERC20RequestValueTransferEncoded // Event containing the contract specifics and raw log
  6952  
  6953  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6954  	event    string              // Event name to use for unpacking event data
  6955  
  6956  	logs chan types.Log      // Log channel receiving the found contract events
  6957  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6958  	done bool                // Whether the subscription completed delivering logs
  6959  	fail error               // Occurred error to stop iteration
  6960  }
  6961  
  6962  // Next advances the iterator to the subsequent event, returning whether there
  6963  // are any more events found. In case of a retrieval or parsing error, false is
  6964  // returned and Error() can be queried for the exact failure.
  6965  func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Next() bool {
  6966  	// If the iterator failed, stop iterating
  6967  	if it.fail != nil {
  6968  		return false
  6969  	}
  6970  	// If the iterator completed, deliver directly whatever's available
  6971  	if it.done {
  6972  		select {
  6973  		case log := <-it.logs:
  6974  			it.Event = new(BridgeTransferERC20RequestValueTransferEncoded)
  6975  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6976  				it.fail = err
  6977  				return false
  6978  			}
  6979  			it.Event.Raw = log
  6980  			return true
  6981  
  6982  		default:
  6983  			return false
  6984  		}
  6985  	}
  6986  	// Iterator still in progress, wait for either a data or an error event
  6987  	select {
  6988  	case log := <-it.logs:
  6989  		it.Event = new(BridgeTransferERC20RequestValueTransferEncoded)
  6990  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6991  			it.fail = err
  6992  			return false
  6993  		}
  6994  		it.Event.Raw = log
  6995  		return true
  6996  
  6997  	case err := <-it.sub.Err():
  6998  		it.done = true
  6999  		it.fail = err
  7000  		return it.Next()
  7001  	}
  7002  }
  7003  
  7004  // Error returns any retrieval or parsing error occurred during filtering.
  7005  func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Error() error {
  7006  	return it.fail
  7007  }
  7008  
  7009  // Close terminates the iteration process, releasing any pending underlying
  7010  // resources.
  7011  func (it *BridgeTransferERC20RequestValueTransferEncodedIterator) Close() error {
  7012  	it.sub.Unsubscribe()
  7013  	return nil
  7014  }
  7015  
  7016  // BridgeTransferERC20RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC20 contract.
  7017  type BridgeTransferERC20RequestValueTransferEncoded struct {
  7018  	TokenType      uint8
  7019  	From           common.Address
  7020  	To             common.Address
  7021  	TokenAddress   common.Address
  7022  	ValueOrTokenId *big.Int
  7023  	RequestNonce   uint64
  7024  	Fee            *big.Int
  7025  	ExtraData      []byte
  7026  	EncodingVer    uint8
  7027  	EncodedData    []byte
  7028  	Raw            types.Log // Blockchain specific contextual infos
  7029  }
  7030  
  7031  // FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  7032  //
  7033  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  7034  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC20RequestValueTransferEncodedIterator, error) {
  7035  
  7036  	var fromRule []interface{}
  7037  	for _, fromItem := range from {
  7038  		fromRule = append(fromRule, fromItem)
  7039  	}
  7040  	var toRule []interface{}
  7041  	for _, toItem := range to {
  7042  		toRule = append(toRule, toItem)
  7043  	}
  7044  	var tokenAddressRule []interface{}
  7045  	for _, tokenAddressItem := range tokenAddress {
  7046  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  7047  	}
  7048  
  7049  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  7050  	if err != nil {
  7051  		return nil, err
  7052  	}
  7053  	return &BridgeTransferERC20RequestValueTransferEncodedIterator{contract: _BridgeTransferERC20.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil
  7054  }
  7055  
  7056  // WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  7057  //
  7058  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  7059  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  7060  
  7061  	var fromRule []interface{}
  7062  	for _, fromItem := range from {
  7063  		fromRule = append(fromRule, fromItem)
  7064  	}
  7065  	var toRule []interface{}
  7066  	for _, toItem := range to {
  7067  		toRule = append(toRule, toItem)
  7068  	}
  7069  	var tokenAddressRule []interface{}
  7070  	for _, tokenAddressItem := range tokenAddress {
  7071  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  7072  	}
  7073  
  7074  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  7075  	if err != nil {
  7076  		return nil, err
  7077  	}
  7078  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7079  		defer sub.Unsubscribe()
  7080  		for {
  7081  			select {
  7082  			case log := <-logs:
  7083  				// New log arrived, parse the event and forward to the user
  7084  				event := new(BridgeTransferERC20RequestValueTransferEncoded)
  7085  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  7086  					return err
  7087  				}
  7088  				event.Raw = log
  7089  
  7090  				select {
  7091  				case sink <- event:
  7092  				case err := <-sub.Err():
  7093  					return err
  7094  				case <-quit:
  7095  					return nil
  7096  				}
  7097  			case err := <-sub.Err():
  7098  				return err
  7099  			case <-quit:
  7100  				return nil
  7101  			}
  7102  		}
  7103  	}), nil
  7104  }
  7105  
  7106  // ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  7107  //
  7108  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  7109  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC20RequestValueTransferEncoded, error) {
  7110  	event := new(BridgeTransferERC20RequestValueTransferEncoded)
  7111  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  7112  		return nil, err
  7113  	}
  7114  	return event, nil
  7115  }
  7116  
  7117  // BridgeTransferERC20TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC20 contract.
  7118  type BridgeTransferERC20TokenDeregisteredIterator struct {
  7119  	Event *BridgeTransferERC20TokenDeregistered // Event containing the contract specifics and raw log
  7120  
  7121  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7122  	event    string              // Event name to use for unpacking event data
  7123  
  7124  	logs chan types.Log      // Log channel receiving the found contract events
  7125  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7126  	done bool                // Whether the subscription completed delivering logs
  7127  	fail error               // Occurred error to stop iteration
  7128  }
  7129  
  7130  // Next advances the iterator to the subsequent event, returning whether there
  7131  // are any more events found. In case of a retrieval or parsing error, false is
  7132  // returned and Error() can be queried for the exact failure.
  7133  func (it *BridgeTransferERC20TokenDeregisteredIterator) Next() bool {
  7134  	// If the iterator failed, stop iterating
  7135  	if it.fail != nil {
  7136  		return false
  7137  	}
  7138  	// If the iterator completed, deliver directly whatever's available
  7139  	if it.done {
  7140  		select {
  7141  		case log := <-it.logs:
  7142  			it.Event = new(BridgeTransferERC20TokenDeregistered)
  7143  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7144  				it.fail = err
  7145  				return false
  7146  			}
  7147  			it.Event.Raw = log
  7148  			return true
  7149  
  7150  		default:
  7151  			return false
  7152  		}
  7153  	}
  7154  	// Iterator still in progress, wait for either a data or an error event
  7155  	select {
  7156  	case log := <-it.logs:
  7157  		it.Event = new(BridgeTransferERC20TokenDeregistered)
  7158  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7159  			it.fail = err
  7160  			return false
  7161  		}
  7162  		it.Event.Raw = log
  7163  		return true
  7164  
  7165  	case err := <-it.sub.Err():
  7166  		it.done = true
  7167  		it.fail = err
  7168  		return it.Next()
  7169  	}
  7170  }
  7171  
  7172  // Error returns any retrieval or parsing error occurred during filtering.
  7173  func (it *BridgeTransferERC20TokenDeregisteredIterator) Error() error {
  7174  	return it.fail
  7175  }
  7176  
  7177  // Close terminates the iteration process, releasing any pending underlying
  7178  // resources.
  7179  func (it *BridgeTransferERC20TokenDeregisteredIterator) Close() error {
  7180  	it.sub.Unsubscribe()
  7181  	return nil
  7182  }
  7183  
  7184  // BridgeTransferERC20TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC20 contract.
  7185  type BridgeTransferERC20TokenDeregistered struct {
  7186  	Token common.Address
  7187  	Raw   types.Log // Blockchain specific contextual infos
  7188  }
  7189  
  7190  // FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  7191  //
  7192  // Solidity: event TokenDeregistered(address indexed token)
  7193  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenDeregisteredIterator, error) {
  7194  
  7195  	var tokenRule []interface{}
  7196  	for _, tokenItem := range token {
  7197  		tokenRule = append(tokenRule, tokenItem)
  7198  	}
  7199  
  7200  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenDeregistered", tokenRule)
  7201  	if err != nil {
  7202  		return nil, err
  7203  	}
  7204  	return &BridgeTransferERC20TokenDeregisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil
  7205  }
  7206  
  7207  // WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  7208  //
  7209  // Solidity: event TokenDeregistered(address indexed token)
  7210  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenDeregistered, token []common.Address) (event.Subscription, error) {
  7211  
  7212  	var tokenRule []interface{}
  7213  	for _, tokenItem := range token {
  7214  		tokenRule = append(tokenRule, tokenItem)
  7215  	}
  7216  
  7217  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenDeregistered", tokenRule)
  7218  	if err != nil {
  7219  		return nil, err
  7220  	}
  7221  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7222  		defer sub.Unsubscribe()
  7223  		for {
  7224  			select {
  7225  			case log := <-logs:
  7226  				// New log arrived, parse the event and forward to the user
  7227  				event := new(BridgeTransferERC20TokenDeregistered)
  7228  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
  7229  					return err
  7230  				}
  7231  				event.Raw = log
  7232  
  7233  				select {
  7234  				case sink <- event:
  7235  				case err := <-sub.Err():
  7236  					return err
  7237  				case <-quit:
  7238  					return nil
  7239  				}
  7240  			case err := <-sub.Err():
  7241  				return err
  7242  			case <-quit:
  7243  				return nil
  7244  			}
  7245  		}
  7246  	}), nil
  7247  }
  7248  
  7249  // ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  7250  //
  7251  // Solidity: event TokenDeregistered(address indexed token)
  7252  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC20TokenDeregistered, error) {
  7253  	event := new(BridgeTransferERC20TokenDeregistered)
  7254  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
  7255  		return nil, err
  7256  	}
  7257  	return event, nil
  7258  }
  7259  
  7260  // BridgeTransferERC20TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC20 contract.
  7261  type BridgeTransferERC20TokenLockedIterator struct {
  7262  	Event *BridgeTransferERC20TokenLocked // Event containing the contract specifics and raw log
  7263  
  7264  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7265  	event    string              // Event name to use for unpacking event data
  7266  
  7267  	logs chan types.Log      // Log channel receiving the found contract events
  7268  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7269  	done bool                // Whether the subscription completed delivering logs
  7270  	fail error               // Occurred error to stop iteration
  7271  }
  7272  
  7273  // Next advances the iterator to the subsequent event, returning whether there
  7274  // are any more events found. In case of a retrieval or parsing error, false is
  7275  // returned and Error() can be queried for the exact failure.
  7276  func (it *BridgeTransferERC20TokenLockedIterator) Next() bool {
  7277  	// If the iterator failed, stop iterating
  7278  	if it.fail != nil {
  7279  		return false
  7280  	}
  7281  	// If the iterator completed, deliver directly whatever's available
  7282  	if it.done {
  7283  		select {
  7284  		case log := <-it.logs:
  7285  			it.Event = new(BridgeTransferERC20TokenLocked)
  7286  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7287  				it.fail = err
  7288  				return false
  7289  			}
  7290  			it.Event.Raw = log
  7291  			return true
  7292  
  7293  		default:
  7294  			return false
  7295  		}
  7296  	}
  7297  	// Iterator still in progress, wait for either a data or an error event
  7298  	select {
  7299  	case log := <-it.logs:
  7300  		it.Event = new(BridgeTransferERC20TokenLocked)
  7301  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7302  			it.fail = err
  7303  			return false
  7304  		}
  7305  		it.Event.Raw = log
  7306  		return true
  7307  
  7308  	case err := <-it.sub.Err():
  7309  		it.done = true
  7310  		it.fail = err
  7311  		return it.Next()
  7312  	}
  7313  }
  7314  
  7315  // Error returns any retrieval or parsing error occurred during filtering.
  7316  func (it *BridgeTransferERC20TokenLockedIterator) Error() error {
  7317  	return it.fail
  7318  }
  7319  
  7320  // Close terminates the iteration process, releasing any pending underlying
  7321  // resources.
  7322  func (it *BridgeTransferERC20TokenLockedIterator) Close() error {
  7323  	it.sub.Unsubscribe()
  7324  	return nil
  7325  }
  7326  
  7327  // BridgeTransferERC20TokenLocked represents a TokenLocked event raised by the BridgeTransferERC20 contract.
  7328  type BridgeTransferERC20TokenLocked struct {
  7329  	Token common.Address
  7330  	Raw   types.Log // Blockchain specific contextual infos
  7331  }
  7332  
  7333  // FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  7334  //
  7335  // Solidity: event TokenLocked(address indexed token)
  7336  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenLockedIterator, error) {
  7337  
  7338  	var tokenRule []interface{}
  7339  	for _, tokenItem := range token {
  7340  		tokenRule = append(tokenRule, tokenItem)
  7341  	}
  7342  
  7343  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenLocked", tokenRule)
  7344  	if err != nil {
  7345  		return nil, err
  7346  	}
  7347  	return &BridgeTransferERC20TokenLockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenLocked", logs: logs, sub: sub}, nil
  7348  }
  7349  
  7350  // WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  7351  //
  7352  // Solidity: event TokenLocked(address indexed token)
  7353  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenLocked, token []common.Address) (event.Subscription, error) {
  7354  
  7355  	var tokenRule []interface{}
  7356  	for _, tokenItem := range token {
  7357  		tokenRule = append(tokenRule, tokenItem)
  7358  	}
  7359  
  7360  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenLocked", tokenRule)
  7361  	if err != nil {
  7362  		return nil, err
  7363  	}
  7364  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7365  		defer sub.Unsubscribe()
  7366  		for {
  7367  			select {
  7368  			case log := <-logs:
  7369  				// New log arrived, parse the event and forward to the user
  7370  				event := new(BridgeTransferERC20TokenLocked)
  7371  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil {
  7372  					return err
  7373  				}
  7374  				event.Raw = log
  7375  
  7376  				select {
  7377  				case sink <- event:
  7378  				case err := <-sub.Err():
  7379  					return err
  7380  				case <-quit:
  7381  					return nil
  7382  				}
  7383  			case err := <-sub.Err():
  7384  				return err
  7385  			case <-quit:
  7386  				return nil
  7387  			}
  7388  		}
  7389  	}), nil
  7390  }
  7391  
  7392  // ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
  7393  //
  7394  // Solidity: event TokenLocked(address indexed token)
  7395  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC20TokenLocked, error) {
  7396  	event := new(BridgeTransferERC20TokenLocked)
  7397  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenLocked", log); err != nil {
  7398  		return nil, err
  7399  	}
  7400  	return event, nil
  7401  }
  7402  
  7403  // BridgeTransferERC20TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC20 contract.
  7404  type BridgeTransferERC20TokenRegisteredIterator struct {
  7405  	Event *BridgeTransferERC20TokenRegistered // Event containing the contract specifics and raw log
  7406  
  7407  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7408  	event    string              // Event name to use for unpacking event data
  7409  
  7410  	logs chan types.Log      // Log channel receiving the found contract events
  7411  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7412  	done bool                // Whether the subscription completed delivering logs
  7413  	fail error               // Occurred error to stop iteration
  7414  }
  7415  
  7416  // Next advances the iterator to the subsequent event, returning whether there
  7417  // are any more events found. In case of a retrieval or parsing error, false is
  7418  // returned and Error() can be queried for the exact failure.
  7419  func (it *BridgeTransferERC20TokenRegisteredIterator) Next() bool {
  7420  	// If the iterator failed, stop iterating
  7421  	if it.fail != nil {
  7422  		return false
  7423  	}
  7424  	// If the iterator completed, deliver directly whatever's available
  7425  	if it.done {
  7426  		select {
  7427  		case log := <-it.logs:
  7428  			it.Event = new(BridgeTransferERC20TokenRegistered)
  7429  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7430  				it.fail = err
  7431  				return false
  7432  			}
  7433  			it.Event.Raw = log
  7434  			return true
  7435  
  7436  		default:
  7437  			return false
  7438  		}
  7439  	}
  7440  	// Iterator still in progress, wait for either a data or an error event
  7441  	select {
  7442  	case log := <-it.logs:
  7443  		it.Event = new(BridgeTransferERC20TokenRegistered)
  7444  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7445  			it.fail = err
  7446  			return false
  7447  		}
  7448  		it.Event.Raw = log
  7449  		return true
  7450  
  7451  	case err := <-it.sub.Err():
  7452  		it.done = true
  7453  		it.fail = err
  7454  		return it.Next()
  7455  	}
  7456  }
  7457  
  7458  // Error returns any retrieval or parsing error occurred during filtering.
  7459  func (it *BridgeTransferERC20TokenRegisteredIterator) Error() error {
  7460  	return it.fail
  7461  }
  7462  
  7463  // Close terminates the iteration process, releasing any pending underlying
  7464  // resources.
  7465  func (it *BridgeTransferERC20TokenRegisteredIterator) Close() error {
  7466  	it.sub.Unsubscribe()
  7467  	return nil
  7468  }
  7469  
  7470  // BridgeTransferERC20TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC20 contract.
  7471  type BridgeTransferERC20TokenRegistered struct {
  7472  	Token common.Address
  7473  	Raw   types.Log // Blockchain specific contextual infos
  7474  }
  7475  
  7476  // FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  7477  //
  7478  // Solidity: event TokenRegistered(address indexed token)
  7479  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenRegisteredIterator, error) {
  7480  
  7481  	var tokenRule []interface{}
  7482  	for _, tokenItem := range token {
  7483  		tokenRule = append(tokenRule, tokenItem)
  7484  	}
  7485  
  7486  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenRegistered", tokenRule)
  7487  	if err != nil {
  7488  		return nil, err
  7489  	}
  7490  	return &BridgeTransferERC20TokenRegisteredIterator{contract: _BridgeTransferERC20.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil
  7491  }
  7492  
  7493  // WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  7494  //
  7495  // Solidity: event TokenRegistered(address indexed token)
  7496  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenRegistered, token []common.Address) (event.Subscription, error) {
  7497  
  7498  	var tokenRule []interface{}
  7499  	for _, tokenItem := range token {
  7500  		tokenRule = append(tokenRule, tokenItem)
  7501  	}
  7502  
  7503  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenRegistered", tokenRule)
  7504  	if err != nil {
  7505  		return nil, err
  7506  	}
  7507  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7508  		defer sub.Unsubscribe()
  7509  		for {
  7510  			select {
  7511  			case log := <-logs:
  7512  				// New log arrived, parse the event and forward to the user
  7513  				event := new(BridgeTransferERC20TokenRegistered)
  7514  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
  7515  					return err
  7516  				}
  7517  				event.Raw = log
  7518  
  7519  				select {
  7520  				case sink <- event:
  7521  				case err := <-sub.Err():
  7522  					return err
  7523  				case <-quit:
  7524  					return nil
  7525  				}
  7526  			case err := <-sub.Err():
  7527  				return err
  7528  			case <-quit:
  7529  				return nil
  7530  			}
  7531  		}
  7532  	}), nil
  7533  }
  7534  
  7535  // ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
  7536  //
  7537  // Solidity: event TokenRegistered(address indexed token)
  7538  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC20TokenRegistered, error) {
  7539  	event := new(BridgeTransferERC20TokenRegistered)
  7540  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
  7541  		return nil, err
  7542  	}
  7543  	return event, nil
  7544  }
  7545  
  7546  // BridgeTransferERC20TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC20 contract.
  7547  type BridgeTransferERC20TokenUnlockedIterator struct {
  7548  	Event *BridgeTransferERC20TokenUnlocked // Event containing the contract specifics and raw log
  7549  
  7550  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7551  	event    string              // Event name to use for unpacking event data
  7552  
  7553  	logs chan types.Log      // Log channel receiving the found contract events
  7554  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7555  	done bool                // Whether the subscription completed delivering logs
  7556  	fail error               // Occurred error to stop iteration
  7557  }
  7558  
  7559  // Next advances the iterator to the subsequent event, returning whether there
  7560  // are any more events found. In case of a retrieval or parsing error, false is
  7561  // returned and Error() can be queried for the exact failure.
  7562  func (it *BridgeTransferERC20TokenUnlockedIterator) Next() bool {
  7563  	// If the iterator failed, stop iterating
  7564  	if it.fail != nil {
  7565  		return false
  7566  	}
  7567  	// If the iterator completed, deliver directly whatever's available
  7568  	if it.done {
  7569  		select {
  7570  		case log := <-it.logs:
  7571  			it.Event = new(BridgeTransferERC20TokenUnlocked)
  7572  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7573  				it.fail = err
  7574  				return false
  7575  			}
  7576  			it.Event.Raw = log
  7577  			return true
  7578  
  7579  		default:
  7580  			return false
  7581  		}
  7582  	}
  7583  	// Iterator still in progress, wait for either a data or an error event
  7584  	select {
  7585  	case log := <-it.logs:
  7586  		it.Event = new(BridgeTransferERC20TokenUnlocked)
  7587  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7588  			it.fail = err
  7589  			return false
  7590  		}
  7591  		it.Event.Raw = log
  7592  		return true
  7593  
  7594  	case err := <-it.sub.Err():
  7595  		it.done = true
  7596  		it.fail = err
  7597  		return it.Next()
  7598  	}
  7599  }
  7600  
  7601  // Error returns any retrieval or parsing error occurred during filtering.
  7602  func (it *BridgeTransferERC20TokenUnlockedIterator) Error() error {
  7603  	return it.fail
  7604  }
  7605  
  7606  // Close terminates the iteration process, releasing any pending underlying
  7607  // resources.
  7608  func (it *BridgeTransferERC20TokenUnlockedIterator) Close() error {
  7609  	it.sub.Unsubscribe()
  7610  	return nil
  7611  }
  7612  
  7613  // BridgeTransferERC20TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC20 contract.
  7614  type BridgeTransferERC20TokenUnlocked struct {
  7615  	Token common.Address
  7616  	Raw   types.Log // Blockchain specific contextual infos
  7617  }
  7618  
  7619  // FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  7620  //
  7621  // Solidity: event TokenUnlocked(address indexed token)
  7622  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC20TokenUnlockedIterator, error) {
  7623  
  7624  	var tokenRule []interface{}
  7625  	for _, tokenItem := range token {
  7626  		tokenRule = append(tokenRule, tokenItem)
  7627  	}
  7628  
  7629  	logs, sub, err := _BridgeTransferERC20.contract.FilterLogs(opts, "TokenUnlocked", tokenRule)
  7630  	if err != nil {
  7631  		return nil, err
  7632  	}
  7633  	return &BridgeTransferERC20TokenUnlockedIterator{contract: _BridgeTransferERC20.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil
  7634  }
  7635  
  7636  // WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  7637  //
  7638  // Solidity: event TokenUnlocked(address indexed token)
  7639  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC20TokenUnlocked, token []common.Address) (event.Subscription, error) {
  7640  
  7641  	var tokenRule []interface{}
  7642  	for _, tokenItem := range token {
  7643  		tokenRule = append(tokenRule, tokenItem)
  7644  	}
  7645  
  7646  	logs, sub, err := _BridgeTransferERC20.contract.WatchLogs(opts, "TokenUnlocked", tokenRule)
  7647  	if err != nil {
  7648  		return nil, err
  7649  	}
  7650  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7651  		defer sub.Unsubscribe()
  7652  		for {
  7653  			select {
  7654  			case log := <-logs:
  7655  				// New log arrived, parse the event and forward to the user
  7656  				event := new(BridgeTransferERC20TokenUnlocked)
  7657  				if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
  7658  					return err
  7659  				}
  7660  				event.Raw = log
  7661  
  7662  				select {
  7663  				case sink <- event:
  7664  				case err := <-sub.Err():
  7665  					return err
  7666  				case <-quit:
  7667  					return nil
  7668  				}
  7669  			case err := <-sub.Err():
  7670  				return err
  7671  			case <-quit:
  7672  				return nil
  7673  			}
  7674  		}
  7675  	}), nil
  7676  }
  7677  
  7678  // ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
  7679  //
  7680  // Solidity: event TokenUnlocked(address indexed token)
  7681  func (_BridgeTransferERC20 *BridgeTransferERC20Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC20TokenUnlocked, error) {
  7682  	event := new(BridgeTransferERC20TokenUnlocked)
  7683  	if err := _BridgeTransferERC20.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
  7684  		return nil, err
  7685  	}
  7686  	return event, nil
  7687  }
  7688  
  7689  // BridgeTransferERC721ABI is the input ABI used to generate the binding from.
  7690  const BridgeTransferERC721ABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestedNonce\",\"type\":\"uint64\"},{\"name\":\"_requestedBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
  7691  
  7692  // BridgeTransferERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  7693  const BridgeTransferERC721BinRuntime = ``
  7694  
  7695  // BridgeTransferERC721FuncSigs maps the 4-byte function signature to its string representation.
  7696  var BridgeTransferERC721FuncSigs = map[string]string{
  7697  	"3a3099d1": "MAX_OPERATOR()",
  7698  	"9832c1d7": "closedValueTransferVotes(uint64)",
  7699  	"ac6fff0b": "configurationNonce()",
  7700  	"d8cf98ca": "deregisterOperator(address)",
  7701  	"bab2af1d": "deregisterToken(address)",
  7702  	"488af871": "feeOfERC20(address)",
  7703  	"c263b5d6": "feeOfKLAY()",
  7704  	"b3f00674": "feeReceiver()",
  7705  	"b2c01030": "getOperatorList()",
  7706  	"ea21eade": "getRegisteredTokenList()",
  7707  	"afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)",
  7708  	"13a6738a": "handleNoncesToBlockNums(uint64)",
  7709  	"8a75eee2": "handledRequestTx(bytes32)",
  7710  	"48a18a6a": "indexOfTokens(address)",
  7711  	"8f32d59b": "isOwner()",
  7712  	"2014e5d1": "isRunning()",
  7713  	"10693fcd": "lockToken(address)",
  7714  	"5eb7413a": "lockedTokens(address)",
  7715  	"4b40b826": "lowerHandleNonce()",
  7716  	"6e176ec2": "modeMintBurn()",
  7717  	"cf0da290": "onERC721Received(address,uint256,address,bytes)",
  7718  	"cb38f407": "operatorList(uint256)",
  7719  	"5526f76b": "operatorThresholds(uint8)",
  7720  	"13e7c9d8": "operators(address)",
  7721  	"8da5cb5b": "owner()",
  7722  	"989ba0d3": "recoveryBlockNumber()",
  7723  	"3682a450": "registerOperator(address)",
  7724  	"4739f7e5": "registerToken(address,address)",
  7725  	"3e4fe949": "registeredTokenList(uint256)",
  7726  	"8c0bd916": "registeredTokens(address)",
  7727  	"715018a6": "renounceOwnership()",
  7728  	"22604742": "requestERC721Transfer(address,address,uint256,bytes)",
  7729  	"7c1a0302": "requestNonce()",
  7730  	"efdcd974": "setFeeReceiver(address)",
  7731  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
  7732  	"c877cf37": "start(bool)",
  7733  	"f2fde38b": "transferOwnership(address)",
  7734  	"9ef2017b": "unlockToken(address)",
  7735  	"54edad72": "upperHandleNonce()",
  7736  }
  7737  
  7738  // BridgeTransferERC721 is an auto generated Go binding around a Klaytn contract.
  7739  type BridgeTransferERC721 struct {
  7740  	BridgeTransferERC721Caller     // Read-only binding to the contract
  7741  	BridgeTransferERC721Transactor // Write-only binding to the contract
  7742  	BridgeTransferERC721Filterer   // Log filterer for contract events
  7743  }
  7744  
  7745  // BridgeTransferERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
  7746  type BridgeTransferERC721Caller struct {
  7747  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7748  }
  7749  
  7750  // BridgeTransferERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
  7751  type BridgeTransferERC721Transactor struct {
  7752  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7753  }
  7754  
  7755  // BridgeTransferERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  7756  type BridgeTransferERC721Filterer struct {
  7757  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7758  }
  7759  
  7760  // BridgeTransferERC721Session is an auto generated Go binding around a Klaytn contract,
  7761  // with pre-set call and transact options.
  7762  type BridgeTransferERC721Session struct {
  7763  	Contract     *BridgeTransferERC721 // Generic contract binding to set the session for
  7764  	CallOpts     bind.CallOpts         // Call options to use throughout this session
  7765  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  7766  }
  7767  
  7768  // BridgeTransferERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  7769  // with pre-set call options.
  7770  type BridgeTransferERC721CallerSession struct {
  7771  	Contract *BridgeTransferERC721Caller // Generic contract caller binding to set the session for
  7772  	CallOpts bind.CallOpts               // Call options to use throughout this session
  7773  }
  7774  
  7775  // BridgeTransferERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  7776  // with pre-set transact options.
  7777  type BridgeTransferERC721TransactorSession struct {
  7778  	Contract     *BridgeTransferERC721Transactor // Generic contract transactor binding to set the session for
  7779  	TransactOpts bind.TransactOpts               // Transaction auth options to use throughout this session
  7780  }
  7781  
  7782  // BridgeTransferERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
  7783  type BridgeTransferERC721Raw struct {
  7784  	Contract *BridgeTransferERC721 // Generic contract binding to access the raw methods on
  7785  }
  7786  
  7787  // BridgeTransferERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  7788  type BridgeTransferERC721CallerRaw struct {
  7789  	Contract *BridgeTransferERC721Caller // Generic read-only contract binding to access the raw methods on
  7790  }
  7791  
  7792  // BridgeTransferERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  7793  type BridgeTransferERC721TransactorRaw struct {
  7794  	Contract *BridgeTransferERC721Transactor // Generic write-only contract binding to access the raw methods on
  7795  }
  7796  
  7797  // NewBridgeTransferERC721 creates a new instance of BridgeTransferERC721, bound to a specific deployed contract.
  7798  func NewBridgeTransferERC721(address common.Address, backend bind.ContractBackend) (*BridgeTransferERC721, error) {
  7799  	contract, err := bindBridgeTransferERC721(address, backend, backend, backend)
  7800  	if err != nil {
  7801  		return nil, err
  7802  	}
  7803  	return &BridgeTransferERC721{BridgeTransferERC721Caller: BridgeTransferERC721Caller{contract: contract}, BridgeTransferERC721Transactor: BridgeTransferERC721Transactor{contract: contract}, BridgeTransferERC721Filterer: BridgeTransferERC721Filterer{contract: contract}}, nil
  7804  }
  7805  
  7806  // NewBridgeTransferERC721Caller creates a new read-only instance of BridgeTransferERC721, bound to a specific deployed contract.
  7807  func NewBridgeTransferERC721Caller(address common.Address, caller bind.ContractCaller) (*BridgeTransferERC721Caller, error) {
  7808  	contract, err := bindBridgeTransferERC721(address, caller, nil, nil)
  7809  	if err != nil {
  7810  		return nil, err
  7811  	}
  7812  	return &BridgeTransferERC721Caller{contract: contract}, nil
  7813  }
  7814  
  7815  // NewBridgeTransferERC721Transactor creates a new write-only instance of BridgeTransferERC721, bound to a specific deployed contract.
  7816  func NewBridgeTransferERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*BridgeTransferERC721Transactor, error) {
  7817  	contract, err := bindBridgeTransferERC721(address, nil, transactor, nil)
  7818  	if err != nil {
  7819  		return nil, err
  7820  	}
  7821  	return &BridgeTransferERC721Transactor{contract: contract}, nil
  7822  }
  7823  
  7824  // NewBridgeTransferERC721Filterer creates a new log filterer instance of BridgeTransferERC721, bound to a specific deployed contract.
  7825  func NewBridgeTransferERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*BridgeTransferERC721Filterer, error) {
  7826  	contract, err := bindBridgeTransferERC721(address, nil, nil, filterer)
  7827  	if err != nil {
  7828  		return nil, err
  7829  	}
  7830  	return &BridgeTransferERC721Filterer{contract: contract}, nil
  7831  }
  7832  
  7833  // bindBridgeTransferERC721 binds a generic wrapper to an already deployed contract.
  7834  func bindBridgeTransferERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7835  	parsed, err := abi.JSON(strings.NewReader(BridgeTransferERC721ABI))
  7836  	if err != nil {
  7837  		return nil, err
  7838  	}
  7839  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7840  }
  7841  
  7842  // Call invokes the (constant) contract method with params as input values and
  7843  // sets the output to result. The result type might be a single field for simple
  7844  // returns, a slice of interfaces for anonymous returns and a struct for named
  7845  // returns.
  7846  func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7847  	return _BridgeTransferERC721.Contract.BridgeTransferERC721Caller.contract.Call(opts, result, method, params...)
  7848  }
  7849  
  7850  // Transfer initiates a plain transaction to move funds to the contract, calling
  7851  // its default method if one is available.
  7852  func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7853  	return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transfer(opts)
  7854  }
  7855  
  7856  // Transact invokes the (paid) contract method with params as input values.
  7857  func (_BridgeTransferERC721 *BridgeTransferERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7858  	return _BridgeTransferERC721.Contract.BridgeTransferERC721Transactor.contract.Transact(opts, method, params...)
  7859  }
  7860  
  7861  // Call invokes the (constant) contract method with params as input values and
  7862  // sets the output to result. The result type might be a single field for simple
  7863  // returns, a slice of interfaces for anonymous returns and a struct for named
  7864  // returns.
  7865  func (_BridgeTransferERC721 *BridgeTransferERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7866  	return _BridgeTransferERC721.Contract.contract.Call(opts, result, method, params...)
  7867  }
  7868  
  7869  // Transfer initiates a plain transaction to move funds to the contract, calling
  7870  // its default method if one is available.
  7871  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7872  	return _BridgeTransferERC721.Contract.contract.Transfer(opts)
  7873  }
  7874  
  7875  // Transact invokes the (paid) contract method with params as input values.
  7876  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7877  	return _BridgeTransferERC721.Contract.contract.Transact(opts, method, params...)
  7878  }
  7879  
  7880  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  7881  //
  7882  // Solidity: function MAX_OPERATOR() view returns(uint64)
  7883  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
  7884  	var (
  7885  		ret0 = new(uint64)
  7886  	)
  7887  	out := ret0
  7888  	err := _BridgeTransferERC721.contract.Call(opts, out, "MAX_OPERATOR")
  7889  	return *ret0, err
  7890  }
  7891  
  7892  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  7893  //
  7894  // Solidity: function MAX_OPERATOR() view returns(uint64)
  7895  func (_BridgeTransferERC721 *BridgeTransferERC721Session) MAXOPERATOR() (uint64, error) {
  7896  	return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts)
  7897  }
  7898  
  7899  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
  7900  //
  7901  // Solidity: function MAX_OPERATOR() view returns(uint64)
  7902  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) MAXOPERATOR() (uint64, error) {
  7903  	return _BridgeTransferERC721.Contract.MAXOPERATOR(&_BridgeTransferERC721.CallOpts)
  7904  }
  7905  
  7906  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  7907  //
  7908  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  7909  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
  7910  	var (
  7911  		ret0 = new(bool)
  7912  	)
  7913  	out := ret0
  7914  	err := _BridgeTransferERC721.contract.Call(opts, out, "closedValueTransferVotes", arg0)
  7915  	return *ret0, err
  7916  }
  7917  
  7918  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  7919  //
  7920  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  7921  func (_BridgeTransferERC721 *BridgeTransferERC721Session) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  7922  	return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0)
  7923  }
  7924  
  7925  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
  7926  //
  7927  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
  7928  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
  7929  	return _BridgeTransferERC721.Contract.ClosedValueTransferVotes(&_BridgeTransferERC721.CallOpts, arg0)
  7930  }
  7931  
  7932  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  7933  //
  7934  // Solidity: function configurationNonce() view returns(uint64)
  7935  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
  7936  	var (
  7937  		ret0 = new(uint64)
  7938  	)
  7939  	out := ret0
  7940  	err := _BridgeTransferERC721.contract.Call(opts, out, "configurationNonce")
  7941  	return *ret0, err
  7942  }
  7943  
  7944  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  7945  //
  7946  // Solidity: function configurationNonce() view returns(uint64)
  7947  func (_BridgeTransferERC721 *BridgeTransferERC721Session) ConfigurationNonce() (uint64, error) {
  7948  	return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts)
  7949  }
  7950  
  7951  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
  7952  //
  7953  // Solidity: function configurationNonce() view returns(uint64)
  7954  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ConfigurationNonce() (uint64, error) {
  7955  	return _BridgeTransferERC721.Contract.ConfigurationNonce(&_BridgeTransferERC721.CallOpts)
  7956  }
  7957  
  7958  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  7959  //
  7960  // Solidity: function feeOfERC20(address ) view returns(uint256)
  7961  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  7962  	var (
  7963  		ret0 = new(*big.Int)
  7964  	)
  7965  	out := ret0
  7966  	err := _BridgeTransferERC721.contract.Call(opts, out, "feeOfERC20", arg0)
  7967  	return *ret0, err
  7968  }
  7969  
  7970  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  7971  //
  7972  // Solidity: function feeOfERC20(address ) view returns(uint256)
  7973  func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  7974  	return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0)
  7975  }
  7976  
  7977  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
  7978  //
  7979  // Solidity: function feeOfERC20(address ) view returns(uint256)
  7980  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
  7981  	return _BridgeTransferERC721.Contract.FeeOfERC20(&_BridgeTransferERC721.CallOpts, arg0)
  7982  }
  7983  
  7984  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  7985  //
  7986  // Solidity: function feeOfKLAY() view returns(uint256)
  7987  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
  7988  	var (
  7989  		ret0 = new(*big.Int)
  7990  	)
  7991  	out := ret0
  7992  	err := _BridgeTransferERC721.contract.Call(opts, out, "feeOfKLAY")
  7993  	return *ret0, err
  7994  }
  7995  
  7996  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  7997  //
  7998  // Solidity: function feeOfKLAY() view returns(uint256)
  7999  func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeOfKLAY() (*big.Int, error) {
  8000  	return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts)
  8001  }
  8002  
  8003  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
  8004  //
  8005  // Solidity: function feeOfKLAY() view returns(uint256)
  8006  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeOfKLAY() (*big.Int, error) {
  8007  	return _BridgeTransferERC721.Contract.FeeOfKLAY(&_BridgeTransferERC721.CallOpts)
  8008  }
  8009  
  8010  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  8011  //
  8012  // Solidity: function feeReceiver() view returns(address)
  8013  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
  8014  	var (
  8015  		ret0 = new(common.Address)
  8016  	)
  8017  	out := ret0
  8018  	err := _BridgeTransferERC721.contract.Call(opts, out, "feeReceiver")
  8019  	return *ret0, err
  8020  }
  8021  
  8022  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  8023  //
  8024  // Solidity: function feeReceiver() view returns(address)
  8025  func (_BridgeTransferERC721 *BridgeTransferERC721Session) FeeReceiver() (common.Address, error) {
  8026  	return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts)
  8027  }
  8028  
  8029  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
  8030  //
  8031  // Solidity: function feeReceiver() view returns(address)
  8032  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) FeeReceiver() (common.Address, error) {
  8033  	return _BridgeTransferERC721.Contract.FeeReceiver(&_BridgeTransferERC721.CallOpts)
  8034  }
  8035  
  8036  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  8037  //
  8038  // Solidity: function getOperatorList() view returns(address[])
  8039  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
  8040  	var (
  8041  		ret0 = new([]common.Address)
  8042  	)
  8043  	out := ret0
  8044  	err := _BridgeTransferERC721.contract.Call(opts, out, "getOperatorList")
  8045  	return *ret0, err
  8046  }
  8047  
  8048  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  8049  //
  8050  // Solidity: function getOperatorList() view returns(address[])
  8051  func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetOperatorList() ([]common.Address, error) {
  8052  	return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts)
  8053  }
  8054  
  8055  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
  8056  //
  8057  // Solidity: function getOperatorList() view returns(address[])
  8058  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetOperatorList() ([]common.Address, error) {
  8059  	return _BridgeTransferERC721.Contract.GetOperatorList(&_BridgeTransferERC721.CallOpts)
  8060  }
  8061  
  8062  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  8063  //
  8064  // Solidity: function getRegisteredTokenList() view returns(address[])
  8065  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) {
  8066  	var (
  8067  		ret0 = new([]common.Address)
  8068  	)
  8069  	out := ret0
  8070  	err := _BridgeTransferERC721.contract.Call(opts, out, "getRegisteredTokenList")
  8071  	return *ret0, err
  8072  }
  8073  
  8074  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  8075  //
  8076  // Solidity: function getRegisteredTokenList() view returns(address[])
  8077  func (_BridgeTransferERC721 *BridgeTransferERC721Session) GetRegisteredTokenList() ([]common.Address, error) {
  8078  	return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts)
  8079  }
  8080  
  8081  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
  8082  //
  8083  // Solidity: function getRegisteredTokenList() view returns(address[])
  8084  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) GetRegisteredTokenList() ([]common.Address, error) {
  8085  	return _BridgeTransferERC721.Contract.GetRegisteredTokenList(&_BridgeTransferERC721.CallOpts)
  8086  }
  8087  
  8088  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  8089  //
  8090  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  8091  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) {
  8092  	var (
  8093  		ret0 = new(uint64)
  8094  	)
  8095  	out := ret0
  8096  	err := _BridgeTransferERC721.contract.Call(opts, out, "handleNoncesToBlockNums", arg0)
  8097  	return *ret0, err
  8098  }
  8099  
  8100  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  8101  //
  8102  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  8103  func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  8104  	return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0)
  8105  }
  8106  
  8107  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
  8108  //
  8109  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
  8110  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
  8111  	return _BridgeTransferERC721.Contract.HandleNoncesToBlockNums(&_BridgeTransferERC721.CallOpts, arg0)
  8112  }
  8113  
  8114  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  8115  //
  8116  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  8117  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
  8118  	var (
  8119  		ret0 = new(bool)
  8120  	)
  8121  	out := ret0
  8122  	err := _BridgeTransferERC721.contract.Call(opts, out, "handledRequestTx", arg0)
  8123  	return *ret0, err
  8124  }
  8125  
  8126  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  8127  //
  8128  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  8129  func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandledRequestTx(arg0 [32]byte) (bool, error) {
  8130  	return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0)
  8131  }
  8132  
  8133  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
  8134  //
  8135  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
  8136  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
  8137  	return _BridgeTransferERC721.Contract.HandledRequestTx(&_BridgeTransferERC721.CallOpts, arg0)
  8138  }
  8139  
  8140  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  8141  //
  8142  // Solidity: function indexOfTokens(address ) view returns(uint256)
  8143  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
  8144  	var (
  8145  		ret0 = new(*big.Int)
  8146  	)
  8147  	out := ret0
  8148  	err := _BridgeTransferERC721.contract.Call(opts, out, "indexOfTokens", arg0)
  8149  	return *ret0, err
  8150  }
  8151  
  8152  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  8153  //
  8154  // Solidity: function indexOfTokens(address ) view returns(uint256)
  8155  func (_BridgeTransferERC721 *BridgeTransferERC721Session) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  8156  	return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0)
  8157  }
  8158  
  8159  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
  8160  //
  8161  // Solidity: function indexOfTokens(address ) view returns(uint256)
  8162  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
  8163  	return _BridgeTransferERC721.Contract.IndexOfTokens(&_BridgeTransferERC721.CallOpts, arg0)
  8164  }
  8165  
  8166  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  8167  //
  8168  // Solidity: function isOwner() view returns(bool)
  8169  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsOwner(opts *bind.CallOpts) (bool, error) {
  8170  	var (
  8171  		ret0 = new(bool)
  8172  	)
  8173  	out := ret0
  8174  	err := _BridgeTransferERC721.contract.Call(opts, out, "isOwner")
  8175  	return *ret0, err
  8176  }
  8177  
  8178  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  8179  //
  8180  // Solidity: function isOwner() view returns(bool)
  8181  func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsOwner() (bool, error) {
  8182  	return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts)
  8183  }
  8184  
  8185  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  8186  //
  8187  // Solidity: function isOwner() view returns(bool)
  8188  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsOwner() (bool, error) {
  8189  	return _BridgeTransferERC721.Contract.IsOwner(&_BridgeTransferERC721.CallOpts)
  8190  }
  8191  
  8192  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  8193  //
  8194  // Solidity: function isRunning() view returns(bool)
  8195  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) IsRunning(opts *bind.CallOpts) (bool, error) {
  8196  	var (
  8197  		ret0 = new(bool)
  8198  	)
  8199  	out := ret0
  8200  	err := _BridgeTransferERC721.contract.Call(opts, out, "isRunning")
  8201  	return *ret0, err
  8202  }
  8203  
  8204  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  8205  //
  8206  // Solidity: function isRunning() view returns(bool)
  8207  func (_BridgeTransferERC721 *BridgeTransferERC721Session) IsRunning() (bool, error) {
  8208  	return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts)
  8209  }
  8210  
  8211  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
  8212  //
  8213  // Solidity: function isRunning() view returns(bool)
  8214  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) IsRunning() (bool, error) {
  8215  	return _BridgeTransferERC721.Contract.IsRunning(&_BridgeTransferERC721.CallOpts)
  8216  }
  8217  
  8218  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  8219  //
  8220  // Solidity: function lockedTokens(address ) view returns(bool)
  8221  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  8222  	var (
  8223  		ret0 = new(bool)
  8224  	)
  8225  	out := ret0
  8226  	err := _BridgeTransferERC721.contract.Call(opts, out, "lockedTokens", arg0)
  8227  	return *ret0, err
  8228  }
  8229  
  8230  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  8231  //
  8232  // Solidity: function lockedTokens(address ) view returns(bool)
  8233  func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockedTokens(arg0 common.Address) (bool, error) {
  8234  	return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0)
  8235  }
  8236  
  8237  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
  8238  //
  8239  // Solidity: function lockedTokens(address ) view returns(bool)
  8240  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LockedTokens(arg0 common.Address) (bool, error) {
  8241  	return _BridgeTransferERC721.Contract.LockedTokens(&_BridgeTransferERC721.CallOpts, arg0)
  8242  }
  8243  
  8244  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  8245  //
  8246  // Solidity: function lowerHandleNonce() view returns(uint64)
  8247  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) {
  8248  	var (
  8249  		ret0 = new(uint64)
  8250  	)
  8251  	out := ret0
  8252  	err := _BridgeTransferERC721.contract.Call(opts, out, "lowerHandleNonce")
  8253  	return *ret0, err
  8254  }
  8255  
  8256  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  8257  //
  8258  // Solidity: function lowerHandleNonce() view returns(uint64)
  8259  func (_BridgeTransferERC721 *BridgeTransferERC721Session) LowerHandleNonce() (uint64, error) {
  8260  	return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts)
  8261  }
  8262  
  8263  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
  8264  //
  8265  // Solidity: function lowerHandleNonce() view returns(uint64)
  8266  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) LowerHandleNonce() (uint64, error) {
  8267  	return _BridgeTransferERC721.Contract.LowerHandleNonce(&_BridgeTransferERC721.CallOpts)
  8268  }
  8269  
  8270  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  8271  //
  8272  // Solidity: function modeMintBurn() view returns(bool)
  8273  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) ModeMintBurn(opts *bind.CallOpts) (bool, error) {
  8274  	var (
  8275  		ret0 = new(bool)
  8276  	)
  8277  	out := ret0
  8278  	err := _BridgeTransferERC721.contract.Call(opts, out, "modeMintBurn")
  8279  	return *ret0, err
  8280  }
  8281  
  8282  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  8283  //
  8284  // Solidity: function modeMintBurn() view returns(bool)
  8285  func (_BridgeTransferERC721 *BridgeTransferERC721Session) ModeMintBurn() (bool, error) {
  8286  	return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts)
  8287  }
  8288  
  8289  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
  8290  //
  8291  // Solidity: function modeMintBurn() view returns(bool)
  8292  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) ModeMintBurn() (bool, error) {
  8293  	return _BridgeTransferERC721.Contract.ModeMintBurn(&_BridgeTransferERC721.CallOpts)
  8294  }
  8295  
  8296  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  8297  //
  8298  // Solidity: function operatorList(uint256 ) view returns(address)
  8299  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  8300  	var (
  8301  		ret0 = new(common.Address)
  8302  	)
  8303  	out := ret0
  8304  	err := _BridgeTransferERC721.contract.Call(opts, out, "operatorList", arg0)
  8305  	return *ret0, err
  8306  }
  8307  
  8308  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  8309  //
  8310  // Solidity: function operatorList(uint256 ) view returns(address)
  8311  func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorList(arg0 *big.Int) (common.Address, error) {
  8312  	return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0)
  8313  }
  8314  
  8315  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
  8316  //
  8317  // Solidity: function operatorList(uint256 ) view returns(address)
  8318  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
  8319  	return _BridgeTransferERC721.Contract.OperatorList(&_BridgeTransferERC721.CallOpts, arg0)
  8320  }
  8321  
  8322  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  8323  //
  8324  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  8325  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
  8326  	var (
  8327  		ret0 = new(uint8)
  8328  	)
  8329  	out := ret0
  8330  	err := _BridgeTransferERC721.contract.Call(opts, out, "operatorThresholds", arg0)
  8331  	return *ret0, err
  8332  }
  8333  
  8334  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  8335  //
  8336  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  8337  func (_BridgeTransferERC721 *BridgeTransferERC721Session) OperatorThresholds(arg0 uint8) (uint8, error) {
  8338  	return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0)
  8339  }
  8340  
  8341  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
  8342  //
  8343  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
  8344  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
  8345  	return _BridgeTransferERC721.Contract.OperatorThresholds(&_BridgeTransferERC721.CallOpts, arg0)
  8346  }
  8347  
  8348  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  8349  //
  8350  // Solidity: function operators(address ) view returns(bool)
  8351  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
  8352  	var (
  8353  		ret0 = new(bool)
  8354  	)
  8355  	out := ret0
  8356  	err := _BridgeTransferERC721.contract.Call(opts, out, "operators", arg0)
  8357  	return *ret0, err
  8358  }
  8359  
  8360  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  8361  //
  8362  // Solidity: function operators(address ) view returns(bool)
  8363  func (_BridgeTransferERC721 *BridgeTransferERC721Session) Operators(arg0 common.Address) (bool, error) {
  8364  	return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0)
  8365  }
  8366  
  8367  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
  8368  //
  8369  // Solidity: function operators(address ) view returns(bool)
  8370  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Operators(arg0 common.Address) (bool, error) {
  8371  	return _BridgeTransferERC721.Contract.Operators(&_BridgeTransferERC721.CallOpts, arg0)
  8372  }
  8373  
  8374  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8375  //
  8376  // Solidity: function owner() view returns(address)
  8377  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) Owner(opts *bind.CallOpts) (common.Address, error) {
  8378  	var (
  8379  		ret0 = new(common.Address)
  8380  	)
  8381  	out := ret0
  8382  	err := _BridgeTransferERC721.contract.Call(opts, out, "owner")
  8383  	return *ret0, err
  8384  }
  8385  
  8386  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8387  //
  8388  // Solidity: function owner() view returns(address)
  8389  func (_BridgeTransferERC721 *BridgeTransferERC721Session) Owner() (common.Address, error) {
  8390  	return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts)
  8391  }
  8392  
  8393  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  8394  //
  8395  // Solidity: function owner() view returns(address)
  8396  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) Owner() (common.Address, error) {
  8397  	return _BridgeTransferERC721.Contract.Owner(&_BridgeTransferERC721.CallOpts)
  8398  }
  8399  
  8400  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  8401  //
  8402  // Solidity: function recoveryBlockNumber() view returns(uint64)
  8403  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) {
  8404  	var (
  8405  		ret0 = new(uint64)
  8406  	)
  8407  	out := ret0
  8408  	err := _BridgeTransferERC721.contract.Call(opts, out, "recoveryBlockNumber")
  8409  	return *ret0, err
  8410  }
  8411  
  8412  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  8413  //
  8414  // Solidity: function recoveryBlockNumber() view returns(uint64)
  8415  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RecoveryBlockNumber() (uint64, error) {
  8416  	return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts)
  8417  }
  8418  
  8419  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
  8420  //
  8421  // Solidity: function recoveryBlockNumber() view returns(uint64)
  8422  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RecoveryBlockNumber() (uint64, error) {
  8423  	return _BridgeTransferERC721.Contract.RecoveryBlockNumber(&_BridgeTransferERC721.CallOpts)
  8424  }
  8425  
  8426  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  8427  //
  8428  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  8429  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
  8430  	var (
  8431  		ret0 = new(common.Address)
  8432  	)
  8433  	out := ret0
  8434  	err := _BridgeTransferERC721.contract.Call(opts, out, "registeredTokenList", arg0)
  8435  	return *ret0, err
  8436  }
  8437  
  8438  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  8439  //
  8440  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  8441  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  8442  	return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0)
  8443  }
  8444  
  8445  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
  8446  //
  8447  // Solidity: function registeredTokenList(uint256 ) view returns(address)
  8448  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
  8449  	return _BridgeTransferERC721.Contract.RegisteredTokenList(&_BridgeTransferERC721.CallOpts, arg0)
  8450  }
  8451  
  8452  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  8453  //
  8454  // Solidity: function registeredTokens(address ) view returns(address)
  8455  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
  8456  	var (
  8457  		ret0 = new(common.Address)
  8458  	)
  8459  	out := ret0
  8460  	err := _BridgeTransferERC721.contract.Call(opts, out, "registeredTokens", arg0)
  8461  	return *ret0, err
  8462  }
  8463  
  8464  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  8465  //
  8466  // Solidity: function registeredTokens(address ) view returns(address)
  8467  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  8468  	return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0)
  8469  }
  8470  
  8471  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
  8472  //
  8473  // Solidity: function registeredTokens(address ) view returns(address)
  8474  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
  8475  	return _BridgeTransferERC721.Contract.RegisteredTokens(&_BridgeTransferERC721.CallOpts, arg0)
  8476  }
  8477  
  8478  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  8479  //
  8480  // Solidity: function requestNonce() view returns(uint64)
  8481  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) RequestNonce(opts *bind.CallOpts) (uint64, error) {
  8482  	var (
  8483  		ret0 = new(uint64)
  8484  	)
  8485  	out := ret0
  8486  	err := _BridgeTransferERC721.contract.Call(opts, out, "requestNonce")
  8487  	return *ret0, err
  8488  }
  8489  
  8490  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  8491  //
  8492  // Solidity: function requestNonce() view returns(uint64)
  8493  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestNonce() (uint64, error) {
  8494  	return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts)
  8495  }
  8496  
  8497  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
  8498  //
  8499  // Solidity: function requestNonce() view returns(uint64)
  8500  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) RequestNonce() (uint64, error) {
  8501  	return _BridgeTransferERC721.Contract.RequestNonce(&_BridgeTransferERC721.CallOpts)
  8502  }
  8503  
  8504  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  8505  //
  8506  // Solidity: function upperHandleNonce() view returns(uint64)
  8507  func (_BridgeTransferERC721 *BridgeTransferERC721Caller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) {
  8508  	var (
  8509  		ret0 = new(uint64)
  8510  	)
  8511  	out := ret0
  8512  	err := _BridgeTransferERC721.contract.Call(opts, out, "upperHandleNonce")
  8513  	return *ret0, err
  8514  }
  8515  
  8516  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  8517  //
  8518  // Solidity: function upperHandleNonce() view returns(uint64)
  8519  func (_BridgeTransferERC721 *BridgeTransferERC721Session) UpperHandleNonce() (uint64, error) {
  8520  	return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts)
  8521  }
  8522  
  8523  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
  8524  //
  8525  // Solidity: function upperHandleNonce() view returns(uint64)
  8526  func (_BridgeTransferERC721 *BridgeTransferERC721CallerSession) UpperHandleNonce() (uint64, error) {
  8527  	return _BridgeTransferERC721.Contract.UpperHandleNonce(&_BridgeTransferERC721.CallOpts)
  8528  }
  8529  
  8530  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  8531  //
  8532  // Solidity: function deregisterOperator(address _operator) returns()
  8533  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  8534  	return _BridgeTransferERC721.contract.Transact(opts, "deregisterOperator", _operator)
  8535  }
  8536  
  8537  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  8538  //
  8539  // Solidity: function deregisterOperator(address _operator) returns()
  8540  func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  8541  	return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator)
  8542  }
  8543  
  8544  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
  8545  //
  8546  // Solidity: function deregisterOperator(address _operator) returns()
  8547  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
  8548  	return _BridgeTransferERC721.Contract.DeregisterOperator(&_BridgeTransferERC721.TransactOpts, _operator)
  8549  }
  8550  
  8551  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  8552  //
  8553  // Solidity: function deregisterToken(address _token) returns()
  8554  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  8555  	return _BridgeTransferERC721.contract.Transact(opts, "deregisterToken", _token)
  8556  }
  8557  
  8558  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  8559  //
  8560  // Solidity: function deregisterToken(address _token) returns()
  8561  func (_BridgeTransferERC721 *BridgeTransferERC721Session) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  8562  	return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token)
  8563  }
  8564  
  8565  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
  8566  //
  8567  // Solidity: function deregisterToken(address _token) returns()
  8568  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
  8569  	return _BridgeTransferERC721.Contract.DeregisterToken(&_BridgeTransferERC721.TransactOpts, _token)
  8570  }
  8571  
  8572  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
  8573  //
  8574  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns()
  8575  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
  8576  	return _BridgeTransferERC721.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData)
  8577  }
  8578  
  8579  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
  8580  //
  8581  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns()
  8582  func (_BridgeTransferERC721 *BridgeTransferERC721Session) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
  8583  	return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData)
  8584  }
  8585  
  8586  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
  8587  //
  8588  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestedNonce, uint64 _requestedBlockNumber, string _tokenURI, bytes _extraData) returns()
  8589  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestedNonce uint64, _requestedBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
  8590  	return _BridgeTransferERC721.Contract.HandleERC721Transfer(&_BridgeTransferERC721.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestedNonce, _requestedBlockNumber, _tokenURI, _extraData)
  8591  }
  8592  
  8593  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  8594  //
  8595  // Solidity: function lockToken(address _token) returns()
  8596  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  8597  	return _BridgeTransferERC721.contract.Transact(opts, "lockToken", _token)
  8598  }
  8599  
  8600  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  8601  //
  8602  // Solidity: function lockToken(address _token) returns()
  8603  func (_BridgeTransferERC721 *BridgeTransferERC721Session) LockToken(_token common.Address) (*types.Transaction, error) {
  8604  	return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token)
  8605  }
  8606  
  8607  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
  8608  //
  8609  // Solidity: function lockToken(address _token) returns()
  8610  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) LockToken(_token common.Address) (*types.Transaction, error) {
  8611  	return _BridgeTransferERC721.Contract.LockToken(&_BridgeTransferERC721.TransactOpts, _token)
  8612  }
  8613  
  8614  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  8615  //
  8616  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  8617  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  8618  	return _BridgeTransferERC721.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData)
  8619  }
  8620  
  8621  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  8622  //
  8623  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  8624  func (_BridgeTransferERC721 *BridgeTransferERC721Session) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  8625  	return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData)
  8626  }
  8627  
  8628  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  8629  //
  8630  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  8631  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  8632  	return _BridgeTransferERC721.Contract.OnERC721Received(&_BridgeTransferERC721.TransactOpts, _from, _tokenId, _to, _extraData)
  8633  }
  8634  
  8635  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  8636  //
  8637  // Solidity: function registerOperator(address _operator) returns()
  8638  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
  8639  	return _BridgeTransferERC721.contract.Transact(opts, "registerOperator", _operator)
  8640  }
  8641  
  8642  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  8643  //
  8644  // Solidity: function registerOperator(address _operator) returns()
  8645  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  8646  	return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator)
  8647  }
  8648  
  8649  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
  8650  //
  8651  // Solidity: function registerOperator(address _operator) returns()
  8652  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
  8653  	return _BridgeTransferERC721.Contract.RegisterOperator(&_BridgeTransferERC721.TransactOpts, _operator)
  8654  }
  8655  
  8656  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  8657  //
  8658  // Solidity: function registerToken(address _token, address _cToken) returns()
  8659  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) {
  8660  	return _BridgeTransferERC721.contract.Transact(opts, "registerToken", _token, _cToken)
  8661  }
  8662  
  8663  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  8664  //
  8665  // Solidity: function registerToken(address _token, address _cToken) returns()
  8666  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  8667  	return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken)
  8668  }
  8669  
  8670  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
  8671  //
  8672  // Solidity: function registerToken(address _token, address _cToken) returns()
  8673  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
  8674  	return _BridgeTransferERC721.Contract.RegisterToken(&_BridgeTransferERC721.TransactOpts, _token, _cToken)
  8675  }
  8676  
  8677  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8678  //
  8679  // Solidity: function renounceOwnership() returns()
  8680  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  8681  	return _BridgeTransferERC721.contract.Transact(opts, "renounceOwnership")
  8682  }
  8683  
  8684  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8685  //
  8686  // Solidity: function renounceOwnership() returns()
  8687  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RenounceOwnership() (*types.Transaction, error) {
  8688  	return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts)
  8689  }
  8690  
  8691  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  8692  //
  8693  // Solidity: function renounceOwnership() returns()
  8694  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RenounceOwnership() (*types.Transaction, error) {
  8695  	return _BridgeTransferERC721.Contract.RenounceOwnership(&_BridgeTransferERC721.TransactOpts)
  8696  }
  8697  
  8698  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
  8699  //
  8700  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
  8701  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
  8702  	return _BridgeTransferERC721.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData)
  8703  }
  8704  
  8705  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
  8706  //
  8707  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
  8708  func (_BridgeTransferERC721 *BridgeTransferERC721Session) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
  8709  	return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData)
  8710  }
  8711  
  8712  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
  8713  //
  8714  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
  8715  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
  8716  	return _BridgeTransferERC721.Contract.RequestERC721Transfer(&_BridgeTransferERC721.TransactOpts, _tokenAddress, _to, _tokenId, _extraData)
  8717  }
  8718  
  8719  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  8720  //
  8721  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  8722  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) {
  8723  	return _BridgeTransferERC721.contract.Transact(opts, "setFeeReceiver", _feeReceiver)
  8724  }
  8725  
  8726  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  8727  //
  8728  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  8729  func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  8730  	return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver)
  8731  }
  8732  
  8733  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
  8734  //
  8735  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
  8736  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
  8737  	return _BridgeTransferERC721.Contract.SetFeeReceiver(&_BridgeTransferERC721.TransactOpts, _feeReceiver)
  8738  }
  8739  
  8740  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  8741  //
  8742  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  8743  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
  8744  	return _BridgeTransferERC721.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
  8745  }
  8746  
  8747  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  8748  //
  8749  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  8750  func (_BridgeTransferERC721 *BridgeTransferERC721Session) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  8751  	return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold)
  8752  }
  8753  
  8754  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
  8755  //
  8756  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
  8757  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
  8758  	return _BridgeTransferERC721.Contract.SetOperatorThreshold(&_BridgeTransferERC721.TransactOpts, _voteType, _threshold)
  8759  }
  8760  
  8761  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  8762  //
  8763  // Solidity: function start(bool _status) returns()
  8764  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) {
  8765  	return _BridgeTransferERC721.contract.Transact(opts, "start", _status)
  8766  }
  8767  
  8768  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  8769  //
  8770  // Solidity: function start(bool _status) returns()
  8771  func (_BridgeTransferERC721 *BridgeTransferERC721Session) Start(_status bool) (*types.Transaction, error) {
  8772  	return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status)
  8773  }
  8774  
  8775  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
  8776  //
  8777  // Solidity: function start(bool _status) returns()
  8778  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) Start(_status bool) (*types.Transaction, error) {
  8779  	return _BridgeTransferERC721.Contract.Start(&_BridgeTransferERC721.TransactOpts, _status)
  8780  }
  8781  
  8782  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8783  //
  8784  // Solidity: function transferOwnership(address newOwner) returns()
  8785  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  8786  	return _BridgeTransferERC721.contract.Transact(opts, "transferOwnership", newOwner)
  8787  }
  8788  
  8789  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8790  //
  8791  // Solidity: function transferOwnership(address newOwner) returns()
  8792  func (_BridgeTransferERC721 *BridgeTransferERC721Session) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8793  	return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner)
  8794  }
  8795  
  8796  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  8797  //
  8798  // Solidity: function transferOwnership(address newOwner) returns()
  8799  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  8800  	return _BridgeTransferERC721.Contract.TransferOwnership(&_BridgeTransferERC721.TransactOpts, newOwner)
  8801  }
  8802  
  8803  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  8804  //
  8805  // Solidity: function unlockToken(address _token) returns()
  8806  func (_BridgeTransferERC721 *BridgeTransferERC721Transactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
  8807  	return _BridgeTransferERC721.contract.Transact(opts, "unlockToken", _token)
  8808  }
  8809  
  8810  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  8811  //
  8812  // Solidity: function unlockToken(address _token) returns()
  8813  func (_BridgeTransferERC721 *BridgeTransferERC721Session) UnlockToken(_token common.Address) (*types.Transaction, error) {
  8814  	return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token)
  8815  }
  8816  
  8817  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
  8818  //
  8819  // Solidity: function unlockToken(address _token) returns()
  8820  func (_BridgeTransferERC721 *BridgeTransferERC721TransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
  8821  	return _BridgeTransferERC721.Contract.UnlockToken(&_BridgeTransferERC721.TransactOpts, _token)
  8822  }
  8823  
  8824  // BridgeTransferERC721ERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the BridgeTransferERC721 contract.
  8825  type BridgeTransferERC721ERC20FeeChangedIterator struct {
  8826  	Event *BridgeTransferERC721ERC20FeeChanged // Event containing the contract specifics and raw log
  8827  
  8828  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8829  	event    string              // Event name to use for unpacking event data
  8830  
  8831  	logs chan types.Log      // Log channel receiving the found contract events
  8832  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8833  	done bool                // Whether the subscription completed delivering logs
  8834  	fail error               // Occurred error to stop iteration
  8835  }
  8836  
  8837  // Next advances the iterator to the subsequent event, returning whether there
  8838  // are any more events found. In case of a retrieval or parsing error, false is
  8839  // returned and Error() can be queried for the exact failure.
  8840  func (it *BridgeTransferERC721ERC20FeeChangedIterator) Next() bool {
  8841  	// If the iterator failed, stop iterating
  8842  	if it.fail != nil {
  8843  		return false
  8844  	}
  8845  	// If the iterator completed, deliver directly whatever's available
  8846  	if it.done {
  8847  		select {
  8848  		case log := <-it.logs:
  8849  			it.Event = new(BridgeTransferERC721ERC20FeeChanged)
  8850  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8851  				it.fail = err
  8852  				return false
  8853  			}
  8854  			it.Event.Raw = log
  8855  			return true
  8856  
  8857  		default:
  8858  			return false
  8859  		}
  8860  	}
  8861  	// Iterator still in progress, wait for either a data or an error event
  8862  	select {
  8863  	case log := <-it.logs:
  8864  		it.Event = new(BridgeTransferERC721ERC20FeeChanged)
  8865  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8866  			it.fail = err
  8867  			return false
  8868  		}
  8869  		it.Event.Raw = log
  8870  		return true
  8871  
  8872  	case err := <-it.sub.Err():
  8873  		it.done = true
  8874  		it.fail = err
  8875  		return it.Next()
  8876  	}
  8877  }
  8878  
  8879  // Error returns any retrieval or parsing error occurred during filtering.
  8880  func (it *BridgeTransferERC721ERC20FeeChangedIterator) Error() error {
  8881  	return it.fail
  8882  }
  8883  
  8884  // Close terminates the iteration process, releasing any pending underlying
  8885  // resources.
  8886  func (it *BridgeTransferERC721ERC20FeeChangedIterator) Close() error {
  8887  	it.sub.Unsubscribe()
  8888  	return nil
  8889  }
  8890  
  8891  // BridgeTransferERC721ERC20FeeChanged represents a ERC20FeeChanged event raised by the BridgeTransferERC721 contract.
  8892  type BridgeTransferERC721ERC20FeeChanged struct {
  8893  	Token common.Address
  8894  	Fee   *big.Int
  8895  	Raw   types.Log // Blockchain specific contextual infos
  8896  }
  8897  
  8898  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  8899  //
  8900  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  8901  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*BridgeTransferERC721ERC20FeeChangedIterator, error) {
  8902  
  8903  	var tokenRule []interface{}
  8904  	for _, tokenItem := range token {
  8905  		tokenRule = append(tokenRule, tokenItem)
  8906  	}
  8907  	var feeRule []interface{}
  8908  	for _, feeItem := range fee {
  8909  		feeRule = append(feeRule, feeItem)
  8910  	}
  8911  
  8912  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  8913  	if err != nil {
  8914  		return nil, err
  8915  	}
  8916  	return &BridgeTransferERC721ERC20FeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
  8917  }
  8918  
  8919  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  8920  //
  8921  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  8922  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721ERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
  8923  
  8924  	var tokenRule []interface{}
  8925  	for _, tokenItem := range token {
  8926  		tokenRule = append(tokenRule, tokenItem)
  8927  	}
  8928  	var feeRule []interface{}
  8929  	for _, feeItem := range fee {
  8930  		feeRule = append(feeRule, feeItem)
  8931  	}
  8932  
  8933  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
  8934  	if err != nil {
  8935  		return nil, err
  8936  	}
  8937  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8938  		defer sub.Unsubscribe()
  8939  		for {
  8940  			select {
  8941  			case log := <-logs:
  8942  				// New log arrived, parse the event and forward to the user
  8943  				event := new(BridgeTransferERC721ERC20FeeChanged)
  8944  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  8945  					return err
  8946  				}
  8947  				event.Raw = log
  8948  
  8949  				select {
  8950  				case sink <- event:
  8951  				case err := <-sub.Err():
  8952  					return err
  8953  				case <-quit:
  8954  					return nil
  8955  				}
  8956  			case err := <-sub.Err():
  8957  				return err
  8958  			case <-quit:
  8959  				return nil
  8960  			}
  8961  		}
  8962  	}), nil
  8963  }
  8964  
  8965  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
  8966  //
  8967  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
  8968  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseERC20FeeChanged(log types.Log) (*BridgeTransferERC721ERC20FeeChanged, error) {
  8969  	event := new(BridgeTransferERC721ERC20FeeChanged)
  8970  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
  8971  		return nil, err
  8972  	}
  8973  	return event, nil
  8974  }
  8975  
  8976  // BridgeTransferERC721FeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the BridgeTransferERC721 contract.
  8977  type BridgeTransferERC721FeeReceiverChangedIterator struct {
  8978  	Event *BridgeTransferERC721FeeReceiverChanged // Event containing the contract specifics and raw log
  8979  
  8980  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8981  	event    string              // Event name to use for unpacking event data
  8982  
  8983  	logs chan types.Log      // Log channel receiving the found contract events
  8984  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8985  	done bool                // Whether the subscription completed delivering logs
  8986  	fail error               // Occurred error to stop iteration
  8987  }
  8988  
  8989  // Next advances the iterator to the subsequent event, returning whether there
  8990  // are any more events found. In case of a retrieval or parsing error, false is
  8991  // returned and Error() can be queried for the exact failure.
  8992  func (it *BridgeTransferERC721FeeReceiverChangedIterator) Next() bool {
  8993  	// If the iterator failed, stop iterating
  8994  	if it.fail != nil {
  8995  		return false
  8996  	}
  8997  	// If the iterator completed, deliver directly whatever's available
  8998  	if it.done {
  8999  		select {
  9000  		case log := <-it.logs:
  9001  			it.Event = new(BridgeTransferERC721FeeReceiverChanged)
  9002  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9003  				it.fail = err
  9004  				return false
  9005  			}
  9006  			it.Event.Raw = log
  9007  			return true
  9008  
  9009  		default:
  9010  			return false
  9011  		}
  9012  	}
  9013  	// Iterator still in progress, wait for either a data or an error event
  9014  	select {
  9015  	case log := <-it.logs:
  9016  		it.Event = new(BridgeTransferERC721FeeReceiverChanged)
  9017  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9018  			it.fail = err
  9019  			return false
  9020  		}
  9021  		it.Event.Raw = log
  9022  		return true
  9023  
  9024  	case err := <-it.sub.Err():
  9025  		it.done = true
  9026  		it.fail = err
  9027  		return it.Next()
  9028  	}
  9029  }
  9030  
  9031  // Error returns any retrieval or parsing error occurred during filtering.
  9032  func (it *BridgeTransferERC721FeeReceiverChangedIterator) Error() error {
  9033  	return it.fail
  9034  }
  9035  
  9036  // Close terminates the iteration process, releasing any pending underlying
  9037  // resources.
  9038  func (it *BridgeTransferERC721FeeReceiverChangedIterator) Close() error {
  9039  	it.sub.Unsubscribe()
  9040  	return nil
  9041  }
  9042  
  9043  // BridgeTransferERC721FeeReceiverChanged represents a FeeReceiverChanged event raised by the BridgeTransferERC721 contract.
  9044  type BridgeTransferERC721FeeReceiverChanged struct {
  9045  	FeeReceiver common.Address
  9046  	Raw         types.Log // Blockchain specific contextual infos
  9047  }
  9048  
  9049  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  9050  //
  9051  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  9052  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*BridgeTransferERC721FeeReceiverChangedIterator, error) {
  9053  
  9054  	var feeReceiverRule []interface{}
  9055  	for _, feeReceiverItem := range feeReceiver {
  9056  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  9057  	}
  9058  
  9059  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  9060  	if err != nil {
  9061  		return nil, err
  9062  	}
  9063  	return &BridgeTransferERC721FeeReceiverChangedIterator{contract: _BridgeTransferERC721.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
  9064  }
  9065  
  9066  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  9067  //
  9068  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  9069  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721FeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
  9070  
  9071  	var feeReceiverRule []interface{}
  9072  	for _, feeReceiverItem := range feeReceiver {
  9073  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
  9074  	}
  9075  
  9076  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
  9077  	if err != nil {
  9078  		return nil, err
  9079  	}
  9080  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9081  		defer sub.Unsubscribe()
  9082  		for {
  9083  			select {
  9084  			case log := <-logs:
  9085  				// New log arrived, parse the event and forward to the user
  9086  				event := new(BridgeTransferERC721FeeReceiverChanged)
  9087  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  9088  					return err
  9089  				}
  9090  				event.Raw = log
  9091  
  9092  				select {
  9093  				case sink <- event:
  9094  				case err := <-sub.Err():
  9095  					return err
  9096  				case <-quit:
  9097  					return nil
  9098  				}
  9099  			case err := <-sub.Err():
  9100  				return err
  9101  			case <-quit:
  9102  				return nil
  9103  			}
  9104  		}
  9105  	}), nil
  9106  }
  9107  
  9108  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
  9109  //
  9110  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
  9111  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseFeeReceiverChanged(log types.Log) (*BridgeTransferERC721FeeReceiverChanged, error) {
  9112  	event := new(BridgeTransferERC721FeeReceiverChanged)
  9113  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
  9114  		return nil, err
  9115  	}
  9116  	return event, nil
  9117  }
  9118  
  9119  // BridgeTransferERC721HandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the BridgeTransferERC721 contract.
  9120  type BridgeTransferERC721HandleValueTransferIterator struct {
  9121  	Event *BridgeTransferERC721HandleValueTransfer // Event containing the contract specifics and raw log
  9122  
  9123  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9124  	event    string              // Event name to use for unpacking event data
  9125  
  9126  	logs chan types.Log      // Log channel receiving the found contract events
  9127  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9128  	done bool                // Whether the subscription completed delivering logs
  9129  	fail error               // Occurred error to stop iteration
  9130  }
  9131  
  9132  // Next advances the iterator to the subsequent event, returning whether there
  9133  // are any more events found. In case of a retrieval or parsing error, false is
  9134  // returned and Error() can be queried for the exact failure.
  9135  func (it *BridgeTransferERC721HandleValueTransferIterator) Next() bool {
  9136  	// If the iterator failed, stop iterating
  9137  	if it.fail != nil {
  9138  		return false
  9139  	}
  9140  	// If the iterator completed, deliver directly whatever's available
  9141  	if it.done {
  9142  		select {
  9143  		case log := <-it.logs:
  9144  			it.Event = new(BridgeTransferERC721HandleValueTransfer)
  9145  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9146  				it.fail = err
  9147  				return false
  9148  			}
  9149  			it.Event.Raw = log
  9150  			return true
  9151  
  9152  		default:
  9153  			return false
  9154  		}
  9155  	}
  9156  	// Iterator still in progress, wait for either a data or an error event
  9157  	select {
  9158  	case log := <-it.logs:
  9159  		it.Event = new(BridgeTransferERC721HandleValueTransfer)
  9160  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9161  			it.fail = err
  9162  			return false
  9163  		}
  9164  		it.Event.Raw = log
  9165  		return true
  9166  
  9167  	case err := <-it.sub.Err():
  9168  		it.done = true
  9169  		it.fail = err
  9170  		return it.Next()
  9171  	}
  9172  }
  9173  
  9174  // Error returns any retrieval or parsing error occurred during filtering.
  9175  func (it *BridgeTransferERC721HandleValueTransferIterator) Error() error {
  9176  	return it.fail
  9177  }
  9178  
  9179  // Close terminates the iteration process, releasing any pending underlying
  9180  // resources.
  9181  func (it *BridgeTransferERC721HandleValueTransferIterator) Close() error {
  9182  	it.sub.Unsubscribe()
  9183  	return nil
  9184  }
  9185  
  9186  // BridgeTransferERC721HandleValueTransfer represents a HandleValueTransfer event raised by the BridgeTransferERC721 contract.
  9187  type BridgeTransferERC721HandleValueTransfer struct {
  9188  	RequestTxHash    [32]byte
  9189  	TokenType        uint8
  9190  	From             common.Address
  9191  	To               common.Address
  9192  	TokenAddress     common.Address
  9193  	ValueOrTokenId   *big.Int
  9194  	HandleNonce      uint64
  9195  	LowerHandleNonce uint64
  9196  	ExtraData        []byte
  9197  	Raw              types.Log // Blockchain specific contextual infos
  9198  }
  9199  
  9200  // FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  9201  //
  9202  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  9203  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721HandleValueTransferIterator, error) {
  9204  
  9205  	var fromRule []interface{}
  9206  	for _, fromItem := range from {
  9207  		fromRule = append(fromRule, fromItem)
  9208  	}
  9209  	var toRule []interface{}
  9210  	for _, toItem := range to {
  9211  		toRule = append(toRule, toItem)
  9212  	}
  9213  	var tokenAddressRule []interface{}
  9214  	for _, tokenAddressItem := range tokenAddress {
  9215  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  9216  	}
  9217  
  9218  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  9219  	if err != nil {
  9220  		return nil, err
  9221  	}
  9222  	return &BridgeTransferERC721HandleValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil
  9223  }
  9224  
  9225  // WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  9226  //
  9227  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  9228  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721HandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  9229  
  9230  	var fromRule []interface{}
  9231  	for _, fromItem := range from {
  9232  		fromRule = append(fromRule, fromItem)
  9233  	}
  9234  	var toRule []interface{}
  9235  	for _, toItem := range to {
  9236  		toRule = append(toRule, toItem)
  9237  	}
  9238  	var tokenAddressRule []interface{}
  9239  	for _, tokenAddressItem := range tokenAddress {
  9240  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  9241  	}
  9242  
  9243  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
  9244  	if err != nil {
  9245  		return nil, err
  9246  	}
  9247  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9248  		defer sub.Unsubscribe()
  9249  		for {
  9250  			select {
  9251  			case log := <-logs:
  9252  				// New log arrived, parse the event and forward to the user
  9253  				event := new(BridgeTransferERC721HandleValueTransfer)
  9254  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  9255  					return err
  9256  				}
  9257  				event.Raw = log
  9258  
  9259  				select {
  9260  				case sink <- event:
  9261  				case err := <-sub.Err():
  9262  					return err
  9263  				case <-quit:
  9264  					return nil
  9265  				}
  9266  			case err := <-sub.Err():
  9267  				return err
  9268  			case <-quit:
  9269  				return nil
  9270  			}
  9271  		}
  9272  	}), nil
  9273  }
  9274  
  9275  // ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
  9276  //
  9277  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
  9278  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseHandleValueTransfer(log types.Log) (*BridgeTransferERC721HandleValueTransfer, error) {
  9279  	event := new(BridgeTransferERC721HandleValueTransfer)
  9280  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
  9281  		return nil, err
  9282  	}
  9283  	return event, nil
  9284  }
  9285  
  9286  // BridgeTransferERC721KLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the BridgeTransferERC721 contract.
  9287  type BridgeTransferERC721KLAYFeeChangedIterator struct {
  9288  	Event *BridgeTransferERC721KLAYFeeChanged // Event containing the contract specifics and raw log
  9289  
  9290  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9291  	event    string              // Event name to use for unpacking event data
  9292  
  9293  	logs chan types.Log      // Log channel receiving the found contract events
  9294  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9295  	done bool                // Whether the subscription completed delivering logs
  9296  	fail error               // Occurred error to stop iteration
  9297  }
  9298  
  9299  // Next advances the iterator to the subsequent event, returning whether there
  9300  // are any more events found. In case of a retrieval or parsing error, false is
  9301  // returned and Error() can be queried for the exact failure.
  9302  func (it *BridgeTransferERC721KLAYFeeChangedIterator) Next() bool {
  9303  	// If the iterator failed, stop iterating
  9304  	if it.fail != nil {
  9305  		return false
  9306  	}
  9307  	// If the iterator completed, deliver directly whatever's available
  9308  	if it.done {
  9309  		select {
  9310  		case log := <-it.logs:
  9311  			it.Event = new(BridgeTransferERC721KLAYFeeChanged)
  9312  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9313  				it.fail = err
  9314  				return false
  9315  			}
  9316  			it.Event.Raw = log
  9317  			return true
  9318  
  9319  		default:
  9320  			return false
  9321  		}
  9322  	}
  9323  	// Iterator still in progress, wait for either a data or an error event
  9324  	select {
  9325  	case log := <-it.logs:
  9326  		it.Event = new(BridgeTransferERC721KLAYFeeChanged)
  9327  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9328  			it.fail = err
  9329  			return false
  9330  		}
  9331  		it.Event.Raw = log
  9332  		return true
  9333  
  9334  	case err := <-it.sub.Err():
  9335  		it.done = true
  9336  		it.fail = err
  9337  		return it.Next()
  9338  	}
  9339  }
  9340  
  9341  // Error returns any retrieval or parsing error occurred during filtering.
  9342  func (it *BridgeTransferERC721KLAYFeeChangedIterator) Error() error {
  9343  	return it.fail
  9344  }
  9345  
  9346  // Close terminates the iteration process, releasing any pending underlying
  9347  // resources.
  9348  func (it *BridgeTransferERC721KLAYFeeChangedIterator) Close() error {
  9349  	it.sub.Unsubscribe()
  9350  	return nil
  9351  }
  9352  
  9353  // BridgeTransferERC721KLAYFeeChanged represents a KLAYFeeChanged event raised by the BridgeTransferERC721 contract.
  9354  type BridgeTransferERC721KLAYFeeChanged struct {
  9355  	Fee *big.Int
  9356  	Raw types.Log // Blockchain specific contextual infos
  9357  }
  9358  
  9359  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  9360  //
  9361  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  9362  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*BridgeTransferERC721KLAYFeeChangedIterator, error) {
  9363  
  9364  	var feeRule []interface{}
  9365  	for _, feeItem := range fee {
  9366  		feeRule = append(feeRule, feeItem)
  9367  	}
  9368  
  9369  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
  9370  	if err != nil {
  9371  		return nil, err
  9372  	}
  9373  	return &BridgeTransferERC721KLAYFeeChangedIterator{contract: _BridgeTransferERC721.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
  9374  }
  9375  
  9376  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  9377  //
  9378  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  9379  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721KLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
  9380  
  9381  	var feeRule []interface{}
  9382  	for _, feeItem := range fee {
  9383  		feeRule = append(feeRule, feeItem)
  9384  	}
  9385  
  9386  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
  9387  	if err != nil {
  9388  		return nil, err
  9389  	}
  9390  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9391  		defer sub.Unsubscribe()
  9392  		for {
  9393  			select {
  9394  			case log := <-logs:
  9395  				// New log arrived, parse the event and forward to the user
  9396  				event := new(BridgeTransferERC721KLAYFeeChanged)
  9397  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  9398  					return err
  9399  				}
  9400  				event.Raw = log
  9401  
  9402  				select {
  9403  				case sink <- event:
  9404  				case err := <-sub.Err():
  9405  					return err
  9406  				case <-quit:
  9407  					return nil
  9408  				}
  9409  			case err := <-sub.Err():
  9410  				return err
  9411  			case <-quit:
  9412  				return nil
  9413  			}
  9414  		}
  9415  	}), nil
  9416  }
  9417  
  9418  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
  9419  //
  9420  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
  9421  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseKLAYFeeChanged(log types.Log) (*BridgeTransferERC721KLAYFeeChanged, error) {
  9422  	event := new(BridgeTransferERC721KLAYFeeChanged)
  9423  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
  9424  		return nil, err
  9425  	}
  9426  	return event, nil
  9427  }
  9428  
  9429  // BridgeTransferERC721OwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the BridgeTransferERC721 contract.
  9430  type BridgeTransferERC721OwnershipTransferredIterator struct {
  9431  	Event *BridgeTransferERC721OwnershipTransferred // Event containing the contract specifics and raw log
  9432  
  9433  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9434  	event    string              // Event name to use for unpacking event data
  9435  
  9436  	logs chan types.Log      // Log channel receiving the found contract events
  9437  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9438  	done bool                // Whether the subscription completed delivering logs
  9439  	fail error               // Occurred error to stop iteration
  9440  }
  9441  
  9442  // Next advances the iterator to the subsequent event, returning whether there
  9443  // are any more events found. In case of a retrieval or parsing error, false is
  9444  // returned and Error() can be queried for the exact failure.
  9445  func (it *BridgeTransferERC721OwnershipTransferredIterator) Next() bool {
  9446  	// If the iterator failed, stop iterating
  9447  	if it.fail != nil {
  9448  		return false
  9449  	}
  9450  	// If the iterator completed, deliver directly whatever's available
  9451  	if it.done {
  9452  		select {
  9453  		case log := <-it.logs:
  9454  			it.Event = new(BridgeTransferERC721OwnershipTransferred)
  9455  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9456  				it.fail = err
  9457  				return false
  9458  			}
  9459  			it.Event.Raw = log
  9460  			return true
  9461  
  9462  		default:
  9463  			return false
  9464  		}
  9465  	}
  9466  	// Iterator still in progress, wait for either a data or an error event
  9467  	select {
  9468  	case log := <-it.logs:
  9469  		it.Event = new(BridgeTransferERC721OwnershipTransferred)
  9470  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9471  			it.fail = err
  9472  			return false
  9473  		}
  9474  		it.Event.Raw = log
  9475  		return true
  9476  
  9477  	case err := <-it.sub.Err():
  9478  		it.done = true
  9479  		it.fail = err
  9480  		return it.Next()
  9481  	}
  9482  }
  9483  
  9484  // Error returns any retrieval or parsing error occurred during filtering.
  9485  func (it *BridgeTransferERC721OwnershipTransferredIterator) Error() error {
  9486  	return it.fail
  9487  }
  9488  
  9489  // Close terminates the iteration process, releasing any pending underlying
  9490  // resources.
  9491  func (it *BridgeTransferERC721OwnershipTransferredIterator) Close() error {
  9492  	it.sub.Unsubscribe()
  9493  	return nil
  9494  }
  9495  
  9496  // BridgeTransferERC721OwnershipTransferred represents a OwnershipTransferred event raised by the BridgeTransferERC721 contract.
  9497  type BridgeTransferERC721OwnershipTransferred struct {
  9498  	PreviousOwner common.Address
  9499  	NewOwner      common.Address
  9500  	Raw           types.Log // Blockchain specific contextual infos
  9501  }
  9502  
  9503  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  9504  //
  9505  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  9506  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*BridgeTransferERC721OwnershipTransferredIterator, error) {
  9507  
  9508  	var previousOwnerRule []interface{}
  9509  	for _, previousOwnerItem := range previousOwner {
  9510  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  9511  	}
  9512  	var newOwnerRule []interface{}
  9513  	for _, newOwnerItem := range newOwner {
  9514  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  9515  	}
  9516  
  9517  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  9518  	if err != nil {
  9519  		return nil, err
  9520  	}
  9521  	return &BridgeTransferERC721OwnershipTransferredIterator{contract: _BridgeTransferERC721.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  9522  }
  9523  
  9524  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  9525  //
  9526  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  9527  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721OwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  9528  
  9529  	var previousOwnerRule []interface{}
  9530  	for _, previousOwnerItem := range previousOwner {
  9531  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  9532  	}
  9533  	var newOwnerRule []interface{}
  9534  	for _, newOwnerItem := range newOwner {
  9535  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  9536  	}
  9537  
  9538  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  9539  	if err != nil {
  9540  		return nil, err
  9541  	}
  9542  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9543  		defer sub.Unsubscribe()
  9544  		for {
  9545  			select {
  9546  			case log := <-logs:
  9547  				// New log arrived, parse the event and forward to the user
  9548  				event := new(BridgeTransferERC721OwnershipTransferred)
  9549  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  9550  					return err
  9551  				}
  9552  				event.Raw = log
  9553  
  9554  				select {
  9555  				case sink <- event:
  9556  				case err := <-sub.Err():
  9557  					return err
  9558  				case <-quit:
  9559  					return nil
  9560  				}
  9561  			case err := <-sub.Err():
  9562  				return err
  9563  			case <-quit:
  9564  				return nil
  9565  			}
  9566  		}
  9567  	}), nil
  9568  }
  9569  
  9570  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  9571  //
  9572  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  9573  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseOwnershipTransferred(log types.Log) (*BridgeTransferERC721OwnershipTransferred, error) {
  9574  	event := new(BridgeTransferERC721OwnershipTransferred)
  9575  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  9576  		return nil, err
  9577  	}
  9578  	return event, nil
  9579  }
  9580  
  9581  // BridgeTransferERC721RequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the BridgeTransferERC721 contract.
  9582  type BridgeTransferERC721RequestValueTransferIterator struct {
  9583  	Event *BridgeTransferERC721RequestValueTransfer // Event containing the contract specifics and raw log
  9584  
  9585  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9586  	event    string              // Event name to use for unpacking event data
  9587  
  9588  	logs chan types.Log      // Log channel receiving the found contract events
  9589  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9590  	done bool                // Whether the subscription completed delivering logs
  9591  	fail error               // Occurred error to stop iteration
  9592  }
  9593  
  9594  // Next advances the iterator to the subsequent event, returning whether there
  9595  // are any more events found. In case of a retrieval or parsing error, false is
  9596  // returned and Error() can be queried for the exact failure.
  9597  func (it *BridgeTransferERC721RequestValueTransferIterator) Next() bool {
  9598  	// If the iterator failed, stop iterating
  9599  	if it.fail != nil {
  9600  		return false
  9601  	}
  9602  	// If the iterator completed, deliver directly whatever's available
  9603  	if it.done {
  9604  		select {
  9605  		case log := <-it.logs:
  9606  			it.Event = new(BridgeTransferERC721RequestValueTransfer)
  9607  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9608  				it.fail = err
  9609  				return false
  9610  			}
  9611  			it.Event.Raw = log
  9612  			return true
  9613  
  9614  		default:
  9615  			return false
  9616  		}
  9617  	}
  9618  	// Iterator still in progress, wait for either a data or an error event
  9619  	select {
  9620  	case log := <-it.logs:
  9621  		it.Event = new(BridgeTransferERC721RequestValueTransfer)
  9622  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9623  			it.fail = err
  9624  			return false
  9625  		}
  9626  		it.Event.Raw = log
  9627  		return true
  9628  
  9629  	case err := <-it.sub.Err():
  9630  		it.done = true
  9631  		it.fail = err
  9632  		return it.Next()
  9633  	}
  9634  }
  9635  
  9636  // Error returns any retrieval or parsing error occurred during filtering.
  9637  func (it *BridgeTransferERC721RequestValueTransferIterator) Error() error {
  9638  	return it.fail
  9639  }
  9640  
  9641  // Close terminates the iteration process, releasing any pending underlying
  9642  // resources.
  9643  func (it *BridgeTransferERC721RequestValueTransferIterator) Close() error {
  9644  	it.sub.Unsubscribe()
  9645  	return nil
  9646  }
  9647  
  9648  // BridgeTransferERC721RequestValueTransfer represents a RequestValueTransfer event raised by the BridgeTransferERC721 contract.
  9649  type BridgeTransferERC721RequestValueTransfer struct {
  9650  	TokenType      uint8
  9651  	From           common.Address
  9652  	To             common.Address
  9653  	TokenAddress   common.Address
  9654  	ValueOrTokenId *big.Int
  9655  	RequestNonce   uint64
  9656  	Fee            *big.Int
  9657  	ExtraData      []byte
  9658  	Raw            types.Log // Blockchain specific contextual infos
  9659  }
  9660  
  9661  // FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  9662  //
  9663  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  9664  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferIterator, error) {
  9665  
  9666  	var fromRule []interface{}
  9667  	for _, fromItem := range from {
  9668  		fromRule = append(fromRule, fromItem)
  9669  	}
  9670  	var toRule []interface{}
  9671  	for _, toItem := range to {
  9672  		toRule = append(toRule, toItem)
  9673  	}
  9674  	var tokenAddressRule []interface{}
  9675  	for _, tokenAddressItem := range tokenAddress {
  9676  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  9677  	}
  9678  
  9679  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  9680  	if err != nil {
  9681  		return nil, err
  9682  	}
  9683  	return &BridgeTransferERC721RequestValueTransferIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil
  9684  }
  9685  
  9686  // WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  9687  //
  9688  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  9689  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  9690  
  9691  	var fromRule []interface{}
  9692  	for _, fromItem := range from {
  9693  		fromRule = append(fromRule, fromItem)
  9694  	}
  9695  	var toRule []interface{}
  9696  	for _, toItem := range to {
  9697  		toRule = append(toRule, toItem)
  9698  	}
  9699  	var tokenAddressRule []interface{}
  9700  	for _, tokenAddressItem := range tokenAddress {
  9701  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  9702  	}
  9703  
  9704  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
  9705  	if err != nil {
  9706  		return nil, err
  9707  	}
  9708  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9709  		defer sub.Unsubscribe()
  9710  		for {
  9711  			select {
  9712  			case log := <-logs:
  9713  				// New log arrived, parse the event and forward to the user
  9714  				event := new(BridgeTransferERC721RequestValueTransfer)
  9715  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  9716  					return err
  9717  				}
  9718  				event.Raw = log
  9719  
  9720  				select {
  9721  				case sink <- event:
  9722  				case err := <-sub.Err():
  9723  					return err
  9724  				case <-quit:
  9725  					return nil
  9726  				}
  9727  			case err := <-sub.Err():
  9728  				return err
  9729  			case <-quit:
  9730  				return nil
  9731  			}
  9732  		}
  9733  	}), nil
  9734  }
  9735  
  9736  // ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
  9737  //
  9738  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
  9739  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransfer(log types.Log) (*BridgeTransferERC721RequestValueTransfer, error) {
  9740  	event := new(BridgeTransferERC721RequestValueTransfer)
  9741  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
  9742  		return nil, err
  9743  	}
  9744  	return event, nil
  9745  }
  9746  
  9747  // BridgeTransferERC721RequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the BridgeTransferERC721 contract.
  9748  type BridgeTransferERC721RequestValueTransferEncodedIterator struct {
  9749  	Event *BridgeTransferERC721RequestValueTransferEncoded // Event containing the contract specifics and raw log
  9750  
  9751  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9752  	event    string              // Event name to use for unpacking event data
  9753  
  9754  	logs chan types.Log      // Log channel receiving the found contract events
  9755  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9756  	done bool                // Whether the subscription completed delivering logs
  9757  	fail error               // Occurred error to stop iteration
  9758  }
  9759  
  9760  // Next advances the iterator to the subsequent event, returning whether there
  9761  // are any more events found. In case of a retrieval or parsing error, false is
  9762  // returned and Error() can be queried for the exact failure.
  9763  func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Next() bool {
  9764  	// If the iterator failed, stop iterating
  9765  	if it.fail != nil {
  9766  		return false
  9767  	}
  9768  	// If the iterator completed, deliver directly whatever's available
  9769  	if it.done {
  9770  		select {
  9771  		case log := <-it.logs:
  9772  			it.Event = new(BridgeTransferERC721RequestValueTransferEncoded)
  9773  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9774  				it.fail = err
  9775  				return false
  9776  			}
  9777  			it.Event.Raw = log
  9778  			return true
  9779  
  9780  		default:
  9781  			return false
  9782  		}
  9783  	}
  9784  	// Iterator still in progress, wait for either a data or an error event
  9785  	select {
  9786  	case log := <-it.logs:
  9787  		it.Event = new(BridgeTransferERC721RequestValueTransferEncoded)
  9788  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9789  			it.fail = err
  9790  			return false
  9791  		}
  9792  		it.Event.Raw = log
  9793  		return true
  9794  
  9795  	case err := <-it.sub.Err():
  9796  		it.done = true
  9797  		it.fail = err
  9798  		return it.Next()
  9799  	}
  9800  }
  9801  
  9802  // Error returns any retrieval or parsing error occurred during filtering.
  9803  func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Error() error {
  9804  	return it.fail
  9805  }
  9806  
  9807  // Close terminates the iteration process, releasing any pending underlying
  9808  // resources.
  9809  func (it *BridgeTransferERC721RequestValueTransferEncodedIterator) Close() error {
  9810  	it.sub.Unsubscribe()
  9811  	return nil
  9812  }
  9813  
  9814  // BridgeTransferERC721RequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the BridgeTransferERC721 contract.
  9815  type BridgeTransferERC721RequestValueTransferEncoded struct {
  9816  	TokenType      uint8
  9817  	From           common.Address
  9818  	To             common.Address
  9819  	TokenAddress   common.Address
  9820  	ValueOrTokenId *big.Int
  9821  	RequestNonce   uint64
  9822  	Fee            *big.Int
  9823  	ExtraData      []byte
  9824  	EncodingVer    uint8
  9825  	EncodedData    []byte
  9826  	Raw            types.Log // Blockchain specific contextual infos
  9827  }
  9828  
  9829  // FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  9830  //
  9831  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  9832  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*BridgeTransferERC721RequestValueTransferEncodedIterator, error) {
  9833  
  9834  	var fromRule []interface{}
  9835  	for _, fromItem := range from {
  9836  		fromRule = append(fromRule, fromItem)
  9837  	}
  9838  	var toRule []interface{}
  9839  	for _, toItem := range to {
  9840  		toRule = append(toRule, toItem)
  9841  	}
  9842  	var tokenAddressRule []interface{}
  9843  	for _, tokenAddressItem := range tokenAddress {
  9844  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  9845  	}
  9846  
  9847  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  9848  	if err != nil {
  9849  		return nil, err
  9850  	}
  9851  	return &BridgeTransferERC721RequestValueTransferEncodedIterator{contract: _BridgeTransferERC721.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil
  9852  }
  9853  
  9854  // WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  9855  //
  9856  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  9857  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721RequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
  9858  
  9859  	var fromRule []interface{}
  9860  	for _, fromItem := range from {
  9861  		fromRule = append(fromRule, fromItem)
  9862  	}
  9863  	var toRule []interface{}
  9864  	for _, toItem := range to {
  9865  		toRule = append(toRule, toItem)
  9866  	}
  9867  	var tokenAddressRule []interface{}
  9868  	for _, tokenAddressItem := range tokenAddress {
  9869  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
  9870  	}
  9871  
  9872  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
  9873  	if err != nil {
  9874  		return nil, err
  9875  	}
  9876  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9877  		defer sub.Unsubscribe()
  9878  		for {
  9879  			select {
  9880  			case log := <-logs:
  9881  				// New log arrived, parse the event and forward to the user
  9882  				event := new(BridgeTransferERC721RequestValueTransferEncoded)
  9883  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  9884  					return err
  9885  				}
  9886  				event.Raw = log
  9887  
  9888  				select {
  9889  				case sink <- event:
  9890  				case err := <-sub.Err():
  9891  					return err
  9892  				case <-quit:
  9893  					return nil
  9894  				}
  9895  			case err := <-sub.Err():
  9896  				return err
  9897  			case <-quit:
  9898  				return nil
  9899  			}
  9900  		}
  9901  	}), nil
  9902  }
  9903  
  9904  // ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
  9905  //
  9906  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
  9907  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseRequestValueTransferEncoded(log types.Log) (*BridgeTransferERC721RequestValueTransferEncoded, error) {
  9908  	event := new(BridgeTransferERC721RequestValueTransferEncoded)
  9909  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
  9910  		return nil, err
  9911  	}
  9912  	return event, nil
  9913  }
  9914  
  9915  // BridgeTransferERC721TokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the BridgeTransferERC721 contract.
  9916  type BridgeTransferERC721TokenDeregisteredIterator struct {
  9917  	Event *BridgeTransferERC721TokenDeregistered // Event containing the contract specifics and raw log
  9918  
  9919  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9920  	event    string              // Event name to use for unpacking event data
  9921  
  9922  	logs chan types.Log      // Log channel receiving the found contract events
  9923  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9924  	done bool                // Whether the subscription completed delivering logs
  9925  	fail error               // Occurred error to stop iteration
  9926  }
  9927  
  9928  // Next advances the iterator to the subsequent event, returning whether there
  9929  // are any more events found. In case of a retrieval or parsing error, false is
  9930  // returned and Error() can be queried for the exact failure.
  9931  func (it *BridgeTransferERC721TokenDeregisteredIterator) Next() bool {
  9932  	// If the iterator failed, stop iterating
  9933  	if it.fail != nil {
  9934  		return false
  9935  	}
  9936  	// If the iterator completed, deliver directly whatever's available
  9937  	if it.done {
  9938  		select {
  9939  		case log := <-it.logs:
  9940  			it.Event = new(BridgeTransferERC721TokenDeregistered)
  9941  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9942  				it.fail = err
  9943  				return false
  9944  			}
  9945  			it.Event.Raw = log
  9946  			return true
  9947  
  9948  		default:
  9949  			return false
  9950  		}
  9951  	}
  9952  	// Iterator still in progress, wait for either a data or an error event
  9953  	select {
  9954  	case log := <-it.logs:
  9955  		it.Event = new(BridgeTransferERC721TokenDeregistered)
  9956  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9957  			it.fail = err
  9958  			return false
  9959  		}
  9960  		it.Event.Raw = log
  9961  		return true
  9962  
  9963  	case err := <-it.sub.Err():
  9964  		it.done = true
  9965  		it.fail = err
  9966  		return it.Next()
  9967  	}
  9968  }
  9969  
  9970  // Error returns any retrieval or parsing error occurred during filtering.
  9971  func (it *BridgeTransferERC721TokenDeregisteredIterator) Error() error {
  9972  	return it.fail
  9973  }
  9974  
  9975  // Close terminates the iteration process, releasing any pending underlying
  9976  // resources.
  9977  func (it *BridgeTransferERC721TokenDeregisteredIterator) Close() error {
  9978  	it.sub.Unsubscribe()
  9979  	return nil
  9980  }
  9981  
  9982  // BridgeTransferERC721TokenDeregistered represents a TokenDeregistered event raised by the BridgeTransferERC721 contract.
  9983  type BridgeTransferERC721TokenDeregistered struct {
  9984  	Token common.Address
  9985  	Raw   types.Log // Blockchain specific contextual infos
  9986  }
  9987  
  9988  // FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
  9989  //
  9990  // Solidity: event TokenDeregistered(address indexed token)
  9991  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenDeregisteredIterator, error) {
  9992  
  9993  	var tokenRule []interface{}
  9994  	for _, tokenItem := range token {
  9995  		tokenRule = append(tokenRule, tokenItem)
  9996  	}
  9997  
  9998  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenDeregistered", tokenRule)
  9999  	if err != nil {
 10000  		return nil, err
 10001  	}
 10002  	return &BridgeTransferERC721TokenDeregisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil
 10003  }
 10004  
 10005  // WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 10006  //
 10007  // Solidity: event TokenDeregistered(address indexed token)
 10008  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenDeregistered, token []common.Address) (event.Subscription, error) {
 10009  
 10010  	var tokenRule []interface{}
 10011  	for _, tokenItem := range token {
 10012  		tokenRule = append(tokenRule, tokenItem)
 10013  	}
 10014  
 10015  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenDeregistered", tokenRule)
 10016  	if err != nil {
 10017  		return nil, err
 10018  	}
 10019  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10020  		defer sub.Unsubscribe()
 10021  		for {
 10022  			select {
 10023  			case log := <-logs:
 10024  				// New log arrived, parse the event and forward to the user
 10025  				event := new(BridgeTransferERC721TokenDeregistered)
 10026  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
 10027  					return err
 10028  				}
 10029  				event.Raw = log
 10030  
 10031  				select {
 10032  				case sink <- event:
 10033  				case err := <-sub.Err():
 10034  					return err
 10035  				case <-quit:
 10036  					return nil
 10037  				}
 10038  			case err := <-sub.Err():
 10039  				return err
 10040  			case <-quit:
 10041  				return nil
 10042  			}
 10043  		}
 10044  	}), nil
 10045  }
 10046  
 10047  // ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 10048  //
 10049  // Solidity: event TokenDeregistered(address indexed token)
 10050  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenDeregistered(log types.Log) (*BridgeTransferERC721TokenDeregistered, error) {
 10051  	event := new(BridgeTransferERC721TokenDeregistered)
 10052  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
 10053  		return nil, err
 10054  	}
 10055  	return event, nil
 10056  }
 10057  
 10058  // BridgeTransferERC721TokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the BridgeTransferERC721 contract.
 10059  type BridgeTransferERC721TokenLockedIterator struct {
 10060  	Event *BridgeTransferERC721TokenLocked // Event containing the contract specifics and raw log
 10061  
 10062  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10063  	event    string              // Event name to use for unpacking event data
 10064  
 10065  	logs chan types.Log      // Log channel receiving the found contract events
 10066  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10067  	done bool                // Whether the subscription completed delivering logs
 10068  	fail error               // Occurred error to stop iteration
 10069  }
 10070  
 10071  // Next advances the iterator to the subsequent event, returning whether there
 10072  // are any more events found. In case of a retrieval or parsing error, false is
 10073  // returned and Error() can be queried for the exact failure.
 10074  func (it *BridgeTransferERC721TokenLockedIterator) Next() bool {
 10075  	// If the iterator failed, stop iterating
 10076  	if it.fail != nil {
 10077  		return false
 10078  	}
 10079  	// If the iterator completed, deliver directly whatever's available
 10080  	if it.done {
 10081  		select {
 10082  		case log := <-it.logs:
 10083  			it.Event = new(BridgeTransferERC721TokenLocked)
 10084  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10085  				it.fail = err
 10086  				return false
 10087  			}
 10088  			it.Event.Raw = log
 10089  			return true
 10090  
 10091  		default:
 10092  			return false
 10093  		}
 10094  	}
 10095  	// Iterator still in progress, wait for either a data or an error event
 10096  	select {
 10097  	case log := <-it.logs:
 10098  		it.Event = new(BridgeTransferERC721TokenLocked)
 10099  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10100  			it.fail = err
 10101  			return false
 10102  		}
 10103  		it.Event.Raw = log
 10104  		return true
 10105  
 10106  	case err := <-it.sub.Err():
 10107  		it.done = true
 10108  		it.fail = err
 10109  		return it.Next()
 10110  	}
 10111  }
 10112  
 10113  // Error returns any retrieval or parsing error occurred during filtering.
 10114  func (it *BridgeTransferERC721TokenLockedIterator) Error() error {
 10115  	return it.fail
 10116  }
 10117  
 10118  // Close terminates the iteration process, releasing any pending underlying
 10119  // resources.
 10120  func (it *BridgeTransferERC721TokenLockedIterator) Close() error {
 10121  	it.sub.Unsubscribe()
 10122  	return nil
 10123  }
 10124  
 10125  // BridgeTransferERC721TokenLocked represents a TokenLocked event raised by the BridgeTransferERC721 contract.
 10126  type BridgeTransferERC721TokenLocked struct {
 10127  	Token common.Address
 10128  	Raw   types.Log // Blockchain specific contextual infos
 10129  }
 10130  
 10131  // FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 10132  //
 10133  // Solidity: event TokenLocked(address indexed token)
 10134  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenLockedIterator, error) {
 10135  
 10136  	var tokenRule []interface{}
 10137  	for _, tokenItem := range token {
 10138  		tokenRule = append(tokenRule, tokenItem)
 10139  	}
 10140  
 10141  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenLocked", tokenRule)
 10142  	if err != nil {
 10143  		return nil, err
 10144  	}
 10145  	return &BridgeTransferERC721TokenLockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenLocked", logs: logs, sub: sub}, nil
 10146  }
 10147  
 10148  // WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 10149  //
 10150  // Solidity: event TokenLocked(address indexed token)
 10151  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenLocked, token []common.Address) (event.Subscription, error) {
 10152  
 10153  	var tokenRule []interface{}
 10154  	for _, tokenItem := range token {
 10155  		tokenRule = append(tokenRule, tokenItem)
 10156  	}
 10157  
 10158  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenLocked", tokenRule)
 10159  	if err != nil {
 10160  		return nil, err
 10161  	}
 10162  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10163  		defer sub.Unsubscribe()
 10164  		for {
 10165  			select {
 10166  			case log := <-logs:
 10167  				// New log arrived, parse the event and forward to the user
 10168  				event := new(BridgeTransferERC721TokenLocked)
 10169  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil {
 10170  					return err
 10171  				}
 10172  				event.Raw = log
 10173  
 10174  				select {
 10175  				case sink <- event:
 10176  				case err := <-sub.Err():
 10177  					return err
 10178  				case <-quit:
 10179  					return nil
 10180  				}
 10181  			case err := <-sub.Err():
 10182  				return err
 10183  			case <-quit:
 10184  				return nil
 10185  			}
 10186  		}
 10187  	}), nil
 10188  }
 10189  
 10190  // ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 10191  //
 10192  // Solidity: event TokenLocked(address indexed token)
 10193  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenLocked(log types.Log) (*BridgeTransferERC721TokenLocked, error) {
 10194  	event := new(BridgeTransferERC721TokenLocked)
 10195  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenLocked", log); err != nil {
 10196  		return nil, err
 10197  	}
 10198  	return event, nil
 10199  }
 10200  
 10201  // BridgeTransferERC721TokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the BridgeTransferERC721 contract.
 10202  type BridgeTransferERC721TokenRegisteredIterator struct {
 10203  	Event *BridgeTransferERC721TokenRegistered // Event containing the contract specifics and raw log
 10204  
 10205  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10206  	event    string              // Event name to use for unpacking event data
 10207  
 10208  	logs chan types.Log      // Log channel receiving the found contract events
 10209  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10210  	done bool                // Whether the subscription completed delivering logs
 10211  	fail error               // Occurred error to stop iteration
 10212  }
 10213  
 10214  // Next advances the iterator to the subsequent event, returning whether there
 10215  // are any more events found. In case of a retrieval or parsing error, false is
 10216  // returned and Error() can be queried for the exact failure.
 10217  func (it *BridgeTransferERC721TokenRegisteredIterator) Next() bool {
 10218  	// If the iterator failed, stop iterating
 10219  	if it.fail != nil {
 10220  		return false
 10221  	}
 10222  	// If the iterator completed, deliver directly whatever's available
 10223  	if it.done {
 10224  		select {
 10225  		case log := <-it.logs:
 10226  			it.Event = new(BridgeTransferERC721TokenRegistered)
 10227  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10228  				it.fail = err
 10229  				return false
 10230  			}
 10231  			it.Event.Raw = log
 10232  			return true
 10233  
 10234  		default:
 10235  			return false
 10236  		}
 10237  	}
 10238  	// Iterator still in progress, wait for either a data or an error event
 10239  	select {
 10240  	case log := <-it.logs:
 10241  		it.Event = new(BridgeTransferERC721TokenRegistered)
 10242  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10243  			it.fail = err
 10244  			return false
 10245  		}
 10246  		it.Event.Raw = log
 10247  		return true
 10248  
 10249  	case err := <-it.sub.Err():
 10250  		it.done = true
 10251  		it.fail = err
 10252  		return it.Next()
 10253  	}
 10254  }
 10255  
 10256  // Error returns any retrieval or parsing error occurred during filtering.
 10257  func (it *BridgeTransferERC721TokenRegisteredIterator) Error() error {
 10258  	return it.fail
 10259  }
 10260  
 10261  // Close terminates the iteration process, releasing any pending underlying
 10262  // resources.
 10263  func (it *BridgeTransferERC721TokenRegisteredIterator) Close() error {
 10264  	it.sub.Unsubscribe()
 10265  	return nil
 10266  }
 10267  
 10268  // BridgeTransferERC721TokenRegistered represents a TokenRegistered event raised by the BridgeTransferERC721 contract.
 10269  type BridgeTransferERC721TokenRegistered struct {
 10270  	Token common.Address
 10271  	Raw   types.Log // Blockchain specific contextual infos
 10272  }
 10273  
 10274  // FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 10275  //
 10276  // Solidity: event TokenRegistered(address indexed token)
 10277  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenRegisteredIterator, error) {
 10278  
 10279  	var tokenRule []interface{}
 10280  	for _, tokenItem := range token {
 10281  		tokenRule = append(tokenRule, tokenItem)
 10282  	}
 10283  
 10284  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenRegistered", tokenRule)
 10285  	if err != nil {
 10286  		return nil, err
 10287  	}
 10288  	return &BridgeTransferERC721TokenRegisteredIterator{contract: _BridgeTransferERC721.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil
 10289  }
 10290  
 10291  // WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 10292  //
 10293  // Solidity: event TokenRegistered(address indexed token)
 10294  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenRegistered, token []common.Address) (event.Subscription, error) {
 10295  
 10296  	var tokenRule []interface{}
 10297  	for _, tokenItem := range token {
 10298  		tokenRule = append(tokenRule, tokenItem)
 10299  	}
 10300  
 10301  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenRegistered", tokenRule)
 10302  	if err != nil {
 10303  		return nil, err
 10304  	}
 10305  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10306  		defer sub.Unsubscribe()
 10307  		for {
 10308  			select {
 10309  			case log := <-logs:
 10310  				// New log arrived, parse the event and forward to the user
 10311  				event := new(BridgeTransferERC721TokenRegistered)
 10312  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
 10313  					return err
 10314  				}
 10315  				event.Raw = log
 10316  
 10317  				select {
 10318  				case sink <- event:
 10319  				case err := <-sub.Err():
 10320  					return err
 10321  				case <-quit:
 10322  					return nil
 10323  				}
 10324  			case err := <-sub.Err():
 10325  				return err
 10326  			case <-quit:
 10327  				return nil
 10328  			}
 10329  		}
 10330  	}), nil
 10331  }
 10332  
 10333  // ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 10334  //
 10335  // Solidity: event TokenRegistered(address indexed token)
 10336  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenRegistered(log types.Log) (*BridgeTransferERC721TokenRegistered, error) {
 10337  	event := new(BridgeTransferERC721TokenRegistered)
 10338  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
 10339  		return nil, err
 10340  	}
 10341  	return event, nil
 10342  }
 10343  
 10344  // BridgeTransferERC721TokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the BridgeTransferERC721 contract.
 10345  type BridgeTransferERC721TokenUnlockedIterator struct {
 10346  	Event *BridgeTransferERC721TokenUnlocked // Event containing the contract specifics and raw log
 10347  
 10348  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10349  	event    string              // Event name to use for unpacking event data
 10350  
 10351  	logs chan types.Log      // Log channel receiving the found contract events
 10352  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10353  	done bool                // Whether the subscription completed delivering logs
 10354  	fail error               // Occurred error to stop iteration
 10355  }
 10356  
 10357  // Next advances the iterator to the subsequent event, returning whether there
 10358  // are any more events found. In case of a retrieval or parsing error, false is
 10359  // returned and Error() can be queried for the exact failure.
 10360  func (it *BridgeTransferERC721TokenUnlockedIterator) Next() bool {
 10361  	// If the iterator failed, stop iterating
 10362  	if it.fail != nil {
 10363  		return false
 10364  	}
 10365  	// If the iterator completed, deliver directly whatever's available
 10366  	if it.done {
 10367  		select {
 10368  		case log := <-it.logs:
 10369  			it.Event = new(BridgeTransferERC721TokenUnlocked)
 10370  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10371  				it.fail = err
 10372  				return false
 10373  			}
 10374  			it.Event.Raw = log
 10375  			return true
 10376  
 10377  		default:
 10378  			return false
 10379  		}
 10380  	}
 10381  	// Iterator still in progress, wait for either a data or an error event
 10382  	select {
 10383  	case log := <-it.logs:
 10384  		it.Event = new(BridgeTransferERC721TokenUnlocked)
 10385  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10386  			it.fail = err
 10387  			return false
 10388  		}
 10389  		it.Event.Raw = log
 10390  		return true
 10391  
 10392  	case err := <-it.sub.Err():
 10393  		it.done = true
 10394  		it.fail = err
 10395  		return it.Next()
 10396  	}
 10397  }
 10398  
 10399  // Error returns any retrieval or parsing error occurred during filtering.
 10400  func (it *BridgeTransferERC721TokenUnlockedIterator) Error() error {
 10401  	return it.fail
 10402  }
 10403  
 10404  // Close terminates the iteration process, releasing any pending underlying
 10405  // resources.
 10406  func (it *BridgeTransferERC721TokenUnlockedIterator) Close() error {
 10407  	it.sub.Unsubscribe()
 10408  	return nil
 10409  }
 10410  
 10411  // BridgeTransferERC721TokenUnlocked represents a TokenUnlocked event raised by the BridgeTransferERC721 contract.
 10412  type BridgeTransferERC721TokenUnlocked struct {
 10413  	Token common.Address
 10414  	Raw   types.Log // Blockchain specific contextual infos
 10415  }
 10416  
 10417  // FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 10418  //
 10419  // Solidity: event TokenUnlocked(address indexed token)
 10420  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*BridgeTransferERC721TokenUnlockedIterator, error) {
 10421  
 10422  	var tokenRule []interface{}
 10423  	for _, tokenItem := range token {
 10424  		tokenRule = append(tokenRule, tokenItem)
 10425  	}
 10426  
 10427  	logs, sub, err := _BridgeTransferERC721.contract.FilterLogs(opts, "TokenUnlocked", tokenRule)
 10428  	if err != nil {
 10429  		return nil, err
 10430  	}
 10431  	return &BridgeTransferERC721TokenUnlockedIterator{contract: _BridgeTransferERC721.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil
 10432  }
 10433  
 10434  // WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 10435  //
 10436  // Solidity: event TokenUnlocked(address indexed token)
 10437  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *BridgeTransferERC721TokenUnlocked, token []common.Address) (event.Subscription, error) {
 10438  
 10439  	var tokenRule []interface{}
 10440  	for _, tokenItem := range token {
 10441  		tokenRule = append(tokenRule, tokenItem)
 10442  	}
 10443  
 10444  	logs, sub, err := _BridgeTransferERC721.contract.WatchLogs(opts, "TokenUnlocked", tokenRule)
 10445  	if err != nil {
 10446  		return nil, err
 10447  	}
 10448  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10449  		defer sub.Unsubscribe()
 10450  		for {
 10451  			select {
 10452  			case log := <-logs:
 10453  				// New log arrived, parse the event and forward to the user
 10454  				event := new(BridgeTransferERC721TokenUnlocked)
 10455  				if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
 10456  					return err
 10457  				}
 10458  				event.Raw = log
 10459  
 10460  				select {
 10461  				case sink <- event:
 10462  				case err := <-sub.Err():
 10463  					return err
 10464  				case <-quit:
 10465  					return nil
 10466  				}
 10467  			case err := <-sub.Err():
 10468  				return err
 10469  			case <-quit:
 10470  				return nil
 10471  			}
 10472  		}
 10473  	}), nil
 10474  }
 10475  
 10476  // ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 10477  //
 10478  // Solidity: event TokenUnlocked(address indexed token)
 10479  func (_BridgeTransferERC721 *BridgeTransferERC721Filterer) ParseTokenUnlocked(log types.Log) (*BridgeTransferERC721TokenUnlocked, error) {
 10480  	event := new(BridgeTransferERC721TokenUnlocked)
 10481  	if err := _BridgeTransferERC721.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
 10482  		return nil, err
 10483  	}
 10484  	return event, nil
 10485  }
 10486  
 10487  // CallbackABI is the input ABI used to generate the binding from.
 10488  const CallbackABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\"},{\"name\":\"_valueOrID\",\"type\":\"uint256\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"registerOffer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrID\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"RegisteredOffer\",\"type\":\"event\"}]"
 10489  
 10490  // CallbackBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 10491  const CallbackBinRuntime = `6080604052348015600f57600080fd5b506004361060285760003560e01c80635ec467e214602d575b600080fd5b606460048036036080811015604157600080fd5b506001600160a01b03813581169160208101359160408201351690606001356066565b005b604080516001600160a01b038087168252602082018690528416818301526060810183905290517f6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb89181900360800190a15050505056fea165627a7a72305820bf6e62258297a79e12c317404a55a5c2e95a957e0edfe8eadfb65b951293f8c90029`
 10492  
 10493  // CallbackFuncSigs maps the 4-byte function signature to its string representation.
 10494  var CallbackFuncSigs = map[string]string{
 10495  	"5ec467e2": "registerOffer(address,uint256,address,uint256)",
 10496  }
 10497  
 10498  // CallbackBin is the compiled bytecode used for deploying new contracts.
 10499  var CallbackBin = "0x6080604052348015600f57600080fd5b5060e98061001e6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80635ec467e214602d575b600080fd5b606460048036036080811015604157600080fd5b506001600160a01b03813581169160208101359160408201351690606001356066565b005b604080516001600160a01b038087168252602082018690528416818301526060810183905290517f6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb89181900360800190a15050505056fea165627a7a72305820bf6e62258297a79e12c317404a55a5c2e95a957e0edfe8eadfb65b951293f8c90029"
 10500  
 10501  // DeployCallback deploys a new Klaytn contract, binding an instance of Callback to it.
 10502  func DeployCallback(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Callback, error) {
 10503  	parsed, err := abi.JSON(strings.NewReader(CallbackABI))
 10504  	if err != nil {
 10505  		return common.Address{}, nil, nil, err
 10506  	}
 10507  
 10508  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(CallbackBin), backend)
 10509  	if err != nil {
 10510  		return common.Address{}, nil, nil, err
 10511  	}
 10512  	return address, tx, &Callback{CallbackCaller: CallbackCaller{contract: contract}, CallbackTransactor: CallbackTransactor{contract: contract}, CallbackFilterer: CallbackFilterer{contract: contract}}, nil
 10513  }
 10514  
 10515  // Callback is an auto generated Go binding around a Klaytn contract.
 10516  type Callback struct {
 10517  	CallbackCaller     // Read-only binding to the contract
 10518  	CallbackTransactor // Write-only binding to the contract
 10519  	CallbackFilterer   // Log filterer for contract events
 10520  }
 10521  
 10522  // CallbackCaller is an auto generated read-only Go binding around a Klaytn contract.
 10523  type CallbackCaller struct {
 10524  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10525  }
 10526  
 10527  // CallbackTransactor is an auto generated write-only Go binding around a Klaytn contract.
 10528  type CallbackTransactor struct {
 10529  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10530  }
 10531  
 10532  // CallbackFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 10533  type CallbackFilterer struct {
 10534  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10535  }
 10536  
 10537  // CallbackSession is an auto generated Go binding around a Klaytn contract,
 10538  // with pre-set call and transact options.
 10539  type CallbackSession struct {
 10540  	Contract     *Callback         // Generic contract binding to set the session for
 10541  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 10542  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 10543  }
 10544  
 10545  // CallbackCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 10546  // with pre-set call options.
 10547  type CallbackCallerSession struct {
 10548  	Contract *CallbackCaller // Generic contract caller binding to set the session for
 10549  	CallOpts bind.CallOpts   // Call options to use throughout this session
 10550  }
 10551  
 10552  // CallbackTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 10553  // with pre-set transact options.
 10554  type CallbackTransactorSession struct {
 10555  	Contract     *CallbackTransactor // Generic contract transactor binding to set the session for
 10556  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 10557  }
 10558  
 10559  // CallbackRaw is an auto generated low-level Go binding around a Klaytn contract.
 10560  type CallbackRaw struct {
 10561  	Contract *Callback // Generic contract binding to access the raw methods on
 10562  }
 10563  
 10564  // CallbackCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 10565  type CallbackCallerRaw struct {
 10566  	Contract *CallbackCaller // Generic read-only contract binding to access the raw methods on
 10567  }
 10568  
 10569  // CallbackTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 10570  type CallbackTransactorRaw struct {
 10571  	Contract *CallbackTransactor // Generic write-only contract binding to access the raw methods on
 10572  }
 10573  
 10574  // NewCallback creates a new instance of Callback, bound to a specific deployed contract.
 10575  func NewCallback(address common.Address, backend bind.ContractBackend) (*Callback, error) {
 10576  	contract, err := bindCallback(address, backend, backend, backend)
 10577  	if err != nil {
 10578  		return nil, err
 10579  	}
 10580  	return &Callback{CallbackCaller: CallbackCaller{contract: contract}, CallbackTransactor: CallbackTransactor{contract: contract}, CallbackFilterer: CallbackFilterer{contract: contract}}, nil
 10581  }
 10582  
 10583  // NewCallbackCaller creates a new read-only instance of Callback, bound to a specific deployed contract.
 10584  func NewCallbackCaller(address common.Address, caller bind.ContractCaller) (*CallbackCaller, error) {
 10585  	contract, err := bindCallback(address, caller, nil, nil)
 10586  	if err != nil {
 10587  		return nil, err
 10588  	}
 10589  	return &CallbackCaller{contract: contract}, nil
 10590  }
 10591  
 10592  // NewCallbackTransactor creates a new write-only instance of Callback, bound to a specific deployed contract.
 10593  func NewCallbackTransactor(address common.Address, transactor bind.ContractTransactor) (*CallbackTransactor, error) {
 10594  	contract, err := bindCallback(address, nil, transactor, nil)
 10595  	if err != nil {
 10596  		return nil, err
 10597  	}
 10598  	return &CallbackTransactor{contract: contract}, nil
 10599  }
 10600  
 10601  // NewCallbackFilterer creates a new log filterer instance of Callback, bound to a specific deployed contract.
 10602  func NewCallbackFilterer(address common.Address, filterer bind.ContractFilterer) (*CallbackFilterer, error) {
 10603  	contract, err := bindCallback(address, nil, nil, filterer)
 10604  	if err != nil {
 10605  		return nil, err
 10606  	}
 10607  	return &CallbackFilterer{contract: contract}, nil
 10608  }
 10609  
 10610  // bindCallback binds a generic wrapper to an already deployed contract.
 10611  func bindCallback(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 10612  	parsed, err := abi.JSON(strings.NewReader(CallbackABI))
 10613  	if err != nil {
 10614  		return nil, err
 10615  	}
 10616  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 10617  }
 10618  
 10619  // Call invokes the (constant) contract method with params as input values and
 10620  // sets the output to result. The result type might be a single field for simple
 10621  // returns, a slice of interfaces for anonymous returns and a struct for named
 10622  // returns.
 10623  func (_Callback *CallbackRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10624  	return _Callback.Contract.CallbackCaller.contract.Call(opts, result, method, params...)
 10625  }
 10626  
 10627  // Transfer initiates a plain transaction to move funds to the contract, calling
 10628  // its default method if one is available.
 10629  func (_Callback *CallbackRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10630  	return _Callback.Contract.CallbackTransactor.contract.Transfer(opts)
 10631  }
 10632  
 10633  // Transact invokes the (paid) contract method with params as input values.
 10634  func (_Callback *CallbackRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10635  	return _Callback.Contract.CallbackTransactor.contract.Transact(opts, method, params...)
 10636  }
 10637  
 10638  // Call invokes the (constant) contract method with params as input values and
 10639  // sets the output to result. The result type might be a single field for simple
 10640  // returns, a slice of interfaces for anonymous returns and a struct for named
 10641  // returns.
 10642  func (_Callback *CallbackCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10643  	return _Callback.Contract.contract.Call(opts, result, method, params...)
 10644  }
 10645  
 10646  // Transfer initiates a plain transaction to move funds to the contract, calling
 10647  // its default method if one is available.
 10648  func (_Callback *CallbackTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10649  	return _Callback.Contract.contract.Transfer(opts)
 10650  }
 10651  
 10652  // Transact invokes the (paid) contract method with params as input values.
 10653  func (_Callback *CallbackTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10654  	return _Callback.Contract.contract.Transact(opts, method, params...)
 10655  }
 10656  
 10657  // RegisterOffer is a paid mutator transaction binding the contract method 0x5ec467e2.
 10658  //
 10659  // Solidity: function registerOffer(address _owner, uint256 _valueOrID, address _tokenAddress, uint256 _price) returns()
 10660  func (_Callback *CallbackTransactor) RegisterOffer(opts *bind.TransactOpts, _owner common.Address, _valueOrID *big.Int, _tokenAddress common.Address, _price *big.Int) (*types.Transaction, error) {
 10661  	return _Callback.contract.Transact(opts, "registerOffer", _owner, _valueOrID, _tokenAddress, _price)
 10662  }
 10663  
 10664  // RegisterOffer is a paid mutator transaction binding the contract method 0x5ec467e2.
 10665  //
 10666  // Solidity: function registerOffer(address _owner, uint256 _valueOrID, address _tokenAddress, uint256 _price) returns()
 10667  func (_Callback *CallbackSession) RegisterOffer(_owner common.Address, _valueOrID *big.Int, _tokenAddress common.Address, _price *big.Int) (*types.Transaction, error) {
 10668  	return _Callback.Contract.RegisterOffer(&_Callback.TransactOpts, _owner, _valueOrID, _tokenAddress, _price)
 10669  }
 10670  
 10671  // RegisterOffer is a paid mutator transaction binding the contract method 0x5ec467e2.
 10672  //
 10673  // Solidity: function registerOffer(address _owner, uint256 _valueOrID, address _tokenAddress, uint256 _price) returns()
 10674  func (_Callback *CallbackTransactorSession) RegisterOffer(_owner common.Address, _valueOrID *big.Int, _tokenAddress common.Address, _price *big.Int) (*types.Transaction, error) {
 10675  	return _Callback.Contract.RegisterOffer(&_Callback.TransactOpts, _owner, _valueOrID, _tokenAddress, _price)
 10676  }
 10677  
 10678  // CallbackRegisteredOfferIterator is returned from FilterRegisteredOffer and is used to iterate over the raw logs and unpacked data for RegisteredOffer events raised by the Callback contract.
 10679  type CallbackRegisteredOfferIterator struct {
 10680  	Event *CallbackRegisteredOffer // Event containing the contract specifics and raw log
 10681  
 10682  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10683  	event    string              // Event name to use for unpacking event data
 10684  
 10685  	logs chan types.Log      // Log channel receiving the found contract events
 10686  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10687  	done bool                // Whether the subscription completed delivering logs
 10688  	fail error               // Occurred error to stop iteration
 10689  }
 10690  
 10691  // Next advances the iterator to the subsequent event, returning whether there
 10692  // are any more events found. In case of a retrieval or parsing error, false is
 10693  // returned and Error() can be queried for the exact failure.
 10694  func (it *CallbackRegisteredOfferIterator) Next() bool {
 10695  	// If the iterator failed, stop iterating
 10696  	if it.fail != nil {
 10697  		return false
 10698  	}
 10699  	// If the iterator completed, deliver directly whatever's available
 10700  	if it.done {
 10701  		select {
 10702  		case log := <-it.logs:
 10703  			it.Event = new(CallbackRegisteredOffer)
 10704  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10705  				it.fail = err
 10706  				return false
 10707  			}
 10708  			it.Event.Raw = log
 10709  			return true
 10710  
 10711  		default:
 10712  			return false
 10713  		}
 10714  	}
 10715  	// Iterator still in progress, wait for either a data or an error event
 10716  	select {
 10717  	case log := <-it.logs:
 10718  		it.Event = new(CallbackRegisteredOffer)
 10719  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10720  			it.fail = err
 10721  			return false
 10722  		}
 10723  		it.Event.Raw = log
 10724  		return true
 10725  
 10726  	case err := <-it.sub.Err():
 10727  		it.done = true
 10728  		it.fail = err
 10729  		return it.Next()
 10730  	}
 10731  }
 10732  
 10733  // Error returns any retrieval or parsing error occurred during filtering.
 10734  func (it *CallbackRegisteredOfferIterator) Error() error {
 10735  	return it.fail
 10736  }
 10737  
 10738  // Close terminates the iteration process, releasing any pending underlying
 10739  // resources.
 10740  func (it *CallbackRegisteredOfferIterator) Close() error {
 10741  	it.sub.Unsubscribe()
 10742  	return nil
 10743  }
 10744  
 10745  // CallbackRegisteredOffer represents a RegisteredOffer event raised by the Callback contract.
 10746  type CallbackRegisteredOffer struct {
 10747  	Owner        common.Address
 10748  	ValueOrID    *big.Int
 10749  	TokenAddress common.Address
 10750  	Price        *big.Int
 10751  	Raw          types.Log // Blockchain specific contextual infos
 10752  }
 10753  
 10754  // FilterRegisteredOffer is a free log retrieval operation binding the contract event 0x6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb8.
 10755  //
 10756  // Solidity: event RegisteredOffer(address owner, uint256 valueOrID, address tokenAddress, uint256 price)
 10757  func (_Callback *CallbackFilterer) FilterRegisteredOffer(opts *bind.FilterOpts) (*CallbackRegisteredOfferIterator, error) {
 10758  
 10759  	logs, sub, err := _Callback.contract.FilterLogs(opts, "RegisteredOffer")
 10760  	if err != nil {
 10761  		return nil, err
 10762  	}
 10763  	return &CallbackRegisteredOfferIterator{contract: _Callback.contract, event: "RegisteredOffer", logs: logs, sub: sub}, nil
 10764  }
 10765  
 10766  // WatchRegisteredOffer is a free log subscription operation binding the contract event 0x6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb8.
 10767  //
 10768  // Solidity: event RegisteredOffer(address owner, uint256 valueOrID, address tokenAddress, uint256 price)
 10769  func (_Callback *CallbackFilterer) WatchRegisteredOffer(opts *bind.WatchOpts, sink chan<- *CallbackRegisteredOffer) (event.Subscription, error) {
 10770  
 10771  	logs, sub, err := _Callback.contract.WatchLogs(opts, "RegisteredOffer")
 10772  	if err != nil {
 10773  		return nil, err
 10774  	}
 10775  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10776  		defer sub.Unsubscribe()
 10777  		for {
 10778  			select {
 10779  			case log := <-logs:
 10780  				// New log arrived, parse the event and forward to the user
 10781  				event := new(CallbackRegisteredOffer)
 10782  				if err := _Callback.contract.UnpackLog(event, "RegisteredOffer", log); err != nil {
 10783  					return err
 10784  				}
 10785  				event.Raw = log
 10786  
 10787  				select {
 10788  				case sink <- event:
 10789  				case err := <-sub.Err():
 10790  					return err
 10791  				case <-quit:
 10792  					return nil
 10793  				}
 10794  			case err := <-sub.Err():
 10795  				return err
 10796  			case <-quit:
 10797  				return nil
 10798  			}
 10799  		}
 10800  	}), nil
 10801  }
 10802  
 10803  // ParseRegisteredOffer is a log parse operation binding the contract event 0x6e0b5117e49b57aaf37c635363b1b78a14ad521875ec99079d95bee2838cfeb8.
 10804  //
 10805  // Solidity: event RegisteredOffer(address owner, uint256 valueOrID, address tokenAddress, uint256 price)
 10806  func (_Callback *CallbackFilterer) ParseRegisteredOffer(log types.Log) (*CallbackRegisteredOffer, error) {
 10807  	event := new(CallbackRegisteredOffer)
 10808  	if err := _Callback.contract.UnpackLog(event, "RegisteredOffer", log); err != nil {
 10809  		return nil, err
 10810  	}
 10811  	return event, nil
 10812  }
 10813  
 10814  // CountersABI is the input ABI used to generate the binding from.
 10815  const CountersABI = "[]"
 10816  
 10817  // CountersBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 10818  const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207329cab25de591c35947480820e66bd7e2d232979872616f21ac6e5783a017700029`
 10819  
 10820  // CountersBin is the compiled bytecode used for deploying new contracts.
 10821  var CountersBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207329cab25de591c35947480820e66bd7e2d232979872616f21ac6e5783a017700029"
 10822  
 10823  // DeployCounters deploys a new Klaytn contract, binding an instance of Counters to it.
 10824  func DeployCounters(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Counters, error) {
 10825  	parsed, err := abi.JSON(strings.NewReader(CountersABI))
 10826  	if err != nil {
 10827  		return common.Address{}, nil, nil, err
 10828  	}
 10829  
 10830  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(CountersBin), backend)
 10831  	if err != nil {
 10832  		return common.Address{}, nil, nil, err
 10833  	}
 10834  	return address, tx, &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
 10835  }
 10836  
 10837  // Counters is an auto generated Go binding around a Klaytn contract.
 10838  type Counters struct {
 10839  	CountersCaller     // Read-only binding to the contract
 10840  	CountersTransactor // Write-only binding to the contract
 10841  	CountersFilterer   // Log filterer for contract events
 10842  }
 10843  
 10844  // CountersCaller is an auto generated read-only Go binding around a Klaytn contract.
 10845  type CountersCaller struct {
 10846  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10847  }
 10848  
 10849  // CountersTransactor is an auto generated write-only Go binding around a Klaytn contract.
 10850  type CountersTransactor struct {
 10851  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10852  }
 10853  
 10854  // CountersFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 10855  type CountersFilterer struct {
 10856  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10857  }
 10858  
 10859  // CountersSession is an auto generated Go binding around a Klaytn contract,
 10860  // with pre-set call and transact options.
 10861  type CountersSession struct {
 10862  	Contract     *Counters         // Generic contract binding to set the session for
 10863  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 10864  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 10865  }
 10866  
 10867  // CountersCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 10868  // with pre-set call options.
 10869  type CountersCallerSession struct {
 10870  	Contract *CountersCaller // Generic contract caller binding to set the session for
 10871  	CallOpts bind.CallOpts   // Call options to use throughout this session
 10872  }
 10873  
 10874  // CountersTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 10875  // with pre-set transact options.
 10876  type CountersTransactorSession struct {
 10877  	Contract     *CountersTransactor // Generic contract transactor binding to set the session for
 10878  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 10879  }
 10880  
 10881  // CountersRaw is an auto generated low-level Go binding around a Klaytn contract.
 10882  type CountersRaw struct {
 10883  	Contract *Counters // Generic contract binding to access the raw methods on
 10884  }
 10885  
 10886  // CountersCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 10887  type CountersCallerRaw struct {
 10888  	Contract *CountersCaller // Generic read-only contract binding to access the raw methods on
 10889  }
 10890  
 10891  // CountersTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 10892  type CountersTransactorRaw struct {
 10893  	Contract *CountersTransactor // Generic write-only contract binding to access the raw methods on
 10894  }
 10895  
 10896  // NewCounters creates a new instance of Counters, bound to a specific deployed contract.
 10897  func NewCounters(address common.Address, backend bind.ContractBackend) (*Counters, error) {
 10898  	contract, err := bindCounters(address, backend, backend, backend)
 10899  	if err != nil {
 10900  		return nil, err
 10901  	}
 10902  	return &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
 10903  }
 10904  
 10905  // NewCountersCaller creates a new read-only instance of Counters, bound to a specific deployed contract.
 10906  func NewCountersCaller(address common.Address, caller bind.ContractCaller) (*CountersCaller, error) {
 10907  	contract, err := bindCounters(address, caller, nil, nil)
 10908  	if err != nil {
 10909  		return nil, err
 10910  	}
 10911  	return &CountersCaller{contract: contract}, nil
 10912  }
 10913  
 10914  // NewCountersTransactor creates a new write-only instance of Counters, bound to a specific deployed contract.
 10915  func NewCountersTransactor(address common.Address, transactor bind.ContractTransactor) (*CountersTransactor, error) {
 10916  	contract, err := bindCounters(address, nil, transactor, nil)
 10917  	if err != nil {
 10918  		return nil, err
 10919  	}
 10920  	return &CountersTransactor{contract: contract}, nil
 10921  }
 10922  
 10923  // NewCountersFilterer creates a new log filterer instance of Counters, bound to a specific deployed contract.
 10924  func NewCountersFilterer(address common.Address, filterer bind.ContractFilterer) (*CountersFilterer, error) {
 10925  	contract, err := bindCounters(address, nil, nil, filterer)
 10926  	if err != nil {
 10927  		return nil, err
 10928  	}
 10929  	return &CountersFilterer{contract: contract}, nil
 10930  }
 10931  
 10932  // bindCounters binds a generic wrapper to an already deployed contract.
 10933  func bindCounters(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 10934  	parsed, err := abi.JSON(strings.NewReader(CountersABI))
 10935  	if err != nil {
 10936  		return nil, err
 10937  	}
 10938  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 10939  }
 10940  
 10941  // Call invokes the (constant) contract method with params as input values and
 10942  // sets the output to result. The result type might be a single field for simple
 10943  // returns, a slice of interfaces for anonymous returns and a struct for named
 10944  // returns.
 10945  func (_Counters *CountersRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10946  	return _Counters.Contract.CountersCaller.contract.Call(opts, result, method, params...)
 10947  }
 10948  
 10949  // Transfer initiates a plain transaction to move funds to the contract, calling
 10950  // its default method if one is available.
 10951  func (_Counters *CountersRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10952  	return _Counters.Contract.CountersTransactor.contract.Transfer(opts)
 10953  }
 10954  
 10955  // Transact invokes the (paid) contract method with params as input values.
 10956  func (_Counters *CountersRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10957  	return _Counters.Contract.CountersTransactor.contract.Transact(opts, method, params...)
 10958  }
 10959  
 10960  // Call invokes the (constant) contract method with params as input values and
 10961  // sets the output to result. The result type might be a single field for simple
 10962  // returns, a slice of interfaces for anonymous returns and a struct for named
 10963  // returns.
 10964  func (_Counters *CountersCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10965  	return _Counters.Contract.contract.Call(opts, result, method, params...)
 10966  }
 10967  
 10968  // Transfer initiates a plain transaction to move funds to the contract, calling
 10969  // its default method if one is available.
 10970  func (_Counters *CountersTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10971  	return _Counters.Contract.contract.Transfer(opts)
 10972  }
 10973  
 10974  // Transact invokes the (paid) contract method with params as input values.
 10975  func (_Counters *CountersTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10976  	return _Counters.Contract.contract.Transact(opts, method, params...)
 10977  }
 10978  
 10979  // ERC165ABI is the input ABI used to generate the binding from.
 10980  const ERC165ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
 10981  
 10982  // ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 10983  const ERC165BinRuntime = ``
 10984  
 10985  // ERC165FuncSigs maps the 4-byte function signature to its string representation.
 10986  var ERC165FuncSigs = map[string]string{
 10987  	"01ffc9a7": "supportsInterface(bytes4)",
 10988  }
 10989  
 10990  // ERC165 is an auto generated Go binding around a Klaytn contract.
 10991  type ERC165 struct {
 10992  	ERC165Caller     // Read-only binding to the contract
 10993  	ERC165Transactor // Write-only binding to the contract
 10994  	ERC165Filterer   // Log filterer for contract events
 10995  }
 10996  
 10997  // ERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
 10998  type ERC165Caller struct {
 10999  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11000  }
 11001  
 11002  // ERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
 11003  type ERC165Transactor struct {
 11004  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11005  }
 11006  
 11007  // ERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 11008  type ERC165Filterer struct {
 11009  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11010  }
 11011  
 11012  // ERC165Session is an auto generated Go binding around a Klaytn contract,
 11013  // with pre-set call and transact options.
 11014  type ERC165Session struct {
 11015  	Contract     *ERC165           // Generic contract binding to set the session for
 11016  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 11017  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11018  }
 11019  
 11020  // ERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 11021  // with pre-set call options.
 11022  type ERC165CallerSession struct {
 11023  	Contract *ERC165Caller // Generic contract caller binding to set the session for
 11024  	CallOpts bind.CallOpts // Call options to use throughout this session
 11025  }
 11026  
 11027  // ERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 11028  // with pre-set transact options.
 11029  type ERC165TransactorSession struct {
 11030  	Contract     *ERC165Transactor // Generic contract transactor binding to set the session for
 11031  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11032  }
 11033  
 11034  // ERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
 11035  type ERC165Raw struct {
 11036  	Contract *ERC165 // Generic contract binding to access the raw methods on
 11037  }
 11038  
 11039  // ERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 11040  type ERC165CallerRaw struct {
 11041  	Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on
 11042  }
 11043  
 11044  // ERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 11045  type ERC165TransactorRaw struct {
 11046  	Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on
 11047  }
 11048  
 11049  // NewERC165 creates a new instance of ERC165, bound to a specific deployed contract.
 11050  func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) {
 11051  	contract, err := bindERC165(address, backend, backend, backend)
 11052  	if err != nil {
 11053  		return nil, err
 11054  	}
 11055  	return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil
 11056  }
 11057  
 11058  // NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract.
 11059  func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) {
 11060  	contract, err := bindERC165(address, caller, nil, nil)
 11061  	if err != nil {
 11062  		return nil, err
 11063  	}
 11064  	return &ERC165Caller{contract: contract}, nil
 11065  }
 11066  
 11067  // NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract.
 11068  func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) {
 11069  	contract, err := bindERC165(address, nil, transactor, nil)
 11070  	if err != nil {
 11071  		return nil, err
 11072  	}
 11073  	return &ERC165Transactor{contract: contract}, nil
 11074  }
 11075  
 11076  // NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract.
 11077  func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) {
 11078  	contract, err := bindERC165(address, nil, nil, filterer)
 11079  	if err != nil {
 11080  		return nil, err
 11081  	}
 11082  	return &ERC165Filterer{contract: contract}, nil
 11083  }
 11084  
 11085  // bindERC165 binds a generic wrapper to an already deployed contract.
 11086  func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11087  	parsed, err := abi.JSON(strings.NewReader(ERC165ABI))
 11088  	if err != nil {
 11089  		return nil, err
 11090  	}
 11091  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 11092  }
 11093  
 11094  // Call invokes the (constant) contract method with params as input values and
 11095  // sets the output to result. The result type might be a single field for simple
 11096  // returns, a slice of interfaces for anonymous returns and a struct for named
 11097  // returns.
 11098  func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11099  	return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...)
 11100  }
 11101  
 11102  // Transfer initiates a plain transaction to move funds to the contract, calling
 11103  // its default method if one is available.
 11104  func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11105  	return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts)
 11106  }
 11107  
 11108  // Transact invokes the (paid) contract method with params as input values.
 11109  func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11110  	return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...)
 11111  }
 11112  
 11113  // Call invokes the (constant) contract method with params as input values and
 11114  // sets the output to result. The result type might be a single field for simple
 11115  // returns, a slice of interfaces for anonymous returns and a struct for named
 11116  // returns.
 11117  func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11118  	return _ERC165.Contract.contract.Call(opts, result, method, params...)
 11119  }
 11120  
 11121  // Transfer initiates a plain transaction to move funds to the contract, calling
 11122  // its default method if one is available.
 11123  func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11124  	return _ERC165.Contract.contract.Transfer(opts)
 11125  }
 11126  
 11127  // Transact invokes the (paid) contract method with params as input values.
 11128  func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11129  	return _ERC165.Contract.contract.Transact(opts, method, params...)
 11130  }
 11131  
 11132  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 11133  //
 11134  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 11135  func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 11136  	var (
 11137  		ret0 = new(bool)
 11138  	)
 11139  	out := ret0
 11140  	err := _ERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
 11141  	return *ret0, err
 11142  }
 11143  
 11144  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 11145  //
 11146  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 11147  func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
 11148  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
 11149  }
 11150  
 11151  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 11152  //
 11153  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 11154  func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 11155  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
 11156  }
 11157  
 11158  // ERC20ABI is the input ABI used to generate the binding from.
 11159  const ERC20ABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"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\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"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\":\"\",\"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\"}]"
 11160  
 11161  // ERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 11162  const ERC20BinRuntime = `608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820802770bd4b0917c80d6b47964550f6c3e437f4a0b7286b55aa9963a98c5aaf400029`
 11163  
 11164  // ERC20FuncSigs maps the 4-byte function signature to its string representation.
 11165  var ERC20FuncSigs = map[string]string{
 11166  	"dd62ed3e": "allowance(address,address)",
 11167  	"095ea7b3": "approve(address,uint256)",
 11168  	"70a08231": "balanceOf(address)",
 11169  	"a457c2d7": "decreaseAllowance(address,uint256)",
 11170  	"39509351": "increaseAllowance(address,uint256)",
 11171  	"18160ddd": "totalSupply()",
 11172  	"a9059cbb": "transfer(address,uint256)",
 11173  	"23b872dd": "transferFrom(address,address,uint256)",
 11174  }
 11175  
 11176  // ERC20Bin is the compiled bytecode used for deploying new contracts.
 11177  var ERC20Bin = "0x608060405234801561001057600080fd5b506106eb806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610149578063a457c2d71461016f578063a9059cbb1461019b578063dd62ed3e146101c757610088565b8063095ea7b31461008d57806318160ddd146100cd57806323b872dd146100e7578063395093511461011d575b600080fd5b6100b9600480360360408110156100a357600080fd5b506001600160a01b0381351690602001356101f5565b604080519115158252519081900360200190f35b6100d561020b565b60408051918252519081900360200190f35b6100b9600480360360608110156100fd57600080fd5b506001600160a01b03813581169160208101359091169060400135610211565b6100b96004803603604081101561013357600080fd5b506001600160a01b038135169060200135610268565b6100d56004803603602081101561015f57600080fd5b50356001600160a01b03166102a4565b6100b96004803603604081101561018557600080fd5b506001600160a01b0381351690602001356102bf565b6100b9600480360360408110156101b157600080fd5b506001600160a01b0381351690602001356102fb565b6100d5600480360360408110156101dd57600080fd5b506001600160a01b0381358116916020013516610308565b6000610202338484610333565b50600192915050565b60025490565b600061021e848484610425565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461025e918691610259908663ffffffff61056d16565b610333565b5060019392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff6105cd16565b6001600160a01b031660009081526020819052604090205490565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610202918590610259908663ffffffff61056d16565b6000610202338484610425565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661037b57604051600160e51b62461bcd02815260040180806020018281038252602481526020018061069c6024913960400191505060405180910390fd5b6001600160a01b0382166103c357604051600160e51b62461bcd0281526004018080602001828103825260228152602001806106556022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b03831661046d57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806106776025913960400191505060405180910390fd5b6001600160a01b0382166104b557604051600160e51b62461bcd0281526004018080602001828103825260238152602001806106326023913960400191505060405180910390fd5b6001600160a01b0383166000908152602081905260409020546104de908263ffffffff61056d16565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610513908263ffffffff6105cd16565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105c75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008282018381101561062a5760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b939250505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a72305820802770bd4b0917c80d6b47964550f6c3e437f4a0b7286b55aa9963a98c5aaf400029"
 11178  
 11179  // DeployERC20 deploys a new Klaytn contract, binding an instance of ERC20 to it.
 11180  func DeployERC20(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20, error) {
 11181  	parsed, err := abi.JSON(strings.NewReader(ERC20ABI))
 11182  	if err != nil {
 11183  		return common.Address{}, nil, nil, err
 11184  	}
 11185  
 11186  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20Bin), backend)
 11187  	if err != nil {
 11188  		return common.Address{}, nil, nil, err
 11189  	}
 11190  	return address, tx, &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
 11191  }
 11192  
 11193  // ERC20 is an auto generated Go binding around a Klaytn contract.
 11194  type ERC20 struct {
 11195  	ERC20Caller     // Read-only binding to the contract
 11196  	ERC20Transactor // Write-only binding to the contract
 11197  	ERC20Filterer   // Log filterer for contract events
 11198  }
 11199  
 11200  // ERC20Caller is an auto generated read-only Go binding around a Klaytn contract.
 11201  type ERC20Caller struct {
 11202  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11203  }
 11204  
 11205  // ERC20Transactor is an auto generated write-only Go binding around a Klaytn contract.
 11206  type ERC20Transactor struct {
 11207  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11208  }
 11209  
 11210  // ERC20Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 11211  type ERC20Filterer struct {
 11212  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11213  }
 11214  
 11215  // ERC20Session is an auto generated Go binding around a Klaytn contract,
 11216  // with pre-set call and transact options.
 11217  type ERC20Session struct {
 11218  	Contract     *ERC20            // Generic contract binding to set the session for
 11219  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 11220  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11221  }
 11222  
 11223  // ERC20CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 11224  // with pre-set call options.
 11225  type ERC20CallerSession struct {
 11226  	Contract *ERC20Caller  // Generic contract caller binding to set the session for
 11227  	CallOpts bind.CallOpts // Call options to use throughout this session
 11228  }
 11229  
 11230  // ERC20TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 11231  // with pre-set transact options.
 11232  type ERC20TransactorSession struct {
 11233  	Contract     *ERC20Transactor  // Generic contract transactor binding to set the session for
 11234  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11235  }
 11236  
 11237  // ERC20Raw is an auto generated low-level Go binding around a Klaytn contract.
 11238  type ERC20Raw struct {
 11239  	Contract *ERC20 // Generic contract binding to access the raw methods on
 11240  }
 11241  
 11242  // ERC20CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 11243  type ERC20CallerRaw struct {
 11244  	Contract *ERC20Caller // Generic read-only contract binding to access the raw methods on
 11245  }
 11246  
 11247  // ERC20TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 11248  type ERC20TransactorRaw struct {
 11249  	Contract *ERC20Transactor // Generic write-only contract binding to access the raw methods on
 11250  }
 11251  
 11252  // NewERC20 creates a new instance of ERC20, bound to a specific deployed contract.
 11253  func NewERC20(address common.Address, backend bind.ContractBackend) (*ERC20, error) {
 11254  	contract, err := bindERC20(address, backend, backend, backend)
 11255  	if err != nil {
 11256  		return nil, err
 11257  	}
 11258  	return &ERC20{ERC20Caller: ERC20Caller{contract: contract}, ERC20Transactor: ERC20Transactor{contract: contract}, ERC20Filterer: ERC20Filterer{contract: contract}}, nil
 11259  }
 11260  
 11261  // NewERC20Caller creates a new read-only instance of ERC20, bound to a specific deployed contract.
 11262  func NewERC20Caller(address common.Address, caller bind.ContractCaller) (*ERC20Caller, error) {
 11263  	contract, err := bindERC20(address, caller, nil, nil)
 11264  	if err != nil {
 11265  		return nil, err
 11266  	}
 11267  	return &ERC20Caller{contract: contract}, nil
 11268  }
 11269  
 11270  // NewERC20Transactor creates a new write-only instance of ERC20, bound to a specific deployed contract.
 11271  func NewERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC20Transactor, error) {
 11272  	contract, err := bindERC20(address, nil, transactor, nil)
 11273  	if err != nil {
 11274  		return nil, err
 11275  	}
 11276  	return &ERC20Transactor{contract: contract}, nil
 11277  }
 11278  
 11279  // NewERC20Filterer creates a new log filterer instance of ERC20, bound to a specific deployed contract.
 11280  func NewERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC20Filterer, error) {
 11281  	contract, err := bindERC20(address, nil, nil, filterer)
 11282  	if err != nil {
 11283  		return nil, err
 11284  	}
 11285  	return &ERC20Filterer{contract: contract}, nil
 11286  }
 11287  
 11288  // bindERC20 binds a generic wrapper to an already deployed contract.
 11289  func bindERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11290  	parsed, err := abi.JSON(strings.NewReader(ERC20ABI))
 11291  	if err != nil {
 11292  		return nil, err
 11293  	}
 11294  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 11295  }
 11296  
 11297  // Call invokes the (constant) contract method with params as input values and
 11298  // sets the output to result. The result type might be a single field for simple
 11299  // returns, a slice of interfaces for anonymous returns and a struct for named
 11300  // returns.
 11301  func (_ERC20 *ERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11302  	return _ERC20.Contract.ERC20Caller.contract.Call(opts, result, method, params...)
 11303  }
 11304  
 11305  // Transfer initiates a plain transaction to move funds to the contract, calling
 11306  // its default method if one is available.
 11307  func (_ERC20 *ERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11308  	return _ERC20.Contract.ERC20Transactor.contract.Transfer(opts)
 11309  }
 11310  
 11311  // Transact invokes the (paid) contract method with params as input values.
 11312  func (_ERC20 *ERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11313  	return _ERC20.Contract.ERC20Transactor.contract.Transact(opts, method, params...)
 11314  }
 11315  
 11316  // Call invokes the (constant) contract method with params as input values and
 11317  // sets the output to result. The result type might be a single field for simple
 11318  // returns, a slice of interfaces for anonymous returns and a struct for named
 11319  // returns.
 11320  func (_ERC20 *ERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11321  	return _ERC20.Contract.contract.Call(opts, result, method, params...)
 11322  }
 11323  
 11324  // Transfer initiates a plain transaction to move funds to the contract, calling
 11325  // its default method if one is available.
 11326  func (_ERC20 *ERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11327  	return _ERC20.Contract.contract.Transfer(opts)
 11328  }
 11329  
 11330  // Transact invokes the (paid) contract method with params as input values.
 11331  func (_ERC20 *ERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11332  	return _ERC20.Contract.contract.Transact(opts, method, params...)
 11333  }
 11334  
 11335  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 11336  //
 11337  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 11338  func (_ERC20 *ERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 11339  	var (
 11340  		ret0 = new(*big.Int)
 11341  	)
 11342  	out := ret0
 11343  	err := _ERC20.contract.Call(opts, out, "allowance", owner, spender)
 11344  	return *ret0, err
 11345  }
 11346  
 11347  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 11348  //
 11349  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 11350  func (_ERC20 *ERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 11351  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
 11352  }
 11353  
 11354  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 11355  //
 11356  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 11357  func (_ERC20 *ERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 11358  	return _ERC20.Contract.Allowance(&_ERC20.CallOpts, owner, spender)
 11359  }
 11360  
 11361  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 11362  //
 11363  // Solidity: function balanceOf(address account) view returns(uint256)
 11364  func (_ERC20 *ERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 11365  	var (
 11366  		ret0 = new(*big.Int)
 11367  	)
 11368  	out := ret0
 11369  	err := _ERC20.contract.Call(opts, out, "balanceOf", account)
 11370  	return *ret0, err
 11371  }
 11372  
 11373  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 11374  //
 11375  // Solidity: function balanceOf(address account) view returns(uint256)
 11376  func (_ERC20 *ERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
 11377  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
 11378  }
 11379  
 11380  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 11381  //
 11382  // Solidity: function balanceOf(address account) view returns(uint256)
 11383  func (_ERC20 *ERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 11384  	return _ERC20.Contract.BalanceOf(&_ERC20.CallOpts, account)
 11385  }
 11386  
 11387  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 11388  //
 11389  // Solidity: function totalSupply() view returns(uint256)
 11390  func (_ERC20 *ERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 11391  	var (
 11392  		ret0 = new(*big.Int)
 11393  	)
 11394  	out := ret0
 11395  	err := _ERC20.contract.Call(opts, out, "totalSupply")
 11396  	return *ret0, err
 11397  }
 11398  
 11399  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 11400  //
 11401  // Solidity: function totalSupply() view returns(uint256)
 11402  func (_ERC20 *ERC20Session) TotalSupply() (*big.Int, error) {
 11403  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
 11404  }
 11405  
 11406  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 11407  //
 11408  // Solidity: function totalSupply() view returns(uint256)
 11409  func (_ERC20 *ERC20CallerSession) TotalSupply() (*big.Int, error) {
 11410  	return _ERC20.Contract.TotalSupply(&_ERC20.CallOpts)
 11411  }
 11412  
 11413  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 11414  //
 11415  // Solidity: function approve(address spender, uint256 value) returns(bool)
 11416  func (_ERC20 *ERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
 11417  	return _ERC20.contract.Transact(opts, "approve", spender, value)
 11418  }
 11419  
 11420  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 11421  //
 11422  // Solidity: function approve(address spender, uint256 value) returns(bool)
 11423  func (_ERC20 *ERC20Session) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 11424  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value)
 11425  }
 11426  
 11427  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 11428  //
 11429  // Solidity: function approve(address spender, uint256 value) returns(bool)
 11430  func (_ERC20 *ERC20TransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 11431  	return _ERC20.Contract.Approve(&_ERC20.TransactOpts, spender, value)
 11432  }
 11433  
 11434  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 11435  //
 11436  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 11437  func (_ERC20 *ERC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 11438  	return _ERC20.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
 11439  }
 11440  
 11441  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 11442  //
 11443  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 11444  func (_ERC20 *ERC20Session) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 11445  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
 11446  }
 11447  
 11448  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 11449  //
 11450  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 11451  func (_ERC20 *ERC20TransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 11452  	return _ERC20.Contract.DecreaseAllowance(&_ERC20.TransactOpts, spender, subtractedValue)
 11453  }
 11454  
 11455  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 11456  //
 11457  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 11458  func (_ERC20 *ERC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 11459  	return _ERC20.contract.Transact(opts, "increaseAllowance", spender, addedValue)
 11460  }
 11461  
 11462  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 11463  //
 11464  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 11465  func (_ERC20 *ERC20Session) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 11466  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
 11467  }
 11468  
 11469  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 11470  //
 11471  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 11472  func (_ERC20 *ERC20TransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 11473  	return _ERC20.Contract.IncreaseAllowance(&_ERC20.TransactOpts, spender, addedValue)
 11474  }
 11475  
 11476  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 11477  //
 11478  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 11479  func (_ERC20 *ERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11480  	return _ERC20.contract.Transact(opts, "transfer", recipient, amount)
 11481  }
 11482  
 11483  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 11484  //
 11485  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 11486  func (_ERC20 *ERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11487  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
 11488  }
 11489  
 11490  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 11491  //
 11492  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 11493  func (_ERC20 *ERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11494  	return _ERC20.Contract.Transfer(&_ERC20.TransactOpts, recipient, amount)
 11495  }
 11496  
 11497  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 11498  //
 11499  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 11500  func (_ERC20 *ERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11501  	return _ERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 11502  }
 11503  
 11504  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 11505  //
 11506  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 11507  func (_ERC20 *ERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11508  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
 11509  }
 11510  
 11511  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 11512  //
 11513  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 11514  func (_ERC20 *ERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 11515  	return _ERC20.Contract.TransferFrom(&_ERC20.TransactOpts, sender, recipient, amount)
 11516  }
 11517  
 11518  // ERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20 contract.
 11519  type ERC20ApprovalIterator struct {
 11520  	Event *ERC20Approval // Event containing the contract specifics and raw log
 11521  
 11522  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11523  	event    string              // Event name to use for unpacking event data
 11524  
 11525  	logs chan types.Log      // Log channel receiving the found contract events
 11526  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11527  	done bool                // Whether the subscription completed delivering logs
 11528  	fail error               // Occurred error to stop iteration
 11529  }
 11530  
 11531  // Next advances the iterator to the subsequent event, returning whether there
 11532  // are any more events found. In case of a retrieval or parsing error, false is
 11533  // returned and Error() can be queried for the exact failure.
 11534  func (it *ERC20ApprovalIterator) Next() bool {
 11535  	// If the iterator failed, stop iterating
 11536  	if it.fail != nil {
 11537  		return false
 11538  	}
 11539  	// If the iterator completed, deliver directly whatever's available
 11540  	if it.done {
 11541  		select {
 11542  		case log := <-it.logs:
 11543  			it.Event = new(ERC20Approval)
 11544  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11545  				it.fail = err
 11546  				return false
 11547  			}
 11548  			it.Event.Raw = log
 11549  			return true
 11550  
 11551  		default:
 11552  			return false
 11553  		}
 11554  	}
 11555  	// Iterator still in progress, wait for either a data or an error event
 11556  	select {
 11557  	case log := <-it.logs:
 11558  		it.Event = new(ERC20Approval)
 11559  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11560  			it.fail = err
 11561  			return false
 11562  		}
 11563  		it.Event.Raw = log
 11564  		return true
 11565  
 11566  	case err := <-it.sub.Err():
 11567  		it.done = true
 11568  		it.fail = err
 11569  		return it.Next()
 11570  	}
 11571  }
 11572  
 11573  // Error returns any retrieval or parsing error occurred during filtering.
 11574  func (it *ERC20ApprovalIterator) Error() error {
 11575  	return it.fail
 11576  }
 11577  
 11578  // Close terminates the iteration process, releasing any pending underlying
 11579  // resources.
 11580  func (it *ERC20ApprovalIterator) Close() error {
 11581  	it.sub.Unsubscribe()
 11582  	return nil
 11583  }
 11584  
 11585  // ERC20Approval represents a Approval event raised by the ERC20 contract.
 11586  type ERC20Approval struct {
 11587  	Owner   common.Address
 11588  	Spender common.Address
 11589  	Value   *big.Int
 11590  	Raw     types.Log // Blockchain specific contextual infos
 11591  }
 11592  
 11593  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 11594  //
 11595  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 11596  func (_ERC20 *ERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20ApprovalIterator, error) {
 11597  
 11598  	var ownerRule []interface{}
 11599  	for _, ownerItem := range owner {
 11600  		ownerRule = append(ownerRule, ownerItem)
 11601  	}
 11602  	var spenderRule []interface{}
 11603  	for _, spenderItem := range spender {
 11604  		spenderRule = append(spenderRule, spenderItem)
 11605  	}
 11606  
 11607  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 11608  	if err != nil {
 11609  		return nil, err
 11610  	}
 11611  	return &ERC20ApprovalIterator{contract: _ERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
 11612  }
 11613  
 11614  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 11615  //
 11616  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 11617  func (_ERC20 *ERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 11618  
 11619  	var ownerRule []interface{}
 11620  	for _, ownerItem := range owner {
 11621  		ownerRule = append(ownerRule, ownerItem)
 11622  	}
 11623  	var spenderRule []interface{}
 11624  	for _, spenderItem := range spender {
 11625  		spenderRule = append(spenderRule, spenderItem)
 11626  	}
 11627  
 11628  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 11629  	if err != nil {
 11630  		return nil, err
 11631  	}
 11632  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11633  		defer sub.Unsubscribe()
 11634  		for {
 11635  			select {
 11636  			case log := <-logs:
 11637  				// New log arrived, parse the event and forward to the user
 11638  				event := new(ERC20Approval)
 11639  				if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
 11640  					return err
 11641  				}
 11642  				event.Raw = log
 11643  
 11644  				select {
 11645  				case sink <- event:
 11646  				case err := <-sub.Err():
 11647  					return err
 11648  				case <-quit:
 11649  					return nil
 11650  				}
 11651  			case err := <-sub.Err():
 11652  				return err
 11653  			case <-quit:
 11654  				return nil
 11655  			}
 11656  		}
 11657  	}), nil
 11658  }
 11659  
 11660  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 11661  //
 11662  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 11663  func (_ERC20 *ERC20Filterer) ParseApproval(log types.Log) (*ERC20Approval, error) {
 11664  	event := new(ERC20Approval)
 11665  	if err := _ERC20.contract.UnpackLog(event, "Approval", log); err != nil {
 11666  		return nil, err
 11667  	}
 11668  	return event, nil
 11669  }
 11670  
 11671  // ERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20 contract.
 11672  type ERC20TransferIterator struct {
 11673  	Event *ERC20Transfer // Event containing the contract specifics and raw log
 11674  
 11675  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11676  	event    string              // Event name to use for unpacking event data
 11677  
 11678  	logs chan types.Log      // Log channel receiving the found contract events
 11679  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11680  	done bool                // Whether the subscription completed delivering logs
 11681  	fail error               // Occurred error to stop iteration
 11682  }
 11683  
 11684  // Next advances the iterator to the subsequent event, returning whether there
 11685  // are any more events found. In case of a retrieval or parsing error, false is
 11686  // returned and Error() can be queried for the exact failure.
 11687  func (it *ERC20TransferIterator) Next() bool {
 11688  	// If the iterator failed, stop iterating
 11689  	if it.fail != nil {
 11690  		return false
 11691  	}
 11692  	// If the iterator completed, deliver directly whatever's available
 11693  	if it.done {
 11694  		select {
 11695  		case log := <-it.logs:
 11696  			it.Event = new(ERC20Transfer)
 11697  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11698  				it.fail = err
 11699  				return false
 11700  			}
 11701  			it.Event.Raw = log
 11702  			return true
 11703  
 11704  		default:
 11705  			return false
 11706  		}
 11707  	}
 11708  	// Iterator still in progress, wait for either a data or an error event
 11709  	select {
 11710  	case log := <-it.logs:
 11711  		it.Event = new(ERC20Transfer)
 11712  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11713  			it.fail = err
 11714  			return false
 11715  		}
 11716  		it.Event.Raw = log
 11717  		return true
 11718  
 11719  	case err := <-it.sub.Err():
 11720  		it.done = true
 11721  		it.fail = err
 11722  		return it.Next()
 11723  	}
 11724  }
 11725  
 11726  // Error returns any retrieval or parsing error occurred during filtering.
 11727  func (it *ERC20TransferIterator) Error() error {
 11728  	return it.fail
 11729  }
 11730  
 11731  // Close terminates the iteration process, releasing any pending underlying
 11732  // resources.
 11733  func (it *ERC20TransferIterator) Close() error {
 11734  	it.sub.Unsubscribe()
 11735  	return nil
 11736  }
 11737  
 11738  // ERC20Transfer represents a Transfer event raised by the ERC20 contract.
 11739  type ERC20Transfer struct {
 11740  	From  common.Address
 11741  	To    common.Address
 11742  	Value *big.Int
 11743  	Raw   types.Log // Blockchain specific contextual infos
 11744  }
 11745  
 11746  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11747  //
 11748  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 11749  func (_ERC20 *ERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20TransferIterator, error) {
 11750  
 11751  	var fromRule []interface{}
 11752  	for _, fromItem := range from {
 11753  		fromRule = append(fromRule, fromItem)
 11754  	}
 11755  	var toRule []interface{}
 11756  	for _, toItem := range to {
 11757  		toRule = append(toRule, toItem)
 11758  	}
 11759  
 11760  	logs, sub, err := _ERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 11761  	if err != nil {
 11762  		return nil, err
 11763  	}
 11764  	return &ERC20TransferIterator{contract: _ERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
 11765  }
 11766  
 11767  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11768  //
 11769  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 11770  func (_ERC20 *ERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 11771  
 11772  	var fromRule []interface{}
 11773  	for _, fromItem := range from {
 11774  		fromRule = append(fromRule, fromItem)
 11775  	}
 11776  	var toRule []interface{}
 11777  	for _, toItem := range to {
 11778  		toRule = append(toRule, toItem)
 11779  	}
 11780  
 11781  	logs, sub, err := _ERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 11782  	if err != nil {
 11783  		return nil, err
 11784  	}
 11785  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11786  		defer sub.Unsubscribe()
 11787  		for {
 11788  			select {
 11789  			case log := <-logs:
 11790  				// New log arrived, parse the event and forward to the user
 11791  				event := new(ERC20Transfer)
 11792  				if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
 11793  					return err
 11794  				}
 11795  				event.Raw = log
 11796  
 11797  				select {
 11798  				case sink <- event:
 11799  				case err := <-sub.Err():
 11800  					return err
 11801  				case <-quit:
 11802  					return nil
 11803  				}
 11804  			case err := <-sub.Err():
 11805  				return err
 11806  			case <-quit:
 11807  				return nil
 11808  			}
 11809  		}
 11810  	}), nil
 11811  }
 11812  
 11813  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 11814  //
 11815  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 11816  func (_ERC20 *ERC20Filterer) ParseTransfer(log types.Log) (*ERC20Transfer, error) {
 11817  	event := new(ERC20Transfer)
 11818  	if err := _ERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
 11819  		return nil, err
 11820  	}
 11821  	return event, nil
 11822  }
 11823  
 11824  // ERC20BurnableABI is the input ABI used to generate the binding from.
 11825  const ERC20BurnableABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"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\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"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\":\"\",\"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\"}]"
 11826  
 11827  // ERC20BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 11828  const ERC20BurnableBinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a7230582013b4ee4a596e91b545aeb6447c3788b121a99567674027b21b642c7da8dc493c0029`
 11829  
 11830  // ERC20BurnableFuncSigs maps the 4-byte function signature to its string representation.
 11831  var ERC20BurnableFuncSigs = map[string]string{
 11832  	"dd62ed3e": "allowance(address,address)",
 11833  	"095ea7b3": "approve(address,uint256)",
 11834  	"70a08231": "balanceOf(address)",
 11835  	"42966c68": "burn(uint256)",
 11836  	"79cc6790": "burnFrom(address,uint256)",
 11837  	"a457c2d7": "decreaseAllowance(address,uint256)",
 11838  	"39509351": "increaseAllowance(address,uint256)",
 11839  	"18160ddd": "totalSupply()",
 11840  	"a9059cbb": "transfer(address,uint256)",
 11841  	"23b872dd": "transferFrom(address,address,uint256)",
 11842  }
 11843  
 11844  // ERC20BurnableBin is the compiled bytecode used for deploying new contracts.
 11845  var ERC20BurnableBin = "0x608060405234801561001057600080fd5b506108a9806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806370a082311161006657806370a082311461017e57806379cc6790146101a4578063a457c2d7146101d0578063a9059cbb146101fc578063dd62ed3e146102285761009e565b8063095ea7b3146100a357806318160ddd146100e357806323b872dd146100fd578063395093511461013357806342966c681461015f575b600080fd5b6100cf600480360360408110156100b957600080fd5b506001600160a01b038135169060200135610256565b604080519115158252519081900360200190f35b6100eb61026c565b60408051918252519081900360200190f35b6100cf6004803603606081101561011357600080fd5b506001600160a01b03813581169160208101359091169060400135610272565b6100cf6004803603604081101561014957600080fd5b506001600160a01b0381351690602001356102c9565b61017c6004803603602081101561017557600080fd5b5035610305565b005b6100eb6004803603602081101561019457600080fd5b50356001600160a01b0316610312565b61017c600480360360408110156101ba57600080fd5b506001600160a01b03813516906020013561032d565b6100cf600480360360408110156101e657600080fd5b506001600160a01b03813516906020013561033b565b6100cf6004803603604081101561021257600080fd5b506001600160a01b038135169060200135610377565b6100eb6004803603604081101561023e57600080fd5b506001600160a01b0381358116916020013516610384565b60006102633384846103af565b50600192915050565b60025490565b600061027f8484846104a1565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546102bf9186916102ba908663ffffffff6105e916565b6103af565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff61064916565b61030f33826106ad565b50565b6001600160a01b031660009081526020819052604090205490565b6103378282610789565b5050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102639185906102ba908663ffffffff6105e916565b60006102633384846104a1565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103f757604051600160e51b62461bcd02815260040180806020018281038252602481526020018061085a6024913960400191505060405180910390fd5b6001600160a01b03821661043f57604051600160e51b62461bcd0281526004018080602001828103825260228152602001806107f26022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166104e957604051600160e51b62461bcd0281526004018080602001828103825260258152602001806108356025913960400191505060405180910390fd5b6001600160a01b03821661053157604051600160e51b62461bcd0281526004018080602001828103825260238152602001806107cf6023913960400191505060405180910390fd5b6001600160a01b03831660009081526020819052604090205461055a908263ffffffff6105e916565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461058f908263ffffffff61064916565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156106435760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156106a65760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166106f557604051600160e51b62461bcd0281526004018080602001828103825260218152602001806108146021913960400191505060405180910390fd5b600254610708908263ffffffff6105e916565b6002556001600160a01b038216600090815260208190526040902054610734908263ffffffff6105e916565b6001600160a01b038316600081815260208181526040808320949094558351858152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35050565b61079382826106ad565b6001600160a01b0382166000908152600160209081526040808320338085529252909120546103379184916102ba908563ffffffff6105e91656fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a7230582013b4ee4a596e91b545aeb6447c3788b121a99567674027b21b642c7da8dc493c0029"
 11846  
 11847  // DeployERC20Burnable deploys a new Klaytn contract, binding an instance of ERC20Burnable to it.
 11848  func DeployERC20Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Burnable, error) {
 11849  	parsed, err := abi.JSON(strings.NewReader(ERC20BurnableABI))
 11850  	if err != nil {
 11851  		return common.Address{}, nil, nil, err
 11852  	}
 11853  
 11854  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20BurnableBin), backend)
 11855  	if err != nil {
 11856  		return common.Address{}, nil, nil, err
 11857  	}
 11858  	return address, tx, &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
 11859  }
 11860  
 11861  // ERC20Burnable is an auto generated Go binding around a Klaytn contract.
 11862  type ERC20Burnable struct {
 11863  	ERC20BurnableCaller     // Read-only binding to the contract
 11864  	ERC20BurnableTransactor // Write-only binding to the contract
 11865  	ERC20BurnableFilterer   // Log filterer for contract events
 11866  }
 11867  
 11868  // ERC20BurnableCaller is an auto generated read-only Go binding around a Klaytn contract.
 11869  type ERC20BurnableCaller struct {
 11870  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11871  }
 11872  
 11873  // ERC20BurnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 11874  type ERC20BurnableTransactor struct {
 11875  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11876  }
 11877  
 11878  // ERC20BurnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 11879  type ERC20BurnableFilterer struct {
 11880  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11881  }
 11882  
 11883  // ERC20BurnableSession is an auto generated Go binding around a Klaytn contract,
 11884  // with pre-set call and transact options.
 11885  type ERC20BurnableSession struct {
 11886  	Contract     *ERC20Burnable    // Generic contract binding to set the session for
 11887  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 11888  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11889  }
 11890  
 11891  // ERC20BurnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 11892  // with pre-set call options.
 11893  type ERC20BurnableCallerSession struct {
 11894  	Contract *ERC20BurnableCaller // Generic contract caller binding to set the session for
 11895  	CallOpts bind.CallOpts        // Call options to use throughout this session
 11896  }
 11897  
 11898  // ERC20BurnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 11899  // with pre-set transact options.
 11900  type ERC20BurnableTransactorSession struct {
 11901  	Contract     *ERC20BurnableTransactor // Generic contract transactor binding to set the session for
 11902  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
 11903  }
 11904  
 11905  // ERC20BurnableRaw is an auto generated low-level Go binding around a Klaytn contract.
 11906  type ERC20BurnableRaw struct {
 11907  	Contract *ERC20Burnable // Generic contract binding to access the raw methods on
 11908  }
 11909  
 11910  // ERC20BurnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 11911  type ERC20BurnableCallerRaw struct {
 11912  	Contract *ERC20BurnableCaller // Generic read-only contract binding to access the raw methods on
 11913  }
 11914  
 11915  // ERC20BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 11916  type ERC20BurnableTransactorRaw struct {
 11917  	Contract *ERC20BurnableTransactor // Generic write-only contract binding to access the raw methods on
 11918  }
 11919  
 11920  // NewERC20Burnable creates a new instance of ERC20Burnable, bound to a specific deployed contract.
 11921  func NewERC20Burnable(address common.Address, backend bind.ContractBackend) (*ERC20Burnable, error) {
 11922  	contract, err := bindERC20Burnable(address, backend, backend, backend)
 11923  	if err != nil {
 11924  		return nil, err
 11925  	}
 11926  	return &ERC20Burnable{ERC20BurnableCaller: ERC20BurnableCaller{contract: contract}, ERC20BurnableTransactor: ERC20BurnableTransactor{contract: contract}, ERC20BurnableFilterer: ERC20BurnableFilterer{contract: contract}}, nil
 11927  }
 11928  
 11929  // NewERC20BurnableCaller creates a new read-only instance of ERC20Burnable, bound to a specific deployed contract.
 11930  func NewERC20BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC20BurnableCaller, error) {
 11931  	contract, err := bindERC20Burnable(address, caller, nil, nil)
 11932  	if err != nil {
 11933  		return nil, err
 11934  	}
 11935  	return &ERC20BurnableCaller{contract: contract}, nil
 11936  }
 11937  
 11938  // NewERC20BurnableTransactor creates a new write-only instance of ERC20Burnable, bound to a specific deployed contract.
 11939  func NewERC20BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20BurnableTransactor, error) {
 11940  	contract, err := bindERC20Burnable(address, nil, transactor, nil)
 11941  	if err != nil {
 11942  		return nil, err
 11943  	}
 11944  	return &ERC20BurnableTransactor{contract: contract}, nil
 11945  }
 11946  
 11947  // NewERC20BurnableFilterer creates a new log filterer instance of ERC20Burnable, bound to a specific deployed contract.
 11948  func NewERC20BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20BurnableFilterer, error) {
 11949  	contract, err := bindERC20Burnable(address, nil, nil, filterer)
 11950  	if err != nil {
 11951  		return nil, err
 11952  	}
 11953  	return &ERC20BurnableFilterer{contract: contract}, nil
 11954  }
 11955  
 11956  // bindERC20Burnable binds a generic wrapper to an already deployed contract.
 11957  func bindERC20Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11958  	parsed, err := abi.JSON(strings.NewReader(ERC20BurnableABI))
 11959  	if err != nil {
 11960  		return nil, err
 11961  	}
 11962  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 11963  }
 11964  
 11965  // Call invokes the (constant) contract method with params as input values and
 11966  // sets the output to result. The result type might be a single field for simple
 11967  // returns, a slice of interfaces for anonymous returns and a struct for named
 11968  // returns.
 11969  func (_ERC20Burnable *ERC20BurnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11970  	return _ERC20Burnable.Contract.ERC20BurnableCaller.contract.Call(opts, result, method, params...)
 11971  }
 11972  
 11973  // Transfer initiates a plain transaction to move funds to the contract, calling
 11974  // its default method if one is available.
 11975  func (_ERC20Burnable *ERC20BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11976  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transfer(opts)
 11977  }
 11978  
 11979  // Transact invokes the (paid) contract method with params as input values.
 11980  func (_ERC20Burnable *ERC20BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11981  	return _ERC20Burnable.Contract.ERC20BurnableTransactor.contract.Transact(opts, method, params...)
 11982  }
 11983  
 11984  // Call invokes the (constant) contract method with params as input values and
 11985  // sets the output to result. The result type might be a single field for simple
 11986  // returns, a slice of interfaces for anonymous returns and a struct for named
 11987  // returns.
 11988  func (_ERC20Burnable *ERC20BurnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11989  	return _ERC20Burnable.Contract.contract.Call(opts, result, method, params...)
 11990  }
 11991  
 11992  // Transfer initiates a plain transaction to move funds to the contract, calling
 11993  // its default method if one is available.
 11994  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11995  	return _ERC20Burnable.Contract.contract.Transfer(opts)
 11996  }
 11997  
 11998  // Transact invokes the (paid) contract method with params as input values.
 11999  func (_ERC20Burnable *ERC20BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12000  	return _ERC20Burnable.Contract.contract.Transact(opts, method, params...)
 12001  }
 12002  
 12003  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 12004  //
 12005  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 12006  func (_ERC20Burnable *ERC20BurnableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 12007  	var (
 12008  		ret0 = new(*big.Int)
 12009  	)
 12010  	out := ret0
 12011  	err := _ERC20Burnable.contract.Call(opts, out, "allowance", owner, spender)
 12012  	return *ret0, err
 12013  }
 12014  
 12015  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 12016  //
 12017  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 12018  func (_ERC20Burnable *ERC20BurnableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 12019  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
 12020  }
 12021  
 12022  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 12023  //
 12024  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 12025  func (_ERC20Burnable *ERC20BurnableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 12026  	return _ERC20Burnable.Contract.Allowance(&_ERC20Burnable.CallOpts, owner, spender)
 12027  }
 12028  
 12029  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 12030  //
 12031  // Solidity: function balanceOf(address account) view returns(uint256)
 12032  func (_ERC20Burnable *ERC20BurnableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 12033  	var (
 12034  		ret0 = new(*big.Int)
 12035  	)
 12036  	out := ret0
 12037  	err := _ERC20Burnable.contract.Call(opts, out, "balanceOf", account)
 12038  	return *ret0, err
 12039  }
 12040  
 12041  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 12042  //
 12043  // Solidity: function balanceOf(address account) view returns(uint256)
 12044  func (_ERC20Burnable *ERC20BurnableSession) BalanceOf(account common.Address) (*big.Int, error) {
 12045  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
 12046  }
 12047  
 12048  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 12049  //
 12050  // Solidity: function balanceOf(address account) view returns(uint256)
 12051  func (_ERC20Burnable *ERC20BurnableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 12052  	return _ERC20Burnable.Contract.BalanceOf(&_ERC20Burnable.CallOpts, account)
 12053  }
 12054  
 12055  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 12056  //
 12057  // Solidity: function totalSupply() view returns(uint256)
 12058  func (_ERC20Burnable *ERC20BurnableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 12059  	var (
 12060  		ret0 = new(*big.Int)
 12061  	)
 12062  	out := ret0
 12063  	err := _ERC20Burnable.contract.Call(opts, out, "totalSupply")
 12064  	return *ret0, err
 12065  }
 12066  
 12067  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 12068  //
 12069  // Solidity: function totalSupply() view returns(uint256)
 12070  func (_ERC20Burnable *ERC20BurnableSession) TotalSupply() (*big.Int, error) {
 12071  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
 12072  }
 12073  
 12074  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 12075  //
 12076  // Solidity: function totalSupply() view returns(uint256)
 12077  func (_ERC20Burnable *ERC20BurnableCallerSession) TotalSupply() (*big.Int, error) {
 12078  	return _ERC20Burnable.Contract.TotalSupply(&_ERC20Burnable.CallOpts)
 12079  }
 12080  
 12081  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 12082  //
 12083  // Solidity: function approve(address spender, uint256 value) returns(bool)
 12084  func (_ERC20Burnable *ERC20BurnableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
 12085  	return _ERC20Burnable.contract.Transact(opts, "approve", spender, value)
 12086  }
 12087  
 12088  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 12089  //
 12090  // Solidity: function approve(address spender, uint256 value) returns(bool)
 12091  func (_ERC20Burnable *ERC20BurnableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 12092  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value)
 12093  }
 12094  
 12095  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 12096  //
 12097  // Solidity: function approve(address spender, uint256 value) returns(bool)
 12098  func (_ERC20Burnable *ERC20BurnableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 12099  	return _ERC20Burnable.Contract.Approve(&_ERC20Burnable.TransactOpts, spender, value)
 12100  }
 12101  
 12102  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 12103  //
 12104  // Solidity: function burn(uint256 amount) returns()
 12105  func (_ERC20Burnable *ERC20BurnableTransactor) Burn(opts *bind.TransactOpts, amount *big.Int) (*types.Transaction, error) {
 12106  	return _ERC20Burnable.contract.Transact(opts, "burn", amount)
 12107  }
 12108  
 12109  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 12110  //
 12111  // Solidity: function burn(uint256 amount) returns()
 12112  func (_ERC20Burnable *ERC20BurnableSession) Burn(amount *big.Int) (*types.Transaction, error) {
 12113  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
 12114  }
 12115  
 12116  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 12117  //
 12118  // Solidity: function burn(uint256 amount) returns()
 12119  func (_ERC20Burnable *ERC20BurnableTransactorSession) Burn(amount *big.Int) (*types.Transaction, error) {
 12120  	return _ERC20Burnable.Contract.Burn(&_ERC20Burnable.TransactOpts, amount)
 12121  }
 12122  
 12123  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 12124  //
 12125  // Solidity: function burnFrom(address account, uint256 amount) returns()
 12126  func (_ERC20Burnable *ERC20BurnableTransactor) BurnFrom(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
 12127  	return _ERC20Burnable.contract.Transact(opts, "burnFrom", account, amount)
 12128  }
 12129  
 12130  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 12131  //
 12132  // Solidity: function burnFrom(address account, uint256 amount) returns()
 12133  func (_ERC20Burnable *ERC20BurnableSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
 12134  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
 12135  }
 12136  
 12137  // BurnFrom is a paid mutator transaction binding the contract method 0x79cc6790.
 12138  //
 12139  // Solidity: function burnFrom(address account, uint256 amount) returns()
 12140  func (_ERC20Burnable *ERC20BurnableTransactorSession) BurnFrom(account common.Address, amount *big.Int) (*types.Transaction, error) {
 12141  	return _ERC20Burnable.Contract.BurnFrom(&_ERC20Burnable.TransactOpts, account, amount)
 12142  }
 12143  
 12144  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 12145  //
 12146  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 12147  func (_ERC20Burnable *ERC20BurnableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 12148  	return _ERC20Burnable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
 12149  }
 12150  
 12151  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 12152  //
 12153  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 12154  func (_ERC20Burnable *ERC20BurnableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 12155  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
 12156  }
 12157  
 12158  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 12159  //
 12160  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 12161  func (_ERC20Burnable *ERC20BurnableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 12162  	return _ERC20Burnable.Contract.DecreaseAllowance(&_ERC20Burnable.TransactOpts, spender, subtractedValue)
 12163  }
 12164  
 12165  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 12166  //
 12167  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 12168  func (_ERC20Burnable *ERC20BurnableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 12169  	return _ERC20Burnable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
 12170  }
 12171  
 12172  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 12173  //
 12174  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 12175  func (_ERC20Burnable *ERC20BurnableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 12176  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
 12177  }
 12178  
 12179  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 12180  //
 12181  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 12182  func (_ERC20Burnable *ERC20BurnableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 12183  	return _ERC20Burnable.Contract.IncreaseAllowance(&_ERC20Burnable.TransactOpts, spender, addedValue)
 12184  }
 12185  
 12186  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 12187  //
 12188  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 12189  func (_ERC20Burnable *ERC20BurnableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12190  	return _ERC20Burnable.contract.Transact(opts, "transfer", recipient, amount)
 12191  }
 12192  
 12193  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 12194  //
 12195  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 12196  func (_ERC20Burnable *ERC20BurnableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12197  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
 12198  }
 12199  
 12200  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 12201  //
 12202  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 12203  func (_ERC20Burnable *ERC20BurnableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12204  	return _ERC20Burnable.Contract.Transfer(&_ERC20Burnable.TransactOpts, recipient, amount)
 12205  }
 12206  
 12207  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 12208  //
 12209  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 12210  func (_ERC20Burnable *ERC20BurnableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12211  	return _ERC20Burnable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 12212  }
 12213  
 12214  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 12215  //
 12216  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 12217  func (_ERC20Burnable *ERC20BurnableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12218  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
 12219  }
 12220  
 12221  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 12222  //
 12223  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 12224  func (_ERC20Burnable *ERC20BurnableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12225  	return _ERC20Burnable.Contract.TransferFrom(&_ERC20Burnable.TransactOpts, sender, recipient, amount)
 12226  }
 12227  
 12228  // ERC20BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Burnable contract.
 12229  type ERC20BurnableApprovalIterator struct {
 12230  	Event *ERC20BurnableApproval // Event containing the contract specifics and raw log
 12231  
 12232  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12233  	event    string              // Event name to use for unpacking event data
 12234  
 12235  	logs chan types.Log      // Log channel receiving the found contract events
 12236  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 12237  	done bool                // Whether the subscription completed delivering logs
 12238  	fail error               // Occurred error to stop iteration
 12239  }
 12240  
 12241  // Next advances the iterator to the subsequent event, returning whether there
 12242  // are any more events found. In case of a retrieval or parsing error, false is
 12243  // returned and Error() can be queried for the exact failure.
 12244  func (it *ERC20BurnableApprovalIterator) Next() bool {
 12245  	// If the iterator failed, stop iterating
 12246  	if it.fail != nil {
 12247  		return false
 12248  	}
 12249  	// If the iterator completed, deliver directly whatever's available
 12250  	if it.done {
 12251  		select {
 12252  		case log := <-it.logs:
 12253  			it.Event = new(ERC20BurnableApproval)
 12254  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12255  				it.fail = err
 12256  				return false
 12257  			}
 12258  			it.Event.Raw = log
 12259  			return true
 12260  
 12261  		default:
 12262  			return false
 12263  		}
 12264  	}
 12265  	// Iterator still in progress, wait for either a data or an error event
 12266  	select {
 12267  	case log := <-it.logs:
 12268  		it.Event = new(ERC20BurnableApproval)
 12269  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12270  			it.fail = err
 12271  			return false
 12272  		}
 12273  		it.Event.Raw = log
 12274  		return true
 12275  
 12276  	case err := <-it.sub.Err():
 12277  		it.done = true
 12278  		it.fail = err
 12279  		return it.Next()
 12280  	}
 12281  }
 12282  
 12283  // Error returns any retrieval or parsing error occurred during filtering.
 12284  func (it *ERC20BurnableApprovalIterator) Error() error {
 12285  	return it.fail
 12286  }
 12287  
 12288  // Close terminates the iteration process, releasing any pending underlying
 12289  // resources.
 12290  func (it *ERC20BurnableApprovalIterator) Close() error {
 12291  	it.sub.Unsubscribe()
 12292  	return nil
 12293  }
 12294  
 12295  // ERC20BurnableApproval represents a Approval event raised by the ERC20Burnable contract.
 12296  type ERC20BurnableApproval struct {
 12297  	Owner   common.Address
 12298  	Spender common.Address
 12299  	Value   *big.Int
 12300  	Raw     types.Log // Blockchain specific contextual infos
 12301  }
 12302  
 12303  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 12304  //
 12305  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 12306  func (_ERC20Burnable *ERC20BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20BurnableApprovalIterator, error) {
 12307  
 12308  	var ownerRule []interface{}
 12309  	for _, ownerItem := range owner {
 12310  		ownerRule = append(ownerRule, ownerItem)
 12311  	}
 12312  	var spenderRule []interface{}
 12313  	for _, spenderItem := range spender {
 12314  		spenderRule = append(spenderRule, spenderItem)
 12315  	}
 12316  
 12317  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 12318  	if err != nil {
 12319  		return nil, err
 12320  	}
 12321  	return &ERC20BurnableApprovalIterator{contract: _ERC20Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
 12322  }
 12323  
 12324  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 12325  //
 12326  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 12327  func (_ERC20Burnable *ERC20BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20BurnableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 12328  
 12329  	var ownerRule []interface{}
 12330  	for _, ownerItem := range owner {
 12331  		ownerRule = append(ownerRule, ownerItem)
 12332  	}
 12333  	var spenderRule []interface{}
 12334  	for _, spenderItem := range spender {
 12335  		spenderRule = append(spenderRule, spenderItem)
 12336  	}
 12337  
 12338  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 12339  	if err != nil {
 12340  		return nil, err
 12341  	}
 12342  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12343  		defer sub.Unsubscribe()
 12344  		for {
 12345  			select {
 12346  			case log := <-logs:
 12347  				// New log arrived, parse the event and forward to the user
 12348  				event := new(ERC20BurnableApproval)
 12349  				if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
 12350  					return err
 12351  				}
 12352  				event.Raw = log
 12353  
 12354  				select {
 12355  				case sink <- event:
 12356  				case err := <-sub.Err():
 12357  					return err
 12358  				case <-quit:
 12359  					return nil
 12360  				}
 12361  			case err := <-sub.Err():
 12362  				return err
 12363  			case <-quit:
 12364  				return nil
 12365  			}
 12366  		}
 12367  	}), nil
 12368  }
 12369  
 12370  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 12371  //
 12372  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 12373  func (_ERC20Burnable *ERC20BurnableFilterer) ParseApproval(log types.Log) (*ERC20BurnableApproval, error) {
 12374  	event := new(ERC20BurnableApproval)
 12375  	if err := _ERC20Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
 12376  		return nil, err
 12377  	}
 12378  	return event, nil
 12379  }
 12380  
 12381  // ERC20BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Burnable contract.
 12382  type ERC20BurnableTransferIterator struct {
 12383  	Event *ERC20BurnableTransfer // Event containing the contract specifics and raw log
 12384  
 12385  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12386  	event    string              // Event name to use for unpacking event data
 12387  
 12388  	logs chan types.Log      // Log channel receiving the found contract events
 12389  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 12390  	done bool                // Whether the subscription completed delivering logs
 12391  	fail error               // Occurred error to stop iteration
 12392  }
 12393  
 12394  // Next advances the iterator to the subsequent event, returning whether there
 12395  // are any more events found. In case of a retrieval or parsing error, false is
 12396  // returned and Error() can be queried for the exact failure.
 12397  func (it *ERC20BurnableTransferIterator) Next() bool {
 12398  	// If the iterator failed, stop iterating
 12399  	if it.fail != nil {
 12400  		return false
 12401  	}
 12402  	// If the iterator completed, deliver directly whatever's available
 12403  	if it.done {
 12404  		select {
 12405  		case log := <-it.logs:
 12406  			it.Event = new(ERC20BurnableTransfer)
 12407  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12408  				it.fail = err
 12409  				return false
 12410  			}
 12411  			it.Event.Raw = log
 12412  			return true
 12413  
 12414  		default:
 12415  			return false
 12416  		}
 12417  	}
 12418  	// Iterator still in progress, wait for either a data or an error event
 12419  	select {
 12420  	case log := <-it.logs:
 12421  		it.Event = new(ERC20BurnableTransfer)
 12422  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 12423  			it.fail = err
 12424  			return false
 12425  		}
 12426  		it.Event.Raw = log
 12427  		return true
 12428  
 12429  	case err := <-it.sub.Err():
 12430  		it.done = true
 12431  		it.fail = err
 12432  		return it.Next()
 12433  	}
 12434  }
 12435  
 12436  // Error returns any retrieval or parsing error occurred during filtering.
 12437  func (it *ERC20BurnableTransferIterator) Error() error {
 12438  	return it.fail
 12439  }
 12440  
 12441  // Close terminates the iteration process, releasing any pending underlying
 12442  // resources.
 12443  func (it *ERC20BurnableTransferIterator) Close() error {
 12444  	it.sub.Unsubscribe()
 12445  	return nil
 12446  }
 12447  
 12448  // ERC20BurnableTransfer represents a Transfer event raised by the ERC20Burnable contract.
 12449  type ERC20BurnableTransfer struct {
 12450  	From  common.Address
 12451  	To    common.Address
 12452  	Value *big.Int
 12453  	Raw   types.Log // Blockchain specific contextual infos
 12454  }
 12455  
 12456  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 12457  //
 12458  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 12459  func (_ERC20Burnable *ERC20BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20BurnableTransferIterator, error) {
 12460  
 12461  	var fromRule []interface{}
 12462  	for _, fromItem := range from {
 12463  		fromRule = append(fromRule, fromItem)
 12464  	}
 12465  	var toRule []interface{}
 12466  	for _, toItem := range to {
 12467  		toRule = append(toRule, toItem)
 12468  	}
 12469  
 12470  	logs, sub, err := _ERC20Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 12471  	if err != nil {
 12472  		return nil, err
 12473  	}
 12474  	return &ERC20BurnableTransferIterator{contract: _ERC20Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
 12475  }
 12476  
 12477  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 12478  //
 12479  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 12480  func (_ERC20Burnable *ERC20BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20BurnableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 12481  
 12482  	var fromRule []interface{}
 12483  	for _, fromItem := range from {
 12484  		fromRule = append(fromRule, fromItem)
 12485  	}
 12486  	var toRule []interface{}
 12487  	for _, toItem := range to {
 12488  		toRule = append(toRule, toItem)
 12489  	}
 12490  
 12491  	logs, sub, err := _ERC20Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 12492  	if err != nil {
 12493  		return nil, err
 12494  	}
 12495  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12496  		defer sub.Unsubscribe()
 12497  		for {
 12498  			select {
 12499  			case log := <-logs:
 12500  				// New log arrived, parse the event and forward to the user
 12501  				event := new(ERC20BurnableTransfer)
 12502  				if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
 12503  					return err
 12504  				}
 12505  				event.Raw = log
 12506  
 12507  				select {
 12508  				case sink <- event:
 12509  				case err := <-sub.Err():
 12510  					return err
 12511  				case <-quit:
 12512  					return nil
 12513  				}
 12514  			case err := <-sub.Err():
 12515  				return err
 12516  			case <-quit:
 12517  				return nil
 12518  			}
 12519  		}
 12520  	}), nil
 12521  }
 12522  
 12523  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 12524  //
 12525  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 12526  func (_ERC20Burnable *ERC20BurnableFilterer) ParseTransfer(log types.Log) (*ERC20BurnableTransfer, error) {
 12527  	event := new(ERC20BurnableTransfer)
 12528  	if err := _ERC20Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
 12529  		return nil, err
 12530  	}
 12531  	return event, nil
 12532  }
 12533  
 12534  // ERC20MintableABI is the input ABI used to generate the binding from.
 12535  const ERC20MintableABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"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\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"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\"}]"
 12536  
 12537  // ERC20MintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 12538  const ERC20MintableBinRuntime = `608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058208533d6897cadaf6784525a9d32e613a3c81da44cfdedf624f1bdb497f8b68f4a0029`
 12539  
 12540  // ERC20MintableFuncSigs maps the 4-byte function signature to its string representation.
 12541  var ERC20MintableFuncSigs = map[string]string{
 12542  	"983b2d56": "addMinter(address)",
 12543  	"dd62ed3e": "allowance(address,address)",
 12544  	"095ea7b3": "approve(address,uint256)",
 12545  	"70a08231": "balanceOf(address)",
 12546  	"a457c2d7": "decreaseAllowance(address,uint256)",
 12547  	"39509351": "increaseAllowance(address,uint256)",
 12548  	"aa271e1a": "isMinter(address)",
 12549  	"40c10f19": "mint(address,uint256)",
 12550  	"98650275": "renounceMinter()",
 12551  	"18160ddd": "totalSupply()",
 12552  	"a9059cbb": "transfer(address,uint256)",
 12553  	"23b872dd": "transferFrom(address,address,uint256)",
 12554  }
 12555  
 12556  // ERC20MintableBin is the compiled bytecode used for deploying new contracts.
 12557  var ERC20MintableBin = "0x60806040526100133361001860201b60201c565b610189565b61003081600361006760201b6109961790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610077828261010860201b60201c565b156100e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b038216610169576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610d496022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b610bb1806101986000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b6101016102b9565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b038135811691602081013590911690604001356102bf565b6100e56004803603604081101561015f57600080fd5b506001600160a01b038135169060200135610316565b6100e56004803603604081101561018b57600080fd5b506001600160a01b038135169060200135610352565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166103a5565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166103c0565b005b6101ed610413565b6100e56004803603604081101561020d57600080fd5b506001600160a01b03813516906020013561041e565b6100e56004803603604081101561023957600080fd5b506001600160a01b03813516906020013561045a565b6100e56004803603602081101561026557600080fd5b50356001600160a01b0316610467565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610480565b60006102b03384846104ab565b50600192915050565b60025490565b60006102cc84848461059d565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461030c918691610307908663ffffffff6106e516565b6104ab565b5060019392505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff61074516565b600061035d33610467565b61039b57604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6102b083836107a9565b6001600160a01b031660009081526020819052604090205490565b6103c933610467565b61040757604051600160e51b62461bcd028152600401808060200182810382526030815260200180610aca6030913960400191505060405180910390fd5b6104108161089c565b50565b61041c336108e4565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102b0918590610307908663ffffffff6106e516565b60006102b033848461059d565b600061047a60038363ffffffff61092c16565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104f357604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b626024913960400191505060405180910390fd5b6001600160a01b03821661053b57604051600160e51b62461bcd028152600401808060200182810382526022815260200180610aa86022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166105e557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610b3d6025913960400191505060405180910390fd5b6001600160a01b03821661062d57604051600160e51b62461bcd028152600401808060200182810382526023815260200180610a856023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610656908263ffffffff6106e516565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461068b908263ffffffff61074516565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561073f5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156107a25760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166108075760408051600160e51b62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60025461081a908263ffffffff61074516565b6002556001600160a01b038216600090815260208190526040902054610846908263ffffffff61074516565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6108ad60038263ffffffff61099616565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6108f560038263ffffffff610a1a16565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661097657604051600160e51b62461bcd028152600401808060200182810382526022815260200180610b1b6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6109a0828261092c565b156109f55760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610a24828261092c565b610a6257604051600160e51b62461bcd028152600401808060200182810382526021815260200180610afa6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373a165627a7a723058208533d6897cadaf6784525a9d32e613a3c81da44cfdedf624f1bdb497f8b68f4a0029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"
 12558  
 12559  // DeployERC20Mintable deploys a new Klaytn contract, binding an instance of ERC20Mintable to it.
 12560  func DeployERC20Mintable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC20Mintable, error) {
 12561  	parsed, err := abi.JSON(strings.NewReader(ERC20MintableABI))
 12562  	if err != nil {
 12563  		return common.Address{}, nil, nil, err
 12564  	}
 12565  
 12566  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC20MintableBin), backend)
 12567  	if err != nil {
 12568  		return common.Address{}, nil, nil, err
 12569  	}
 12570  	return address, tx, &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
 12571  }
 12572  
 12573  // ERC20Mintable is an auto generated Go binding around a Klaytn contract.
 12574  type ERC20Mintable struct {
 12575  	ERC20MintableCaller     // Read-only binding to the contract
 12576  	ERC20MintableTransactor // Write-only binding to the contract
 12577  	ERC20MintableFilterer   // Log filterer for contract events
 12578  }
 12579  
 12580  // ERC20MintableCaller is an auto generated read-only Go binding around a Klaytn contract.
 12581  type ERC20MintableCaller struct {
 12582  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12583  }
 12584  
 12585  // ERC20MintableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 12586  type ERC20MintableTransactor struct {
 12587  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12588  }
 12589  
 12590  // ERC20MintableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 12591  type ERC20MintableFilterer struct {
 12592  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12593  }
 12594  
 12595  // ERC20MintableSession is an auto generated Go binding around a Klaytn contract,
 12596  // with pre-set call and transact options.
 12597  type ERC20MintableSession struct {
 12598  	Contract     *ERC20Mintable    // Generic contract binding to set the session for
 12599  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12600  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12601  }
 12602  
 12603  // ERC20MintableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 12604  // with pre-set call options.
 12605  type ERC20MintableCallerSession struct {
 12606  	Contract *ERC20MintableCaller // Generic contract caller binding to set the session for
 12607  	CallOpts bind.CallOpts        // Call options to use throughout this session
 12608  }
 12609  
 12610  // ERC20MintableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 12611  // with pre-set transact options.
 12612  type ERC20MintableTransactorSession struct {
 12613  	Contract     *ERC20MintableTransactor // Generic contract transactor binding to set the session for
 12614  	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
 12615  }
 12616  
 12617  // ERC20MintableRaw is an auto generated low-level Go binding around a Klaytn contract.
 12618  type ERC20MintableRaw struct {
 12619  	Contract *ERC20Mintable // Generic contract binding to access the raw methods on
 12620  }
 12621  
 12622  // ERC20MintableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 12623  type ERC20MintableCallerRaw struct {
 12624  	Contract *ERC20MintableCaller // Generic read-only contract binding to access the raw methods on
 12625  }
 12626  
 12627  // ERC20MintableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 12628  type ERC20MintableTransactorRaw struct {
 12629  	Contract *ERC20MintableTransactor // Generic write-only contract binding to access the raw methods on
 12630  }
 12631  
 12632  // NewERC20Mintable creates a new instance of ERC20Mintable, bound to a specific deployed contract.
 12633  func NewERC20Mintable(address common.Address, backend bind.ContractBackend) (*ERC20Mintable, error) {
 12634  	contract, err := bindERC20Mintable(address, backend, backend, backend)
 12635  	if err != nil {
 12636  		return nil, err
 12637  	}
 12638  	return &ERC20Mintable{ERC20MintableCaller: ERC20MintableCaller{contract: contract}, ERC20MintableTransactor: ERC20MintableTransactor{contract: contract}, ERC20MintableFilterer: ERC20MintableFilterer{contract: contract}}, nil
 12639  }
 12640  
 12641  // NewERC20MintableCaller creates a new read-only instance of ERC20Mintable, bound to a specific deployed contract.
 12642  func NewERC20MintableCaller(address common.Address, caller bind.ContractCaller) (*ERC20MintableCaller, error) {
 12643  	contract, err := bindERC20Mintable(address, caller, nil, nil)
 12644  	if err != nil {
 12645  		return nil, err
 12646  	}
 12647  	return &ERC20MintableCaller{contract: contract}, nil
 12648  }
 12649  
 12650  // NewERC20MintableTransactor creates a new write-only instance of ERC20Mintable, bound to a specific deployed contract.
 12651  func NewERC20MintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MintableTransactor, error) {
 12652  	contract, err := bindERC20Mintable(address, nil, transactor, nil)
 12653  	if err != nil {
 12654  		return nil, err
 12655  	}
 12656  	return &ERC20MintableTransactor{contract: contract}, nil
 12657  }
 12658  
 12659  // NewERC20MintableFilterer creates a new log filterer instance of ERC20Mintable, bound to a specific deployed contract.
 12660  func NewERC20MintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MintableFilterer, error) {
 12661  	contract, err := bindERC20Mintable(address, nil, nil, filterer)
 12662  	if err != nil {
 12663  		return nil, err
 12664  	}
 12665  	return &ERC20MintableFilterer{contract: contract}, nil
 12666  }
 12667  
 12668  // bindERC20Mintable binds a generic wrapper to an already deployed contract.
 12669  func bindERC20Mintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12670  	parsed, err := abi.JSON(strings.NewReader(ERC20MintableABI))
 12671  	if err != nil {
 12672  		return nil, err
 12673  	}
 12674  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 12675  }
 12676  
 12677  // Call invokes the (constant) contract method with params as input values and
 12678  // sets the output to result. The result type might be a single field for simple
 12679  // returns, a slice of interfaces for anonymous returns and a struct for named
 12680  // returns.
 12681  func (_ERC20Mintable *ERC20MintableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12682  	return _ERC20Mintable.Contract.ERC20MintableCaller.contract.Call(opts, result, method, params...)
 12683  }
 12684  
 12685  // Transfer initiates a plain transaction to move funds to the contract, calling
 12686  // its default method if one is available.
 12687  func (_ERC20Mintable *ERC20MintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12688  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transfer(opts)
 12689  }
 12690  
 12691  // Transact invokes the (paid) contract method with params as input values.
 12692  func (_ERC20Mintable *ERC20MintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12693  	return _ERC20Mintable.Contract.ERC20MintableTransactor.contract.Transact(opts, method, params...)
 12694  }
 12695  
 12696  // Call invokes the (constant) contract method with params as input values and
 12697  // sets the output to result. The result type might be a single field for simple
 12698  // returns, a slice of interfaces for anonymous returns and a struct for named
 12699  // returns.
 12700  func (_ERC20Mintable *ERC20MintableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12701  	return _ERC20Mintable.Contract.contract.Call(opts, result, method, params...)
 12702  }
 12703  
 12704  // Transfer initiates a plain transaction to move funds to the contract, calling
 12705  // its default method if one is available.
 12706  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12707  	return _ERC20Mintable.Contract.contract.Transfer(opts)
 12708  }
 12709  
 12710  // Transact invokes the (paid) contract method with params as input values.
 12711  func (_ERC20Mintable *ERC20MintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12712  	return _ERC20Mintable.Contract.contract.Transact(opts, method, params...)
 12713  }
 12714  
 12715  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 12716  //
 12717  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 12718  func (_ERC20Mintable *ERC20MintableCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 12719  	var (
 12720  		ret0 = new(*big.Int)
 12721  	)
 12722  	out := ret0
 12723  	err := _ERC20Mintable.contract.Call(opts, out, "allowance", owner, spender)
 12724  	return *ret0, err
 12725  }
 12726  
 12727  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 12728  //
 12729  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 12730  func (_ERC20Mintable *ERC20MintableSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 12731  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
 12732  }
 12733  
 12734  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 12735  //
 12736  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 12737  func (_ERC20Mintable *ERC20MintableCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 12738  	return _ERC20Mintable.Contract.Allowance(&_ERC20Mintable.CallOpts, owner, spender)
 12739  }
 12740  
 12741  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 12742  //
 12743  // Solidity: function balanceOf(address account) view returns(uint256)
 12744  func (_ERC20Mintable *ERC20MintableCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 12745  	var (
 12746  		ret0 = new(*big.Int)
 12747  	)
 12748  	out := ret0
 12749  	err := _ERC20Mintable.contract.Call(opts, out, "balanceOf", account)
 12750  	return *ret0, err
 12751  }
 12752  
 12753  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 12754  //
 12755  // Solidity: function balanceOf(address account) view returns(uint256)
 12756  func (_ERC20Mintable *ERC20MintableSession) BalanceOf(account common.Address) (*big.Int, error) {
 12757  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
 12758  }
 12759  
 12760  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 12761  //
 12762  // Solidity: function balanceOf(address account) view returns(uint256)
 12763  func (_ERC20Mintable *ERC20MintableCallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 12764  	return _ERC20Mintable.Contract.BalanceOf(&_ERC20Mintable.CallOpts, account)
 12765  }
 12766  
 12767  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 12768  //
 12769  // Solidity: function isMinter(address account) view returns(bool)
 12770  func (_ERC20Mintable *ERC20MintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 12771  	var (
 12772  		ret0 = new(bool)
 12773  	)
 12774  	out := ret0
 12775  	err := _ERC20Mintable.contract.Call(opts, out, "isMinter", account)
 12776  	return *ret0, err
 12777  }
 12778  
 12779  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 12780  //
 12781  // Solidity: function isMinter(address account) view returns(bool)
 12782  func (_ERC20Mintable *ERC20MintableSession) IsMinter(account common.Address) (bool, error) {
 12783  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
 12784  }
 12785  
 12786  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 12787  //
 12788  // Solidity: function isMinter(address account) view returns(bool)
 12789  func (_ERC20Mintable *ERC20MintableCallerSession) IsMinter(account common.Address) (bool, error) {
 12790  	return _ERC20Mintable.Contract.IsMinter(&_ERC20Mintable.CallOpts, account)
 12791  }
 12792  
 12793  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 12794  //
 12795  // Solidity: function totalSupply() view returns(uint256)
 12796  func (_ERC20Mintable *ERC20MintableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 12797  	var (
 12798  		ret0 = new(*big.Int)
 12799  	)
 12800  	out := ret0
 12801  	err := _ERC20Mintable.contract.Call(opts, out, "totalSupply")
 12802  	return *ret0, err
 12803  }
 12804  
 12805  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 12806  //
 12807  // Solidity: function totalSupply() view returns(uint256)
 12808  func (_ERC20Mintable *ERC20MintableSession) TotalSupply() (*big.Int, error) {
 12809  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
 12810  }
 12811  
 12812  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 12813  //
 12814  // Solidity: function totalSupply() view returns(uint256)
 12815  func (_ERC20Mintable *ERC20MintableCallerSession) TotalSupply() (*big.Int, error) {
 12816  	return _ERC20Mintable.Contract.TotalSupply(&_ERC20Mintable.CallOpts)
 12817  }
 12818  
 12819  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 12820  //
 12821  // Solidity: function addMinter(address account) returns()
 12822  func (_ERC20Mintable *ERC20MintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 12823  	return _ERC20Mintable.contract.Transact(opts, "addMinter", account)
 12824  }
 12825  
 12826  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 12827  //
 12828  // Solidity: function addMinter(address account) returns()
 12829  func (_ERC20Mintable *ERC20MintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
 12830  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
 12831  }
 12832  
 12833  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 12834  //
 12835  // Solidity: function addMinter(address account) returns()
 12836  func (_ERC20Mintable *ERC20MintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 12837  	return _ERC20Mintable.Contract.AddMinter(&_ERC20Mintable.TransactOpts, account)
 12838  }
 12839  
 12840  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 12841  //
 12842  // Solidity: function approve(address spender, uint256 value) returns(bool)
 12843  func (_ERC20Mintable *ERC20MintableTransactor) Approve(opts *bind.TransactOpts, spender common.Address, value *big.Int) (*types.Transaction, error) {
 12844  	return _ERC20Mintable.contract.Transact(opts, "approve", spender, value)
 12845  }
 12846  
 12847  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 12848  //
 12849  // Solidity: function approve(address spender, uint256 value) returns(bool)
 12850  func (_ERC20Mintable *ERC20MintableSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 12851  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value)
 12852  }
 12853  
 12854  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 12855  //
 12856  // Solidity: function approve(address spender, uint256 value) returns(bool)
 12857  func (_ERC20Mintable *ERC20MintableTransactorSession) Approve(spender common.Address, value *big.Int) (*types.Transaction, error) {
 12858  	return _ERC20Mintable.Contract.Approve(&_ERC20Mintable.TransactOpts, spender, value)
 12859  }
 12860  
 12861  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 12862  //
 12863  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 12864  func (_ERC20Mintable *ERC20MintableTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 12865  	return _ERC20Mintable.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue)
 12866  }
 12867  
 12868  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 12869  //
 12870  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 12871  func (_ERC20Mintable *ERC20MintableSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 12872  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
 12873  }
 12874  
 12875  // DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7.
 12876  //
 12877  // Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool)
 12878  func (_ERC20Mintable *ERC20MintableTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) {
 12879  	return _ERC20Mintable.Contract.DecreaseAllowance(&_ERC20Mintable.TransactOpts, spender, subtractedValue)
 12880  }
 12881  
 12882  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 12883  //
 12884  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 12885  func (_ERC20Mintable *ERC20MintableTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 12886  	return _ERC20Mintable.contract.Transact(opts, "increaseAllowance", spender, addedValue)
 12887  }
 12888  
 12889  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 12890  //
 12891  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 12892  func (_ERC20Mintable *ERC20MintableSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 12893  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
 12894  }
 12895  
 12896  // IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351.
 12897  //
 12898  // Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool)
 12899  func (_ERC20Mintable *ERC20MintableTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) {
 12900  	return _ERC20Mintable.Contract.IncreaseAllowance(&_ERC20Mintable.TransactOpts, spender, addedValue)
 12901  }
 12902  
 12903  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 12904  //
 12905  // Solidity: function mint(address account, uint256 amount) returns(bool)
 12906  func (_ERC20Mintable *ERC20MintableTransactor) Mint(opts *bind.TransactOpts, account common.Address, amount *big.Int) (*types.Transaction, error) {
 12907  	return _ERC20Mintable.contract.Transact(opts, "mint", account, amount)
 12908  }
 12909  
 12910  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 12911  //
 12912  // Solidity: function mint(address account, uint256 amount) returns(bool)
 12913  func (_ERC20Mintable *ERC20MintableSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
 12914  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
 12915  }
 12916  
 12917  // Mint is a paid mutator transaction binding the contract method 0x40c10f19.
 12918  //
 12919  // Solidity: function mint(address account, uint256 amount) returns(bool)
 12920  func (_ERC20Mintable *ERC20MintableTransactorSession) Mint(account common.Address, amount *big.Int) (*types.Transaction, error) {
 12921  	return _ERC20Mintable.Contract.Mint(&_ERC20Mintable.TransactOpts, account, amount)
 12922  }
 12923  
 12924  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 12925  //
 12926  // Solidity: function renounceMinter() returns()
 12927  func (_ERC20Mintable *ERC20MintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 12928  	return _ERC20Mintable.contract.Transact(opts, "renounceMinter")
 12929  }
 12930  
 12931  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 12932  //
 12933  // Solidity: function renounceMinter() returns()
 12934  func (_ERC20Mintable *ERC20MintableSession) RenounceMinter() (*types.Transaction, error) {
 12935  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
 12936  }
 12937  
 12938  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 12939  //
 12940  // Solidity: function renounceMinter() returns()
 12941  func (_ERC20Mintable *ERC20MintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
 12942  	return _ERC20Mintable.Contract.RenounceMinter(&_ERC20Mintable.TransactOpts)
 12943  }
 12944  
 12945  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 12946  //
 12947  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 12948  func (_ERC20Mintable *ERC20MintableTransactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12949  	return _ERC20Mintable.contract.Transact(opts, "transfer", recipient, amount)
 12950  }
 12951  
 12952  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 12953  //
 12954  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 12955  func (_ERC20Mintable *ERC20MintableSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12956  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
 12957  }
 12958  
 12959  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 12960  //
 12961  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 12962  func (_ERC20Mintable *ERC20MintableTransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12963  	return _ERC20Mintable.Contract.Transfer(&_ERC20Mintable.TransactOpts, recipient, amount)
 12964  }
 12965  
 12966  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 12967  //
 12968  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 12969  func (_ERC20Mintable *ERC20MintableTransactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12970  	return _ERC20Mintable.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 12971  }
 12972  
 12973  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 12974  //
 12975  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 12976  func (_ERC20Mintable *ERC20MintableSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12977  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
 12978  }
 12979  
 12980  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 12981  //
 12982  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 12983  func (_ERC20Mintable *ERC20MintableTransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 12984  	return _ERC20Mintable.Contract.TransferFrom(&_ERC20Mintable.TransactOpts, sender, recipient, amount)
 12985  }
 12986  
 12987  // ERC20MintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Mintable contract.
 12988  type ERC20MintableApprovalIterator struct {
 12989  	Event *ERC20MintableApproval // Event containing the contract specifics and raw log
 12990  
 12991  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 12992  	event    string              // Event name to use for unpacking event data
 12993  
 12994  	logs chan types.Log      // Log channel receiving the found contract events
 12995  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 12996  	done bool                // Whether the subscription completed delivering logs
 12997  	fail error               // Occurred error to stop iteration
 12998  }
 12999  
 13000  // Next advances the iterator to the subsequent event, returning whether there
 13001  // are any more events found. In case of a retrieval or parsing error, false is
 13002  // returned and Error() can be queried for the exact failure.
 13003  func (it *ERC20MintableApprovalIterator) Next() bool {
 13004  	// If the iterator failed, stop iterating
 13005  	if it.fail != nil {
 13006  		return false
 13007  	}
 13008  	// If the iterator completed, deliver directly whatever's available
 13009  	if it.done {
 13010  		select {
 13011  		case log := <-it.logs:
 13012  			it.Event = new(ERC20MintableApproval)
 13013  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13014  				it.fail = err
 13015  				return false
 13016  			}
 13017  			it.Event.Raw = log
 13018  			return true
 13019  
 13020  		default:
 13021  			return false
 13022  		}
 13023  	}
 13024  	// Iterator still in progress, wait for either a data or an error event
 13025  	select {
 13026  	case log := <-it.logs:
 13027  		it.Event = new(ERC20MintableApproval)
 13028  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13029  			it.fail = err
 13030  			return false
 13031  		}
 13032  		it.Event.Raw = log
 13033  		return true
 13034  
 13035  	case err := <-it.sub.Err():
 13036  		it.done = true
 13037  		it.fail = err
 13038  		return it.Next()
 13039  	}
 13040  }
 13041  
 13042  // Error returns any retrieval or parsing error occurred during filtering.
 13043  func (it *ERC20MintableApprovalIterator) Error() error {
 13044  	return it.fail
 13045  }
 13046  
 13047  // Close terminates the iteration process, releasing any pending underlying
 13048  // resources.
 13049  func (it *ERC20MintableApprovalIterator) Close() error {
 13050  	it.sub.Unsubscribe()
 13051  	return nil
 13052  }
 13053  
 13054  // ERC20MintableApproval represents a Approval event raised by the ERC20Mintable contract.
 13055  type ERC20MintableApproval struct {
 13056  	Owner   common.Address
 13057  	Spender common.Address
 13058  	Value   *big.Int
 13059  	Raw     types.Log // Blockchain specific contextual infos
 13060  }
 13061  
 13062  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 13063  //
 13064  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 13065  func (_ERC20Mintable *ERC20MintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MintableApprovalIterator, error) {
 13066  
 13067  	var ownerRule []interface{}
 13068  	for _, ownerItem := range owner {
 13069  		ownerRule = append(ownerRule, ownerItem)
 13070  	}
 13071  	var spenderRule []interface{}
 13072  	for _, spenderItem := range spender {
 13073  		spenderRule = append(spenderRule, spenderItem)
 13074  	}
 13075  
 13076  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 13077  	if err != nil {
 13078  		return nil, err
 13079  	}
 13080  	return &ERC20MintableApprovalIterator{contract: _ERC20Mintable.contract, event: "Approval", logs: logs, sub: sub}, nil
 13081  }
 13082  
 13083  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 13084  //
 13085  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 13086  func (_ERC20Mintable *ERC20MintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MintableApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 13087  
 13088  	var ownerRule []interface{}
 13089  	for _, ownerItem := range owner {
 13090  		ownerRule = append(ownerRule, ownerItem)
 13091  	}
 13092  	var spenderRule []interface{}
 13093  	for _, spenderItem := range spender {
 13094  		spenderRule = append(spenderRule, spenderItem)
 13095  	}
 13096  
 13097  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 13098  	if err != nil {
 13099  		return nil, err
 13100  	}
 13101  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13102  		defer sub.Unsubscribe()
 13103  		for {
 13104  			select {
 13105  			case log := <-logs:
 13106  				// New log arrived, parse the event and forward to the user
 13107  				event := new(ERC20MintableApproval)
 13108  				if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
 13109  					return err
 13110  				}
 13111  				event.Raw = log
 13112  
 13113  				select {
 13114  				case sink <- event:
 13115  				case err := <-sub.Err():
 13116  					return err
 13117  				case <-quit:
 13118  					return nil
 13119  				}
 13120  			case err := <-sub.Err():
 13121  				return err
 13122  			case <-quit:
 13123  				return nil
 13124  			}
 13125  		}
 13126  	}), nil
 13127  }
 13128  
 13129  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 13130  //
 13131  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 13132  func (_ERC20Mintable *ERC20MintableFilterer) ParseApproval(log types.Log) (*ERC20MintableApproval, error) {
 13133  	event := new(ERC20MintableApproval)
 13134  	if err := _ERC20Mintable.contract.UnpackLog(event, "Approval", log); err != nil {
 13135  		return nil, err
 13136  	}
 13137  	return event, nil
 13138  }
 13139  
 13140  // ERC20MintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC20Mintable contract.
 13141  type ERC20MintableMinterAddedIterator struct {
 13142  	Event *ERC20MintableMinterAdded // Event containing the contract specifics and raw log
 13143  
 13144  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13145  	event    string              // Event name to use for unpacking event data
 13146  
 13147  	logs chan types.Log      // Log channel receiving the found contract events
 13148  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13149  	done bool                // Whether the subscription completed delivering logs
 13150  	fail error               // Occurred error to stop iteration
 13151  }
 13152  
 13153  // Next advances the iterator to the subsequent event, returning whether there
 13154  // are any more events found. In case of a retrieval or parsing error, false is
 13155  // returned and Error() can be queried for the exact failure.
 13156  func (it *ERC20MintableMinterAddedIterator) Next() bool {
 13157  	// If the iterator failed, stop iterating
 13158  	if it.fail != nil {
 13159  		return false
 13160  	}
 13161  	// If the iterator completed, deliver directly whatever's available
 13162  	if it.done {
 13163  		select {
 13164  		case log := <-it.logs:
 13165  			it.Event = new(ERC20MintableMinterAdded)
 13166  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13167  				it.fail = err
 13168  				return false
 13169  			}
 13170  			it.Event.Raw = log
 13171  			return true
 13172  
 13173  		default:
 13174  			return false
 13175  		}
 13176  	}
 13177  	// Iterator still in progress, wait for either a data or an error event
 13178  	select {
 13179  	case log := <-it.logs:
 13180  		it.Event = new(ERC20MintableMinterAdded)
 13181  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13182  			it.fail = err
 13183  			return false
 13184  		}
 13185  		it.Event.Raw = log
 13186  		return true
 13187  
 13188  	case err := <-it.sub.Err():
 13189  		it.done = true
 13190  		it.fail = err
 13191  		return it.Next()
 13192  	}
 13193  }
 13194  
 13195  // Error returns any retrieval or parsing error occurred during filtering.
 13196  func (it *ERC20MintableMinterAddedIterator) Error() error {
 13197  	return it.fail
 13198  }
 13199  
 13200  // Close terminates the iteration process, releasing any pending underlying
 13201  // resources.
 13202  func (it *ERC20MintableMinterAddedIterator) Close() error {
 13203  	it.sub.Unsubscribe()
 13204  	return nil
 13205  }
 13206  
 13207  // ERC20MintableMinterAdded represents a MinterAdded event raised by the ERC20Mintable contract.
 13208  type ERC20MintableMinterAdded struct {
 13209  	Account common.Address
 13210  	Raw     types.Log // Blockchain specific contextual infos
 13211  }
 13212  
 13213  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 13214  //
 13215  // Solidity: event MinterAdded(address indexed account)
 13216  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterAddedIterator, error) {
 13217  
 13218  	var accountRule []interface{}
 13219  	for _, accountItem := range account {
 13220  		accountRule = append(accountRule, accountItem)
 13221  	}
 13222  
 13223  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
 13224  	if err != nil {
 13225  		return nil, err
 13226  	}
 13227  	return &ERC20MintableMinterAddedIterator{contract: _ERC20Mintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 13228  }
 13229  
 13230  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 13231  //
 13232  // Solidity: event MinterAdded(address indexed account)
 13233  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterAdded, account []common.Address) (event.Subscription, error) {
 13234  
 13235  	var accountRule []interface{}
 13236  	for _, accountItem := range account {
 13237  		accountRule = append(accountRule, accountItem)
 13238  	}
 13239  
 13240  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
 13241  	if err != nil {
 13242  		return nil, err
 13243  	}
 13244  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13245  		defer sub.Unsubscribe()
 13246  		for {
 13247  			select {
 13248  			case log := <-logs:
 13249  				// New log arrived, parse the event and forward to the user
 13250  				event := new(ERC20MintableMinterAdded)
 13251  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 13252  					return err
 13253  				}
 13254  				event.Raw = log
 13255  
 13256  				select {
 13257  				case sink <- event:
 13258  				case err := <-sub.Err():
 13259  					return err
 13260  				case <-quit:
 13261  					return nil
 13262  				}
 13263  			case err := <-sub.Err():
 13264  				return err
 13265  			case <-quit:
 13266  				return nil
 13267  			}
 13268  		}
 13269  	}), nil
 13270  }
 13271  
 13272  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 13273  //
 13274  // Solidity: event MinterAdded(address indexed account)
 13275  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterAdded(log types.Log) (*ERC20MintableMinterAdded, error) {
 13276  	event := new(ERC20MintableMinterAdded)
 13277  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 13278  		return nil, err
 13279  	}
 13280  	return event, nil
 13281  }
 13282  
 13283  // ERC20MintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC20Mintable contract.
 13284  type ERC20MintableMinterRemovedIterator struct {
 13285  	Event *ERC20MintableMinterRemoved // Event containing the contract specifics and raw log
 13286  
 13287  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13288  	event    string              // Event name to use for unpacking event data
 13289  
 13290  	logs chan types.Log      // Log channel receiving the found contract events
 13291  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13292  	done bool                // Whether the subscription completed delivering logs
 13293  	fail error               // Occurred error to stop iteration
 13294  }
 13295  
 13296  // Next advances the iterator to the subsequent event, returning whether there
 13297  // are any more events found. In case of a retrieval or parsing error, false is
 13298  // returned and Error() can be queried for the exact failure.
 13299  func (it *ERC20MintableMinterRemovedIterator) Next() bool {
 13300  	// If the iterator failed, stop iterating
 13301  	if it.fail != nil {
 13302  		return false
 13303  	}
 13304  	// If the iterator completed, deliver directly whatever's available
 13305  	if it.done {
 13306  		select {
 13307  		case log := <-it.logs:
 13308  			it.Event = new(ERC20MintableMinterRemoved)
 13309  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13310  				it.fail = err
 13311  				return false
 13312  			}
 13313  			it.Event.Raw = log
 13314  			return true
 13315  
 13316  		default:
 13317  			return false
 13318  		}
 13319  	}
 13320  	// Iterator still in progress, wait for either a data or an error event
 13321  	select {
 13322  	case log := <-it.logs:
 13323  		it.Event = new(ERC20MintableMinterRemoved)
 13324  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13325  			it.fail = err
 13326  			return false
 13327  		}
 13328  		it.Event.Raw = log
 13329  		return true
 13330  
 13331  	case err := <-it.sub.Err():
 13332  		it.done = true
 13333  		it.fail = err
 13334  		return it.Next()
 13335  	}
 13336  }
 13337  
 13338  // Error returns any retrieval or parsing error occurred during filtering.
 13339  func (it *ERC20MintableMinterRemovedIterator) Error() error {
 13340  	return it.fail
 13341  }
 13342  
 13343  // Close terminates the iteration process, releasing any pending underlying
 13344  // resources.
 13345  func (it *ERC20MintableMinterRemovedIterator) Close() error {
 13346  	it.sub.Unsubscribe()
 13347  	return nil
 13348  }
 13349  
 13350  // ERC20MintableMinterRemoved represents a MinterRemoved event raised by the ERC20Mintable contract.
 13351  type ERC20MintableMinterRemoved struct {
 13352  	Account common.Address
 13353  	Raw     types.Log // Blockchain specific contextual infos
 13354  }
 13355  
 13356  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 13357  //
 13358  // Solidity: event MinterRemoved(address indexed account)
 13359  func (_ERC20Mintable *ERC20MintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC20MintableMinterRemovedIterator, error) {
 13360  
 13361  	var accountRule []interface{}
 13362  	for _, accountItem := range account {
 13363  		accountRule = append(accountRule, accountItem)
 13364  	}
 13365  
 13366  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 13367  	if err != nil {
 13368  		return nil, err
 13369  	}
 13370  	return &ERC20MintableMinterRemovedIterator{contract: _ERC20Mintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 13371  }
 13372  
 13373  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 13374  //
 13375  // Solidity: event MinterRemoved(address indexed account)
 13376  func (_ERC20Mintable *ERC20MintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC20MintableMinterRemoved, account []common.Address) (event.Subscription, error) {
 13377  
 13378  	var accountRule []interface{}
 13379  	for _, accountItem := range account {
 13380  		accountRule = append(accountRule, accountItem)
 13381  	}
 13382  
 13383  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 13384  	if err != nil {
 13385  		return nil, err
 13386  	}
 13387  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13388  		defer sub.Unsubscribe()
 13389  		for {
 13390  			select {
 13391  			case log := <-logs:
 13392  				// New log arrived, parse the event and forward to the user
 13393  				event := new(ERC20MintableMinterRemoved)
 13394  				if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 13395  					return err
 13396  				}
 13397  				event.Raw = log
 13398  
 13399  				select {
 13400  				case sink <- event:
 13401  				case err := <-sub.Err():
 13402  					return err
 13403  				case <-quit:
 13404  					return nil
 13405  				}
 13406  			case err := <-sub.Err():
 13407  				return err
 13408  			case <-quit:
 13409  				return nil
 13410  			}
 13411  		}
 13412  	}), nil
 13413  }
 13414  
 13415  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 13416  //
 13417  // Solidity: event MinterRemoved(address indexed account)
 13418  func (_ERC20Mintable *ERC20MintableFilterer) ParseMinterRemoved(log types.Log) (*ERC20MintableMinterRemoved, error) {
 13419  	event := new(ERC20MintableMinterRemoved)
 13420  	if err := _ERC20Mintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 13421  		return nil, err
 13422  	}
 13423  	return event, nil
 13424  }
 13425  
 13426  // ERC20MintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Mintable contract.
 13427  type ERC20MintableTransferIterator struct {
 13428  	Event *ERC20MintableTransfer // Event containing the contract specifics and raw log
 13429  
 13430  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13431  	event    string              // Event name to use for unpacking event data
 13432  
 13433  	logs chan types.Log      // Log channel receiving the found contract events
 13434  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13435  	done bool                // Whether the subscription completed delivering logs
 13436  	fail error               // Occurred error to stop iteration
 13437  }
 13438  
 13439  // Next advances the iterator to the subsequent event, returning whether there
 13440  // are any more events found. In case of a retrieval or parsing error, false is
 13441  // returned and Error() can be queried for the exact failure.
 13442  func (it *ERC20MintableTransferIterator) Next() bool {
 13443  	// If the iterator failed, stop iterating
 13444  	if it.fail != nil {
 13445  		return false
 13446  	}
 13447  	// If the iterator completed, deliver directly whatever's available
 13448  	if it.done {
 13449  		select {
 13450  		case log := <-it.logs:
 13451  			it.Event = new(ERC20MintableTransfer)
 13452  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13453  				it.fail = err
 13454  				return false
 13455  			}
 13456  			it.Event.Raw = log
 13457  			return true
 13458  
 13459  		default:
 13460  			return false
 13461  		}
 13462  	}
 13463  	// Iterator still in progress, wait for either a data or an error event
 13464  	select {
 13465  	case log := <-it.logs:
 13466  		it.Event = new(ERC20MintableTransfer)
 13467  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13468  			it.fail = err
 13469  			return false
 13470  		}
 13471  		it.Event.Raw = log
 13472  		return true
 13473  
 13474  	case err := <-it.sub.Err():
 13475  		it.done = true
 13476  		it.fail = err
 13477  		return it.Next()
 13478  	}
 13479  }
 13480  
 13481  // Error returns any retrieval or parsing error occurred during filtering.
 13482  func (it *ERC20MintableTransferIterator) Error() error {
 13483  	return it.fail
 13484  }
 13485  
 13486  // Close terminates the iteration process, releasing any pending underlying
 13487  // resources.
 13488  func (it *ERC20MintableTransferIterator) Close() error {
 13489  	it.sub.Unsubscribe()
 13490  	return nil
 13491  }
 13492  
 13493  // ERC20MintableTransfer represents a Transfer event raised by the ERC20Mintable contract.
 13494  type ERC20MintableTransfer struct {
 13495  	From  common.Address
 13496  	To    common.Address
 13497  	Value *big.Int
 13498  	Raw   types.Log // Blockchain specific contextual infos
 13499  }
 13500  
 13501  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 13502  //
 13503  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 13504  func (_ERC20Mintable *ERC20MintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MintableTransferIterator, error) {
 13505  
 13506  	var fromRule []interface{}
 13507  	for _, fromItem := range from {
 13508  		fromRule = append(fromRule, fromItem)
 13509  	}
 13510  	var toRule []interface{}
 13511  	for _, toItem := range to {
 13512  		toRule = append(toRule, toItem)
 13513  	}
 13514  
 13515  	logs, sub, err := _ERC20Mintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 13516  	if err != nil {
 13517  		return nil, err
 13518  	}
 13519  	return &ERC20MintableTransferIterator{contract: _ERC20Mintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
 13520  }
 13521  
 13522  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 13523  //
 13524  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 13525  func (_ERC20Mintable *ERC20MintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MintableTransfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 13526  
 13527  	var fromRule []interface{}
 13528  	for _, fromItem := range from {
 13529  		fromRule = append(fromRule, fromItem)
 13530  	}
 13531  	var toRule []interface{}
 13532  	for _, toItem := range to {
 13533  		toRule = append(toRule, toItem)
 13534  	}
 13535  
 13536  	logs, sub, err := _ERC20Mintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 13537  	if err != nil {
 13538  		return nil, err
 13539  	}
 13540  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13541  		defer sub.Unsubscribe()
 13542  		for {
 13543  			select {
 13544  			case log := <-logs:
 13545  				// New log arrived, parse the event and forward to the user
 13546  				event := new(ERC20MintableTransfer)
 13547  				if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
 13548  					return err
 13549  				}
 13550  				event.Raw = log
 13551  
 13552  				select {
 13553  				case sink <- event:
 13554  				case err := <-sub.Err():
 13555  					return err
 13556  				case <-quit:
 13557  					return nil
 13558  				}
 13559  			case err := <-sub.Err():
 13560  				return err
 13561  			case <-quit:
 13562  				return nil
 13563  			}
 13564  		}
 13565  	}), nil
 13566  }
 13567  
 13568  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 13569  //
 13570  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 13571  func (_ERC20Mintable *ERC20MintableFilterer) ParseTransfer(log types.Log) (*ERC20MintableTransfer, error) {
 13572  	event := new(ERC20MintableTransfer)
 13573  	if err := _ERC20Mintable.contract.UnpackLog(event, "Transfer", log); err != nil {
 13574  		return nil, err
 13575  	}
 13576  	return event, nil
 13577  }
 13578  
 13579  // ERC721ABI is the input ABI used to generate the binding from.
 13580  const ERC721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 13581  
 13582  // ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 13583  const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820729ef652fa5b3de930aa2053816415426d90b8ede7f21175faa42825db4887780029`
 13584  
 13585  // ERC721FuncSigs maps the 4-byte function signature to its string representation.
 13586  var ERC721FuncSigs = map[string]string{
 13587  	"095ea7b3": "approve(address,uint256)",
 13588  	"70a08231": "balanceOf(address)",
 13589  	"081812fc": "getApproved(uint256)",
 13590  	"e985e9c5": "isApprovedForAll(address,address)",
 13591  	"6352211e": "ownerOf(uint256)",
 13592  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 13593  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 13594  	"a22cb465": "setApprovalForAll(address,bool)",
 13595  	"01ffc9a7": "supportsInterface(bytes4)",
 13596  	"23b872dd": "transferFrom(address,address,uint256)",
 13597  }
 13598  
 13599  // ERC721Bin is the compiled bytecode used for deploying new contracts.
 13600  var ERC721Bin = "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820729ef652fa5b3de930aa2053816415426d90b8ede7f21175faa42825db4887780029"
 13601  
 13602  // DeployERC721 deploys a new Klaytn contract, binding an instance of ERC721 to it.
 13603  func DeployERC721(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721, error) {
 13604  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
 13605  	if err != nil {
 13606  		return common.Address{}, nil, nil, err
 13607  	}
 13608  
 13609  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721Bin), backend)
 13610  	if err != nil {
 13611  		return common.Address{}, nil, nil, err
 13612  	}
 13613  	return address, tx, &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
 13614  }
 13615  
 13616  // ERC721 is an auto generated Go binding around a Klaytn contract.
 13617  type ERC721 struct {
 13618  	ERC721Caller     // Read-only binding to the contract
 13619  	ERC721Transactor // Write-only binding to the contract
 13620  	ERC721Filterer   // Log filterer for contract events
 13621  }
 13622  
 13623  // ERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
 13624  type ERC721Caller struct {
 13625  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13626  }
 13627  
 13628  // ERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
 13629  type ERC721Transactor struct {
 13630  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13631  }
 13632  
 13633  // ERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 13634  type ERC721Filterer struct {
 13635  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 13636  }
 13637  
 13638  // ERC721Session is an auto generated Go binding around a Klaytn contract,
 13639  // with pre-set call and transact options.
 13640  type ERC721Session struct {
 13641  	Contract     *ERC721           // Generic contract binding to set the session for
 13642  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 13643  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 13644  }
 13645  
 13646  // ERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 13647  // with pre-set call options.
 13648  type ERC721CallerSession struct {
 13649  	Contract *ERC721Caller // Generic contract caller binding to set the session for
 13650  	CallOpts bind.CallOpts // Call options to use throughout this session
 13651  }
 13652  
 13653  // ERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 13654  // with pre-set transact options.
 13655  type ERC721TransactorSession struct {
 13656  	Contract     *ERC721Transactor // Generic contract transactor binding to set the session for
 13657  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 13658  }
 13659  
 13660  // ERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
 13661  type ERC721Raw struct {
 13662  	Contract *ERC721 // Generic contract binding to access the raw methods on
 13663  }
 13664  
 13665  // ERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 13666  type ERC721CallerRaw struct {
 13667  	Contract *ERC721Caller // Generic read-only contract binding to access the raw methods on
 13668  }
 13669  
 13670  // ERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 13671  type ERC721TransactorRaw struct {
 13672  	Contract *ERC721Transactor // Generic write-only contract binding to access the raw methods on
 13673  }
 13674  
 13675  // NewERC721 creates a new instance of ERC721, bound to a specific deployed contract.
 13676  func NewERC721(address common.Address, backend bind.ContractBackend) (*ERC721, error) {
 13677  	contract, err := bindERC721(address, backend, backend, backend)
 13678  	if err != nil {
 13679  		return nil, err
 13680  	}
 13681  	return &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
 13682  }
 13683  
 13684  // NewERC721Caller creates a new read-only instance of ERC721, bound to a specific deployed contract.
 13685  func NewERC721Caller(address common.Address, caller bind.ContractCaller) (*ERC721Caller, error) {
 13686  	contract, err := bindERC721(address, caller, nil, nil)
 13687  	if err != nil {
 13688  		return nil, err
 13689  	}
 13690  	return &ERC721Caller{contract: contract}, nil
 13691  }
 13692  
 13693  // NewERC721Transactor creates a new write-only instance of ERC721, bound to a specific deployed contract.
 13694  func NewERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC721Transactor, error) {
 13695  	contract, err := bindERC721(address, nil, transactor, nil)
 13696  	if err != nil {
 13697  		return nil, err
 13698  	}
 13699  	return &ERC721Transactor{contract: contract}, nil
 13700  }
 13701  
 13702  // NewERC721Filterer creates a new log filterer instance of ERC721, bound to a specific deployed contract.
 13703  func NewERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC721Filterer, error) {
 13704  	contract, err := bindERC721(address, nil, nil, filterer)
 13705  	if err != nil {
 13706  		return nil, err
 13707  	}
 13708  	return &ERC721Filterer{contract: contract}, nil
 13709  }
 13710  
 13711  // bindERC721 binds a generic wrapper to an already deployed contract.
 13712  func bindERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 13713  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
 13714  	if err != nil {
 13715  		return nil, err
 13716  	}
 13717  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 13718  }
 13719  
 13720  // Call invokes the (constant) contract method with params as input values and
 13721  // sets the output to result. The result type might be a single field for simple
 13722  // returns, a slice of interfaces for anonymous returns and a struct for named
 13723  // returns.
 13724  func (_ERC721 *ERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 13725  	return _ERC721.Contract.ERC721Caller.contract.Call(opts, result, method, params...)
 13726  }
 13727  
 13728  // Transfer initiates a plain transaction to move funds to the contract, calling
 13729  // its default method if one is available.
 13730  func (_ERC721 *ERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13731  	return _ERC721.Contract.ERC721Transactor.contract.Transfer(opts)
 13732  }
 13733  
 13734  // Transact invokes the (paid) contract method with params as input values.
 13735  func (_ERC721 *ERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13736  	return _ERC721.Contract.ERC721Transactor.contract.Transact(opts, method, params...)
 13737  }
 13738  
 13739  // Call invokes the (constant) contract method with params as input values and
 13740  // sets the output to result. The result type might be a single field for simple
 13741  // returns, a slice of interfaces for anonymous returns and a struct for named
 13742  // returns.
 13743  func (_ERC721 *ERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 13744  	return _ERC721.Contract.contract.Call(opts, result, method, params...)
 13745  }
 13746  
 13747  // Transfer initiates a plain transaction to move funds to the contract, calling
 13748  // its default method if one is available.
 13749  func (_ERC721 *ERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 13750  	return _ERC721.Contract.contract.Transfer(opts)
 13751  }
 13752  
 13753  // Transact invokes the (paid) contract method with params as input values.
 13754  func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 13755  	return _ERC721.Contract.contract.Transact(opts, method, params...)
 13756  }
 13757  
 13758  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 13759  //
 13760  // Solidity: function balanceOf(address owner) view returns(uint256)
 13761  func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 13762  	var (
 13763  		ret0 = new(*big.Int)
 13764  	)
 13765  	out := ret0
 13766  	err := _ERC721.contract.Call(opts, out, "balanceOf", owner)
 13767  	return *ret0, err
 13768  }
 13769  
 13770  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 13771  //
 13772  // Solidity: function balanceOf(address owner) view returns(uint256)
 13773  func (_ERC721 *ERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
 13774  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
 13775  }
 13776  
 13777  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 13778  //
 13779  // Solidity: function balanceOf(address owner) view returns(uint256)
 13780  func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 13781  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
 13782  }
 13783  
 13784  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 13785  //
 13786  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 13787  func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 13788  	var (
 13789  		ret0 = new(common.Address)
 13790  	)
 13791  	out := ret0
 13792  	err := _ERC721.contract.Call(opts, out, "getApproved", tokenId)
 13793  	return *ret0, err
 13794  }
 13795  
 13796  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 13797  //
 13798  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 13799  func (_ERC721 *ERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
 13800  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
 13801  }
 13802  
 13803  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 13804  //
 13805  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 13806  func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 13807  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
 13808  }
 13809  
 13810  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 13811  //
 13812  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 13813  func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 13814  	var (
 13815  		ret0 = new(bool)
 13816  	)
 13817  	out := ret0
 13818  	err := _ERC721.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 13819  	return *ret0, err
 13820  }
 13821  
 13822  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 13823  //
 13824  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 13825  func (_ERC721 *ERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 13826  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
 13827  }
 13828  
 13829  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 13830  //
 13831  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 13832  func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 13833  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
 13834  }
 13835  
 13836  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 13837  //
 13838  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 13839  func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 13840  	var (
 13841  		ret0 = new(common.Address)
 13842  	)
 13843  	out := ret0
 13844  	err := _ERC721.contract.Call(opts, out, "ownerOf", tokenId)
 13845  	return *ret0, err
 13846  }
 13847  
 13848  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 13849  //
 13850  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 13851  func (_ERC721 *ERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
 13852  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
 13853  }
 13854  
 13855  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 13856  //
 13857  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 13858  func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 13859  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
 13860  }
 13861  
 13862  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 13863  //
 13864  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 13865  func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 13866  	var (
 13867  		ret0 = new(bool)
 13868  	)
 13869  	out := ret0
 13870  	err := _ERC721.contract.Call(opts, out, "supportsInterface", interfaceId)
 13871  	return *ret0, err
 13872  }
 13873  
 13874  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 13875  //
 13876  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 13877  func (_ERC721 *ERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
 13878  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
 13879  }
 13880  
 13881  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 13882  //
 13883  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 13884  func (_ERC721 *ERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 13885  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
 13886  }
 13887  
 13888  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 13889  //
 13890  // Solidity: function approve(address to, uint256 tokenId) returns()
 13891  func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13892  	return _ERC721.contract.Transact(opts, "approve", to, tokenId)
 13893  }
 13894  
 13895  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 13896  //
 13897  // Solidity: function approve(address to, uint256 tokenId) returns()
 13898  func (_ERC721 *ERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13899  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
 13900  }
 13901  
 13902  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 13903  //
 13904  // Solidity: function approve(address to, uint256 tokenId) returns()
 13905  func (_ERC721 *ERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13906  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
 13907  }
 13908  
 13909  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 13910  //
 13911  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 13912  func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13913  	return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 13914  }
 13915  
 13916  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 13917  //
 13918  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 13919  func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13920  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
 13921  }
 13922  
 13923  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 13924  //
 13925  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 13926  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13927  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
 13928  }
 13929  
 13930  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 13931  //
 13932  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 13933  func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 13934  	return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 13935  }
 13936  
 13937  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 13938  //
 13939  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 13940  func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 13941  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
 13942  }
 13943  
 13944  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 13945  //
 13946  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 13947  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 13948  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
 13949  }
 13950  
 13951  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 13952  //
 13953  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 13954  func (_ERC721 *ERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 13955  	return _ERC721.contract.Transact(opts, "setApprovalForAll", to, approved)
 13956  }
 13957  
 13958  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 13959  //
 13960  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 13961  func (_ERC721 *ERC721Session) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 13962  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
 13963  }
 13964  
 13965  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 13966  //
 13967  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 13968  func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 13969  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
 13970  }
 13971  
 13972  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 13973  //
 13974  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 13975  func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13976  	return _ERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
 13977  }
 13978  
 13979  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 13980  //
 13981  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 13982  func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13983  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
 13984  }
 13985  
 13986  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 13987  //
 13988  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 13989  func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13990  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
 13991  }
 13992  
 13993  // ERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721 contract.
 13994  type ERC721ApprovalIterator struct {
 13995  	Event *ERC721Approval // Event containing the contract specifics and raw log
 13996  
 13997  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13998  	event    string              // Event name to use for unpacking event data
 13999  
 14000  	logs chan types.Log      // Log channel receiving the found contract events
 14001  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14002  	done bool                // Whether the subscription completed delivering logs
 14003  	fail error               // Occurred error to stop iteration
 14004  }
 14005  
 14006  // Next advances the iterator to the subsequent event, returning whether there
 14007  // are any more events found. In case of a retrieval or parsing error, false is
 14008  // returned and Error() can be queried for the exact failure.
 14009  func (it *ERC721ApprovalIterator) Next() bool {
 14010  	// If the iterator failed, stop iterating
 14011  	if it.fail != nil {
 14012  		return false
 14013  	}
 14014  	// If the iterator completed, deliver directly whatever's available
 14015  	if it.done {
 14016  		select {
 14017  		case log := <-it.logs:
 14018  			it.Event = new(ERC721Approval)
 14019  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14020  				it.fail = err
 14021  				return false
 14022  			}
 14023  			it.Event.Raw = log
 14024  			return true
 14025  
 14026  		default:
 14027  			return false
 14028  		}
 14029  	}
 14030  	// Iterator still in progress, wait for either a data or an error event
 14031  	select {
 14032  	case log := <-it.logs:
 14033  		it.Event = new(ERC721Approval)
 14034  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14035  			it.fail = err
 14036  			return false
 14037  		}
 14038  		it.Event.Raw = log
 14039  		return true
 14040  
 14041  	case err := <-it.sub.Err():
 14042  		it.done = true
 14043  		it.fail = err
 14044  		return it.Next()
 14045  	}
 14046  }
 14047  
 14048  // Error returns any retrieval or parsing error occurred during filtering.
 14049  func (it *ERC721ApprovalIterator) Error() error {
 14050  	return it.fail
 14051  }
 14052  
 14053  // Close terminates the iteration process, releasing any pending underlying
 14054  // resources.
 14055  func (it *ERC721ApprovalIterator) Close() error {
 14056  	it.sub.Unsubscribe()
 14057  	return nil
 14058  }
 14059  
 14060  // ERC721Approval represents a Approval event raised by the ERC721 contract.
 14061  type ERC721Approval struct {
 14062  	Owner    common.Address
 14063  	Approved common.Address
 14064  	TokenId  *big.Int
 14065  	Raw      types.Log // Blockchain specific contextual infos
 14066  }
 14067  
 14068  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14069  //
 14070  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 14071  func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) {
 14072  
 14073  	var ownerRule []interface{}
 14074  	for _, ownerItem := range owner {
 14075  		ownerRule = append(ownerRule, ownerItem)
 14076  	}
 14077  	var approvedRule []interface{}
 14078  	for _, approvedItem := range approved {
 14079  		approvedRule = append(approvedRule, approvedItem)
 14080  	}
 14081  	var tokenIdRule []interface{}
 14082  	for _, tokenIdItem := range tokenId {
 14083  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14084  	}
 14085  
 14086  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 14087  	if err != nil {
 14088  		return nil, err
 14089  	}
 14090  	return &ERC721ApprovalIterator{contract: _ERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
 14091  }
 14092  
 14093  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14094  //
 14095  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 14096  func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 14097  
 14098  	var ownerRule []interface{}
 14099  	for _, ownerItem := range owner {
 14100  		ownerRule = append(ownerRule, ownerItem)
 14101  	}
 14102  	var approvedRule []interface{}
 14103  	for _, approvedItem := range approved {
 14104  		approvedRule = append(approvedRule, approvedItem)
 14105  	}
 14106  	var tokenIdRule []interface{}
 14107  	for _, tokenIdItem := range tokenId {
 14108  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14109  	}
 14110  
 14111  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 14112  	if err != nil {
 14113  		return nil, err
 14114  	}
 14115  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14116  		defer sub.Unsubscribe()
 14117  		for {
 14118  			select {
 14119  			case log := <-logs:
 14120  				// New log arrived, parse the event and forward to the user
 14121  				event := new(ERC721Approval)
 14122  				if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
 14123  					return err
 14124  				}
 14125  				event.Raw = log
 14126  
 14127  				select {
 14128  				case sink <- event:
 14129  				case err := <-sub.Err():
 14130  					return err
 14131  				case <-quit:
 14132  					return nil
 14133  				}
 14134  			case err := <-sub.Err():
 14135  				return err
 14136  			case <-quit:
 14137  				return nil
 14138  			}
 14139  		}
 14140  	}), nil
 14141  }
 14142  
 14143  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14144  //
 14145  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 14146  func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) {
 14147  	event := new(ERC721Approval)
 14148  	if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
 14149  		return nil, err
 14150  	}
 14151  	return event, nil
 14152  }
 14153  
 14154  // ERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721 contract.
 14155  type ERC721ApprovalForAllIterator struct {
 14156  	Event *ERC721ApprovalForAll // Event containing the contract specifics and raw log
 14157  
 14158  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14159  	event    string              // Event name to use for unpacking event data
 14160  
 14161  	logs chan types.Log      // Log channel receiving the found contract events
 14162  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14163  	done bool                // Whether the subscription completed delivering logs
 14164  	fail error               // Occurred error to stop iteration
 14165  }
 14166  
 14167  // Next advances the iterator to the subsequent event, returning whether there
 14168  // are any more events found. In case of a retrieval or parsing error, false is
 14169  // returned and Error() can be queried for the exact failure.
 14170  func (it *ERC721ApprovalForAllIterator) Next() bool {
 14171  	// If the iterator failed, stop iterating
 14172  	if it.fail != nil {
 14173  		return false
 14174  	}
 14175  	// If the iterator completed, deliver directly whatever's available
 14176  	if it.done {
 14177  		select {
 14178  		case log := <-it.logs:
 14179  			it.Event = new(ERC721ApprovalForAll)
 14180  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14181  				it.fail = err
 14182  				return false
 14183  			}
 14184  			it.Event.Raw = log
 14185  			return true
 14186  
 14187  		default:
 14188  			return false
 14189  		}
 14190  	}
 14191  	// Iterator still in progress, wait for either a data or an error event
 14192  	select {
 14193  	case log := <-it.logs:
 14194  		it.Event = new(ERC721ApprovalForAll)
 14195  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14196  			it.fail = err
 14197  			return false
 14198  		}
 14199  		it.Event.Raw = log
 14200  		return true
 14201  
 14202  	case err := <-it.sub.Err():
 14203  		it.done = true
 14204  		it.fail = err
 14205  		return it.Next()
 14206  	}
 14207  }
 14208  
 14209  // Error returns any retrieval or parsing error occurred during filtering.
 14210  func (it *ERC721ApprovalForAllIterator) Error() error {
 14211  	return it.fail
 14212  }
 14213  
 14214  // Close terminates the iteration process, releasing any pending underlying
 14215  // resources.
 14216  func (it *ERC721ApprovalForAllIterator) Close() error {
 14217  	it.sub.Unsubscribe()
 14218  	return nil
 14219  }
 14220  
 14221  // ERC721ApprovalForAll represents a ApprovalForAll event raised by the ERC721 contract.
 14222  type ERC721ApprovalForAll struct {
 14223  	Owner    common.Address
 14224  	Operator common.Address
 14225  	Approved bool
 14226  	Raw      types.Log // Blockchain specific contextual infos
 14227  }
 14228  
 14229  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 14230  //
 14231  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 14232  func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) {
 14233  
 14234  	var ownerRule []interface{}
 14235  	for _, ownerItem := range owner {
 14236  		ownerRule = append(ownerRule, ownerItem)
 14237  	}
 14238  	var operatorRule []interface{}
 14239  	for _, operatorItem := range operator {
 14240  		operatorRule = append(operatorRule, operatorItem)
 14241  	}
 14242  
 14243  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 14244  	if err != nil {
 14245  		return nil, err
 14246  	}
 14247  	return &ERC721ApprovalForAllIterator{contract: _ERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 14248  }
 14249  
 14250  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 14251  //
 14252  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 14253  func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 14254  
 14255  	var ownerRule []interface{}
 14256  	for _, ownerItem := range owner {
 14257  		ownerRule = append(ownerRule, ownerItem)
 14258  	}
 14259  	var operatorRule []interface{}
 14260  	for _, operatorItem := range operator {
 14261  		operatorRule = append(operatorRule, operatorItem)
 14262  	}
 14263  
 14264  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 14265  	if err != nil {
 14266  		return nil, err
 14267  	}
 14268  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14269  		defer sub.Unsubscribe()
 14270  		for {
 14271  			select {
 14272  			case log := <-logs:
 14273  				// New log arrived, parse the event and forward to the user
 14274  				event := new(ERC721ApprovalForAll)
 14275  				if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 14276  					return err
 14277  				}
 14278  				event.Raw = log
 14279  
 14280  				select {
 14281  				case sink <- event:
 14282  				case err := <-sub.Err():
 14283  					return err
 14284  				case <-quit:
 14285  					return nil
 14286  				}
 14287  			case err := <-sub.Err():
 14288  				return err
 14289  			case <-quit:
 14290  				return nil
 14291  			}
 14292  		}
 14293  	}), nil
 14294  }
 14295  
 14296  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 14297  //
 14298  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 14299  func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721ApprovalForAll, error) {
 14300  	event := new(ERC721ApprovalForAll)
 14301  	if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 14302  		return nil, err
 14303  	}
 14304  	return event, nil
 14305  }
 14306  
 14307  // ERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721 contract.
 14308  type ERC721TransferIterator struct {
 14309  	Event *ERC721Transfer // Event containing the contract specifics and raw log
 14310  
 14311  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14312  	event    string              // Event name to use for unpacking event data
 14313  
 14314  	logs chan types.Log      // Log channel receiving the found contract events
 14315  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14316  	done bool                // Whether the subscription completed delivering logs
 14317  	fail error               // Occurred error to stop iteration
 14318  }
 14319  
 14320  // Next advances the iterator to the subsequent event, returning whether there
 14321  // are any more events found. In case of a retrieval or parsing error, false is
 14322  // returned and Error() can be queried for the exact failure.
 14323  func (it *ERC721TransferIterator) Next() bool {
 14324  	// If the iterator failed, stop iterating
 14325  	if it.fail != nil {
 14326  		return false
 14327  	}
 14328  	// If the iterator completed, deliver directly whatever's available
 14329  	if it.done {
 14330  		select {
 14331  		case log := <-it.logs:
 14332  			it.Event = new(ERC721Transfer)
 14333  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14334  				it.fail = err
 14335  				return false
 14336  			}
 14337  			it.Event.Raw = log
 14338  			return true
 14339  
 14340  		default:
 14341  			return false
 14342  		}
 14343  	}
 14344  	// Iterator still in progress, wait for either a data or an error event
 14345  	select {
 14346  	case log := <-it.logs:
 14347  		it.Event = new(ERC721Transfer)
 14348  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14349  			it.fail = err
 14350  			return false
 14351  		}
 14352  		it.Event.Raw = log
 14353  		return true
 14354  
 14355  	case err := <-it.sub.Err():
 14356  		it.done = true
 14357  		it.fail = err
 14358  		return it.Next()
 14359  	}
 14360  }
 14361  
 14362  // Error returns any retrieval or parsing error occurred during filtering.
 14363  func (it *ERC721TransferIterator) Error() error {
 14364  	return it.fail
 14365  }
 14366  
 14367  // Close terminates the iteration process, releasing any pending underlying
 14368  // resources.
 14369  func (it *ERC721TransferIterator) Close() error {
 14370  	it.sub.Unsubscribe()
 14371  	return nil
 14372  }
 14373  
 14374  // ERC721Transfer represents a Transfer event raised by the ERC721 contract.
 14375  type ERC721Transfer struct {
 14376  	From    common.Address
 14377  	To      common.Address
 14378  	TokenId *big.Int
 14379  	Raw     types.Log // Blockchain specific contextual infos
 14380  }
 14381  
 14382  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 14383  //
 14384  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 14385  func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) {
 14386  
 14387  	var fromRule []interface{}
 14388  	for _, fromItem := range from {
 14389  		fromRule = append(fromRule, fromItem)
 14390  	}
 14391  	var toRule []interface{}
 14392  	for _, toItem := range to {
 14393  		toRule = append(toRule, toItem)
 14394  	}
 14395  	var tokenIdRule []interface{}
 14396  	for _, tokenIdItem := range tokenId {
 14397  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14398  	}
 14399  
 14400  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 14401  	if err != nil {
 14402  		return nil, err
 14403  	}
 14404  	return &ERC721TransferIterator{contract: _ERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
 14405  }
 14406  
 14407  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 14408  //
 14409  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 14410  func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 14411  
 14412  	var fromRule []interface{}
 14413  	for _, fromItem := range from {
 14414  		fromRule = append(fromRule, fromItem)
 14415  	}
 14416  	var toRule []interface{}
 14417  	for _, toItem := range to {
 14418  		toRule = append(toRule, toItem)
 14419  	}
 14420  	var tokenIdRule []interface{}
 14421  	for _, tokenIdItem := range tokenId {
 14422  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14423  	}
 14424  
 14425  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 14426  	if err != nil {
 14427  		return nil, err
 14428  	}
 14429  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14430  		defer sub.Unsubscribe()
 14431  		for {
 14432  			select {
 14433  			case log := <-logs:
 14434  				// New log arrived, parse the event and forward to the user
 14435  				event := new(ERC721Transfer)
 14436  				if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
 14437  					return err
 14438  				}
 14439  				event.Raw = log
 14440  
 14441  				select {
 14442  				case sink <- event:
 14443  				case err := <-sub.Err():
 14444  					return err
 14445  				case <-quit:
 14446  					return nil
 14447  				}
 14448  			case err := <-sub.Err():
 14449  				return err
 14450  			case <-quit:
 14451  				return nil
 14452  			}
 14453  		}
 14454  	}), nil
 14455  }
 14456  
 14457  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 14458  //
 14459  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 14460  func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) {
 14461  	event := new(ERC721Transfer)
 14462  	if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
 14463  		return nil, err
 14464  	}
 14465  	return event, nil
 14466  }
 14467  
 14468  // ERC721BurnableABI is the input ABI used to generate the binding from.
 14469  const ERC721BurnableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 14470  
 14471  // ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 14472  const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582035986e074f001b98f3d4f8e669063ef8d5efcf5cb63f5103e5e5296048223c1d0029`
 14473  
 14474  // ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation.
 14475  var ERC721BurnableFuncSigs = map[string]string{
 14476  	"095ea7b3": "approve(address,uint256)",
 14477  	"70a08231": "balanceOf(address)",
 14478  	"42966c68": "burn(uint256)",
 14479  	"081812fc": "getApproved(uint256)",
 14480  	"e985e9c5": "isApprovedForAll(address,address)",
 14481  	"6352211e": "ownerOf(uint256)",
 14482  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 14483  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 14484  	"a22cb465": "setApprovalForAll(address,bool)",
 14485  	"01ffc9a7": "supportsInterface(bytes4)",
 14486  	"23b872dd": "transferFrom(address,address,uint256)",
 14487  }
 14488  
 14489  // ERC721BurnableBin is the compiled bytecode used for deploying new contracts.
 14490  var ERC721BurnableBin = "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582035986e074f001b98f3d4f8e669063ef8d5efcf5cb63f5103e5e5296048223c1d0029"
 14491  
 14492  // DeployERC721Burnable deploys a new Klaytn contract, binding an instance of ERC721Burnable to it.
 14493  func DeployERC721Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Burnable, error) {
 14494  	parsed, err := abi.JSON(strings.NewReader(ERC721BurnableABI))
 14495  	if err != nil {
 14496  		return common.Address{}, nil, nil, err
 14497  	}
 14498  
 14499  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721BurnableBin), backend)
 14500  	if err != nil {
 14501  		return common.Address{}, nil, nil, err
 14502  	}
 14503  	return address, tx, &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
 14504  }
 14505  
 14506  // ERC721Burnable is an auto generated Go binding around a Klaytn contract.
 14507  type ERC721Burnable struct {
 14508  	ERC721BurnableCaller     // Read-only binding to the contract
 14509  	ERC721BurnableTransactor // Write-only binding to the contract
 14510  	ERC721BurnableFilterer   // Log filterer for contract events
 14511  }
 14512  
 14513  // ERC721BurnableCaller is an auto generated read-only Go binding around a Klaytn contract.
 14514  type ERC721BurnableCaller struct {
 14515  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14516  }
 14517  
 14518  // ERC721BurnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 14519  type ERC721BurnableTransactor struct {
 14520  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14521  }
 14522  
 14523  // ERC721BurnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 14524  type ERC721BurnableFilterer struct {
 14525  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 14526  }
 14527  
 14528  // ERC721BurnableSession is an auto generated Go binding around a Klaytn contract,
 14529  // with pre-set call and transact options.
 14530  type ERC721BurnableSession struct {
 14531  	Contract     *ERC721Burnable   // Generic contract binding to set the session for
 14532  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 14533  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 14534  }
 14535  
 14536  // ERC721BurnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 14537  // with pre-set call options.
 14538  type ERC721BurnableCallerSession struct {
 14539  	Contract *ERC721BurnableCaller // Generic contract caller binding to set the session for
 14540  	CallOpts bind.CallOpts         // Call options to use throughout this session
 14541  }
 14542  
 14543  // ERC721BurnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 14544  // with pre-set transact options.
 14545  type ERC721BurnableTransactorSession struct {
 14546  	Contract     *ERC721BurnableTransactor // Generic contract transactor binding to set the session for
 14547  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
 14548  }
 14549  
 14550  // ERC721BurnableRaw is an auto generated low-level Go binding around a Klaytn contract.
 14551  type ERC721BurnableRaw struct {
 14552  	Contract *ERC721Burnable // Generic contract binding to access the raw methods on
 14553  }
 14554  
 14555  // ERC721BurnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 14556  type ERC721BurnableCallerRaw struct {
 14557  	Contract *ERC721BurnableCaller // Generic read-only contract binding to access the raw methods on
 14558  }
 14559  
 14560  // ERC721BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 14561  type ERC721BurnableTransactorRaw struct {
 14562  	Contract *ERC721BurnableTransactor // Generic write-only contract binding to access the raw methods on
 14563  }
 14564  
 14565  // NewERC721Burnable creates a new instance of ERC721Burnable, bound to a specific deployed contract.
 14566  func NewERC721Burnable(address common.Address, backend bind.ContractBackend) (*ERC721Burnable, error) {
 14567  	contract, err := bindERC721Burnable(address, backend, backend, backend)
 14568  	if err != nil {
 14569  		return nil, err
 14570  	}
 14571  	return &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
 14572  }
 14573  
 14574  // NewERC721BurnableCaller creates a new read-only instance of ERC721Burnable, bound to a specific deployed contract.
 14575  func NewERC721BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC721BurnableCaller, error) {
 14576  	contract, err := bindERC721Burnable(address, caller, nil, nil)
 14577  	if err != nil {
 14578  		return nil, err
 14579  	}
 14580  	return &ERC721BurnableCaller{contract: contract}, nil
 14581  }
 14582  
 14583  // NewERC721BurnableTransactor creates a new write-only instance of ERC721Burnable, bound to a specific deployed contract.
 14584  func NewERC721BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721BurnableTransactor, error) {
 14585  	contract, err := bindERC721Burnable(address, nil, transactor, nil)
 14586  	if err != nil {
 14587  		return nil, err
 14588  	}
 14589  	return &ERC721BurnableTransactor{contract: contract}, nil
 14590  }
 14591  
 14592  // NewERC721BurnableFilterer creates a new log filterer instance of ERC721Burnable, bound to a specific deployed contract.
 14593  func NewERC721BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721BurnableFilterer, error) {
 14594  	contract, err := bindERC721Burnable(address, nil, nil, filterer)
 14595  	if err != nil {
 14596  		return nil, err
 14597  	}
 14598  	return &ERC721BurnableFilterer{contract: contract}, nil
 14599  }
 14600  
 14601  // bindERC721Burnable binds a generic wrapper to an already deployed contract.
 14602  func bindERC721Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 14603  	parsed, err := abi.JSON(strings.NewReader(ERC721BurnableABI))
 14604  	if err != nil {
 14605  		return nil, err
 14606  	}
 14607  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 14608  }
 14609  
 14610  // Call invokes the (constant) contract method with params as input values and
 14611  // sets the output to result. The result type might be a single field for simple
 14612  // returns, a slice of interfaces for anonymous returns and a struct for named
 14613  // returns.
 14614  func (_ERC721Burnable *ERC721BurnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14615  	return _ERC721Burnable.Contract.ERC721BurnableCaller.contract.Call(opts, result, method, params...)
 14616  }
 14617  
 14618  // Transfer initiates a plain transaction to move funds to the contract, calling
 14619  // its default method if one is available.
 14620  func (_ERC721Burnable *ERC721BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14621  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transfer(opts)
 14622  }
 14623  
 14624  // Transact invokes the (paid) contract method with params as input values.
 14625  func (_ERC721Burnable *ERC721BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14626  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transact(opts, method, params...)
 14627  }
 14628  
 14629  // Call invokes the (constant) contract method with params as input values and
 14630  // sets the output to result. The result type might be a single field for simple
 14631  // returns, a slice of interfaces for anonymous returns and a struct for named
 14632  // returns.
 14633  func (_ERC721Burnable *ERC721BurnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 14634  	return _ERC721Burnable.Contract.contract.Call(opts, result, method, params...)
 14635  }
 14636  
 14637  // Transfer initiates a plain transaction to move funds to the contract, calling
 14638  // its default method if one is available.
 14639  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 14640  	return _ERC721Burnable.Contract.contract.Transfer(opts)
 14641  }
 14642  
 14643  // Transact invokes the (paid) contract method with params as input values.
 14644  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 14645  	return _ERC721Burnable.Contract.contract.Transact(opts, method, params...)
 14646  }
 14647  
 14648  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 14649  //
 14650  // Solidity: function balanceOf(address owner) view returns(uint256)
 14651  func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 14652  	var (
 14653  		ret0 = new(*big.Int)
 14654  	)
 14655  	out := ret0
 14656  	err := _ERC721Burnable.contract.Call(opts, out, "balanceOf", owner)
 14657  	return *ret0, err
 14658  }
 14659  
 14660  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 14661  //
 14662  // Solidity: function balanceOf(address owner) view returns(uint256)
 14663  func (_ERC721Burnable *ERC721BurnableSession) BalanceOf(owner common.Address) (*big.Int, error) {
 14664  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
 14665  }
 14666  
 14667  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 14668  //
 14669  // Solidity: function balanceOf(address owner) view returns(uint256)
 14670  func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 14671  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
 14672  }
 14673  
 14674  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 14675  //
 14676  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 14677  func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 14678  	var (
 14679  		ret0 = new(common.Address)
 14680  	)
 14681  	out := ret0
 14682  	err := _ERC721Burnable.contract.Call(opts, out, "getApproved", tokenId)
 14683  	return *ret0, err
 14684  }
 14685  
 14686  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 14687  //
 14688  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 14689  func (_ERC721Burnable *ERC721BurnableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 14690  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
 14691  }
 14692  
 14693  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 14694  //
 14695  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 14696  func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 14697  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
 14698  }
 14699  
 14700  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 14701  //
 14702  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 14703  func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 14704  	var (
 14705  		ret0 = new(bool)
 14706  	)
 14707  	out := ret0
 14708  	err := _ERC721Burnable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 14709  	return *ret0, err
 14710  }
 14711  
 14712  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 14713  //
 14714  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 14715  func (_ERC721Burnable *ERC721BurnableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 14716  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
 14717  }
 14718  
 14719  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 14720  //
 14721  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 14722  func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 14723  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
 14724  }
 14725  
 14726  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 14727  //
 14728  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 14729  func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 14730  	var (
 14731  		ret0 = new(common.Address)
 14732  	)
 14733  	out := ret0
 14734  	err := _ERC721Burnable.contract.Call(opts, out, "ownerOf", tokenId)
 14735  	return *ret0, err
 14736  }
 14737  
 14738  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 14739  //
 14740  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 14741  func (_ERC721Burnable *ERC721BurnableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 14742  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
 14743  }
 14744  
 14745  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 14746  //
 14747  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 14748  func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 14749  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
 14750  }
 14751  
 14752  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 14753  //
 14754  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 14755  func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 14756  	var (
 14757  		ret0 = new(bool)
 14758  	)
 14759  	out := ret0
 14760  	err := _ERC721Burnable.contract.Call(opts, out, "supportsInterface", interfaceId)
 14761  	return *ret0, err
 14762  }
 14763  
 14764  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 14765  //
 14766  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 14767  func (_ERC721Burnable *ERC721BurnableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 14768  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
 14769  }
 14770  
 14771  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 14772  //
 14773  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 14774  func (_ERC721Burnable *ERC721BurnableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 14775  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
 14776  }
 14777  
 14778  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 14779  //
 14780  // Solidity: function approve(address to, uint256 tokenId) returns()
 14781  func (_ERC721Burnable *ERC721BurnableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 14782  	return _ERC721Burnable.contract.Transact(opts, "approve", to, tokenId)
 14783  }
 14784  
 14785  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 14786  //
 14787  // Solidity: function approve(address to, uint256 tokenId) returns()
 14788  func (_ERC721Burnable *ERC721BurnableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 14789  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
 14790  }
 14791  
 14792  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 14793  //
 14794  // Solidity: function approve(address to, uint256 tokenId) returns()
 14795  func (_ERC721Burnable *ERC721BurnableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 14796  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
 14797  }
 14798  
 14799  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 14800  //
 14801  // Solidity: function burn(uint256 tokenId) returns()
 14802  func (_ERC721Burnable *ERC721BurnableTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) {
 14803  	return _ERC721Burnable.contract.Transact(opts, "burn", tokenId)
 14804  }
 14805  
 14806  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 14807  //
 14808  // Solidity: function burn(uint256 tokenId) returns()
 14809  func (_ERC721Burnable *ERC721BurnableSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
 14810  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
 14811  }
 14812  
 14813  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 14814  //
 14815  // Solidity: function burn(uint256 tokenId) returns()
 14816  func (_ERC721Burnable *ERC721BurnableTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
 14817  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
 14818  }
 14819  
 14820  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 14821  //
 14822  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 14823  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 14824  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 14825  }
 14826  
 14827  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 14828  //
 14829  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 14830  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 14831  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
 14832  }
 14833  
 14834  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 14835  //
 14836  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 14837  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 14838  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
 14839  }
 14840  
 14841  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 14842  //
 14843  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 14844  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 14845  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 14846  }
 14847  
 14848  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 14849  //
 14850  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 14851  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 14852  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
 14853  }
 14854  
 14855  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 14856  //
 14857  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 14858  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 14859  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
 14860  }
 14861  
 14862  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 14863  //
 14864  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 14865  func (_ERC721Burnable *ERC721BurnableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 14866  	return _ERC721Burnable.contract.Transact(opts, "setApprovalForAll", to, approved)
 14867  }
 14868  
 14869  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 14870  //
 14871  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 14872  func (_ERC721Burnable *ERC721BurnableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 14873  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
 14874  }
 14875  
 14876  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 14877  //
 14878  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 14879  func (_ERC721Burnable *ERC721BurnableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 14880  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
 14881  }
 14882  
 14883  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 14884  //
 14885  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 14886  func (_ERC721Burnable *ERC721BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 14887  	return _ERC721Burnable.contract.Transact(opts, "transferFrom", from, to, tokenId)
 14888  }
 14889  
 14890  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 14891  //
 14892  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 14893  func (_ERC721Burnable *ERC721BurnableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 14894  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
 14895  }
 14896  
 14897  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 14898  //
 14899  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 14900  func (_ERC721Burnable *ERC721BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 14901  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
 14902  }
 14903  
 14904  // ERC721BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Burnable contract.
 14905  type ERC721BurnableApprovalIterator struct {
 14906  	Event *ERC721BurnableApproval // Event containing the contract specifics and raw log
 14907  
 14908  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14909  	event    string              // Event name to use for unpacking event data
 14910  
 14911  	logs chan types.Log      // Log channel receiving the found contract events
 14912  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14913  	done bool                // Whether the subscription completed delivering logs
 14914  	fail error               // Occurred error to stop iteration
 14915  }
 14916  
 14917  // Next advances the iterator to the subsequent event, returning whether there
 14918  // are any more events found. In case of a retrieval or parsing error, false is
 14919  // returned and Error() can be queried for the exact failure.
 14920  func (it *ERC721BurnableApprovalIterator) Next() bool {
 14921  	// If the iterator failed, stop iterating
 14922  	if it.fail != nil {
 14923  		return false
 14924  	}
 14925  	// If the iterator completed, deliver directly whatever's available
 14926  	if it.done {
 14927  		select {
 14928  		case log := <-it.logs:
 14929  			it.Event = new(ERC721BurnableApproval)
 14930  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14931  				it.fail = err
 14932  				return false
 14933  			}
 14934  			it.Event.Raw = log
 14935  			return true
 14936  
 14937  		default:
 14938  			return false
 14939  		}
 14940  	}
 14941  	// Iterator still in progress, wait for either a data or an error event
 14942  	select {
 14943  	case log := <-it.logs:
 14944  		it.Event = new(ERC721BurnableApproval)
 14945  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14946  			it.fail = err
 14947  			return false
 14948  		}
 14949  		it.Event.Raw = log
 14950  		return true
 14951  
 14952  	case err := <-it.sub.Err():
 14953  		it.done = true
 14954  		it.fail = err
 14955  		return it.Next()
 14956  	}
 14957  }
 14958  
 14959  // Error returns any retrieval or parsing error occurred during filtering.
 14960  func (it *ERC721BurnableApprovalIterator) Error() error {
 14961  	return it.fail
 14962  }
 14963  
 14964  // Close terminates the iteration process, releasing any pending underlying
 14965  // resources.
 14966  func (it *ERC721BurnableApprovalIterator) Close() error {
 14967  	it.sub.Unsubscribe()
 14968  	return nil
 14969  }
 14970  
 14971  // ERC721BurnableApproval represents a Approval event raised by the ERC721Burnable contract.
 14972  type ERC721BurnableApproval struct {
 14973  	Owner    common.Address
 14974  	Approved common.Address
 14975  	TokenId  *big.Int
 14976  	Raw      types.Log // Blockchain specific contextual infos
 14977  }
 14978  
 14979  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 14980  //
 14981  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 14982  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) {
 14983  
 14984  	var ownerRule []interface{}
 14985  	for _, ownerItem := range owner {
 14986  		ownerRule = append(ownerRule, ownerItem)
 14987  	}
 14988  	var approvedRule []interface{}
 14989  	for _, approvedItem := range approved {
 14990  		approvedRule = append(approvedRule, approvedItem)
 14991  	}
 14992  	var tokenIdRule []interface{}
 14993  	for _, tokenIdItem := range tokenId {
 14994  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14995  	}
 14996  
 14997  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 14998  	if err != nil {
 14999  		return nil, err
 15000  	}
 15001  	return &ERC721BurnableApprovalIterator{contract: _ERC721Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
 15002  }
 15003  
 15004  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 15005  //
 15006  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 15007  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 15008  
 15009  	var ownerRule []interface{}
 15010  	for _, ownerItem := range owner {
 15011  		ownerRule = append(ownerRule, ownerItem)
 15012  	}
 15013  	var approvedRule []interface{}
 15014  	for _, approvedItem := range approved {
 15015  		approvedRule = append(approvedRule, approvedItem)
 15016  	}
 15017  	var tokenIdRule []interface{}
 15018  	for _, tokenIdItem := range tokenId {
 15019  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 15020  	}
 15021  
 15022  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 15023  	if err != nil {
 15024  		return nil, err
 15025  	}
 15026  	return event.NewSubscription(func(quit <-chan struct{}) error {
 15027  		defer sub.Unsubscribe()
 15028  		for {
 15029  			select {
 15030  			case log := <-logs:
 15031  				// New log arrived, parse the event and forward to the user
 15032  				event := new(ERC721BurnableApproval)
 15033  				if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
 15034  					return err
 15035  				}
 15036  				event.Raw = log
 15037  
 15038  				select {
 15039  				case sink <- event:
 15040  				case err := <-sub.Err():
 15041  					return err
 15042  				case <-quit:
 15043  					return nil
 15044  				}
 15045  			case err := <-sub.Err():
 15046  				return err
 15047  			case <-quit:
 15048  				return nil
 15049  			}
 15050  		}
 15051  	}), nil
 15052  }
 15053  
 15054  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 15055  //
 15056  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 15057  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ERC721BurnableApproval, error) {
 15058  	event := new(ERC721BurnableApproval)
 15059  	if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
 15060  		return nil, err
 15061  	}
 15062  	return event, nil
 15063  }
 15064  
 15065  // ERC721BurnableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Burnable contract.
 15066  type ERC721BurnableApprovalForAllIterator struct {
 15067  	Event *ERC721BurnableApprovalForAll // Event containing the contract specifics and raw log
 15068  
 15069  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 15070  	event    string              // Event name to use for unpacking event data
 15071  
 15072  	logs chan types.Log      // Log channel receiving the found contract events
 15073  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 15074  	done bool                // Whether the subscription completed delivering logs
 15075  	fail error               // Occurred error to stop iteration
 15076  }
 15077  
 15078  // Next advances the iterator to the subsequent event, returning whether there
 15079  // are any more events found. In case of a retrieval or parsing error, false is
 15080  // returned and Error() can be queried for the exact failure.
 15081  func (it *ERC721BurnableApprovalForAllIterator) Next() bool {
 15082  	// If the iterator failed, stop iterating
 15083  	if it.fail != nil {
 15084  		return false
 15085  	}
 15086  	// If the iterator completed, deliver directly whatever's available
 15087  	if it.done {
 15088  		select {
 15089  		case log := <-it.logs:
 15090  			it.Event = new(ERC721BurnableApprovalForAll)
 15091  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15092  				it.fail = err
 15093  				return false
 15094  			}
 15095  			it.Event.Raw = log
 15096  			return true
 15097  
 15098  		default:
 15099  			return false
 15100  		}
 15101  	}
 15102  	// Iterator still in progress, wait for either a data or an error event
 15103  	select {
 15104  	case log := <-it.logs:
 15105  		it.Event = new(ERC721BurnableApprovalForAll)
 15106  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15107  			it.fail = err
 15108  			return false
 15109  		}
 15110  		it.Event.Raw = log
 15111  		return true
 15112  
 15113  	case err := <-it.sub.Err():
 15114  		it.done = true
 15115  		it.fail = err
 15116  		return it.Next()
 15117  	}
 15118  }
 15119  
 15120  // Error returns any retrieval or parsing error occurred during filtering.
 15121  func (it *ERC721BurnableApprovalForAllIterator) Error() error {
 15122  	return it.fail
 15123  }
 15124  
 15125  // Close terminates the iteration process, releasing any pending underlying
 15126  // resources.
 15127  func (it *ERC721BurnableApprovalForAllIterator) Close() error {
 15128  	it.sub.Unsubscribe()
 15129  	return nil
 15130  }
 15131  
 15132  // ERC721BurnableApprovalForAll represents a ApprovalForAll event raised by the ERC721Burnable contract.
 15133  type ERC721BurnableApprovalForAll struct {
 15134  	Owner    common.Address
 15135  	Operator common.Address
 15136  	Approved bool
 15137  	Raw      types.Log // Blockchain specific contextual infos
 15138  }
 15139  
 15140  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 15141  //
 15142  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 15143  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) {
 15144  
 15145  	var ownerRule []interface{}
 15146  	for _, ownerItem := range owner {
 15147  		ownerRule = append(ownerRule, ownerItem)
 15148  	}
 15149  	var operatorRule []interface{}
 15150  	for _, operatorItem := range operator {
 15151  		operatorRule = append(operatorRule, operatorItem)
 15152  	}
 15153  
 15154  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 15155  	if err != nil {
 15156  		return nil, err
 15157  	}
 15158  	return &ERC721BurnableApprovalForAllIterator{contract: _ERC721Burnable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 15159  }
 15160  
 15161  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 15162  //
 15163  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 15164  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 15165  
 15166  	var ownerRule []interface{}
 15167  	for _, ownerItem := range owner {
 15168  		ownerRule = append(ownerRule, ownerItem)
 15169  	}
 15170  	var operatorRule []interface{}
 15171  	for _, operatorItem := range operator {
 15172  		operatorRule = append(operatorRule, operatorItem)
 15173  	}
 15174  
 15175  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 15176  	if err != nil {
 15177  		return nil, err
 15178  	}
 15179  	return event.NewSubscription(func(quit <-chan struct{}) error {
 15180  		defer sub.Unsubscribe()
 15181  		for {
 15182  			select {
 15183  			case log := <-logs:
 15184  				// New log arrived, parse the event and forward to the user
 15185  				event := new(ERC721BurnableApprovalForAll)
 15186  				if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 15187  					return err
 15188  				}
 15189  				event.Raw = log
 15190  
 15191  				select {
 15192  				case sink <- event:
 15193  				case err := <-sub.Err():
 15194  					return err
 15195  				case <-quit:
 15196  					return nil
 15197  				}
 15198  			case err := <-sub.Err():
 15199  				return err
 15200  			case <-quit:
 15201  				return nil
 15202  			}
 15203  		}
 15204  	}), nil
 15205  }
 15206  
 15207  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 15208  //
 15209  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 15210  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log) (*ERC721BurnableApprovalForAll, error) {
 15211  	event := new(ERC721BurnableApprovalForAll)
 15212  	if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 15213  		return nil, err
 15214  	}
 15215  	return event, nil
 15216  }
 15217  
 15218  // ERC721BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Burnable contract.
 15219  type ERC721BurnableTransferIterator struct {
 15220  	Event *ERC721BurnableTransfer // Event containing the contract specifics and raw log
 15221  
 15222  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 15223  	event    string              // Event name to use for unpacking event data
 15224  
 15225  	logs chan types.Log      // Log channel receiving the found contract events
 15226  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 15227  	done bool                // Whether the subscription completed delivering logs
 15228  	fail error               // Occurred error to stop iteration
 15229  }
 15230  
 15231  // Next advances the iterator to the subsequent event, returning whether there
 15232  // are any more events found. In case of a retrieval or parsing error, false is
 15233  // returned and Error() can be queried for the exact failure.
 15234  func (it *ERC721BurnableTransferIterator) Next() bool {
 15235  	// If the iterator failed, stop iterating
 15236  	if it.fail != nil {
 15237  		return false
 15238  	}
 15239  	// If the iterator completed, deliver directly whatever's available
 15240  	if it.done {
 15241  		select {
 15242  		case log := <-it.logs:
 15243  			it.Event = new(ERC721BurnableTransfer)
 15244  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15245  				it.fail = err
 15246  				return false
 15247  			}
 15248  			it.Event.Raw = log
 15249  			return true
 15250  
 15251  		default:
 15252  			return false
 15253  		}
 15254  	}
 15255  	// Iterator still in progress, wait for either a data or an error event
 15256  	select {
 15257  	case log := <-it.logs:
 15258  		it.Event = new(ERC721BurnableTransfer)
 15259  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15260  			it.fail = err
 15261  			return false
 15262  		}
 15263  		it.Event.Raw = log
 15264  		return true
 15265  
 15266  	case err := <-it.sub.Err():
 15267  		it.done = true
 15268  		it.fail = err
 15269  		return it.Next()
 15270  	}
 15271  }
 15272  
 15273  // Error returns any retrieval or parsing error occurred during filtering.
 15274  func (it *ERC721BurnableTransferIterator) Error() error {
 15275  	return it.fail
 15276  }
 15277  
 15278  // Close terminates the iteration process, releasing any pending underlying
 15279  // resources.
 15280  func (it *ERC721BurnableTransferIterator) Close() error {
 15281  	it.sub.Unsubscribe()
 15282  	return nil
 15283  }
 15284  
 15285  // ERC721BurnableTransfer represents a Transfer event raised by the ERC721Burnable contract.
 15286  type ERC721BurnableTransfer struct {
 15287  	From    common.Address
 15288  	To      common.Address
 15289  	TokenId *big.Int
 15290  	Raw     types.Log // Blockchain specific contextual infos
 15291  }
 15292  
 15293  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 15294  //
 15295  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 15296  func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) {
 15297  
 15298  	var fromRule []interface{}
 15299  	for _, fromItem := range from {
 15300  		fromRule = append(fromRule, fromItem)
 15301  	}
 15302  	var toRule []interface{}
 15303  	for _, toItem := range to {
 15304  		toRule = append(toRule, toItem)
 15305  	}
 15306  	var tokenIdRule []interface{}
 15307  	for _, tokenIdItem := range tokenId {
 15308  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 15309  	}
 15310  
 15311  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 15312  	if err != nil {
 15313  		return nil, err
 15314  	}
 15315  	return &ERC721BurnableTransferIterator{contract: _ERC721Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
 15316  }
 15317  
 15318  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 15319  //
 15320  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 15321  func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 15322  
 15323  	var fromRule []interface{}
 15324  	for _, fromItem := range from {
 15325  		fromRule = append(fromRule, fromItem)
 15326  	}
 15327  	var toRule []interface{}
 15328  	for _, toItem := range to {
 15329  		toRule = append(toRule, toItem)
 15330  	}
 15331  	var tokenIdRule []interface{}
 15332  	for _, tokenIdItem := range tokenId {
 15333  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 15334  	}
 15335  
 15336  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 15337  	if err != nil {
 15338  		return nil, err
 15339  	}
 15340  	return event.NewSubscription(func(quit <-chan struct{}) error {
 15341  		defer sub.Unsubscribe()
 15342  		for {
 15343  			select {
 15344  			case log := <-logs:
 15345  				// New log arrived, parse the event and forward to the user
 15346  				event := new(ERC721BurnableTransfer)
 15347  				if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
 15348  					return err
 15349  				}
 15350  				event.Raw = log
 15351  
 15352  				select {
 15353  				case sink <- event:
 15354  				case err := <-sub.Err():
 15355  					return err
 15356  				case <-quit:
 15357  					return nil
 15358  				}
 15359  			case err := <-sub.Err():
 15360  				return err
 15361  			case <-quit:
 15362  				return nil
 15363  			}
 15364  		}
 15365  	}), nil
 15366  }
 15367  
 15368  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 15369  //
 15370  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 15371  func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ERC721BurnableTransfer, error) {
 15372  	event := new(ERC721BurnableTransfer)
 15373  	if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
 15374  		return nil, err
 15375  	}
 15376  	return event, nil
 15377  }
 15378  
 15379  // ERC721MetadataABI is the input ABI used to generate the binding from.
 15380  const ERC721MetadataABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 15381  
 15382  // ERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 15383  const ERC721MetadataBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582037ba54c848524be0056a573891a8b0f5c56b08f8613060e9876ee13fe582c6480029`
 15384  
 15385  // ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation.
 15386  var ERC721MetadataFuncSigs = map[string]string{
 15387  	"095ea7b3": "approve(address,uint256)",
 15388  	"70a08231": "balanceOf(address)",
 15389  	"081812fc": "getApproved(uint256)",
 15390  	"e985e9c5": "isApprovedForAll(address,address)",
 15391  	"06fdde03": "name()",
 15392  	"6352211e": "ownerOf(uint256)",
 15393  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 15394  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 15395  	"a22cb465": "setApprovalForAll(address,bool)",
 15396  	"01ffc9a7": "supportsInterface(bytes4)",
 15397  	"95d89b41": "symbol()",
 15398  	"c87b56dd": "tokenURI(uint256)",
 15399  	"23b872dd": "transferFrom(address,address,uint256)",
 15400  }
 15401  
 15402  // ERC721MetadataBin is the compiled bytecode used for deploying new contracts.
 15403  var ERC721MetadataBin = "0x60806040523480156200001157600080fd5b50604051620012f8380380620012f8833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b5050929190505050620000eb6301ffc9a760e01b6200014f60201b60201c565b620001036380ac58cd60e01b6200014f60201b60201c565b8151620001189060059060208501906200021e565b5080516200012e9060069060208401906200021e565b5062000147635b5e139f60e01b6200014f60201b60201c565b5050620002c3565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b620002c091905b808211156200029f5760008155600101620002aa565b90565b61102580620002d36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582037ba54c848524be0056a573891a8b0f5c56b08f8613060e9876ee13fe582c6480029"
 15404  
 15405  // DeployERC721Metadata deploys a new Klaytn contract, binding an instance of ERC721Metadata to it.
 15406  func DeployERC721Metadata(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721Metadata, error) {
 15407  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataABI))
 15408  	if err != nil {
 15409  		return common.Address{}, nil, nil, err
 15410  	}
 15411  
 15412  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721MetadataBin), backend, name, symbol)
 15413  	if err != nil {
 15414  		return common.Address{}, nil, nil, err
 15415  	}
 15416  	return address, tx, &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil
 15417  }
 15418  
 15419  // ERC721Metadata is an auto generated Go binding around a Klaytn contract.
 15420  type ERC721Metadata struct {
 15421  	ERC721MetadataCaller     // Read-only binding to the contract
 15422  	ERC721MetadataTransactor // Write-only binding to the contract
 15423  	ERC721MetadataFilterer   // Log filterer for contract events
 15424  }
 15425  
 15426  // ERC721MetadataCaller is an auto generated read-only Go binding around a Klaytn contract.
 15427  type ERC721MetadataCaller struct {
 15428  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 15429  }
 15430  
 15431  // ERC721MetadataTransactor is an auto generated write-only Go binding around a Klaytn contract.
 15432  type ERC721MetadataTransactor struct {
 15433  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 15434  }
 15435  
 15436  // ERC721MetadataFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 15437  type ERC721MetadataFilterer struct {
 15438  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 15439  }
 15440  
 15441  // ERC721MetadataSession is an auto generated Go binding around a Klaytn contract,
 15442  // with pre-set call and transact options.
 15443  type ERC721MetadataSession struct {
 15444  	Contract     *ERC721Metadata   // Generic contract binding to set the session for
 15445  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 15446  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 15447  }
 15448  
 15449  // ERC721MetadataCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 15450  // with pre-set call options.
 15451  type ERC721MetadataCallerSession struct {
 15452  	Contract *ERC721MetadataCaller // Generic contract caller binding to set the session for
 15453  	CallOpts bind.CallOpts         // Call options to use throughout this session
 15454  }
 15455  
 15456  // ERC721MetadataTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 15457  // with pre-set transact options.
 15458  type ERC721MetadataTransactorSession struct {
 15459  	Contract     *ERC721MetadataTransactor // Generic contract transactor binding to set the session for
 15460  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
 15461  }
 15462  
 15463  // ERC721MetadataRaw is an auto generated low-level Go binding around a Klaytn contract.
 15464  type ERC721MetadataRaw struct {
 15465  	Contract *ERC721Metadata // Generic contract binding to access the raw methods on
 15466  }
 15467  
 15468  // ERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 15469  type ERC721MetadataCallerRaw struct {
 15470  	Contract *ERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
 15471  }
 15472  
 15473  // ERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 15474  type ERC721MetadataTransactorRaw struct {
 15475  	Contract *ERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
 15476  }
 15477  
 15478  // NewERC721Metadata creates a new instance of ERC721Metadata, bound to a specific deployed contract.
 15479  func NewERC721Metadata(address common.Address, backend bind.ContractBackend) (*ERC721Metadata, error) {
 15480  	contract, err := bindERC721Metadata(address, backend, backend, backend)
 15481  	if err != nil {
 15482  		return nil, err
 15483  	}
 15484  	return &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil
 15485  }
 15486  
 15487  // NewERC721MetadataCaller creates a new read-only instance of ERC721Metadata, bound to a specific deployed contract.
 15488  func NewERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataCaller, error) {
 15489  	contract, err := bindERC721Metadata(address, caller, nil, nil)
 15490  	if err != nil {
 15491  		return nil, err
 15492  	}
 15493  	return &ERC721MetadataCaller{contract: contract}, nil
 15494  }
 15495  
 15496  // NewERC721MetadataTransactor creates a new write-only instance of ERC721Metadata, bound to a specific deployed contract.
 15497  func NewERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataTransactor, error) {
 15498  	contract, err := bindERC721Metadata(address, nil, transactor, nil)
 15499  	if err != nil {
 15500  		return nil, err
 15501  	}
 15502  	return &ERC721MetadataTransactor{contract: contract}, nil
 15503  }
 15504  
 15505  // NewERC721MetadataFilterer creates a new log filterer instance of ERC721Metadata, bound to a specific deployed contract.
 15506  func NewERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataFilterer, error) {
 15507  	contract, err := bindERC721Metadata(address, nil, nil, filterer)
 15508  	if err != nil {
 15509  		return nil, err
 15510  	}
 15511  	return &ERC721MetadataFilterer{contract: contract}, nil
 15512  }
 15513  
 15514  // bindERC721Metadata binds a generic wrapper to an already deployed contract.
 15515  func bindERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 15516  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataABI))
 15517  	if err != nil {
 15518  		return nil, err
 15519  	}
 15520  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 15521  }
 15522  
 15523  // Call invokes the (constant) contract method with params as input values and
 15524  // sets the output to result. The result type might be a single field for simple
 15525  // returns, a slice of interfaces for anonymous returns and a struct for named
 15526  // returns.
 15527  func (_ERC721Metadata *ERC721MetadataRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 15528  	return _ERC721Metadata.Contract.ERC721MetadataCaller.contract.Call(opts, result, method, params...)
 15529  }
 15530  
 15531  // Transfer initiates a plain transaction to move funds to the contract, calling
 15532  // its default method if one is available.
 15533  func (_ERC721Metadata *ERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 15534  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transfer(opts)
 15535  }
 15536  
 15537  // Transact invokes the (paid) contract method with params as input values.
 15538  func (_ERC721Metadata *ERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 15539  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transact(opts, method, params...)
 15540  }
 15541  
 15542  // Call invokes the (constant) contract method with params as input values and
 15543  // sets the output to result. The result type might be a single field for simple
 15544  // returns, a slice of interfaces for anonymous returns and a struct for named
 15545  // returns.
 15546  func (_ERC721Metadata *ERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 15547  	return _ERC721Metadata.Contract.contract.Call(opts, result, method, params...)
 15548  }
 15549  
 15550  // Transfer initiates a plain transaction to move funds to the contract, calling
 15551  // its default method if one is available.
 15552  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 15553  	return _ERC721Metadata.Contract.contract.Transfer(opts)
 15554  }
 15555  
 15556  // Transact invokes the (paid) contract method with params as input values.
 15557  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 15558  	return _ERC721Metadata.Contract.contract.Transact(opts, method, params...)
 15559  }
 15560  
 15561  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 15562  //
 15563  // Solidity: function balanceOf(address owner) view returns(uint256)
 15564  func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 15565  	var (
 15566  		ret0 = new(*big.Int)
 15567  	)
 15568  	out := ret0
 15569  	err := _ERC721Metadata.contract.Call(opts, out, "balanceOf", owner)
 15570  	return *ret0, err
 15571  }
 15572  
 15573  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 15574  //
 15575  // Solidity: function balanceOf(address owner) view returns(uint256)
 15576  func (_ERC721Metadata *ERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) {
 15577  	return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner)
 15578  }
 15579  
 15580  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 15581  //
 15582  // Solidity: function balanceOf(address owner) view returns(uint256)
 15583  func (_ERC721Metadata *ERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 15584  	return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner)
 15585  }
 15586  
 15587  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 15588  //
 15589  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 15590  func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 15591  	var (
 15592  		ret0 = new(common.Address)
 15593  	)
 15594  	out := ret0
 15595  	err := _ERC721Metadata.contract.Call(opts, out, "getApproved", tokenId)
 15596  	return *ret0, err
 15597  }
 15598  
 15599  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 15600  //
 15601  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 15602  func (_ERC721Metadata *ERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 15603  	return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId)
 15604  }
 15605  
 15606  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 15607  //
 15608  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 15609  func (_ERC721Metadata *ERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 15610  	return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId)
 15611  }
 15612  
 15613  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 15614  //
 15615  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 15616  func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 15617  	var (
 15618  		ret0 = new(bool)
 15619  	)
 15620  	out := ret0
 15621  	err := _ERC721Metadata.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 15622  	return *ret0, err
 15623  }
 15624  
 15625  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 15626  //
 15627  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 15628  func (_ERC721Metadata *ERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 15629  	return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator)
 15630  }
 15631  
 15632  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 15633  //
 15634  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 15635  func (_ERC721Metadata *ERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 15636  	return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator)
 15637  }
 15638  
 15639  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 15640  //
 15641  // Solidity: function name() view returns(string)
 15642  func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
 15643  	var (
 15644  		ret0 = new(string)
 15645  	)
 15646  	out := ret0
 15647  	err := _ERC721Metadata.contract.Call(opts, out, "name")
 15648  	return *ret0, err
 15649  }
 15650  
 15651  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 15652  //
 15653  // Solidity: function name() view returns(string)
 15654  func (_ERC721Metadata *ERC721MetadataSession) Name() (string, error) {
 15655  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
 15656  }
 15657  
 15658  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 15659  //
 15660  // Solidity: function name() view returns(string)
 15661  func (_ERC721Metadata *ERC721MetadataCallerSession) Name() (string, error) {
 15662  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
 15663  }
 15664  
 15665  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 15666  //
 15667  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 15668  func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 15669  	var (
 15670  		ret0 = new(common.Address)
 15671  	)
 15672  	out := ret0
 15673  	err := _ERC721Metadata.contract.Call(opts, out, "ownerOf", tokenId)
 15674  	return *ret0, err
 15675  }
 15676  
 15677  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 15678  //
 15679  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 15680  func (_ERC721Metadata *ERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 15681  	return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId)
 15682  }
 15683  
 15684  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 15685  //
 15686  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 15687  func (_ERC721Metadata *ERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 15688  	return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId)
 15689  }
 15690  
 15691  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 15692  //
 15693  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 15694  func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 15695  	var (
 15696  		ret0 = new(bool)
 15697  	)
 15698  	out := ret0
 15699  	err := _ERC721Metadata.contract.Call(opts, out, "supportsInterface", interfaceId)
 15700  	return *ret0, err
 15701  }
 15702  
 15703  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 15704  //
 15705  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 15706  func (_ERC721Metadata *ERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 15707  	return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId)
 15708  }
 15709  
 15710  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 15711  //
 15712  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 15713  func (_ERC721Metadata *ERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 15714  	return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId)
 15715  }
 15716  
 15717  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 15718  //
 15719  // Solidity: function symbol() view returns(string)
 15720  func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
 15721  	var (
 15722  		ret0 = new(string)
 15723  	)
 15724  	out := ret0
 15725  	err := _ERC721Metadata.contract.Call(opts, out, "symbol")
 15726  	return *ret0, err
 15727  }
 15728  
 15729  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 15730  //
 15731  // Solidity: function symbol() view returns(string)
 15732  func (_ERC721Metadata *ERC721MetadataSession) Symbol() (string, error) {
 15733  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
 15734  }
 15735  
 15736  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 15737  //
 15738  // Solidity: function symbol() view returns(string)
 15739  func (_ERC721Metadata *ERC721MetadataCallerSession) Symbol() (string, error) {
 15740  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
 15741  }
 15742  
 15743  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 15744  //
 15745  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 15746  func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 15747  	var (
 15748  		ret0 = new(string)
 15749  	)
 15750  	out := ret0
 15751  	err := _ERC721Metadata.contract.Call(opts, out, "tokenURI", tokenId)
 15752  	return *ret0, err
 15753  }
 15754  
 15755  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 15756  //
 15757  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 15758  func (_ERC721Metadata *ERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) {
 15759  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId)
 15760  }
 15761  
 15762  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 15763  //
 15764  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 15765  func (_ERC721Metadata *ERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 15766  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId)
 15767  }
 15768  
 15769  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 15770  //
 15771  // Solidity: function approve(address to, uint256 tokenId) returns()
 15772  func (_ERC721Metadata *ERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 15773  	return _ERC721Metadata.contract.Transact(opts, "approve", to, tokenId)
 15774  }
 15775  
 15776  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 15777  //
 15778  // Solidity: function approve(address to, uint256 tokenId) returns()
 15779  func (_ERC721Metadata *ERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 15780  	return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId)
 15781  }
 15782  
 15783  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 15784  //
 15785  // Solidity: function approve(address to, uint256 tokenId) returns()
 15786  func (_ERC721Metadata *ERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 15787  	return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId)
 15788  }
 15789  
 15790  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 15791  //
 15792  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 15793  func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 15794  	return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 15795  }
 15796  
 15797  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 15798  //
 15799  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 15800  func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 15801  	return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
 15802  }
 15803  
 15804  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 15805  //
 15806  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 15807  func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 15808  	return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
 15809  }
 15810  
 15811  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 15812  //
 15813  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 15814  func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 15815  	return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 15816  }
 15817  
 15818  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 15819  //
 15820  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 15821  func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 15822  	return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data)
 15823  }
 15824  
 15825  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 15826  //
 15827  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 15828  func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 15829  	return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data)
 15830  }
 15831  
 15832  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 15833  //
 15834  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 15835  func (_ERC721Metadata *ERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 15836  	return _ERC721Metadata.contract.Transact(opts, "setApprovalForAll", to, approved)
 15837  }
 15838  
 15839  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 15840  //
 15841  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 15842  func (_ERC721Metadata *ERC721MetadataSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 15843  	return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved)
 15844  }
 15845  
 15846  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 15847  //
 15848  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 15849  func (_ERC721Metadata *ERC721MetadataTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 15850  	return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved)
 15851  }
 15852  
 15853  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 15854  //
 15855  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 15856  func (_ERC721Metadata *ERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 15857  	return _ERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId)
 15858  }
 15859  
 15860  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 15861  //
 15862  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 15863  func (_ERC721Metadata *ERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 15864  	return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
 15865  }
 15866  
 15867  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 15868  //
 15869  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 15870  func (_ERC721Metadata *ERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 15871  	return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
 15872  }
 15873  
 15874  // ERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Metadata contract.
 15875  type ERC721MetadataApprovalIterator struct {
 15876  	Event *ERC721MetadataApproval // Event containing the contract specifics and raw log
 15877  
 15878  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 15879  	event    string              // Event name to use for unpacking event data
 15880  
 15881  	logs chan types.Log      // Log channel receiving the found contract events
 15882  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 15883  	done bool                // Whether the subscription completed delivering logs
 15884  	fail error               // Occurred error to stop iteration
 15885  }
 15886  
 15887  // Next advances the iterator to the subsequent event, returning whether there
 15888  // are any more events found. In case of a retrieval or parsing error, false is
 15889  // returned and Error() can be queried for the exact failure.
 15890  func (it *ERC721MetadataApprovalIterator) Next() bool {
 15891  	// If the iterator failed, stop iterating
 15892  	if it.fail != nil {
 15893  		return false
 15894  	}
 15895  	// If the iterator completed, deliver directly whatever's available
 15896  	if it.done {
 15897  		select {
 15898  		case log := <-it.logs:
 15899  			it.Event = new(ERC721MetadataApproval)
 15900  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15901  				it.fail = err
 15902  				return false
 15903  			}
 15904  			it.Event.Raw = log
 15905  			return true
 15906  
 15907  		default:
 15908  			return false
 15909  		}
 15910  	}
 15911  	// Iterator still in progress, wait for either a data or an error event
 15912  	select {
 15913  	case log := <-it.logs:
 15914  		it.Event = new(ERC721MetadataApproval)
 15915  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 15916  			it.fail = err
 15917  			return false
 15918  		}
 15919  		it.Event.Raw = log
 15920  		return true
 15921  
 15922  	case err := <-it.sub.Err():
 15923  		it.done = true
 15924  		it.fail = err
 15925  		return it.Next()
 15926  	}
 15927  }
 15928  
 15929  // Error returns any retrieval or parsing error occurred during filtering.
 15930  func (it *ERC721MetadataApprovalIterator) Error() error {
 15931  	return it.fail
 15932  }
 15933  
 15934  // Close terminates the iteration process, releasing any pending underlying
 15935  // resources.
 15936  func (it *ERC721MetadataApprovalIterator) Close() error {
 15937  	it.sub.Unsubscribe()
 15938  	return nil
 15939  }
 15940  
 15941  // ERC721MetadataApproval represents a Approval event raised by the ERC721Metadata contract.
 15942  type ERC721MetadataApproval struct {
 15943  	Owner    common.Address
 15944  	Approved common.Address
 15945  	TokenId  *big.Int
 15946  	Raw      types.Log // Blockchain specific contextual infos
 15947  }
 15948  
 15949  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 15950  //
 15951  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 15952  func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataApprovalIterator, error) {
 15953  
 15954  	var ownerRule []interface{}
 15955  	for _, ownerItem := range owner {
 15956  		ownerRule = append(ownerRule, ownerItem)
 15957  	}
 15958  	var approvedRule []interface{}
 15959  	for _, approvedItem := range approved {
 15960  		approvedRule = append(approvedRule, approvedItem)
 15961  	}
 15962  	var tokenIdRule []interface{}
 15963  	for _, tokenIdItem := range tokenId {
 15964  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 15965  	}
 15966  
 15967  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 15968  	if err != nil {
 15969  		return nil, err
 15970  	}
 15971  	return &ERC721MetadataApprovalIterator{contract: _ERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil
 15972  }
 15973  
 15974  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 15975  //
 15976  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 15977  func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 15978  
 15979  	var ownerRule []interface{}
 15980  	for _, ownerItem := range owner {
 15981  		ownerRule = append(ownerRule, ownerItem)
 15982  	}
 15983  	var approvedRule []interface{}
 15984  	for _, approvedItem := range approved {
 15985  		approvedRule = append(approvedRule, approvedItem)
 15986  	}
 15987  	var tokenIdRule []interface{}
 15988  	for _, tokenIdItem := range tokenId {
 15989  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 15990  	}
 15991  
 15992  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 15993  	if err != nil {
 15994  		return nil, err
 15995  	}
 15996  	return event.NewSubscription(func(quit <-chan struct{}) error {
 15997  		defer sub.Unsubscribe()
 15998  		for {
 15999  			select {
 16000  			case log := <-logs:
 16001  				// New log arrived, parse the event and forward to the user
 16002  				event := new(ERC721MetadataApproval)
 16003  				if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 16004  					return err
 16005  				}
 16006  				event.Raw = log
 16007  
 16008  				select {
 16009  				case sink <- event:
 16010  				case err := <-sub.Err():
 16011  					return err
 16012  				case <-quit:
 16013  					return nil
 16014  				}
 16015  			case err := <-sub.Err():
 16016  				return err
 16017  			case <-quit:
 16018  				return nil
 16019  			}
 16020  		}
 16021  	}), nil
 16022  }
 16023  
 16024  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 16025  //
 16026  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 16027  func (_ERC721Metadata *ERC721MetadataFilterer) ParseApproval(log types.Log) (*ERC721MetadataApproval, error) {
 16028  	event := new(ERC721MetadataApproval)
 16029  	if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 16030  		return nil, err
 16031  	}
 16032  	return event, nil
 16033  }
 16034  
 16035  // ERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Metadata contract.
 16036  type ERC721MetadataApprovalForAllIterator struct {
 16037  	Event *ERC721MetadataApprovalForAll // Event containing the contract specifics and raw log
 16038  
 16039  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16040  	event    string              // Event name to use for unpacking event data
 16041  
 16042  	logs chan types.Log      // Log channel receiving the found contract events
 16043  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 16044  	done bool                // Whether the subscription completed delivering logs
 16045  	fail error               // Occurred error to stop iteration
 16046  }
 16047  
 16048  // Next advances the iterator to the subsequent event, returning whether there
 16049  // are any more events found. In case of a retrieval or parsing error, false is
 16050  // returned and Error() can be queried for the exact failure.
 16051  func (it *ERC721MetadataApprovalForAllIterator) Next() bool {
 16052  	// If the iterator failed, stop iterating
 16053  	if it.fail != nil {
 16054  		return false
 16055  	}
 16056  	// If the iterator completed, deliver directly whatever's available
 16057  	if it.done {
 16058  		select {
 16059  		case log := <-it.logs:
 16060  			it.Event = new(ERC721MetadataApprovalForAll)
 16061  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16062  				it.fail = err
 16063  				return false
 16064  			}
 16065  			it.Event.Raw = log
 16066  			return true
 16067  
 16068  		default:
 16069  			return false
 16070  		}
 16071  	}
 16072  	// Iterator still in progress, wait for either a data or an error event
 16073  	select {
 16074  	case log := <-it.logs:
 16075  		it.Event = new(ERC721MetadataApprovalForAll)
 16076  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16077  			it.fail = err
 16078  			return false
 16079  		}
 16080  		it.Event.Raw = log
 16081  		return true
 16082  
 16083  	case err := <-it.sub.Err():
 16084  		it.done = true
 16085  		it.fail = err
 16086  		return it.Next()
 16087  	}
 16088  }
 16089  
 16090  // Error returns any retrieval or parsing error occurred during filtering.
 16091  func (it *ERC721MetadataApprovalForAllIterator) Error() error {
 16092  	return it.fail
 16093  }
 16094  
 16095  // Close terminates the iteration process, releasing any pending underlying
 16096  // resources.
 16097  func (it *ERC721MetadataApprovalForAllIterator) Close() error {
 16098  	it.sub.Unsubscribe()
 16099  	return nil
 16100  }
 16101  
 16102  // ERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the ERC721Metadata contract.
 16103  type ERC721MetadataApprovalForAll struct {
 16104  	Owner    common.Address
 16105  	Operator common.Address
 16106  	Approved bool
 16107  	Raw      types.Log // Blockchain specific contextual infos
 16108  }
 16109  
 16110  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 16111  //
 16112  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 16113  func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataApprovalForAllIterator, error) {
 16114  
 16115  	var ownerRule []interface{}
 16116  	for _, ownerItem := range owner {
 16117  		ownerRule = append(ownerRule, ownerItem)
 16118  	}
 16119  	var operatorRule []interface{}
 16120  	for _, operatorItem := range operator {
 16121  		operatorRule = append(operatorRule, operatorItem)
 16122  	}
 16123  
 16124  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 16125  	if err != nil {
 16126  		return nil, err
 16127  	}
 16128  	return &ERC721MetadataApprovalForAllIterator{contract: _ERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 16129  }
 16130  
 16131  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 16132  //
 16133  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 16134  func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 16135  
 16136  	var ownerRule []interface{}
 16137  	for _, ownerItem := range owner {
 16138  		ownerRule = append(ownerRule, ownerItem)
 16139  	}
 16140  	var operatorRule []interface{}
 16141  	for _, operatorItem := range operator {
 16142  		operatorRule = append(operatorRule, operatorItem)
 16143  	}
 16144  
 16145  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 16146  	if err != nil {
 16147  		return nil, err
 16148  	}
 16149  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16150  		defer sub.Unsubscribe()
 16151  		for {
 16152  			select {
 16153  			case log := <-logs:
 16154  				// New log arrived, parse the event and forward to the user
 16155  				event := new(ERC721MetadataApprovalForAll)
 16156  				if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 16157  					return err
 16158  				}
 16159  				event.Raw = log
 16160  
 16161  				select {
 16162  				case sink <- event:
 16163  				case err := <-sub.Err():
 16164  					return err
 16165  				case <-quit:
 16166  					return nil
 16167  				}
 16168  			case err := <-sub.Err():
 16169  				return err
 16170  			case <-quit:
 16171  				return nil
 16172  			}
 16173  		}
 16174  	}), nil
 16175  }
 16176  
 16177  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 16178  //
 16179  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 16180  func (_ERC721Metadata *ERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataApprovalForAll, error) {
 16181  	event := new(ERC721MetadataApprovalForAll)
 16182  	if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 16183  		return nil, err
 16184  	}
 16185  	return event, nil
 16186  }
 16187  
 16188  // ERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Metadata contract.
 16189  type ERC721MetadataTransferIterator struct {
 16190  	Event *ERC721MetadataTransfer // Event containing the contract specifics and raw log
 16191  
 16192  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16193  	event    string              // Event name to use for unpacking event data
 16194  
 16195  	logs chan types.Log      // Log channel receiving the found contract events
 16196  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 16197  	done bool                // Whether the subscription completed delivering logs
 16198  	fail error               // Occurred error to stop iteration
 16199  }
 16200  
 16201  // Next advances the iterator to the subsequent event, returning whether there
 16202  // are any more events found. In case of a retrieval or parsing error, false is
 16203  // returned and Error() can be queried for the exact failure.
 16204  func (it *ERC721MetadataTransferIterator) Next() bool {
 16205  	// If the iterator failed, stop iterating
 16206  	if it.fail != nil {
 16207  		return false
 16208  	}
 16209  	// If the iterator completed, deliver directly whatever's available
 16210  	if it.done {
 16211  		select {
 16212  		case log := <-it.logs:
 16213  			it.Event = new(ERC721MetadataTransfer)
 16214  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16215  				it.fail = err
 16216  				return false
 16217  			}
 16218  			it.Event.Raw = log
 16219  			return true
 16220  
 16221  		default:
 16222  			return false
 16223  		}
 16224  	}
 16225  	// Iterator still in progress, wait for either a data or an error event
 16226  	select {
 16227  	case log := <-it.logs:
 16228  		it.Event = new(ERC721MetadataTransfer)
 16229  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16230  			it.fail = err
 16231  			return false
 16232  		}
 16233  		it.Event.Raw = log
 16234  		return true
 16235  
 16236  	case err := <-it.sub.Err():
 16237  		it.done = true
 16238  		it.fail = err
 16239  		return it.Next()
 16240  	}
 16241  }
 16242  
 16243  // Error returns any retrieval or parsing error occurred during filtering.
 16244  func (it *ERC721MetadataTransferIterator) Error() error {
 16245  	return it.fail
 16246  }
 16247  
 16248  // Close terminates the iteration process, releasing any pending underlying
 16249  // resources.
 16250  func (it *ERC721MetadataTransferIterator) Close() error {
 16251  	it.sub.Unsubscribe()
 16252  	return nil
 16253  }
 16254  
 16255  // ERC721MetadataTransfer represents a Transfer event raised by the ERC721Metadata contract.
 16256  type ERC721MetadataTransfer struct {
 16257  	From    common.Address
 16258  	To      common.Address
 16259  	TokenId *big.Int
 16260  	Raw     types.Log // Blockchain specific contextual infos
 16261  }
 16262  
 16263  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 16264  //
 16265  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 16266  func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataTransferIterator, error) {
 16267  
 16268  	var fromRule []interface{}
 16269  	for _, fromItem := range from {
 16270  		fromRule = append(fromRule, fromItem)
 16271  	}
 16272  	var toRule []interface{}
 16273  	for _, toItem := range to {
 16274  		toRule = append(toRule, toItem)
 16275  	}
 16276  	var tokenIdRule []interface{}
 16277  	for _, tokenIdItem := range tokenId {
 16278  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 16279  	}
 16280  
 16281  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 16282  	if err != nil {
 16283  		return nil, err
 16284  	}
 16285  	return &ERC721MetadataTransferIterator{contract: _ERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil
 16286  }
 16287  
 16288  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 16289  //
 16290  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 16291  func (_ERC721Metadata *ERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 16292  
 16293  	var fromRule []interface{}
 16294  	for _, fromItem := range from {
 16295  		fromRule = append(fromRule, fromItem)
 16296  	}
 16297  	var toRule []interface{}
 16298  	for _, toItem := range to {
 16299  		toRule = append(toRule, toItem)
 16300  	}
 16301  	var tokenIdRule []interface{}
 16302  	for _, tokenIdItem := range tokenId {
 16303  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 16304  	}
 16305  
 16306  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 16307  	if err != nil {
 16308  		return nil, err
 16309  	}
 16310  	return event.NewSubscription(func(quit <-chan struct{}) error {
 16311  		defer sub.Unsubscribe()
 16312  		for {
 16313  			select {
 16314  			case log := <-logs:
 16315  				// New log arrived, parse the event and forward to the user
 16316  				event := new(ERC721MetadataTransfer)
 16317  				if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 16318  					return err
 16319  				}
 16320  				event.Raw = log
 16321  
 16322  				select {
 16323  				case sink <- event:
 16324  				case err := <-sub.Err():
 16325  					return err
 16326  				case <-quit:
 16327  					return nil
 16328  				}
 16329  			case err := <-sub.Err():
 16330  				return err
 16331  			case <-quit:
 16332  				return nil
 16333  			}
 16334  		}
 16335  	}), nil
 16336  }
 16337  
 16338  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 16339  //
 16340  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 16341  func (_ERC721Metadata *ERC721MetadataFilterer) ParseTransfer(log types.Log) (*ERC721MetadataTransfer, error) {
 16342  	event := new(ERC721MetadataTransfer)
 16343  	if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 16344  		return nil, err
 16345  	}
 16346  	return event, nil
 16347  }
 16348  
 16349  // ERC721MetadataMintableABI is the input ABI used to generate the binding from.
 16350  const ERC721MetadataMintableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 16351  
 16352  // ERC721MetadataMintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 16353  const ERC721MetadataMintableBinRuntime = ``
 16354  
 16355  // ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation.
 16356  var ERC721MetadataMintableFuncSigs = map[string]string{
 16357  	"983b2d56": "addMinter(address)",
 16358  	"095ea7b3": "approve(address,uint256)",
 16359  	"70a08231": "balanceOf(address)",
 16360  	"081812fc": "getApproved(uint256)",
 16361  	"e985e9c5": "isApprovedForAll(address,address)",
 16362  	"aa271e1a": "isMinter(address)",
 16363  	"50bb4e7f": "mintWithTokenURI(address,uint256,string)",
 16364  	"06fdde03": "name()",
 16365  	"6352211e": "ownerOf(uint256)",
 16366  	"98650275": "renounceMinter()",
 16367  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 16368  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 16369  	"a22cb465": "setApprovalForAll(address,bool)",
 16370  	"01ffc9a7": "supportsInterface(bytes4)",
 16371  	"95d89b41": "symbol()",
 16372  	"c87b56dd": "tokenURI(uint256)",
 16373  	"23b872dd": "transferFrom(address,address,uint256)",
 16374  }
 16375  
 16376  // ERC721MetadataMintable is an auto generated Go binding around a Klaytn contract.
 16377  type ERC721MetadataMintable struct {
 16378  	ERC721MetadataMintableCaller     // Read-only binding to the contract
 16379  	ERC721MetadataMintableTransactor // Write-only binding to the contract
 16380  	ERC721MetadataMintableFilterer   // Log filterer for contract events
 16381  }
 16382  
 16383  // ERC721MetadataMintableCaller is an auto generated read-only Go binding around a Klaytn contract.
 16384  type ERC721MetadataMintableCaller struct {
 16385  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 16386  }
 16387  
 16388  // ERC721MetadataMintableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 16389  type ERC721MetadataMintableTransactor struct {
 16390  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 16391  }
 16392  
 16393  // ERC721MetadataMintableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 16394  type ERC721MetadataMintableFilterer struct {
 16395  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 16396  }
 16397  
 16398  // ERC721MetadataMintableSession is an auto generated Go binding around a Klaytn contract,
 16399  // with pre-set call and transact options.
 16400  type ERC721MetadataMintableSession struct {
 16401  	Contract     *ERC721MetadataMintable // Generic contract binding to set the session for
 16402  	CallOpts     bind.CallOpts           // Call options to use throughout this session
 16403  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
 16404  }
 16405  
 16406  // ERC721MetadataMintableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 16407  // with pre-set call options.
 16408  type ERC721MetadataMintableCallerSession struct {
 16409  	Contract *ERC721MetadataMintableCaller // Generic contract caller binding to set the session for
 16410  	CallOpts bind.CallOpts                 // Call options to use throughout this session
 16411  }
 16412  
 16413  // ERC721MetadataMintableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 16414  // with pre-set transact options.
 16415  type ERC721MetadataMintableTransactorSession struct {
 16416  	Contract     *ERC721MetadataMintableTransactor // Generic contract transactor binding to set the session for
 16417  	TransactOpts bind.TransactOpts                 // Transaction auth options to use throughout this session
 16418  }
 16419  
 16420  // ERC721MetadataMintableRaw is an auto generated low-level Go binding around a Klaytn contract.
 16421  type ERC721MetadataMintableRaw struct {
 16422  	Contract *ERC721MetadataMintable // Generic contract binding to access the raw methods on
 16423  }
 16424  
 16425  // ERC721MetadataMintableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 16426  type ERC721MetadataMintableCallerRaw struct {
 16427  	Contract *ERC721MetadataMintableCaller // Generic read-only contract binding to access the raw methods on
 16428  }
 16429  
 16430  // ERC721MetadataMintableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 16431  type ERC721MetadataMintableTransactorRaw struct {
 16432  	Contract *ERC721MetadataMintableTransactor // Generic write-only contract binding to access the raw methods on
 16433  }
 16434  
 16435  // NewERC721MetadataMintable creates a new instance of ERC721MetadataMintable, bound to a specific deployed contract.
 16436  func NewERC721MetadataMintable(address common.Address, backend bind.ContractBackend) (*ERC721MetadataMintable, error) {
 16437  	contract, err := bindERC721MetadataMintable(address, backend, backend, backend)
 16438  	if err != nil {
 16439  		return nil, err
 16440  	}
 16441  	return &ERC721MetadataMintable{ERC721MetadataMintableCaller: ERC721MetadataMintableCaller{contract: contract}, ERC721MetadataMintableTransactor: ERC721MetadataMintableTransactor{contract: contract}, ERC721MetadataMintableFilterer: ERC721MetadataMintableFilterer{contract: contract}}, nil
 16442  }
 16443  
 16444  // NewERC721MetadataMintableCaller creates a new read-only instance of ERC721MetadataMintable, bound to a specific deployed contract.
 16445  func NewERC721MetadataMintableCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataMintableCaller, error) {
 16446  	contract, err := bindERC721MetadataMintable(address, caller, nil, nil)
 16447  	if err != nil {
 16448  		return nil, err
 16449  	}
 16450  	return &ERC721MetadataMintableCaller{contract: contract}, nil
 16451  }
 16452  
 16453  // NewERC721MetadataMintableTransactor creates a new write-only instance of ERC721MetadataMintable, bound to a specific deployed contract.
 16454  func NewERC721MetadataMintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataMintableTransactor, error) {
 16455  	contract, err := bindERC721MetadataMintable(address, nil, transactor, nil)
 16456  	if err != nil {
 16457  		return nil, err
 16458  	}
 16459  	return &ERC721MetadataMintableTransactor{contract: contract}, nil
 16460  }
 16461  
 16462  // NewERC721MetadataMintableFilterer creates a new log filterer instance of ERC721MetadataMintable, bound to a specific deployed contract.
 16463  func NewERC721MetadataMintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataMintableFilterer, error) {
 16464  	contract, err := bindERC721MetadataMintable(address, nil, nil, filterer)
 16465  	if err != nil {
 16466  		return nil, err
 16467  	}
 16468  	return &ERC721MetadataMintableFilterer{contract: contract}, nil
 16469  }
 16470  
 16471  // bindERC721MetadataMintable binds a generic wrapper to an already deployed contract.
 16472  func bindERC721MetadataMintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 16473  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataMintableABI))
 16474  	if err != nil {
 16475  		return nil, err
 16476  	}
 16477  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 16478  }
 16479  
 16480  // Call invokes the (constant) contract method with params as input values and
 16481  // sets the output to result. The result type might be a single field for simple
 16482  // returns, a slice of interfaces for anonymous returns and a struct for named
 16483  // returns.
 16484  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 16485  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableCaller.contract.Call(opts, result, method, params...)
 16486  }
 16487  
 16488  // Transfer initiates a plain transaction to move funds to the contract, calling
 16489  // its default method if one is available.
 16490  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 16491  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transfer(opts)
 16492  }
 16493  
 16494  // Transact invokes the (paid) contract method with params as input values.
 16495  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 16496  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transact(opts, method, params...)
 16497  }
 16498  
 16499  // Call invokes the (constant) contract method with params as input values and
 16500  // sets the output to result. The result type might be a single field for simple
 16501  // returns, a slice of interfaces for anonymous returns and a struct for named
 16502  // returns.
 16503  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 16504  	return _ERC721MetadataMintable.Contract.contract.Call(opts, result, method, params...)
 16505  }
 16506  
 16507  // Transfer initiates a plain transaction to move funds to the contract, calling
 16508  // its default method if one is available.
 16509  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 16510  	return _ERC721MetadataMintable.Contract.contract.Transfer(opts)
 16511  }
 16512  
 16513  // Transact invokes the (paid) contract method with params as input values.
 16514  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 16515  	return _ERC721MetadataMintable.Contract.contract.Transact(opts, method, params...)
 16516  }
 16517  
 16518  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 16519  //
 16520  // Solidity: function balanceOf(address owner) view returns(uint256)
 16521  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 16522  	var (
 16523  		ret0 = new(*big.Int)
 16524  	)
 16525  	out := ret0
 16526  	err := _ERC721MetadataMintable.contract.Call(opts, out, "balanceOf", owner)
 16527  	return *ret0, err
 16528  }
 16529  
 16530  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 16531  //
 16532  // Solidity: function balanceOf(address owner) view returns(uint256)
 16533  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) BalanceOf(owner common.Address) (*big.Int, error) {
 16534  	return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner)
 16535  }
 16536  
 16537  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 16538  //
 16539  // Solidity: function balanceOf(address owner) view returns(uint256)
 16540  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 16541  	return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner)
 16542  }
 16543  
 16544  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 16545  //
 16546  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 16547  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 16548  	var (
 16549  		ret0 = new(common.Address)
 16550  	)
 16551  	out := ret0
 16552  	err := _ERC721MetadataMintable.contract.Call(opts, out, "getApproved", tokenId)
 16553  	return *ret0, err
 16554  }
 16555  
 16556  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 16557  //
 16558  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 16559  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 16560  	return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId)
 16561  }
 16562  
 16563  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 16564  //
 16565  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 16566  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 16567  	return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId)
 16568  }
 16569  
 16570  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 16571  //
 16572  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 16573  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 16574  	var (
 16575  		ret0 = new(bool)
 16576  	)
 16577  	out := ret0
 16578  	err := _ERC721MetadataMintable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 16579  	return *ret0, err
 16580  }
 16581  
 16582  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 16583  //
 16584  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 16585  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 16586  	return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator)
 16587  }
 16588  
 16589  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 16590  //
 16591  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 16592  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 16593  	return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator)
 16594  }
 16595  
 16596  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 16597  //
 16598  // Solidity: function isMinter(address account) view returns(bool)
 16599  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 16600  	var (
 16601  		ret0 = new(bool)
 16602  	)
 16603  	out := ret0
 16604  	err := _ERC721MetadataMintable.contract.Call(opts, out, "isMinter", account)
 16605  	return *ret0, err
 16606  }
 16607  
 16608  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 16609  //
 16610  // Solidity: function isMinter(address account) view returns(bool)
 16611  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsMinter(account common.Address) (bool, error) {
 16612  	return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account)
 16613  }
 16614  
 16615  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 16616  //
 16617  // Solidity: function isMinter(address account) view returns(bool)
 16618  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsMinter(account common.Address) (bool, error) {
 16619  	return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account)
 16620  }
 16621  
 16622  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 16623  //
 16624  // Solidity: function name() view returns(string)
 16625  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.CallOpts) (string, error) {
 16626  	var (
 16627  		ret0 = new(string)
 16628  	)
 16629  	out := ret0
 16630  	err := _ERC721MetadataMintable.contract.Call(opts, out, "name")
 16631  	return *ret0, err
 16632  }
 16633  
 16634  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 16635  //
 16636  // Solidity: function name() view returns(string)
 16637  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Name() (string, error) {
 16638  	return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts)
 16639  }
 16640  
 16641  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 16642  //
 16643  // Solidity: function name() view returns(string)
 16644  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Name() (string, error) {
 16645  	return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts)
 16646  }
 16647  
 16648  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 16649  //
 16650  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 16651  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 16652  	var (
 16653  		ret0 = new(common.Address)
 16654  	)
 16655  	out := ret0
 16656  	err := _ERC721MetadataMintable.contract.Call(opts, out, "ownerOf", tokenId)
 16657  	return *ret0, err
 16658  }
 16659  
 16660  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 16661  //
 16662  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 16663  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 16664  	return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId)
 16665  }
 16666  
 16667  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 16668  //
 16669  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 16670  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 16671  	return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId)
 16672  }
 16673  
 16674  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 16675  //
 16676  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 16677  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 16678  	var (
 16679  		ret0 = new(bool)
 16680  	)
 16681  	out := ret0
 16682  	err := _ERC721MetadataMintable.contract.Call(opts, out, "supportsInterface", interfaceId)
 16683  	return *ret0, err
 16684  }
 16685  
 16686  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 16687  //
 16688  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 16689  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 16690  	return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId)
 16691  }
 16692  
 16693  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 16694  //
 16695  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 16696  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 16697  	return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId)
 16698  }
 16699  
 16700  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 16701  //
 16702  // Solidity: function symbol() view returns(string)
 16703  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.CallOpts) (string, error) {
 16704  	var (
 16705  		ret0 = new(string)
 16706  	)
 16707  	out := ret0
 16708  	err := _ERC721MetadataMintable.contract.Call(opts, out, "symbol")
 16709  	return *ret0, err
 16710  }
 16711  
 16712  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 16713  //
 16714  // Solidity: function symbol() view returns(string)
 16715  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Symbol() (string, error) {
 16716  	return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts)
 16717  }
 16718  
 16719  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 16720  //
 16721  // Solidity: function symbol() view returns(string)
 16722  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Symbol() (string, error) {
 16723  	return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts)
 16724  }
 16725  
 16726  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 16727  //
 16728  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 16729  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 16730  	var (
 16731  		ret0 = new(string)
 16732  	)
 16733  	out := ret0
 16734  	err := _ERC721MetadataMintable.contract.Call(opts, out, "tokenURI", tokenId)
 16735  	return *ret0, err
 16736  }
 16737  
 16738  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 16739  //
 16740  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 16741  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TokenURI(tokenId *big.Int) (string, error) {
 16742  	return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId)
 16743  }
 16744  
 16745  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 16746  //
 16747  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 16748  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 16749  	return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId)
 16750  }
 16751  
 16752  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 16753  //
 16754  // Solidity: function addMinter(address account) returns()
 16755  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 16756  	return _ERC721MetadataMintable.contract.Transact(opts, "addMinter", account)
 16757  }
 16758  
 16759  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 16760  //
 16761  // Solidity: function addMinter(address account) returns()
 16762  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
 16763  	return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account)
 16764  }
 16765  
 16766  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 16767  //
 16768  // Solidity: function addMinter(address account) returns()
 16769  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 16770  	return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account)
 16771  }
 16772  
 16773  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 16774  //
 16775  // Solidity: function approve(address to, uint256 tokenId) returns()
 16776  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 16777  	return _ERC721MetadataMintable.contract.Transact(opts, "approve", to, tokenId)
 16778  }
 16779  
 16780  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 16781  //
 16782  // Solidity: function approve(address to, uint256 tokenId) returns()
 16783  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 16784  	return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId)
 16785  }
 16786  
 16787  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 16788  //
 16789  // Solidity: function approve(address to, uint256 tokenId) returns()
 16790  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 16791  	return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId)
 16792  }
 16793  
 16794  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 16795  //
 16796  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 16797  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) MintWithTokenURI(opts *bind.TransactOpts, to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 16798  	return _ERC721MetadataMintable.contract.Transact(opts, "mintWithTokenURI", to, tokenId, tokenURI)
 16799  }
 16800  
 16801  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 16802  //
 16803  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 16804  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 16805  	return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI)
 16806  }
 16807  
 16808  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 16809  //
 16810  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 16811  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 16812  	return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI)
 16813  }
 16814  
 16815  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 16816  //
 16817  // Solidity: function renounceMinter() returns()
 16818  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 16819  	return _ERC721MetadataMintable.contract.Transact(opts, "renounceMinter")
 16820  }
 16821  
 16822  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 16823  //
 16824  // Solidity: function renounceMinter() returns()
 16825  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) RenounceMinter() (*types.Transaction, error) {
 16826  	return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts)
 16827  }
 16828  
 16829  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 16830  //
 16831  // Solidity: function renounceMinter() returns()
 16832  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
 16833  	return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts)
 16834  }
 16835  
 16836  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 16837  //
 16838  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 16839  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 16840  	return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 16841  }
 16842  
 16843  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 16844  //
 16845  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 16846  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 16847  	return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
 16848  }
 16849  
 16850  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 16851  //
 16852  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 16853  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 16854  	return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
 16855  }
 16856  
 16857  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 16858  //
 16859  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 16860  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 16861  	return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 16862  }
 16863  
 16864  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 16865  //
 16866  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 16867  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 16868  	return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data)
 16869  }
 16870  
 16871  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 16872  //
 16873  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 16874  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 16875  	return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data)
 16876  }
 16877  
 16878  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 16879  //
 16880  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 16881  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 16882  	return _ERC721MetadataMintable.contract.Transact(opts, "setApprovalForAll", to, approved)
 16883  }
 16884  
 16885  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 16886  //
 16887  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 16888  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 16889  	return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved)
 16890  }
 16891  
 16892  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 16893  //
 16894  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 16895  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 16896  	return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved)
 16897  }
 16898  
 16899  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 16900  //
 16901  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 16902  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 16903  	return _ERC721MetadataMintable.contract.Transact(opts, "transferFrom", from, to, tokenId)
 16904  }
 16905  
 16906  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 16907  //
 16908  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 16909  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 16910  	return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
 16911  }
 16912  
 16913  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 16914  //
 16915  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 16916  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 16917  	return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
 16918  }
 16919  
 16920  // ERC721MetadataMintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721MetadataMintable contract.
 16921  type ERC721MetadataMintableApprovalIterator struct {
 16922  	Event *ERC721MetadataMintableApproval // Event containing the contract specifics and raw log
 16923  
 16924  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 16925  	event    string              // Event name to use for unpacking event data
 16926  
 16927  	logs chan types.Log      // Log channel receiving the found contract events
 16928  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 16929  	done bool                // Whether the subscription completed delivering logs
 16930  	fail error               // Occurred error to stop iteration
 16931  }
 16932  
 16933  // Next advances the iterator to the subsequent event, returning whether there
 16934  // are any more events found. In case of a retrieval or parsing error, false is
 16935  // returned and Error() can be queried for the exact failure.
 16936  func (it *ERC721MetadataMintableApprovalIterator) Next() bool {
 16937  	// If the iterator failed, stop iterating
 16938  	if it.fail != nil {
 16939  		return false
 16940  	}
 16941  	// If the iterator completed, deliver directly whatever's available
 16942  	if it.done {
 16943  		select {
 16944  		case log := <-it.logs:
 16945  			it.Event = new(ERC721MetadataMintableApproval)
 16946  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16947  				it.fail = err
 16948  				return false
 16949  			}
 16950  			it.Event.Raw = log
 16951  			return true
 16952  
 16953  		default:
 16954  			return false
 16955  		}
 16956  	}
 16957  	// Iterator still in progress, wait for either a data or an error event
 16958  	select {
 16959  	case log := <-it.logs:
 16960  		it.Event = new(ERC721MetadataMintableApproval)
 16961  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 16962  			it.fail = err
 16963  			return false
 16964  		}
 16965  		it.Event.Raw = log
 16966  		return true
 16967  
 16968  	case err := <-it.sub.Err():
 16969  		it.done = true
 16970  		it.fail = err
 16971  		return it.Next()
 16972  	}
 16973  }
 16974  
 16975  // Error returns any retrieval or parsing error occurred during filtering.
 16976  func (it *ERC721MetadataMintableApprovalIterator) Error() error {
 16977  	return it.fail
 16978  }
 16979  
 16980  // Close terminates the iteration process, releasing any pending underlying
 16981  // resources.
 16982  func (it *ERC721MetadataMintableApprovalIterator) Close() error {
 16983  	it.sub.Unsubscribe()
 16984  	return nil
 16985  }
 16986  
 16987  // ERC721MetadataMintableApproval represents a Approval event raised by the ERC721MetadataMintable contract.
 16988  type ERC721MetadataMintableApproval struct {
 16989  	Owner    common.Address
 16990  	Approved common.Address
 16991  	TokenId  *big.Int
 16992  	Raw      types.Log // Blockchain specific contextual infos
 16993  }
 16994  
 16995  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 16996  //
 16997  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 16998  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableApprovalIterator, error) {
 16999  
 17000  	var ownerRule []interface{}
 17001  	for _, ownerItem := range owner {
 17002  		ownerRule = append(ownerRule, ownerItem)
 17003  	}
 17004  	var approvedRule []interface{}
 17005  	for _, approvedItem := range approved {
 17006  		approvedRule = append(approvedRule, approvedItem)
 17007  	}
 17008  	var tokenIdRule []interface{}
 17009  	for _, tokenIdItem := range tokenId {
 17010  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 17011  	}
 17012  
 17013  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 17014  	if err != nil {
 17015  		return nil, err
 17016  	}
 17017  	return &ERC721MetadataMintableApprovalIterator{contract: _ERC721MetadataMintable.contract, event: "Approval", logs: logs, sub: sub}, nil
 17018  }
 17019  
 17020  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 17021  //
 17022  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 17023  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 17024  
 17025  	var ownerRule []interface{}
 17026  	for _, ownerItem := range owner {
 17027  		ownerRule = append(ownerRule, ownerItem)
 17028  	}
 17029  	var approvedRule []interface{}
 17030  	for _, approvedItem := range approved {
 17031  		approvedRule = append(approvedRule, approvedItem)
 17032  	}
 17033  	var tokenIdRule []interface{}
 17034  	for _, tokenIdItem := range tokenId {
 17035  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 17036  	}
 17037  
 17038  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 17039  	if err != nil {
 17040  		return nil, err
 17041  	}
 17042  	return event.NewSubscription(func(quit <-chan struct{}) error {
 17043  		defer sub.Unsubscribe()
 17044  		for {
 17045  			select {
 17046  			case log := <-logs:
 17047  				// New log arrived, parse the event and forward to the user
 17048  				event := new(ERC721MetadataMintableApproval)
 17049  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil {
 17050  					return err
 17051  				}
 17052  				event.Raw = log
 17053  
 17054  				select {
 17055  				case sink <- event:
 17056  				case err := <-sub.Err():
 17057  					return err
 17058  				case <-quit:
 17059  					return nil
 17060  				}
 17061  			case err := <-sub.Err():
 17062  				return err
 17063  			case <-quit:
 17064  				return nil
 17065  			}
 17066  		}
 17067  	}), nil
 17068  }
 17069  
 17070  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 17071  //
 17072  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 17073  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApproval(log types.Log) (*ERC721MetadataMintableApproval, error) {
 17074  	event := new(ERC721MetadataMintableApproval)
 17075  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil {
 17076  		return nil, err
 17077  	}
 17078  	return event, nil
 17079  }
 17080  
 17081  // ERC721MetadataMintableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721MetadataMintable contract.
 17082  type ERC721MetadataMintableApprovalForAllIterator struct {
 17083  	Event *ERC721MetadataMintableApprovalForAll // Event containing the contract specifics and raw log
 17084  
 17085  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 17086  	event    string              // Event name to use for unpacking event data
 17087  
 17088  	logs chan types.Log      // Log channel receiving the found contract events
 17089  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 17090  	done bool                // Whether the subscription completed delivering logs
 17091  	fail error               // Occurred error to stop iteration
 17092  }
 17093  
 17094  // Next advances the iterator to the subsequent event, returning whether there
 17095  // are any more events found. In case of a retrieval or parsing error, false is
 17096  // returned and Error() can be queried for the exact failure.
 17097  func (it *ERC721MetadataMintableApprovalForAllIterator) Next() bool {
 17098  	// If the iterator failed, stop iterating
 17099  	if it.fail != nil {
 17100  		return false
 17101  	}
 17102  	// If the iterator completed, deliver directly whatever's available
 17103  	if it.done {
 17104  		select {
 17105  		case log := <-it.logs:
 17106  			it.Event = new(ERC721MetadataMintableApprovalForAll)
 17107  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17108  				it.fail = err
 17109  				return false
 17110  			}
 17111  			it.Event.Raw = log
 17112  			return true
 17113  
 17114  		default:
 17115  			return false
 17116  		}
 17117  	}
 17118  	// Iterator still in progress, wait for either a data or an error event
 17119  	select {
 17120  	case log := <-it.logs:
 17121  		it.Event = new(ERC721MetadataMintableApprovalForAll)
 17122  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17123  			it.fail = err
 17124  			return false
 17125  		}
 17126  		it.Event.Raw = log
 17127  		return true
 17128  
 17129  	case err := <-it.sub.Err():
 17130  		it.done = true
 17131  		it.fail = err
 17132  		return it.Next()
 17133  	}
 17134  }
 17135  
 17136  // Error returns any retrieval or parsing error occurred during filtering.
 17137  func (it *ERC721MetadataMintableApprovalForAllIterator) Error() error {
 17138  	return it.fail
 17139  }
 17140  
 17141  // Close terminates the iteration process, releasing any pending underlying
 17142  // resources.
 17143  func (it *ERC721MetadataMintableApprovalForAllIterator) Close() error {
 17144  	it.sub.Unsubscribe()
 17145  	return nil
 17146  }
 17147  
 17148  // ERC721MetadataMintableApprovalForAll represents a ApprovalForAll event raised by the ERC721MetadataMintable contract.
 17149  type ERC721MetadataMintableApprovalForAll struct {
 17150  	Owner    common.Address
 17151  	Operator common.Address
 17152  	Approved bool
 17153  	Raw      types.Log // Blockchain specific contextual infos
 17154  }
 17155  
 17156  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 17157  //
 17158  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 17159  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataMintableApprovalForAllIterator, error) {
 17160  
 17161  	var ownerRule []interface{}
 17162  	for _, ownerItem := range owner {
 17163  		ownerRule = append(ownerRule, ownerItem)
 17164  	}
 17165  	var operatorRule []interface{}
 17166  	for _, operatorItem := range operator {
 17167  		operatorRule = append(operatorRule, operatorItem)
 17168  	}
 17169  
 17170  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 17171  	if err != nil {
 17172  		return nil, err
 17173  	}
 17174  	return &ERC721MetadataMintableApprovalForAllIterator{contract: _ERC721MetadataMintable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 17175  }
 17176  
 17177  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 17178  //
 17179  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 17180  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 17181  
 17182  	var ownerRule []interface{}
 17183  	for _, ownerItem := range owner {
 17184  		ownerRule = append(ownerRule, ownerItem)
 17185  	}
 17186  	var operatorRule []interface{}
 17187  	for _, operatorItem := range operator {
 17188  		operatorRule = append(operatorRule, operatorItem)
 17189  	}
 17190  
 17191  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 17192  	if err != nil {
 17193  		return nil, err
 17194  	}
 17195  	return event.NewSubscription(func(quit <-chan struct{}) error {
 17196  		defer sub.Unsubscribe()
 17197  		for {
 17198  			select {
 17199  			case log := <-logs:
 17200  				// New log arrived, parse the event and forward to the user
 17201  				event := new(ERC721MetadataMintableApprovalForAll)
 17202  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 17203  					return err
 17204  				}
 17205  				event.Raw = log
 17206  
 17207  				select {
 17208  				case sink <- event:
 17209  				case err := <-sub.Err():
 17210  					return err
 17211  				case <-quit:
 17212  					return nil
 17213  				}
 17214  			case err := <-sub.Err():
 17215  				return err
 17216  			case <-quit:
 17217  				return nil
 17218  			}
 17219  		}
 17220  	}), nil
 17221  }
 17222  
 17223  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 17224  //
 17225  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 17226  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataMintableApprovalForAll, error) {
 17227  	event := new(ERC721MetadataMintableApprovalForAll)
 17228  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 17229  		return nil, err
 17230  	}
 17231  	return event, nil
 17232  }
 17233  
 17234  // ERC721MetadataMintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC721MetadataMintable contract.
 17235  type ERC721MetadataMintableMinterAddedIterator struct {
 17236  	Event *ERC721MetadataMintableMinterAdded // Event containing the contract specifics and raw log
 17237  
 17238  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 17239  	event    string              // Event name to use for unpacking event data
 17240  
 17241  	logs chan types.Log      // Log channel receiving the found contract events
 17242  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 17243  	done bool                // Whether the subscription completed delivering logs
 17244  	fail error               // Occurred error to stop iteration
 17245  }
 17246  
 17247  // Next advances the iterator to the subsequent event, returning whether there
 17248  // are any more events found. In case of a retrieval or parsing error, false is
 17249  // returned and Error() can be queried for the exact failure.
 17250  func (it *ERC721MetadataMintableMinterAddedIterator) Next() bool {
 17251  	// If the iterator failed, stop iterating
 17252  	if it.fail != nil {
 17253  		return false
 17254  	}
 17255  	// If the iterator completed, deliver directly whatever's available
 17256  	if it.done {
 17257  		select {
 17258  		case log := <-it.logs:
 17259  			it.Event = new(ERC721MetadataMintableMinterAdded)
 17260  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17261  				it.fail = err
 17262  				return false
 17263  			}
 17264  			it.Event.Raw = log
 17265  			return true
 17266  
 17267  		default:
 17268  			return false
 17269  		}
 17270  	}
 17271  	// Iterator still in progress, wait for either a data or an error event
 17272  	select {
 17273  	case log := <-it.logs:
 17274  		it.Event = new(ERC721MetadataMintableMinterAdded)
 17275  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17276  			it.fail = err
 17277  			return false
 17278  		}
 17279  		it.Event.Raw = log
 17280  		return true
 17281  
 17282  	case err := <-it.sub.Err():
 17283  		it.done = true
 17284  		it.fail = err
 17285  		return it.Next()
 17286  	}
 17287  }
 17288  
 17289  // Error returns any retrieval or parsing error occurred during filtering.
 17290  func (it *ERC721MetadataMintableMinterAddedIterator) Error() error {
 17291  	return it.fail
 17292  }
 17293  
 17294  // Close terminates the iteration process, releasing any pending underlying
 17295  // resources.
 17296  func (it *ERC721MetadataMintableMinterAddedIterator) Close() error {
 17297  	it.sub.Unsubscribe()
 17298  	return nil
 17299  }
 17300  
 17301  // ERC721MetadataMintableMinterAdded represents a MinterAdded event raised by the ERC721MetadataMintable contract.
 17302  type ERC721MetadataMintableMinterAdded struct {
 17303  	Account common.Address
 17304  	Raw     types.Log // Blockchain specific contextual infos
 17305  }
 17306  
 17307  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 17308  //
 17309  // Solidity: event MinterAdded(address indexed account)
 17310  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterAddedIterator, error) {
 17311  
 17312  	var accountRule []interface{}
 17313  	for _, accountItem := range account {
 17314  		accountRule = append(accountRule, accountItem)
 17315  	}
 17316  
 17317  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
 17318  	if err != nil {
 17319  		return nil, err
 17320  	}
 17321  	return &ERC721MetadataMintableMinterAddedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 17322  }
 17323  
 17324  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 17325  //
 17326  // Solidity: event MinterAdded(address indexed account)
 17327  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterAdded, account []common.Address) (event.Subscription, error) {
 17328  
 17329  	var accountRule []interface{}
 17330  	for _, accountItem := range account {
 17331  		accountRule = append(accountRule, accountItem)
 17332  	}
 17333  
 17334  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
 17335  	if err != nil {
 17336  		return nil, err
 17337  	}
 17338  	return event.NewSubscription(func(quit <-chan struct{}) error {
 17339  		defer sub.Unsubscribe()
 17340  		for {
 17341  			select {
 17342  			case log := <-logs:
 17343  				// New log arrived, parse the event and forward to the user
 17344  				event := new(ERC721MetadataMintableMinterAdded)
 17345  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 17346  					return err
 17347  				}
 17348  				event.Raw = log
 17349  
 17350  				select {
 17351  				case sink <- event:
 17352  				case err := <-sub.Err():
 17353  					return err
 17354  				case <-quit:
 17355  					return nil
 17356  				}
 17357  			case err := <-sub.Err():
 17358  				return err
 17359  			case <-quit:
 17360  				return nil
 17361  			}
 17362  		}
 17363  	}), nil
 17364  }
 17365  
 17366  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 17367  //
 17368  // Solidity: event MinterAdded(address indexed account)
 17369  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterAdded(log types.Log) (*ERC721MetadataMintableMinterAdded, error) {
 17370  	event := new(ERC721MetadataMintableMinterAdded)
 17371  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 17372  		return nil, err
 17373  	}
 17374  	return event, nil
 17375  }
 17376  
 17377  // ERC721MetadataMintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC721MetadataMintable contract.
 17378  type ERC721MetadataMintableMinterRemovedIterator struct {
 17379  	Event *ERC721MetadataMintableMinterRemoved // Event containing the contract specifics and raw log
 17380  
 17381  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 17382  	event    string              // Event name to use for unpacking event data
 17383  
 17384  	logs chan types.Log      // Log channel receiving the found contract events
 17385  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 17386  	done bool                // Whether the subscription completed delivering logs
 17387  	fail error               // Occurred error to stop iteration
 17388  }
 17389  
 17390  // Next advances the iterator to the subsequent event, returning whether there
 17391  // are any more events found. In case of a retrieval or parsing error, false is
 17392  // returned and Error() can be queried for the exact failure.
 17393  func (it *ERC721MetadataMintableMinterRemovedIterator) Next() bool {
 17394  	// If the iterator failed, stop iterating
 17395  	if it.fail != nil {
 17396  		return false
 17397  	}
 17398  	// If the iterator completed, deliver directly whatever's available
 17399  	if it.done {
 17400  		select {
 17401  		case log := <-it.logs:
 17402  			it.Event = new(ERC721MetadataMintableMinterRemoved)
 17403  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17404  				it.fail = err
 17405  				return false
 17406  			}
 17407  			it.Event.Raw = log
 17408  			return true
 17409  
 17410  		default:
 17411  			return false
 17412  		}
 17413  	}
 17414  	// Iterator still in progress, wait for either a data or an error event
 17415  	select {
 17416  	case log := <-it.logs:
 17417  		it.Event = new(ERC721MetadataMintableMinterRemoved)
 17418  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17419  			it.fail = err
 17420  			return false
 17421  		}
 17422  		it.Event.Raw = log
 17423  		return true
 17424  
 17425  	case err := <-it.sub.Err():
 17426  		it.done = true
 17427  		it.fail = err
 17428  		return it.Next()
 17429  	}
 17430  }
 17431  
 17432  // Error returns any retrieval or parsing error occurred during filtering.
 17433  func (it *ERC721MetadataMintableMinterRemovedIterator) Error() error {
 17434  	return it.fail
 17435  }
 17436  
 17437  // Close terminates the iteration process, releasing any pending underlying
 17438  // resources.
 17439  func (it *ERC721MetadataMintableMinterRemovedIterator) Close() error {
 17440  	it.sub.Unsubscribe()
 17441  	return nil
 17442  }
 17443  
 17444  // ERC721MetadataMintableMinterRemoved represents a MinterRemoved event raised by the ERC721MetadataMintable contract.
 17445  type ERC721MetadataMintableMinterRemoved struct {
 17446  	Account common.Address
 17447  	Raw     types.Log // Blockchain specific contextual infos
 17448  }
 17449  
 17450  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 17451  //
 17452  // Solidity: event MinterRemoved(address indexed account)
 17453  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterRemovedIterator, error) {
 17454  
 17455  	var accountRule []interface{}
 17456  	for _, accountItem := range account {
 17457  		accountRule = append(accountRule, accountItem)
 17458  	}
 17459  
 17460  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 17461  	if err != nil {
 17462  		return nil, err
 17463  	}
 17464  	return &ERC721MetadataMintableMinterRemovedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 17465  }
 17466  
 17467  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 17468  //
 17469  // Solidity: event MinterRemoved(address indexed account)
 17470  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterRemoved, account []common.Address) (event.Subscription, error) {
 17471  
 17472  	var accountRule []interface{}
 17473  	for _, accountItem := range account {
 17474  		accountRule = append(accountRule, accountItem)
 17475  	}
 17476  
 17477  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 17478  	if err != nil {
 17479  		return nil, err
 17480  	}
 17481  	return event.NewSubscription(func(quit <-chan struct{}) error {
 17482  		defer sub.Unsubscribe()
 17483  		for {
 17484  			select {
 17485  			case log := <-logs:
 17486  				// New log arrived, parse the event and forward to the user
 17487  				event := new(ERC721MetadataMintableMinterRemoved)
 17488  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 17489  					return err
 17490  				}
 17491  				event.Raw = log
 17492  
 17493  				select {
 17494  				case sink <- event:
 17495  				case err := <-sub.Err():
 17496  					return err
 17497  				case <-quit:
 17498  					return nil
 17499  				}
 17500  			case err := <-sub.Err():
 17501  				return err
 17502  			case <-quit:
 17503  				return nil
 17504  			}
 17505  		}
 17506  	}), nil
 17507  }
 17508  
 17509  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 17510  //
 17511  // Solidity: event MinterRemoved(address indexed account)
 17512  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterRemoved(log types.Log) (*ERC721MetadataMintableMinterRemoved, error) {
 17513  	event := new(ERC721MetadataMintableMinterRemoved)
 17514  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 17515  		return nil, err
 17516  	}
 17517  	return event, nil
 17518  }
 17519  
 17520  // ERC721MetadataMintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721MetadataMintable contract.
 17521  type ERC721MetadataMintableTransferIterator struct {
 17522  	Event *ERC721MetadataMintableTransfer // Event containing the contract specifics and raw log
 17523  
 17524  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 17525  	event    string              // Event name to use for unpacking event data
 17526  
 17527  	logs chan types.Log      // Log channel receiving the found contract events
 17528  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 17529  	done bool                // Whether the subscription completed delivering logs
 17530  	fail error               // Occurred error to stop iteration
 17531  }
 17532  
 17533  // Next advances the iterator to the subsequent event, returning whether there
 17534  // are any more events found. In case of a retrieval or parsing error, false is
 17535  // returned and Error() can be queried for the exact failure.
 17536  func (it *ERC721MetadataMintableTransferIterator) Next() bool {
 17537  	// If the iterator failed, stop iterating
 17538  	if it.fail != nil {
 17539  		return false
 17540  	}
 17541  	// If the iterator completed, deliver directly whatever's available
 17542  	if it.done {
 17543  		select {
 17544  		case log := <-it.logs:
 17545  			it.Event = new(ERC721MetadataMintableTransfer)
 17546  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17547  				it.fail = err
 17548  				return false
 17549  			}
 17550  			it.Event.Raw = log
 17551  			return true
 17552  
 17553  		default:
 17554  			return false
 17555  		}
 17556  	}
 17557  	// Iterator still in progress, wait for either a data or an error event
 17558  	select {
 17559  	case log := <-it.logs:
 17560  		it.Event = new(ERC721MetadataMintableTransfer)
 17561  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 17562  			it.fail = err
 17563  			return false
 17564  		}
 17565  		it.Event.Raw = log
 17566  		return true
 17567  
 17568  	case err := <-it.sub.Err():
 17569  		it.done = true
 17570  		it.fail = err
 17571  		return it.Next()
 17572  	}
 17573  }
 17574  
 17575  // Error returns any retrieval or parsing error occurred during filtering.
 17576  func (it *ERC721MetadataMintableTransferIterator) Error() error {
 17577  	return it.fail
 17578  }
 17579  
 17580  // Close terminates the iteration process, releasing any pending underlying
 17581  // resources.
 17582  func (it *ERC721MetadataMintableTransferIterator) Close() error {
 17583  	it.sub.Unsubscribe()
 17584  	return nil
 17585  }
 17586  
 17587  // ERC721MetadataMintableTransfer represents a Transfer event raised by the ERC721MetadataMintable contract.
 17588  type ERC721MetadataMintableTransfer struct {
 17589  	From    common.Address
 17590  	To      common.Address
 17591  	TokenId *big.Int
 17592  	Raw     types.Log // Blockchain specific contextual infos
 17593  }
 17594  
 17595  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 17596  //
 17597  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 17598  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableTransferIterator, error) {
 17599  
 17600  	var fromRule []interface{}
 17601  	for _, fromItem := range from {
 17602  		fromRule = append(fromRule, fromItem)
 17603  	}
 17604  	var toRule []interface{}
 17605  	for _, toItem := range to {
 17606  		toRule = append(toRule, toItem)
 17607  	}
 17608  	var tokenIdRule []interface{}
 17609  	for _, tokenIdItem := range tokenId {
 17610  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 17611  	}
 17612  
 17613  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 17614  	if err != nil {
 17615  		return nil, err
 17616  	}
 17617  	return &ERC721MetadataMintableTransferIterator{contract: _ERC721MetadataMintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
 17618  }
 17619  
 17620  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 17621  //
 17622  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 17623  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 17624  
 17625  	var fromRule []interface{}
 17626  	for _, fromItem := range from {
 17627  		fromRule = append(fromRule, fromItem)
 17628  	}
 17629  	var toRule []interface{}
 17630  	for _, toItem := range to {
 17631  		toRule = append(toRule, toItem)
 17632  	}
 17633  	var tokenIdRule []interface{}
 17634  	for _, tokenIdItem := range tokenId {
 17635  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 17636  	}
 17637  
 17638  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 17639  	if err != nil {
 17640  		return nil, err
 17641  	}
 17642  	return event.NewSubscription(func(quit <-chan struct{}) error {
 17643  		defer sub.Unsubscribe()
 17644  		for {
 17645  			select {
 17646  			case log := <-logs:
 17647  				// New log arrived, parse the event and forward to the user
 17648  				event := new(ERC721MetadataMintableTransfer)
 17649  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil {
 17650  					return err
 17651  				}
 17652  				event.Raw = log
 17653  
 17654  				select {
 17655  				case sink <- event:
 17656  				case err := <-sub.Err():
 17657  					return err
 17658  				case <-quit:
 17659  					return nil
 17660  				}
 17661  			case err := <-sub.Err():
 17662  				return err
 17663  			case <-quit:
 17664  				return nil
 17665  			}
 17666  		}
 17667  	}), nil
 17668  }
 17669  
 17670  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 17671  //
 17672  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 17673  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseTransfer(log types.Log) (*ERC721MetadataMintableTransfer, error) {
 17674  	event := new(ERC721MetadataMintableTransfer)
 17675  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil {
 17676  		return nil, err
 17677  	}
 17678  	return event, nil
 17679  }
 17680  
 17681  // ExtBridgeABI is the input ABI used to generate the binding from.
 17682  const ExtBridgeABI = "[{\"constant\":true,\"inputs\":[],\"name\":\"callback\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"lockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"handleNoncesToBlockNums\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"operators\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isRunning\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_fee\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"}],\"name\":\"setERC20Fee\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"registerOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_OPERATOR\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"registeredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"},{\"name\":\"_requestBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC20Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"},{\"name\":\"_cToken\",\"type\":\"address\"}],\"name\":\"registerToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"feeOfERC20\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"indexOfTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"lowerHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"requestSellERC721\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"upperHandleNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"operatorThresholds\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"lockedTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"modeMintBurn\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"requestNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"handledRequestTx\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"address\"}],\"name\":\"registeredTokens\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"setCallback\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"closedValueTransferVotes\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"recoveryBlockNumber\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"unlockToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"configurationNonce\",\"outputs\":[{\"name\":\"\",\"type\":\"uint64\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_requestTxHash\",\"type\":\"bytes32\"},{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_requestNonce\",\"type\":\"uint64\"},{\"name\":\"_requestBlockNumber\",\"type\":\"uint64\"},{\"name\":\"_tokenURI\",\"type\":\"string\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"handleERC721Transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getOperatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeReceiver\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"deregisterToken\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"feeOfKLAY\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"requestSellERC20\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_status\",\"type\":\"bool\"}],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"operatorList\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"deregisterOperator\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getRegisteredTokenList\",\"outputs\":[{\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_voteType\",\"type\":\"uint8\"},{\"name\":\"_threshold\",\"type\":\"uint8\"}],\"name\":\"setOperatorThreshold\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_feeReceiver\",\"type\":\"address\"}],\"name\":\"setFeeReceiver\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_value\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_modeMintBurn\",\"type\":\"bool\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"requestNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"fee\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"name\":\"encodingVer\",\"type\":\"uint8\"},{\"indexed\":false,\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"RequestValueTransferEncoded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"requestTxHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"tokenType\",\"type\":\"uint8\"},{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"valueOrTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"handleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"lowerHandleNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"HandleValueTransfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenUnlocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"KLAYFeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ERC20FeeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"feeReceiver\",\"type\":\"address\"}],\"name\":\"FeeReceiverChanged\",\"type\":\"event\"}]"
 17683  
 17684  // ExtBridgeBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 17685  const ExtBridgeBinRuntime = `608060405234801561001057600080fd5b50600436106102955760003560e01c80638a75eee211610167578063bab2af1d116100ce578063d8cf98ca11610087578063d8cf98ca14610b56578063ea21eade14610b7c578063ee2aec6514610b84578063efdcd97414610bac578063f1656e5314610bd2578063f2fde38b14610c9b57610295565b8063bab2af1d146109e7578063c263b5d614610a0d578063c5e4907314610a15578063c877cf3714610a57578063cb38f40714610a76578063cf0da29014610a9357610295565b8063989ba0d311610120578063989ba0d3146107e05780639ef2017b146107e8578063ac6fff0b1461080e578063afb6022314610816578063b2c0103014610987578063b3f00674146109df57610295565b80638a75eee2146107415780638c0bd9161461075e5780638da5cb5b146107845780638daa63ac1461078c5780638f32d59b146107b25780639832c1d7146107ba57610295565b8063407e6bae1161020b57806354edad72116101c457806354edad72146106c55780635526f76b146106cd5780635eb7413a146107035780636e176ec214610729578063715018a6146107315780637c1a03021461073957610295565b8063407e6bae146105095780634739f7e5146105f5578063488af8711461062357806348a18a6a1461065b5780634b40b826146106815780634c5146f51461068957610295565b8063226047421161025d578063226047421461036a57806326c23b541461042e5780632f88396c146104835780633682a450146104be5780633a3099d1146104e45780633e4fe949146104ec57610295565b8063083b27321461029a57806310693fcd146102be57806313a6738a146102e657806313e7c9d8146103285780632014e5d114610362575b600080fd5b6102a2610cc1565b604080516001600160a01b039092168252519081900360200190f35b6102e4600480360360208110156102d457600080fd5b50356001600160a01b0316610cd0565b005b61030c600480360360208110156102fc57600080fd5b50356001600160401b0316610e35565b604080516001600160401b039092168252519081900360200190f35b61034e6004803603602081101561033e57600080fd5b50356001600160a01b0316610e50565b604080519115158252519081900360200190f35b61034e610e65565b6102e46004803603608081101561038057600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156103ba57600080fd5b8201836020820111156103cc57600080fd5b803590602001918460018302840111600160201b831117156103ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e75945050505050565b6102e4600480360360a081101561044457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103ba57600080fd5b6102e46004803603606081101561049957600080fd5b5080356001600160a01b031690602081013590604001356001600160401b0316610eb6565b6102e4600480360360208110156104d457600080fd5b50356001600160a01b0316610f3e565b61030c6110b8565b6102a26004803603602081101561050257600080fd5b50356110bd565b6102e4600480360361010081101561052057600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561058157600080fd5b82018360208201111561059357600080fd5b803590602001918460018302840111600160201b831117156105b457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110e4945050505050565b6102e46004803603604081101561060b57600080fd5b506001600160a01b03813581169160200135166112ab565b6106496004803603602081101561063957600080fd5b50356001600160a01b0316611408565b60408051918252519081900360200190f35b6106496004803603602081101561067157600080fd5b50356001600160a01b031661141a565b61030c61142c565b6102e46004803603608081101561069f57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611442565b61030c611473565b6106ed600480360360208110156106e357600080fd5b503560ff16611482565b6040805160ff9092168252519081900360200190f35b61034e6004803603602081101561071957600080fd5b50356001600160a01b0316611497565b61034e6114ac565b6102e46114bc565b61030c611550565b61034e6004803603602081101561075757600080fd5b5035611566565b6102a26004803603602081101561077457600080fd5b50356001600160a01b031661157b565b6102a2611596565b6102e4600480360360208110156107a257600080fd5b50356001600160a01b03166115a6565b61034e611612565b61034e600480360360208110156107d057600080fd5b50356001600160401b0316611623565b61030c611638565b6102e4600480360360208110156107fe57600080fd5b50356001600160a01b031661164e565b61030c6117c2565b6102e4600480360361012081101561082d57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561088e57600080fd5b8201836020820111156108a057600080fd5b803590602001918460018302840111600160201b831117156108c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561091357600080fd5b82018360208201111561092557600080fd5b803590602001918460018302840111600160201b8311171561094657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117d1945050505050565b61098f61199a565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109cb5781810151838201526020016109b3565b505050509050019250505060405180910390f35b6102a26119fc565b6102e4600480360360208110156109fd57600080fd5b50356001600160a01b0316611a0b565b610649611bfa565b6102e4600480360360a0811015610a2b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135611c00565b6102e460048036036020811015610a6d57600080fd5b50351515611c33565b6102a260048036036020811015610a8c57600080fd5b5035611ca1565b6102e460048036036080811015610aa957600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610ae257600080fd5b820183602082011115610af457600080fd5b803590602001918460018302840111600160201b83111715610b1557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611cae945050505050565b6102e460048036036020811015610b6c57600080fd5b50356001600160a01b0316611cbb565b61098f611e0d565b6102e460048036036040811015610b9a57600080fd5b5060ff81358116916020013516611e6d565b6102e460048036036020811015610bc257600080fd5b50356001600160a01b0316611fa9565b6102e4600480360360a0811015610be857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610c2757600080fd5b820183602082011115610c3957600080fd5b803590602001918460018302840111600160201b83111715610c5a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fff945050505050565b6102e460048036036020811015610cb157600080fd5b50356001600160a01b031661200d565b6011546001600160a01b031681565b610cd8611612565b610d1a5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116610d825760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615610de75760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6010602052600090815260409020546001600160401b031681565b600b6020526000908152604090205460ff1681565b600e54600160481b900460ff1681565b60408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b9bdd081cdd5c1c1bdc9d02604482015290519081900360640190fd5b336000908152600b602052604090205460ff16610f1d5760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b610f2681612060565b610f2f57610f39565b610f398383612134565b505050565b610f46611612565b610f885760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b600c805410610fe15760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16156110525760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b600c81565b600781815481106110ca57fe5b6000918252602090912001546001600160a01b0316905081565b805160201461113d5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661119d5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b60008180602001905160208110156111b457600080fd5b50519050806112035760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b601154611221908a908a906001600160a01b0316898989898961217b565b60115460408051600160e11b632f6233f10281526001600160a01b038a811660048301526024820189905289811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b15801561128857600080fd5b505af115801561129c573d6000803e3d6000fd5b50505050505050505050505050565b6112b3611612565b6112f55760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260056020526040902054839116156113675760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832080549588166001600160a01b031996871617905560078054600690935281842083905560018301815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60066020526000908152604090205481565b600e54600160901b90046001600160401b031681565b61146d8484848460405160200180828152602001915050604051602081830303815290604052612530565b50505050565b600f546001600160401b031681565b600d6020526000908152604090205460ff1681565b60086020526000908152604090205460ff1681565b600e54600160401b900460ff1681565b6114c4611612565b6115065760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b600e54600160501b90046001600160401b031681565b60006020819052908152604090205460ff1681565b6005602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6115ae611612565b6115f05760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b600a6020526000908152604090205460ff1681565b600f54600160401b90046001600160401b031681565b611656611612565b6116985760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600560205260409020548291166117005760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615156001146117775760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b600e546001600160401b031681565b805160201461182a5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661188a5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b60008180602001905160208110156118a157600080fd5b50519050806118f05760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b60115461190f908b908b906001600160a01b03168a8a8a8a8a8a6125ac565b60115460408051600160e11b632f6233f10281526001600160a01b038b81166004830152602482018a90528a811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b15801561197657600080fd5b505af115801561198a573d6000803e3d6000fd5b5050505050505050505050505050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156119f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119d4575b5050505050905090565b6001546001600160a01b031681565b611a13611612565b611a555760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116611abd5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260056020908152604080832080546001600160a01b031916905560088252808320805460ff1916905560069091528120805491905560075460001901811015611bad57600780546000198101908110611b2157fe5b600091825260209091200154600780546001600160a01b039092169183908110611b4757fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806006600060078481548110611b8757fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6007805490611bc0906000198301613ccc565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b611c2c85858585856040516020018082815260200191505060405160208183030381529060405261294e565b5050505050565b611c3b611612565b611c7d5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b600e8054911515600160481b0269ff00000000000000000019909216919091179055565b600c81815481106110ca57fe5b61146d3385848685612a38565b611cc3611612565b611d055760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16611d2a57600080fd5b6001600160a01b0381166000908152600b60205260408120805460ff191690555b600c54811015611e0957816001600160a01b0316600c8281548110611d6c57fe5b6000918252602090912001546001600160a01b03161415611e0157600c80546000198101908110611d9957fe5b600091825260209091200154600c80546001600160a01b039092169183908110611dbf57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600c805490611dfb906000198301613ccc565b50611e09565b600101611d4b565b5050565b606060078054806020026020016040519081016040528092919081815260200182805480156119f2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116119d4575050505050905090565b611e75611612565b611eb75760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b60008160ff1611611f125760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600c5460ff82161115611f6f5760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600d6000846002811115611f8057fe5b60ff90811682526020820192909252604001600020805460ff1916929091169190911790555050565b611fb1611612565b611ff35760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b611ffc81612f64565b50565b611c2c338686868686612fae565b612015611612565b6120575760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b611ffc816132f9565b600e546000906001600160401b038381169116146120c85760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506120f76001848361339d565b15612129575050600e805467ffffffffffffffff19811660016001600160401b0392831681019092161790915561212f565b60009150505b919050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b336000908152600b602052604090205460ff166121e25760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b6121eb8361350b565b6121f483613578565b6121fd57612526565b6122068861363b565b6001600160401b038381166000908152601060205260409020805467ffffffffffffffff191691841691909117905561223e83613656565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600e60129054906101000a90046001600160401b031689604051808781526020018660028111156122af57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561232657818101518382015260200161230e565b50505050905090810190601f1680156123535780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff161561245c57846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156123d757600080fd5b505af11580156123eb573d6000803e3d6000fd5b505050506040513d602081101561240157600080fd5b50516124575760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b612526565b846001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156124bc57600080fd5b505af11580156124d0573d6000803e3d6000fd5b505050506040513d60208110156124e657600080fd5b505161252657604051600160e51b62461bcd028152600401808060200182810382526024815260200180613dc46024913960400191505060405180910390fd5b5050505050505050565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b5050505061146d8433858585612a38565b336000908152600b602052604090205460ff166126135760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b61261c8461350b565b61262584613578565b61262e57612943565b6126378961363b565b6001600160401b038481166000908152601060205260409020805467ffffffffffffffff191691851691909117905561266f84613656565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600e60129054906101000a90046001600160401b031689604051808781526020018660028111156126e057fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561275757818101518382015260200161273f565b50505050905090810190601f1680156127845780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff16156128e857856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561282457818101518382015260200161280c565b50505050905090810190601f1680156128515780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561287257600080fd5b505af1158015612886573d6000803e3d6000fd5b505050506040513d602081101561289c57600080fd5b50516128e35760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b612943565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b15801561128857600080fd5b505050505050505050565b6001600160a01b0385166323b872dd333061296f878763ffffffff6137ba16565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b1580156129c057600080fd5b505af11580156129d4573d6000803e3d6000fd5b505050506040513d60208110156129ea57600080fd5b5051612a2a57604051600160e51b62461bcd028152600401808060200182810382526029815260200180613d9b6029913960400191505060405180910390fd5b611c2c853386868686612fae565b6001600160a01b03808616600090815260056020526040902054869116612aa05760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260086020526040902054869060ff1615612b055760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff16612b5a5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b60208310612bc75780518252601f199092019160209182019101612ba8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310612c2b5780518252601f199092019160209182019101612c0c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612c8d576040519150601f19603f3d011682016040523d82523d6000602084013e612c92565b606091505b50909250905081612cae57506040805160208101909152600081525b600e54600160401b900460ff1615612d1f57886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612d0657600080fd5b505af1158015612d1a573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600e600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612dbd578181015183820152602001612da5565b50505050905090810190601f168015612dea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405260405180886002811115612e0e57fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b83811015612e80578181015183820152602001612e68565b50505050905090810190601f168015612ead5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612ee0578181015183820152602001612ec8565b50505050905090810190601f168015612f0d5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038087166000908152600560205260409020548791166130165760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260086020526040902054879060ff161561307b5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff166130d05760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b600085116131285760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f206d73672e76616c7565000000000000000000000000000000000000604482015290519081900360640190fd5b6000613135888a87613817565b600e54909150600160401b900460ff16156131a957886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600e600a9054906101000a90046001600160401b0316878b6040518086600281111561321357fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613278578181015183820152602001613260565b50505050905090810190601f1680156132a55780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b6001600160a01b03811661334157604051600160e51b62461bcd028152600401808060200182810382526026815260200180613d296026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600960008660028111156133b057fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806134145781546001810183556000838152602090200180546001600160a01b0319163317905561343b565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166134815760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600d908760028111156134b457fe5b60ff908116825260208083019390935260409182016000908120548882526003870190945291909120549181169116106134fd576134f28686613b34565b600192505050613504565b6000925050505b9392505050565b600e546001600160401b03808316600160901b909204161115611ffc5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600a602052604081205460ff16156135da5760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506136096000848361339d565b156121295750506001600160401b0381166000908152600a60205260409020805460ff1916600190811790915561212f565b6000908152602081905260409020805460ff19166001179055565b600f546001600160401b03908116908216111561368a57600f805467ffffffffffffffff19166001600160401b0383161790555b600e54600f5460c86001600160401b03600160901b9093048316019190811690821611156136c05750600f546001600160401b03165b600e54600160901b90046001600160401b03165b816001600160401b0316816001600160401b03161115801561370f57506001600160401b038082166000908152601060205260409020541615155b1561377c576001600160401b0381811660009081526010602090815260408083208054600f80546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600a905220805460ff191690556001016136d4565b600e80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b6000828201838110156135045760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038083166000908152600360205260408120546001549192909116158015906138475750600081115b15613a5f57808310156138a45760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810184905290519186169163a9059cbb916044808201926020929091908290030181600087803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b505050506040513d602081101561392757600080fd5b505161396757604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b6000613979848363ffffffff613c6c16565b1115613a58576001600160a01b03841663a9059cbb8661399f868563ffffffff613c6c16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050506040513d6020811015613a1857600080fd5b5051613a5857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b9050613504565b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613abf57600080fd5b505af1158015613ad3573d6000803e3d6000fd5b505050506040513d6020811015613ae957600080fd5b5051613b2957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b506000949350505050565b600060096000846002811115613b4657fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812091505b815460ff82161015613bc357816001016000836000018360ff1681548110613b9657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001812055600101613b72565b5060005b600282015460ff82161015613c1957816003016000836002018360ff1681548110613bee57fe5b600091825260208083209091015483528201929092526040019020805460ff19169055600101613bc7565b5060096000846002811115613c2a57fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812090613c5e8282613cf0565b611c2c600283016000613cf0565b600082821115613cc65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b815481835581811115610f3957600083815260209020610f39918101908301613d0a565b5080546000825590600052602060002090810190611ffc91905b6115a391905b80821115613d245760008155600101613d10565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7061794552433230466565416e64526566756e644368616e67653a207472616e73666572206661696c65647265717565737445524332305472616e736665723a207472616e7366657246726f6d206661696c656468616e646c6545524332305472616e736665723a207472616e73666572206661696c6564a165627a7a723058205b10aad5d76f7bb539d205b7d0d7781d1e862dfaff6491ed87459bae7729c6490029`
 17686  
 17687  // ExtBridgeFuncSigs maps the 4-byte function signature to its string representation.
 17688  var ExtBridgeFuncSigs = map[string]string{
 17689  	"3a3099d1": "MAX_OPERATOR()",
 17690  	"083b2732": "callback()",
 17691  	"9832c1d7": "closedValueTransferVotes(uint64)",
 17692  	"ac6fff0b": "configurationNonce()",
 17693  	"d8cf98ca": "deregisterOperator(address)",
 17694  	"bab2af1d": "deregisterToken(address)",
 17695  	"488af871": "feeOfERC20(address)",
 17696  	"c263b5d6": "feeOfKLAY()",
 17697  	"b3f00674": "feeReceiver()",
 17698  	"b2c01030": "getOperatorList()",
 17699  	"ea21eade": "getRegisteredTokenList()",
 17700  	"407e6bae": "handleERC20Transfer(bytes32,address,address,address,uint256,uint64,uint64,bytes)",
 17701  	"afb60223": "handleERC721Transfer(bytes32,address,address,address,uint256,uint64,uint64,string,bytes)",
 17702  	"13a6738a": "handleNoncesToBlockNums(uint64)",
 17703  	"8a75eee2": "handledRequestTx(bytes32)",
 17704  	"48a18a6a": "indexOfTokens(address)",
 17705  	"8f32d59b": "isOwner()",
 17706  	"2014e5d1": "isRunning()",
 17707  	"10693fcd": "lockToken(address)",
 17708  	"5eb7413a": "lockedTokens(address)",
 17709  	"4b40b826": "lowerHandleNonce()",
 17710  	"6e176ec2": "modeMintBurn()",
 17711  	"f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)",
 17712  	"cf0da290": "onERC721Received(address,uint256,address,bytes)",
 17713  	"cb38f407": "operatorList(uint256)",
 17714  	"5526f76b": "operatorThresholds(uint8)",
 17715  	"13e7c9d8": "operators(address)",
 17716  	"8da5cb5b": "owner()",
 17717  	"989ba0d3": "recoveryBlockNumber()",
 17718  	"3682a450": "registerOperator(address)",
 17719  	"4739f7e5": "registerToken(address,address)",
 17720  	"3e4fe949": "registeredTokenList(uint256)",
 17721  	"8c0bd916": "registeredTokens(address)",
 17722  	"715018a6": "renounceOwnership()",
 17723  	"26c23b54": "requestERC20Transfer(address,address,uint256,uint256,bytes)",
 17724  	"22604742": "requestERC721Transfer(address,address,uint256,bytes)",
 17725  	"7c1a0302": "requestNonce()",
 17726  	"c5e49073": "requestSellERC20(address,address,uint256,uint256,uint256)",
 17727  	"4c5146f5": "requestSellERC721(address,address,uint256,uint256)",
 17728  	"8daa63ac": "setCallback(address)",
 17729  	"2f88396c": "setERC20Fee(address,uint256,uint64)",
 17730  	"efdcd974": "setFeeReceiver(address)",
 17731  	"ee2aec65": "setOperatorThreshold(uint8,uint8)",
 17732  	"c877cf37": "start(bool)",
 17733  	"f2fde38b": "transferOwnership(address)",
 17734  	"9ef2017b": "unlockToken(address)",
 17735  	"54edad72": "upperHandleNonce()",
 17736  }
 17737  
 17738  // ExtBridgeBin is the compiled bytecode used for deploying new contracts.
 17739  var ExtBridgeBin = "0x60806040819052600180546001600160a01b03199081169091556000600255600e8054600160401b61ffff0219166901000000000000000000179055600f8054600160401b600160801b0319166801000000000000000017905560118054909116905560208062003fb28339810180604052602081101561007f57600080fd5b5051600180546001600160a01b03199081169091556004805490911633179081905560405182916001600160a01b0316906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a360005b600260ff8216101561010d5760ff81166000908152600d60205260409020805460ff19166001908117909155016100db565b50336000818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055600e80549115156801000000000000000002600160401b60ff021990921691909117905550613e13806200019f6000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c80638a75eee211610167578063bab2af1d116100ce578063d8cf98ca11610087578063d8cf98ca14610b56578063ea21eade14610b7c578063ee2aec6514610b84578063efdcd97414610bac578063f1656e5314610bd2578063f2fde38b14610c9b57610295565b8063bab2af1d146109e7578063c263b5d614610a0d578063c5e4907314610a15578063c877cf3714610a57578063cb38f40714610a76578063cf0da29014610a9357610295565b8063989ba0d311610120578063989ba0d3146107e05780639ef2017b146107e8578063ac6fff0b1461080e578063afb6022314610816578063b2c0103014610987578063b3f00674146109df57610295565b80638a75eee2146107415780638c0bd9161461075e5780638da5cb5b146107845780638daa63ac1461078c5780638f32d59b146107b25780639832c1d7146107ba57610295565b8063407e6bae1161020b57806354edad72116101c457806354edad72146106c55780635526f76b146106cd5780635eb7413a146107035780636e176ec214610729578063715018a6146107315780637c1a03021461073957610295565b8063407e6bae146105095780634739f7e5146105f5578063488af8711461062357806348a18a6a1461065b5780634b40b826146106815780634c5146f51461068957610295565b8063226047421161025d578063226047421461036a57806326c23b541461042e5780632f88396c146104835780633682a450146104be5780633a3099d1146104e45780633e4fe949146104ec57610295565b8063083b27321461029a57806310693fcd146102be57806313a6738a146102e657806313e7c9d8146103285780632014e5d114610362575b600080fd5b6102a2610cc1565b604080516001600160a01b039092168252519081900360200190f35b6102e4600480360360208110156102d457600080fd5b50356001600160a01b0316610cd0565b005b61030c600480360360208110156102fc57600080fd5b50356001600160401b0316610e35565b604080516001600160401b039092168252519081900360200190f35b61034e6004803603602081101561033e57600080fd5b50356001600160a01b0316610e50565b604080519115158252519081900360200190f35b61034e610e65565b6102e46004803603608081101561038057600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156103ba57600080fd5b8201836020820111156103cc57600080fd5b803590602001918460018302840111600160201b831117156103ed57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e75945050505050565b6102e4600480360360a081101561044457600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156103ba57600080fd5b6102e46004803603606081101561049957600080fd5b5080356001600160a01b031690602081013590604001356001600160401b0316610eb6565b6102e4600480360360208110156104d457600080fd5b50356001600160a01b0316610f3e565b61030c6110b8565b6102a26004803603602081101561050257600080fd5b50356110bd565b6102e4600480360361010081101561052057600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561058157600080fd5b82018360208201111561059357600080fd5b803590602001918460018302840111600160201b831117156105b457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110e4945050505050565b6102e46004803603604081101561060b57600080fd5b506001600160a01b03813581169160200135166112ab565b6106496004803603602081101561063957600080fd5b50356001600160a01b0316611408565b60408051918252519081900360200190f35b6106496004803603602081101561067157600080fd5b50356001600160a01b031661141a565b61030c61142c565b6102e46004803603608081101561069f57600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611442565b61030c611473565b6106ed600480360360208110156106e357600080fd5b503560ff16611482565b6040805160ff9092168252519081900360200190f35b61034e6004803603602081101561071957600080fd5b50356001600160a01b0316611497565b61034e6114ac565b6102e46114bc565b61030c611550565b61034e6004803603602081101561075757600080fd5b5035611566565b6102a26004803603602081101561077457600080fd5b50356001600160a01b031661157b565b6102a2611596565b6102e4600480360360208110156107a257600080fd5b50356001600160a01b03166115a6565b61034e611612565b61034e600480360360208110156107d057600080fd5b50356001600160401b0316611623565b61030c611638565b6102e4600480360360208110156107fe57600080fd5b50356001600160a01b031661164e565b61030c6117c2565b6102e4600480360361012081101561082d57600080fd5b8135916001600160a01b03602082013581169260408301358216926060810135909216916080810135916001600160401b0360a083013581169260c081013590911691810190610100810160e0820135600160201b81111561088e57600080fd5b8201836020820111156108a057600080fd5b803590602001918460018302840111600160201b831117156108c157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561091357600080fd5b82018360208201111561092557600080fd5b803590602001918460018302840111600160201b8311171561094657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117d1945050505050565b61098f61199a565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109cb5781810151838201526020016109b3565b505050509050019250505060405180910390f35b6102a26119fc565b6102e4600480360360208110156109fd57600080fd5b50356001600160a01b0316611a0b565b610649611bfa565b6102e4600480360360a0811015610a2b57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060800135611c00565b6102e460048036036020811015610a6d57600080fd5b50351515611c33565b6102a260048036036020811015610a8c57600080fd5b5035611ca1565b6102e460048036036080811015610aa957600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b811115610ae257600080fd5b820183602082011115610af457600080fd5b803590602001918460018302840111600160201b83111715610b1557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611cae945050505050565b6102e460048036036020811015610b6c57600080fd5b50356001600160a01b0316611cbb565b61098f611e0d565b6102e460048036036040811015610b9a57600080fd5b5060ff81358116916020013516611e6d565b6102e460048036036020811015610bc257600080fd5b50356001600160a01b0316611fa9565b6102e4600480360360a0811015610be857600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b811115610c2757600080fd5b820183602082011115610c3957600080fd5b803590602001918460018302840111600160201b83111715610c5a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611fff945050505050565b6102e460048036036020811015610cb157600080fd5b50356001600160a01b031661200d565b6011546001600160a01b031681565b610cd8611612565b610d1a5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116610d825760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615610de75760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19166001179055517fca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd79190a2505050565b6010602052600090815260409020546001600160401b031681565b600b6020526000908152604090205460ff1681565b600e54600160481b900460ff1681565b60408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b9bdd081cdd5c1c1bdc9d02604482015290519081900360640190fd5b336000908152600b602052604090205460ff16610f1d5760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b610f2681612060565b610f2f57610f39565b610f398383612134565b505050565b610f46611612565b610f885760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b600c805410610fe15760408051600160e51b62461bcd02815260206004820152601260248201527f6d6178206f70657261746f72206c696d69740000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16156110525760408051600160e51b62461bcd02815260206004820152600e60248201527f6578697374206f70657261746f72000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b600c81565b600781815481106110ca57fe5b6000918252602090912001546001600160a01b0316905081565b805160201461113d5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661119d5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b60008180602001905160208110156111b457600080fd5b50519050806112035760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b601154611221908a908a906001600160a01b0316898989898961217b565b60115460408051600160e11b632f6233f10281526001600160a01b038a811660048301526024820189905289811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b15801561128857600080fd5b505af115801561129c573d6000803e3d6000fd5b50505050505050505050505050565b6112b3611612565b6112f55760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808316600090815260056020526040902054839116156113675760408051600160e51b62461bcd02815260206004820152600d60248201527f616c6c6f77656420746f6b656e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832080549588166001600160a01b031996871617905560078054600690935281842083905560018301815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890910180549094168317909355915190917f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d91a2505050565b60036020526000908152604090205481565b60066020526000908152604090205481565b600e54600160901b90046001600160401b031681565b61146d8484848460405160200180828152602001915050604051602081830303815290604052612530565b50505050565b600f546001600160401b031681565b600d6020526000908152604090205460ff1681565b60086020526000908152604090205460ff1681565b600e54600160401b900460ff1681565b6114c4611612565b6115065760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b600e54600160501b90046001600160401b031681565b60006020819052908152604090205460ff1681565b6005602052600090815260409020546001600160a01b031681565b6004546001600160a01b03165b90565b6115ae611612565b6115f05760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b0316331490565b600a6020526000908152604090205460ff1681565b600f54600160401b90046001600160401b031681565b611656611612565b6116985760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b038082166000908152600560205260409020548291166117005760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260086020526040902054829060ff1615156001146117775760408051600160e51b62461bcd02815260206004820152600e60248201527f756e6c6f636b656420746f6b656e000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600081815260086020526040808220805460ff19169055517f81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec9190a2505050565b600e546001600160401b031681565b805160201461182a5760408051600160e51b62461bcd02815260206004820152601460248201527f6578747261446174612073697a65206572726f72000000000000000000000000604482015290519081900360640190fd5b6011546001600160a01b031661188a5760408051600160e51b62461bcd02815260206004820152601660248201527f63616c6c6261636b2061646472657373206572726f7200000000000000000000604482015290519081900360640190fd5b60008180602001905160208110156118a157600080fd5b50519050806118f05760408051600160e51b62461bcd0281526020600482015260106024820152600160811b6f37b33332b9283934b1b29032b93937b902604482015290519081900360640190fd5b60115461190f908b908b906001600160a01b03168a8a8a8a8a8a6125ac565b60115460408051600160e11b632f6233f10281526001600160a01b038b81166004830152602482018a90528a811660448301526064820185905291519190921691635ec467e291608480830192600092919082900301818387803b15801561197657600080fd5b505af115801561198a573d6000803e3d6000fd5b5050505050505050505050505050565b6060600c8054806020026020016040519081016040528092919081815260200182805480156119f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119d4575b5050505050905090565b6001546001600160a01b031681565b611a13611612565b611a555760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b03808216600090815260056020526040902054829116611abd5760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038216600090815260056020908152604080832080546001600160a01b031916905560088252808320805460ff1916905560069091528120805491905560075460001901811015611bad57600780546000198101908110611b2157fe5b600091825260209091200154600780546001600160a01b039092169183908110611b4757fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550806006600060078481548110611b8757fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020555b6007805490611bc0906000198301613ccc565b506040516001600160a01b038416907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a2505050565b60025481565b611c2c85858585856040516020018082815260200191505060405160208183030381529060405261294e565b5050505050565b611c3b611612565b611c7d5760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b600e8054911515600160481b0269ff00000000000000000019909216919091179055565b600c81815481106110ca57fe5b61146d3385848685612a38565b611cc3611612565b611d055760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16611d2a57600080fd5b6001600160a01b0381166000908152600b60205260408120805460ff191690555b600c54811015611e0957816001600160a01b0316600c8281548110611d6c57fe5b6000918252602090912001546001600160a01b03161415611e0157600c80546000198101908110611d9957fe5b600091825260209091200154600c80546001600160a01b039092169183908110611dbf57fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600c805490611dfb906000198301613ccc565b50611e09565b600101611d4b565b5050565b606060078054806020026020016040519081016040528092919081815260200182805480156119f2576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116119d4575050505050905090565b611e75611612565b611eb75760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b60008160ff1611611f125760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f207468726573686f6c64000000000000000000000000000000000000604482015290519081900360640190fd5b600c5460ff82161115611f6f5760408051600160e51b62461bcd02815260206004820152601c60248201527f626967676572207468616e206e756d206f66206f70657261746f727300000000604482015290519081900360640190fd5b80600d6000846002811115611f8057fe5b60ff90811682526020820192909252604001600020805460ff1916929091169190911790555050565b611fb1611612565b611ff35760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b611ffc81612f64565b50565b611c2c338686868686612fae565b612015611612565b6120575760408051600160e51b62461bcd0281526020600482018190526024820152600080516020613d4f833981519152604482015290519081900360640190fd5b611ffc816132f9565b600e546000906001600160401b038381169116146120c85760408051600160e51b62461bcd02815260206004820152600e60248201527f6e6f6e6365206d69736d61746368000000000000000000000000000000000000604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506120f76001848361339d565b15612129575050600e805467ffffffffffffffff19811660016001600160401b0392831681019092161790915561212f565b60009150505b919050565b6001600160a01b038216600081815260036020526040808220849055518392917fdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b91a35050565b336000908152600b602052604090205460ff166121e25760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b6121eb8361350b565b6121f483613578565b6121fd57612526565b6122068861363b565b6001600160401b038381166000908152601060205260409020805467ffffffffffffffff191691841691909117905561223e83613656565b846001600160a01b0316866001600160a01b0316886001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758b60018989600e60129054906101000a90046001600160401b031689604051808781526020018660028111156122af57fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561232657818101518382015260200161230e565b50505050905090810190601f1680156123535780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff161561245c57846001600160a01b03166340c10f1987866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156123d757600080fd5b505af11580156123eb573d6000803e3d6000fd5b505050506040513d602081101561240157600080fd5b50516124575760408051600160e51b62461bcd02815260206004820181905260248201527f68616e646c6545524332305472616e736665723a206d696e74206661696c6564604482015290519081900360640190fd5b612526565b846001600160a01b031663a9059cbb87866040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156124bc57600080fd5b505af11580156124d0573d6000803e3d6000fd5b505050506040513d60208110156124e657600080fd5b505161252657604051600160e51b62461bcd028152600401808060200182810382526024815260200180613dc46024913960400191505060405180910390fd5b5050505050505050565b60408051600160e01b6323b872dd0281523360048201523060248201526044810184905290516001600160a01b038616916323b872dd91606480830192600092919082900301818387803b15801561258757600080fd5b505af115801561259b573d6000803e3d6000fd5b5050505061146d8433858585612a38565b336000908152600b602052604090205460ff166126135760408051600160e51b62461bcd02815260206004820152601d60248201527f6d73672e73656e646572206973206e6f7420616e206f70657261746f72000000604482015290519081900360640190fd5b61261c8461350b565b61262584613578565b61262e57612943565b6126378961363b565b6001600160401b038481166000908152601060205260409020805467ffffffffffffffff191691851691909117905561266f84613656565b856001600160a01b0316876001600160a01b0316896001600160a01b03167f12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea101758c60028a8a600e60129054906101000a90046001600160401b031689604051808781526020018660028111156126e057fe5b60ff168152602001858152602001846001600160401b03166001600160401b03168152602001836001600160401b03166001600160401b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561275757818101518382015260200161273f565b50505050905090810190601f1680156127845780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a4600e54600160401b900460ff16156128e857856001600160a01b03166350bb4e7f8887856040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561282457818101518382015260200161280c565b50505050905090810190601f1680156128515780820380516001836020036101000a031916815260200191505b50945050505050602060405180830381600087803b15801561287257600080fd5b505af1158015612886573d6000803e3d6000fd5b505050506040513d602081101561289c57600080fd5b50516128e35760408051600160e51b62461bcd02815260206004820152600b6024820152600160aa1b6a1b5a5b9d0819985a5b195902604482015290519081900360640190fd5b612943565b60408051600160e01b6323b872dd0281523060048201526001600160a01b038981166024830152604482018890529151918816916323b872dd9160648082019260009290919082900301818387803b15801561128857600080fd5b505050505050505050565b6001600160a01b0385166323b872dd333061296f878763ffffffff6137ba16565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b1580156129c057600080fd5b505af11580156129d4573d6000803e3d6000fd5b505050506040513d60208110156129ea57600080fd5b5051612a2a57604051600160e51b62461bcd028152600401808060200182810382526029815260200180613d9b6029913960400191505060405180910390fd5b611c2c853386868686612fae565b6001600160a01b03808616600090815260056020526040902054869116612aa05760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038616600090815260086020526040902054869060ff1615612b055760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff16612b5a5760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b604080516020808201879052825180830382018152828401909352600160e01b63c87b56dd026060838101828152855160009692956001600160a01b038f1695606490910191908401908083835b60208310612bc75780518252601f199092019160209182019101612ba8565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310612c2b5780518252601f199092019160209182019101612c0c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612c8d576040519150601f19603f3d011682016040523d82523d6000602084013e612c92565b606091505b50909250905081612cae57506040805160208101909152600081525b600e54600160401b900460ff1615612d1f57886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612d0657600080fd5b505af1158015612d1a573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167f17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f60028a600e600a9054906101000a90046001600160401b031660008c60028a6040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015612dbd578181015183820152602001612da5565b50505050905090810190601f168015612dea5780820380516001836020036101000a031916815260200191505b509250505060405160208183030381529060405260405180886002811115612e0e57fe5b60ff168152602001878152602001866001600160401b03166001600160401b03168152602001858152602001806020018460ff16815260200180602001838103835286818151815260200191508051906020019080838360005b83811015612e80578181015183820152602001612e68565b50505050905090810190601f168015612ead5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015612ee0578181015183820152602001612ec8565b50505050905090810190601f168015612f0d5780820380516001836020036101000a031916815260200191505b50995050505050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f78605990600090a250565b6001600160a01b038087166000908152600560205260409020548791166130165760408051600160e51b62461bcd0281526020600482015260116024820152600160791b703737ba1030b63637bbb2b2103a37b5b2b702604482015290519081900360640190fd5b6001600160a01b038716600090815260086020526040902054879060ff161561307b5760408051600160e51b62461bcd02815260206004820152600c6024820152600160a11b6b3637b1b5b2b2103a37b5b2b702604482015290519081900360640190fd5b600e54600160481b900460ff166130d05760408051600160e51b62461bcd02815260206004820152600e6024820152600160901b6d73746f707065642062726964676502604482015290519081900360640190fd5b600085116131285760408051600160e51b62461bcd02815260206004820152600e60248201527f7a65726f206d73672e76616c7565000000000000000000000000000000000000604482015290519081900360640190fd5b6000613135888a87613817565b600e54909150600160401b900460ff16156131a957886001600160a01b03166342966c68876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b505050505b886001600160a01b0316876001600160a01b0316896001600160a01b03167feff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f0960018a600e600a9054906101000a90046001600160401b0316878b6040518086600281111561321357fe5b60ff168152602001858152602001846001600160401b03166001600160401b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015613278578181015183820152602001613260565b50505050905090810190601f1680156132a55780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a45050600e805460016001600160401b03600160501b808404821692909201160271ffffffffffffffff000000000000000000001990911617905550505050505050565b6001600160a01b03811661334157604051600160e51b62461bcd028152600401808060200182810382526026815260200180613d296026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b600080600960008660028111156133b057fe5b60ff168152602080820192909252604090810160009081206001600160401b03881682528352818120338252600181019093522054909150806134145781546001810183556000838152602090200180546001600160a01b0319163317905561343b565b60008181526003830160205260409020805460ff19811660ff918216600019019091161790555b33600090815260018301602090815260408083208790558683526003850190915290205460ff166134815760028201805460018101825560009182526020909120018490555b60008481526003830160205260408120805460ff8082166001011660ff19909116179055600d908760028111156134b457fe5b60ff908116825260208083019390935260409182016000908120548882526003870190945291909120549181169116106134fd576134f28686613b34565b600192505050613504565b6000925050505b9392505050565b600e546001600160401b03808316600160901b909204161115611ffc5760408051600160e51b62461bcd02815260206004820152600c60248201527f72656d6f76656420766f74650000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160401b0381166000908152600a602052604081205460ff16156135da5760408051600160e51b62461bcd02815260206004820152600b6024820152600160a81b6a636c6f73656420766f746502604482015290519081900360640190fd5b60008036604051808383808284378083019250505092505050604051809103902090506136096000848361339d565b156121295750506001600160401b0381166000908152600a60205260409020805460ff1916600190811790915561212f565b6000908152602081905260409020805460ff19166001179055565b600f546001600160401b03908116908216111561368a57600f805467ffffffffffffffff19166001600160401b0383161790555b600e54600f5460c86001600160401b03600160901b9093048316019190811690821611156136c05750600f546001600160401b03165b600e54600160901b90046001600160401b03165b816001600160401b0316816001600160401b03161115801561370f57506001600160401b038082166000908152601060205260409020541615155b1561377c576001600160401b0381811660009081526010602090815260408083208054600f80546fffffffffffffffff0000000000000000191691909616600160401b0217909455835467ffffffffffffffff1916909355600a905220805460ff191690556001016136d4565b600e80546001600160401b03909216600160901b0279ffffffffffffffff000000000000000000000000000000000000199092169190911790555050565b6000828201838110156135045760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038083166000908152600360205260408120546001549192909116158015906138475750600081115b15613a5f57808310156138a45760408051600160e51b62461bcd02815260206004820152601560248201527f696e73756666696369656e74206665654c696d69740000000000000000000000604482015290519081900360640190fd5b60015460408051600160e01b63a9059cbb0281526001600160a01b0392831660048201526024810184905290519186169163a9059cbb916044808201926020929091908290030181600087803b1580156138fd57600080fd5b505af1158015613911573d6000803e3d6000fd5b505050506040513d602081101561392757600080fd5b505161396757604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b6000613979848363ffffffff613c6c16565b1115613a58576001600160a01b03841663a9059cbb8661399f868563ffffffff613c6c16565b6040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156139ee57600080fd5b505af1158015613a02573d6000803e3d6000fd5b505050506040513d6020811015613a1857600080fd5b5051613a5857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b9050613504565b836001600160a01b031663a9059cbb86856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613abf57600080fd5b505af1158015613ad3573d6000803e3d6000fd5b505050506040513d6020811015613ae957600080fd5b5051613b2957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180613d6f602c913960400191505060405180910390fd5b506000949350505050565b600060096000846002811115613b4657fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812091505b815460ff82161015613bc357816001016000836000018360ff1681548110613b9657fe5b60009182526020808320909101546001600160a01b03168352820192909252604001812055600101613b72565b5060005b600282015460ff82161015613c1957816003016000836002018360ff1681548110613bee57fe5b600091825260208083209091015483528201929092526040019020805460ff19169055600101613bc7565b5060096000846002811115613c2a57fe5b60ff168152602080820192909252604090810160009081206001600160401b0386168252909252812090613c5e8282613cf0565b611c2c600283016000613cf0565b600082821115613cc65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b815481835581811115610f3957600083815260209020610f39918101908301613d0a565b5080546000825590600052602060002090810190611ffc91905b6115a391905b80821115613d245760008155600101613d10565b509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7061794552433230466565416e64526566756e644368616e67653a207472616e73666572206661696c65647265717565737445524332305472616e736665723a207472616e7366657246726f6d206661696c656468616e646c6545524332305472616e736665723a207472616e73666572206661696c6564a165627a7a723058205b10aad5d76f7bb539d205b7d0d7781d1e862dfaff6491ed87459bae7729c6490029"
 17740  
 17741  // DeployExtBridge deploys a new Klaytn contract, binding an instance of ExtBridge to it.
 17742  func DeployExtBridge(auth *bind.TransactOpts, backend bind.ContractBackend, _modeMintBurn bool) (common.Address, *types.Transaction, *ExtBridge, error) {
 17743  	parsed, err := abi.JSON(strings.NewReader(ExtBridgeABI))
 17744  	if err != nil {
 17745  		return common.Address{}, nil, nil, err
 17746  	}
 17747  
 17748  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ExtBridgeBin), backend, _modeMintBurn)
 17749  	if err != nil {
 17750  		return common.Address{}, nil, nil, err
 17751  	}
 17752  	return address, tx, &ExtBridge{ExtBridgeCaller: ExtBridgeCaller{contract: contract}, ExtBridgeTransactor: ExtBridgeTransactor{contract: contract}, ExtBridgeFilterer: ExtBridgeFilterer{contract: contract}}, nil
 17753  }
 17754  
 17755  // ExtBridge is an auto generated Go binding around a Klaytn contract.
 17756  type ExtBridge struct {
 17757  	ExtBridgeCaller     // Read-only binding to the contract
 17758  	ExtBridgeTransactor // Write-only binding to the contract
 17759  	ExtBridgeFilterer   // Log filterer for contract events
 17760  }
 17761  
 17762  // ExtBridgeCaller is an auto generated read-only Go binding around a Klaytn contract.
 17763  type ExtBridgeCaller struct {
 17764  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 17765  }
 17766  
 17767  // ExtBridgeTransactor is an auto generated write-only Go binding around a Klaytn contract.
 17768  type ExtBridgeTransactor struct {
 17769  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 17770  }
 17771  
 17772  // ExtBridgeFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 17773  type ExtBridgeFilterer struct {
 17774  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 17775  }
 17776  
 17777  // ExtBridgeSession is an auto generated Go binding around a Klaytn contract,
 17778  // with pre-set call and transact options.
 17779  type ExtBridgeSession struct {
 17780  	Contract     *ExtBridge        // Generic contract binding to set the session for
 17781  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 17782  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 17783  }
 17784  
 17785  // ExtBridgeCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 17786  // with pre-set call options.
 17787  type ExtBridgeCallerSession struct {
 17788  	Contract *ExtBridgeCaller // Generic contract caller binding to set the session for
 17789  	CallOpts bind.CallOpts    // Call options to use throughout this session
 17790  }
 17791  
 17792  // ExtBridgeTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 17793  // with pre-set transact options.
 17794  type ExtBridgeTransactorSession struct {
 17795  	Contract     *ExtBridgeTransactor // Generic contract transactor binding to set the session for
 17796  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
 17797  }
 17798  
 17799  // ExtBridgeRaw is an auto generated low-level Go binding around a Klaytn contract.
 17800  type ExtBridgeRaw struct {
 17801  	Contract *ExtBridge // Generic contract binding to access the raw methods on
 17802  }
 17803  
 17804  // ExtBridgeCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 17805  type ExtBridgeCallerRaw struct {
 17806  	Contract *ExtBridgeCaller // Generic read-only contract binding to access the raw methods on
 17807  }
 17808  
 17809  // ExtBridgeTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 17810  type ExtBridgeTransactorRaw struct {
 17811  	Contract *ExtBridgeTransactor // Generic write-only contract binding to access the raw methods on
 17812  }
 17813  
 17814  // NewExtBridge creates a new instance of ExtBridge, bound to a specific deployed contract.
 17815  func NewExtBridge(address common.Address, backend bind.ContractBackend) (*ExtBridge, error) {
 17816  	contract, err := bindExtBridge(address, backend, backend, backend)
 17817  	if err != nil {
 17818  		return nil, err
 17819  	}
 17820  	return &ExtBridge{ExtBridgeCaller: ExtBridgeCaller{contract: contract}, ExtBridgeTransactor: ExtBridgeTransactor{contract: contract}, ExtBridgeFilterer: ExtBridgeFilterer{contract: contract}}, nil
 17821  }
 17822  
 17823  // NewExtBridgeCaller creates a new read-only instance of ExtBridge, bound to a specific deployed contract.
 17824  func NewExtBridgeCaller(address common.Address, caller bind.ContractCaller) (*ExtBridgeCaller, error) {
 17825  	contract, err := bindExtBridge(address, caller, nil, nil)
 17826  	if err != nil {
 17827  		return nil, err
 17828  	}
 17829  	return &ExtBridgeCaller{contract: contract}, nil
 17830  }
 17831  
 17832  // NewExtBridgeTransactor creates a new write-only instance of ExtBridge, bound to a specific deployed contract.
 17833  func NewExtBridgeTransactor(address common.Address, transactor bind.ContractTransactor) (*ExtBridgeTransactor, error) {
 17834  	contract, err := bindExtBridge(address, nil, transactor, nil)
 17835  	if err != nil {
 17836  		return nil, err
 17837  	}
 17838  	return &ExtBridgeTransactor{contract: contract}, nil
 17839  }
 17840  
 17841  // NewExtBridgeFilterer creates a new log filterer instance of ExtBridge, bound to a specific deployed contract.
 17842  func NewExtBridgeFilterer(address common.Address, filterer bind.ContractFilterer) (*ExtBridgeFilterer, error) {
 17843  	contract, err := bindExtBridge(address, nil, nil, filterer)
 17844  	if err != nil {
 17845  		return nil, err
 17846  	}
 17847  	return &ExtBridgeFilterer{contract: contract}, nil
 17848  }
 17849  
 17850  // bindExtBridge binds a generic wrapper to an already deployed contract.
 17851  func bindExtBridge(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 17852  	parsed, err := abi.JSON(strings.NewReader(ExtBridgeABI))
 17853  	if err != nil {
 17854  		return nil, err
 17855  	}
 17856  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 17857  }
 17858  
 17859  // Call invokes the (constant) contract method with params as input values and
 17860  // sets the output to result. The result type might be a single field for simple
 17861  // returns, a slice of interfaces for anonymous returns and a struct for named
 17862  // returns.
 17863  func (_ExtBridge *ExtBridgeRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 17864  	return _ExtBridge.Contract.ExtBridgeCaller.contract.Call(opts, result, method, params...)
 17865  }
 17866  
 17867  // Transfer initiates a plain transaction to move funds to the contract, calling
 17868  // its default method if one is available.
 17869  func (_ExtBridge *ExtBridgeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 17870  	return _ExtBridge.Contract.ExtBridgeTransactor.contract.Transfer(opts)
 17871  }
 17872  
 17873  // Transact invokes the (paid) contract method with params as input values.
 17874  func (_ExtBridge *ExtBridgeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 17875  	return _ExtBridge.Contract.ExtBridgeTransactor.contract.Transact(opts, method, params...)
 17876  }
 17877  
 17878  // Call invokes the (constant) contract method with params as input values and
 17879  // sets the output to result. The result type might be a single field for simple
 17880  // returns, a slice of interfaces for anonymous returns and a struct for named
 17881  // returns.
 17882  func (_ExtBridge *ExtBridgeCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 17883  	return _ExtBridge.Contract.contract.Call(opts, result, method, params...)
 17884  }
 17885  
 17886  // Transfer initiates a plain transaction to move funds to the contract, calling
 17887  // its default method if one is available.
 17888  func (_ExtBridge *ExtBridgeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 17889  	return _ExtBridge.Contract.contract.Transfer(opts)
 17890  }
 17891  
 17892  // Transact invokes the (paid) contract method with params as input values.
 17893  func (_ExtBridge *ExtBridgeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 17894  	return _ExtBridge.Contract.contract.Transact(opts, method, params...)
 17895  }
 17896  
 17897  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
 17898  //
 17899  // Solidity: function MAX_OPERATOR() view returns(uint64)
 17900  func (_ExtBridge *ExtBridgeCaller) MAXOPERATOR(opts *bind.CallOpts) (uint64, error) {
 17901  	var (
 17902  		ret0 = new(uint64)
 17903  	)
 17904  	out := ret0
 17905  	err := _ExtBridge.contract.Call(opts, out, "MAX_OPERATOR")
 17906  	return *ret0, err
 17907  }
 17908  
 17909  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
 17910  //
 17911  // Solidity: function MAX_OPERATOR() view returns(uint64)
 17912  func (_ExtBridge *ExtBridgeSession) MAXOPERATOR() (uint64, error) {
 17913  	return _ExtBridge.Contract.MAXOPERATOR(&_ExtBridge.CallOpts)
 17914  }
 17915  
 17916  // MAXOPERATOR is a free data retrieval call binding the contract method 0x3a3099d1.
 17917  //
 17918  // Solidity: function MAX_OPERATOR() view returns(uint64)
 17919  func (_ExtBridge *ExtBridgeCallerSession) MAXOPERATOR() (uint64, error) {
 17920  	return _ExtBridge.Contract.MAXOPERATOR(&_ExtBridge.CallOpts)
 17921  }
 17922  
 17923  // Callback is a free data retrieval call binding the contract method 0x083b2732.
 17924  //
 17925  // Solidity: function callback() view returns(address)
 17926  func (_ExtBridge *ExtBridgeCaller) Callback(opts *bind.CallOpts) (common.Address, error) {
 17927  	var (
 17928  		ret0 = new(common.Address)
 17929  	)
 17930  	out := ret0
 17931  	err := _ExtBridge.contract.Call(opts, out, "callback")
 17932  	return *ret0, err
 17933  }
 17934  
 17935  // Callback is a free data retrieval call binding the contract method 0x083b2732.
 17936  //
 17937  // Solidity: function callback() view returns(address)
 17938  func (_ExtBridge *ExtBridgeSession) Callback() (common.Address, error) {
 17939  	return _ExtBridge.Contract.Callback(&_ExtBridge.CallOpts)
 17940  }
 17941  
 17942  // Callback is a free data retrieval call binding the contract method 0x083b2732.
 17943  //
 17944  // Solidity: function callback() view returns(address)
 17945  func (_ExtBridge *ExtBridgeCallerSession) Callback() (common.Address, error) {
 17946  	return _ExtBridge.Contract.Callback(&_ExtBridge.CallOpts)
 17947  }
 17948  
 17949  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
 17950  //
 17951  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
 17952  func (_ExtBridge *ExtBridgeCaller) ClosedValueTransferVotes(opts *bind.CallOpts, arg0 uint64) (bool, error) {
 17953  	var (
 17954  		ret0 = new(bool)
 17955  	)
 17956  	out := ret0
 17957  	err := _ExtBridge.contract.Call(opts, out, "closedValueTransferVotes", arg0)
 17958  	return *ret0, err
 17959  }
 17960  
 17961  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
 17962  //
 17963  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
 17964  func (_ExtBridge *ExtBridgeSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
 17965  	return _ExtBridge.Contract.ClosedValueTransferVotes(&_ExtBridge.CallOpts, arg0)
 17966  }
 17967  
 17968  // ClosedValueTransferVotes is a free data retrieval call binding the contract method 0x9832c1d7.
 17969  //
 17970  // Solidity: function closedValueTransferVotes(uint64 ) view returns(bool)
 17971  func (_ExtBridge *ExtBridgeCallerSession) ClosedValueTransferVotes(arg0 uint64) (bool, error) {
 17972  	return _ExtBridge.Contract.ClosedValueTransferVotes(&_ExtBridge.CallOpts, arg0)
 17973  }
 17974  
 17975  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
 17976  //
 17977  // Solidity: function configurationNonce() view returns(uint64)
 17978  func (_ExtBridge *ExtBridgeCaller) ConfigurationNonce(opts *bind.CallOpts) (uint64, error) {
 17979  	var (
 17980  		ret0 = new(uint64)
 17981  	)
 17982  	out := ret0
 17983  	err := _ExtBridge.contract.Call(opts, out, "configurationNonce")
 17984  	return *ret0, err
 17985  }
 17986  
 17987  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
 17988  //
 17989  // Solidity: function configurationNonce() view returns(uint64)
 17990  func (_ExtBridge *ExtBridgeSession) ConfigurationNonce() (uint64, error) {
 17991  	return _ExtBridge.Contract.ConfigurationNonce(&_ExtBridge.CallOpts)
 17992  }
 17993  
 17994  // ConfigurationNonce is a free data retrieval call binding the contract method 0xac6fff0b.
 17995  //
 17996  // Solidity: function configurationNonce() view returns(uint64)
 17997  func (_ExtBridge *ExtBridgeCallerSession) ConfigurationNonce() (uint64, error) {
 17998  	return _ExtBridge.Contract.ConfigurationNonce(&_ExtBridge.CallOpts)
 17999  }
 18000  
 18001  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
 18002  //
 18003  // Solidity: function feeOfERC20(address ) view returns(uint256)
 18004  func (_ExtBridge *ExtBridgeCaller) FeeOfERC20(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
 18005  	var (
 18006  		ret0 = new(*big.Int)
 18007  	)
 18008  	out := ret0
 18009  	err := _ExtBridge.contract.Call(opts, out, "feeOfERC20", arg0)
 18010  	return *ret0, err
 18011  }
 18012  
 18013  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
 18014  //
 18015  // Solidity: function feeOfERC20(address ) view returns(uint256)
 18016  func (_ExtBridge *ExtBridgeSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
 18017  	return _ExtBridge.Contract.FeeOfERC20(&_ExtBridge.CallOpts, arg0)
 18018  }
 18019  
 18020  // FeeOfERC20 is a free data retrieval call binding the contract method 0x488af871.
 18021  //
 18022  // Solidity: function feeOfERC20(address ) view returns(uint256)
 18023  func (_ExtBridge *ExtBridgeCallerSession) FeeOfERC20(arg0 common.Address) (*big.Int, error) {
 18024  	return _ExtBridge.Contract.FeeOfERC20(&_ExtBridge.CallOpts, arg0)
 18025  }
 18026  
 18027  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
 18028  //
 18029  // Solidity: function feeOfKLAY() view returns(uint256)
 18030  func (_ExtBridge *ExtBridgeCaller) FeeOfKLAY(opts *bind.CallOpts) (*big.Int, error) {
 18031  	var (
 18032  		ret0 = new(*big.Int)
 18033  	)
 18034  	out := ret0
 18035  	err := _ExtBridge.contract.Call(opts, out, "feeOfKLAY")
 18036  	return *ret0, err
 18037  }
 18038  
 18039  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
 18040  //
 18041  // Solidity: function feeOfKLAY() view returns(uint256)
 18042  func (_ExtBridge *ExtBridgeSession) FeeOfKLAY() (*big.Int, error) {
 18043  	return _ExtBridge.Contract.FeeOfKLAY(&_ExtBridge.CallOpts)
 18044  }
 18045  
 18046  // FeeOfKLAY is a free data retrieval call binding the contract method 0xc263b5d6.
 18047  //
 18048  // Solidity: function feeOfKLAY() view returns(uint256)
 18049  func (_ExtBridge *ExtBridgeCallerSession) FeeOfKLAY() (*big.Int, error) {
 18050  	return _ExtBridge.Contract.FeeOfKLAY(&_ExtBridge.CallOpts)
 18051  }
 18052  
 18053  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
 18054  //
 18055  // Solidity: function feeReceiver() view returns(address)
 18056  func (_ExtBridge *ExtBridgeCaller) FeeReceiver(opts *bind.CallOpts) (common.Address, error) {
 18057  	var (
 18058  		ret0 = new(common.Address)
 18059  	)
 18060  	out := ret0
 18061  	err := _ExtBridge.contract.Call(opts, out, "feeReceiver")
 18062  	return *ret0, err
 18063  }
 18064  
 18065  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
 18066  //
 18067  // Solidity: function feeReceiver() view returns(address)
 18068  func (_ExtBridge *ExtBridgeSession) FeeReceiver() (common.Address, error) {
 18069  	return _ExtBridge.Contract.FeeReceiver(&_ExtBridge.CallOpts)
 18070  }
 18071  
 18072  // FeeReceiver is a free data retrieval call binding the contract method 0xb3f00674.
 18073  //
 18074  // Solidity: function feeReceiver() view returns(address)
 18075  func (_ExtBridge *ExtBridgeCallerSession) FeeReceiver() (common.Address, error) {
 18076  	return _ExtBridge.Contract.FeeReceiver(&_ExtBridge.CallOpts)
 18077  }
 18078  
 18079  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
 18080  //
 18081  // Solidity: function getOperatorList() view returns(address[])
 18082  func (_ExtBridge *ExtBridgeCaller) GetOperatorList(opts *bind.CallOpts) ([]common.Address, error) {
 18083  	var (
 18084  		ret0 = new([]common.Address)
 18085  	)
 18086  	out := ret0
 18087  	err := _ExtBridge.contract.Call(opts, out, "getOperatorList")
 18088  	return *ret0, err
 18089  }
 18090  
 18091  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
 18092  //
 18093  // Solidity: function getOperatorList() view returns(address[])
 18094  func (_ExtBridge *ExtBridgeSession) GetOperatorList() ([]common.Address, error) {
 18095  	return _ExtBridge.Contract.GetOperatorList(&_ExtBridge.CallOpts)
 18096  }
 18097  
 18098  // GetOperatorList is a free data retrieval call binding the contract method 0xb2c01030.
 18099  //
 18100  // Solidity: function getOperatorList() view returns(address[])
 18101  func (_ExtBridge *ExtBridgeCallerSession) GetOperatorList() ([]common.Address, error) {
 18102  	return _ExtBridge.Contract.GetOperatorList(&_ExtBridge.CallOpts)
 18103  }
 18104  
 18105  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
 18106  //
 18107  // Solidity: function getRegisteredTokenList() view returns(address[])
 18108  func (_ExtBridge *ExtBridgeCaller) GetRegisteredTokenList(opts *bind.CallOpts) ([]common.Address, error) {
 18109  	var (
 18110  		ret0 = new([]common.Address)
 18111  	)
 18112  	out := ret0
 18113  	err := _ExtBridge.contract.Call(opts, out, "getRegisteredTokenList")
 18114  	return *ret0, err
 18115  }
 18116  
 18117  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
 18118  //
 18119  // Solidity: function getRegisteredTokenList() view returns(address[])
 18120  func (_ExtBridge *ExtBridgeSession) GetRegisteredTokenList() ([]common.Address, error) {
 18121  	return _ExtBridge.Contract.GetRegisteredTokenList(&_ExtBridge.CallOpts)
 18122  }
 18123  
 18124  // GetRegisteredTokenList is a free data retrieval call binding the contract method 0xea21eade.
 18125  //
 18126  // Solidity: function getRegisteredTokenList() view returns(address[])
 18127  func (_ExtBridge *ExtBridgeCallerSession) GetRegisteredTokenList() ([]common.Address, error) {
 18128  	return _ExtBridge.Contract.GetRegisteredTokenList(&_ExtBridge.CallOpts)
 18129  }
 18130  
 18131  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
 18132  //
 18133  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
 18134  func (_ExtBridge *ExtBridgeCaller) HandleNoncesToBlockNums(opts *bind.CallOpts, arg0 uint64) (uint64, error) {
 18135  	var (
 18136  		ret0 = new(uint64)
 18137  	)
 18138  	out := ret0
 18139  	err := _ExtBridge.contract.Call(opts, out, "handleNoncesToBlockNums", arg0)
 18140  	return *ret0, err
 18141  }
 18142  
 18143  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
 18144  //
 18145  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
 18146  func (_ExtBridge *ExtBridgeSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
 18147  	return _ExtBridge.Contract.HandleNoncesToBlockNums(&_ExtBridge.CallOpts, arg0)
 18148  }
 18149  
 18150  // HandleNoncesToBlockNums is a free data retrieval call binding the contract method 0x13a6738a.
 18151  //
 18152  // Solidity: function handleNoncesToBlockNums(uint64 ) view returns(uint64)
 18153  func (_ExtBridge *ExtBridgeCallerSession) HandleNoncesToBlockNums(arg0 uint64) (uint64, error) {
 18154  	return _ExtBridge.Contract.HandleNoncesToBlockNums(&_ExtBridge.CallOpts, arg0)
 18155  }
 18156  
 18157  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
 18158  //
 18159  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
 18160  func (_ExtBridge *ExtBridgeCaller) HandledRequestTx(opts *bind.CallOpts, arg0 [32]byte) (bool, error) {
 18161  	var (
 18162  		ret0 = new(bool)
 18163  	)
 18164  	out := ret0
 18165  	err := _ExtBridge.contract.Call(opts, out, "handledRequestTx", arg0)
 18166  	return *ret0, err
 18167  }
 18168  
 18169  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
 18170  //
 18171  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
 18172  func (_ExtBridge *ExtBridgeSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
 18173  	return _ExtBridge.Contract.HandledRequestTx(&_ExtBridge.CallOpts, arg0)
 18174  }
 18175  
 18176  // HandledRequestTx is a free data retrieval call binding the contract method 0x8a75eee2.
 18177  //
 18178  // Solidity: function handledRequestTx(bytes32 ) view returns(bool)
 18179  func (_ExtBridge *ExtBridgeCallerSession) HandledRequestTx(arg0 [32]byte) (bool, error) {
 18180  	return _ExtBridge.Contract.HandledRequestTx(&_ExtBridge.CallOpts, arg0)
 18181  }
 18182  
 18183  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
 18184  //
 18185  // Solidity: function indexOfTokens(address ) view returns(uint256)
 18186  func (_ExtBridge *ExtBridgeCaller) IndexOfTokens(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) {
 18187  	var (
 18188  		ret0 = new(*big.Int)
 18189  	)
 18190  	out := ret0
 18191  	err := _ExtBridge.contract.Call(opts, out, "indexOfTokens", arg0)
 18192  	return *ret0, err
 18193  }
 18194  
 18195  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
 18196  //
 18197  // Solidity: function indexOfTokens(address ) view returns(uint256)
 18198  func (_ExtBridge *ExtBridgeSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
 18199  	return _ExtBridge.Contract.IndexOfTokens(&_ExtBridge.CallOpts, arg0)
 18200  }
 18201  
 18202  // IndexOfTokens is a free data retrieval call binding the contract method 0x48a18a6a.
 18203  //
 18204  // Solidity: function indexOfTokens(address ) view returns(uint256)
 18205  func (_ExtBridge *ExtBridgeCallerSession) IndexOfTokens(arg0 common.Address) (*big.Int, error) {
 18206  	return _ExtBridge.Contract.IndexOfTokens(&_ExtBridge.CallOpts, arg0)
 18207  }
 18208  
 18209  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 18210  //
 18211  // Solidity: function isOwner() view returns(bool)
 18212  func (_ExtBridge *ExtBridgeCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 18213  	var (
 18214  		ret0 = new(bool)
 18215  	)
 18216  	out := ret0
 18217  	err := _ExtBridge.contract.Call(opts, out, "isOwner")
 18218  	return *ret0, err
 18219  }
 18220  
 18221  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 18222  //
 18223  // Solidity: function isOwner() view returns(bool)
 18224  func (_ExtBridge *ExtBridgeSession) IsOwner() (bool, error) {
 18225  	return _ExtBridge.Contract.IsOwner(&_ExtBridge.CallOpts)
 18226  }
 18227  
 18228  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 18229  //
 18230  // Solidity: function isOwner() view returns(bool)
 18231  func (_ExtBridge *ExtBridgeCallerSession) IsOwner() (bool, error) {
 18232  	return _ExtBridge.Contract.IsOwner(&_ExtBridge.CallOpts)
 18233  }
 18234  
 18235  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
 18236  //
 18237  // Solidity: function isRunning() view returns(bool)
 18238  func (_ExtBridge *ExtBridgeCaller) IsRunning(opts *bind.CallOpts) (bool, error) {
 18239  	var (
 18240  		ret0 = new(bool)
 18241  	)
 18242  	out := ret0
 18243  	err := _ExtBridge.contract.Call(opts, out, "isRunning")
 18244  	return *ret0, err
 18245  }
 18246  
 18247  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
 18248  //
 18249  // Solidity: function isRunning() view returns(bool)
 18250  func (_ExtBridge *ExtBridgeSession) IsRunning() (bool, error) {
 18251  	return _ExtBridge.Contract.IsRunning(&_ExtBridge.CallOpts)
 18252  }
 18253  
 18254  // IsRunning is a free data retrieval call binding the contract method 0x2014e5d1.
 18255  //
 18256  // Solidity: function isRunning() view returns(bool)
 18257  func (_ExtBridge *ExtBridgeCallerSession) IsRunning() (bool, error) {
 18258  	return _ExtBridge.Contract.IsRunning(&_ExtBridge.CallOpts)
 18259  }
 18260  
 18261  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
 18262  //
 18263  // Solidity: function lockedTokens(address ) view returns(bool)
 18264  func (_ExtBridge *ExtBridgeCaller) LockedTokens(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
 18265  	var (
 18266  		ret0 = new(bool)
 18267  	)
 18268  	out := ret0
 18269  	err := _ExtBridge.contract.Call(opts, out, "lockedTokens", arg0)
 18270  	return *ret0, err
 18271  }
 18272  
 18273  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
 18274  //
 18275  // Solidity: function lockedTokens(address ) view returns(bool)
 18276  func (_ExtBridge *ExtBridgeSession) LockedTokens(arg0 common.Address) (bool, error) {
 18277  	return _ExtBridge.Contract.LockedTokens(&_ExtBridge.CallOpts, arg0)
 18278  }
 18279  
 18280  // LockedTokens is a free data retrieval call binding the contract method 0x5eb7413a.
 18281  //
 18282  // Solidity: function lockedTokens(address ) view returns(bool)
 18283  func (_ExtBridge *ExtBridgeCallerSession) LockedTokens(arg0 common.Address) (bool, error) {
 18284  	return _ExtBridge.Contract.LockedTokens(&_ExtBridge.CallOpts, arg0)
 18285  }
 18286  
 18287  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
 18288  //
 18289  // Solidity: function lowerHandleNonce() view returns(uint64)
 18290  func (_ExtBridge *ExtBridgeCaller) LowerHandleNonce(opts *bind.CallOpts) (uint64, error) {
 18291  	var (
 18292  		ret0 = new(uint64)
 18293  	)
 18294  	out := ret0
 18295  	err := _ExtBridge.contract.Call(opts, out, "lowerHandleNonce")
 18296  	return *ret0, err
 18297  }
 18298  
 18299  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
 18300  //
 18301  // Solidity: function lowerHandleNonce() view returns(uint64)
 18302  func (_ExtBridge *ExtBridgeSession) LowerHandleNonce() (uint64, error) {
 18303  	return _ExtBridge.Contract.LowerHandleNonce(&_ExtBridge.CallOpts)
 18304  }
 18305  
 18306  // LowerHandleNonce is a free data retrieval call binding the contract method 0x4b40b826.
 18307  //
 18308  // Solidity: function lowerHandleNonce() view returns(uint64)
 18309  func (_ExtBridge *ExtBridgeCallerSession) LowerHandleNonce() (uint64, error) {
 18310  	return _ExtBridge.Contract.LowerHandleNonce(&_ExtBridge.CallOpts)
 18311  }
 18312  
 18313  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
 18314  //
 18315  // Solidity: function modeMintBurn() view returns(bool)
 18316  func (_ExtBridge *ExtBridgeCaller) ModeMintBurn(opts *bind.CallOpts) (bool, error) {
 18317  	var (
 18318  		ret0 = new(bool)
 18319  	)
 18320  	out := ret0
 18321  	err := _ExtBridge.contract.Call(opts, out, "modeMintBurn")
 18322  	return *ret0, err
 18323  }
 18324  
 18325  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
 18326  //
 18327  // Solidity: function modeMintBurn() view returns(bool)
 18328  func (_ExtBridge *ExtBridgeSession) ModeMintBurn() (bool, error) {
 18329  	return _ExtBridge.Contract.ModeMintBurn(&_ExtBridge.CallOpts)
 18330  }
 18331  
 18332  // ModeMintBurn is a free data retrieval call binding the contract method 0x6e176ec2.
 18333  //
 18334  // Solidity: function modeMintBurn() view returns(bool)
 18335  func (_ExtBridge *ExtBridgeCallerSession) ModeMintBurn() (bool, error) {
 18336  	return _ExtBridge.Contract.ModeMintBurn(&_ExtBridge.CallOpts)
 18337  }
 18338  
 18339  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
 18340  //
 18341  // Solidity: function operatorList(uint256 ) view returns(address)
 18342  func (_ExtBridge *ExtBridgeCaller) OperatorList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
 18343  	var (
 18344  		ret0 = new(common.Address)
 18345  	)
 18346  	out := ret0
 18347  	err := _ExtBridge.contract.Call(opts, out, "operatorList", arg0)
 18348  	return *ret0, err
 18349  }
 18350  
 18351  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
 18352  //
 18353  // Solidity: function operatorList(uint256 ) view returns(address)
 18354  func (_ExtBridge *ExtBridgeSession) OperatorList(arg0 *big.Int) (common.Address, error) {
 18355  	return _ExtBridge.Contract.OperatorList(&_ExtBridge.CallOpts, arg0)
 18356  }
 18357  
 18358  // OperatorList is a free data retrieval call binding the contract method 0xcb38f407.
 18359  //
 18360  // Solidity: function operatorList(uint256 ) view returns(address)
 18361  func (_ExtBridge *ExtBridgeCallerSession) OperatorList(arg0 *big.Int) (common.Address, error) {
 18362  	return _ExtBridge.Contract.OperatorList(&_ExtBridge.CallOpts, arg0)
 18363  }
 18364  
 18365  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
 18366  //
 18367  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
 18368  func (_ExtBridge *ExtBridgeCaller) OperatorThresholds(opts *bind.CallOpts, arg0 uint8) (uint8, error) {
 18369  	var (
 18370  		ret0 = new(uint8)
 18371  	)
 18372  	out := ret0
 18373  	err := _ExtBridge.contract.Call(opts, out, "operatorThresholds", arg0)
 18374  	return *ret0, err
 18375  }
 18376  
 18377  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
 18378  //
 18379  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
 18380  func (_ExtBridge *ExtBridgeSession) OperatorThresholds(arg0 uint8) (uint8, error) {
 18381  	return _ExtBridge.Contract.OperatorThresholds(&_ExtBridge.CallOpts, arg0)
 18382  }
 18383  
 18384  // OperatorThresholds is a free data retrieval call binding the contract method 0x5526f76b.
 18385  //
 18386  // Solidity: function operatorThresholds(uint8 ) view returns(uint8)
 18387  func (_ExtBridge *ExtBridgeCallerSession) OperatorThresholds(arg0 uint8) (uint8, error) {
 18388  	return _ExtBridge.Contract.OperatorThresholds(&_ExtBridge.CallOpts, arg0)
 18389  }
 18390  
 18391  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
 18392  //
 18393  // Solidity: function operators(address ) view returns(bool)
 18394  func (_ExtBridge *ExtBridgeCaller) Operators(opts *bind.CallOpts, arg0 common.Address) (bool, error) {
 18395  	var (
 18396  		ret0 = new(bool)
 18397  	)
 18398  	out := ret0
 18399  	err := _ExtBridge.contract.Call(opts, out, "operators", arg0)
 18400  	return *ret0, err
 18401  }
 18402  
 18403  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
 18404  //
 18405  // Solidity: function operators(address ) view returns(bool)
 18406  func (_ExtBridge *ExtBridgeSession) Operators(arg0 common.Address) (bool, error) {
 18407  	return _ExtBridge.Contract.Operators(&_ExtBridge.CallOpts, arg0)
 18408  }
 18409  
 18410  // Operators is a free data retrieval call binding the contract method 0x13e7c9d8.
 18411  //
 18412  // Solidity: function operators(address ) view returns(bool)
 18413  func (_ExtBridge *ExtBridgeCallerSession) Operators(arg0 common.Address) (bool, error) {
 18414  	return _ExtBridge.Contract.Operators(&_ExtBridge.CallOpts, arg0)
 18415  }
 18416  
 18417  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 18418  //
 18419  // Solidity: function owner() view returns(address)
 18420  func (_ExtBridge *ExtBridgeCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 18421  	var (
 18422  		ret0 = new(common.Address)
 18423  	)
 18424  	out := ret0
 18425  	err := _ExtBridge.contract.Call(opts, out, "owner")
 18426  	return *ret0, err
 18427  }
 18428  
 18429  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 18430  //
 18431  // Solidity: function owner() view returns(address)
 18432  func (_ExtBridge *ExtBridgeSession) Owner() (common.Address, error) {
 18433  	return _ExtBridge.Contract.Owner(&_ExtBridge.CallOpts)
 18434  }
 18435  
 18436  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 18437  //
 18438  // Solidity: function owner() view returns(address)
 18439  func (_ExtBridge *ExtBridgeCallerSession) Owner() (common.Address, error) {
 18440  	return _ExtBridge.Contract.Owner(&_ExtBridge.CallOpts)
 18441  }
 18442  
 18443  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
 18444  //
 18445  // Solidity: function recoveryBlockNumber() view returns(uint64)
 18446  func (_ExtBridge *ExtBridgeCaller) RecoveryBlockNumber(opts *bind.CallOpts) (uint64, error) {
 18447  	var (
 18448  		ret0 = new(uint64)
 18449  	)
 18450  	out := ret0
 18451  	err := _ExtBridge.contract.Call(opts, out, "recoveryBlockNumber")
 18452  	return *ret0, err
 18453  }
 18454  
 18455  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
 18456  //
 18457  // Solidity: function recoveryBlockNumber() view returns(uint64)
 18458  func (_ExtBridge *ExtBridgeSession) RecoveryBlockNumber() (uint64, error) {
 18459  	return _ExtBridge.Contract.RecoveryBlockNumber(&_ExtBridge.CallOpts)
 18460  }
 18461  
 18462  // RecoveryBlockNumber is a free data retrieval call binding the contract method 0x989ba0d3.
 18463  //
 18464  // Solidity: function recoveryBlockNumber() view returns(uint64)
 18465  func (_ExtBridge *ExtBridgeCallerSession) RecoveryBlockNumber() (uint64, error) {
 18466  	return _ExtBridge.Contract.RecoveryBlockNumber(&_ExtBridge.CallOpts)
 18467  }
 18468  
 18469  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
 18470  //
 18471  // Solidity: function registeredTokenList(uint256 ) view returns(address)
 18472  func (_ExtBridge *ExtBridgeCaller) RegisteredTokenList(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) {
 18473  	var (
 18474  		ret0 = new(common.Address)
 18475  	)
 18476  	out := ret0
 18477  	err := _ExtBridge.contract.Call(opts, out, "registeredTokenList", arg0)
 18478  	return *ret0, err
 18479  }
 18480  
 18481  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
 18482  //
 18483  // Solidity: function registeredTokenList(uint256 ) view returns(address)
 18484  func (_ExtBridge *ExtBridgeSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
 18485  	return _ExtBridge.Contract.RegisteredTokenList(&_ExtBridge.CallOpts, arg0)
 18486  }
 18487  
 18488  // RegisteredTokenList is a free data retrieval call binding the contract method 0x3e4fe949.
 18489  //
 18490  // Solidity: function registeredTokenList(uint256 ) view returns(address)
 18491  func (_ExtBridge *ExtBridgeCallerSession) RegisteredTokenList(arg0 *big.Int) (common.Address, error) {
 18492  	return _ExtBridge.Contract.RegisteredTokenList(&_ExtBridge.CallOpts, arg0)
 18493  }
 18494  
 18495  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
 18496  //
 18497  // Solidity: function registeredTokens(address ) view returns(address)
 18498  func (_ExtBridge *ExtBridgeCaller) RegisteredTokens(opts *bind.CallOpts, arg0 common.Address) (common.Address, error) {
 18499  	var (
 18500  		ret0 = new(common.Address)
 18501  	)
 18502  	out := ret0
 18503  	err := _ExtBridge.contract.Call(opts, out, "registeredTokens", arg0)
 18504  	return *ret0, err
 18505  }
 18506  
 18507  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
 18508  //
 18509  // Solidity: function registeredTokens(address ) view returns(address)
 18510  func (_ExtBridge *ExtBridgeSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
 18511  	return _ExtBridge.Contract.RegisteredTokens(&_ExtBridge.CallOpts, arg0)
 18512  }
 18513  
 18514  // RegisteredTokens is a free data retrieval call binding the contract method 0x8c0bd916.
 18515  //
 18516  // Solidity: function registeredTokens(address ) view returns(address)
 18517  func (_ExtBridge *ExtBridgeCallerSession) RegisteredTokens(arg0 common.Address) (common.Address, error) {
 18518  	return _ExtBridge.Contract.RegisteredTokens(&_ExtBridge.CallOpts, arg0)
 18519  }
 18520  
 18521  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
 18522  //
 18523  // Solidity: function requestNonce() view returns(uint64)
 18524  func (_ExtBridge *ExtBridgeCaller) RequestNonce(opts *bind.CallOpts) (uint64, error) {
 18525  	var (
 18526  		ret0 = new(uint64)
 18527  	)
 18528  	out := ret0
 18529  	err := _ExtBridge.contract.Call(opts, out, "requestNonce")
 18530  	return *ret0, err
 18531  }
 18532  
 18533  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
 18534  //
 18535  // Solidity: function requestNonce() view returns(uint64)
 18536  func (_ExtBridge *ExtBridgeSession) RequestNonce() (uint64, error) {
 18537  	return _ExtBridge.Contract.RequestNonce(&_ExtBridge.CallOpts)
 18538  }
 18539  
 18540  // RequestNonce is a free data retrieval call binding the contract method 0x7c1a0302.
 18541  //
 18542  // Solidity: function requestNonce() view returns(uint64)
 18543  func (_ExtBridge *ExtBridgeCallerSession) RequestNonce() (uint64, error) {
 18544  	return _ExtBridge.Contract.RequestNonce(&_ExtBridge.CallOpts)
 18545  }
 18546  
 18547  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
 18548  //
 18549  // Solidity: function upperHandleNonce() view returns(uint64)
 18550  func (_ExtBridge *ExtBridgeCaller) UpperHandleNonce(opts *bind.CallOpts) (uint64, error) {
 18551  	var (
 18552  		ret0 = new(uint64)
 18553  	)
 18554  	out := ret0
 18555  	err := _ExtBridge.contract.Call(opts, out, "upperHandleNonce")
 18556  	return *ret0, err
 18557  }
 18558  
 18559  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
 18560  //
 18561  // Solidity: function upperHandleNonce() view returns(uint64)
 18562  func (_ExtBridge *ExtBridgeSession) UpperHandleNonce() (uint64, error) {
 18563  	return _ExtBridge.Contract.UpperHandleNonce(&_ExtBridge.CallOpts)
 18564  }
 18565  
 18566  // UpperHandleNonce is a free data retrieval call binding the contract method 0x54edad72.
 18567  //
 18568  // Solidity: function upperHandleNonce() view returns(uint64)
 18569  func (_ExtBridge *ExtBridgeCallerSession) UpperHandleNonce() (uint64, error) {
 18570  	return _ExtBridge.Contract.UpperHandleNonce(&_ExtBridge.CallOpts)
 18571  }
 18572  
 18573  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
 18574  //
 18575  // Solidity: function deregisterOperator(address _operator) returns()
 18576  func (_ExtBridge *ExtBridgeTransactor) DeregisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
 18577  	return _ExtBridge.contract.Transact(opts, "deregisterOperator", _operator)
 18578  }
 18579  
 18580  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
 18581  //
 18582  // Solidity: function deregisterOperator(address _operator) returns()
 18583  func (_ExtBridge *ExtBridgeSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
 18584  	return _ExtBridge.Contract.DeregisterOperator(&_ExtBridge.TransactOpts, _operator)
 18585  }
 18586  
 18587  // DeregisterOperator is a paid mutator transaction binding the contract method 0xd8cf98ca.
 18588  //
 18589  // Solidity: function deregisterOperator(address _operator) returns()
 18590  func (_ExtBridge *ExtBridgeTransactorSession) DeregisterOperator(_operator common.Address) (*types.Transaction, error) {
 18591  	return _ExtBridge.Contract.DeregisterOperator(&_ExtBridge.TransactOpts, _operator)
 18592  }
 18593  
 18594  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
 18595  //
 18596  // Solidity: function deregisterToken(address _token) returns()
 18597  func (_ExtBridge *ExtBridgeTransactor) DeregisterToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
 18598  	return _ExtBridge.contract.Transact(opts, "deregisterToken", _token)
 18599  }
 18600  
 18601  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
 18602  //
 18603  // Solidity: function deregisterToken(address _token) returns()
 18604  func (_ExtBridge *ExtBridgeSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
 18605  	return _ExtBridge.Contract.DeregisterToken(&_ExtBridge.TransactOpts, _token)
 18606  }
 18607  
 18608  // DeregisterToken is a paid mutator transaction binding the contract method 0xbab2af1d.
 18609  //
 18610  // Solidity: function deregisterToken(address _token) returns()
 18611  func (_ExtBridge *ExtBridgeTransactorSession) DeregisterToken(_token common.Address) (*types.Transaction, error) {
 18612  	return _ExtBridge.Contract.DeregisterToken(&_ExtBridge.TransactOpts, _token)
 18613  }
 18614  
 18615  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
 18616  //
 18617  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestNonce, uint64 _requestBlockNumber, bytes _extraData) returns()
 18618  func (_ExtBridge *ExtBridgeTransactor) HandleERC20Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
 18619  	return _ExtBridge.contract.Transact(opts, "handleERC20Transfer", _requestTxHash, _from, _to, _tokenAddress, _value, _requestNonce, _requestBlockNumber, _extraData)
 18620  }
 18621  
 18622  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
 18623  //
 18624  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestNonce, uint64 _requestBlockNumber, bytes _extraData) returns()
 18625  func (_ExtBridge *ExtBridgeSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
 18626  	return _ExtBridge.Contract.HandleERC20Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestNonce, _requestBlockNumber, _extraData)
 18627  }
 18628  
 18629  // HandleERC20Transfer is a paid mutator transaction binding the contract method 0x407e6bae.
 18630  //
 18631  // Solidity: function handleERC20Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _value, uint64 _requestNonce, uint64 _requestBlockNumber, bytes _extraData) returns()
 18632  func (_ExtBridge *ExtBridgeTransactorSession) HandleERC20Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _value *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _extraData []byte) (*types.Transaction, error) {
 18633  	return _ExtBridge.Contract.HandleERC20Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _value, _requestNonce, _requestBlockNumber, _extraData)
 18634  }
 18635  
 18636  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
 18637  //
 18638  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestNonce, uint64 _requestBlockNumber, string _tokenURI, bytes _extraData) returns()
 18639  func (_ExtBridge *ExtBridgeTransactor) HandleERC721Transfer(opts *bind.TransactOpts, _requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
 18640  	return _ExtBridge.contract.Transact(opts, "handleERC721Transfer", _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestNonce, _requestBlockNumber, _tokenURI, _extraData)
 18641  }
 18642  
 18643  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
 18644  //
 18645  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestNonce, uint64 _requestBlockNumber, string _tokenURI, bytes _extraData) returns()
 18646  func (_ExtBridge *ExtBridgeSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
 18647  	return _ExtBridge.Contract.HandleERC721Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestNonce, _requestBlockNumber, _tokenURI, _extraData)
 18648  }
 18649  
 18650  // HandleERC721Transfer is a paid mutator transaction binding the contract method 0xafb60223.
 18651  //
 18652  // Solidity: function handleERC721Transfer(bytes32 _requestTxHash, address _from, address _to, address _tokenAddress, uint256 _tokenId, uint64 _requestNonce, uint64 _requestBlockNumber, string _tokenURI, bytes _extraData) returns()
 18653  func (_ExtBridge *ExtBridgeTransactorSession) HandleERC721Transfer(_requestTxHash [32]byte, _from common.Address, _to common.Address, _tokenAddress common.Address, _tokenId *big.Int, _requestNonce uint64, _requestBlockNumber uint64, _tokenURI string, _extraData []byte) (*types.Transaction, error) {
 18654  	return _ExtBridge.Contract.HandleERC721Transfer(&_ExtBridge.TransactOpts, _requestTxHash, _from, _to, _tokenAddress, _tokenId, _requestNonce, _requestBlockNumber, _tokenURI, _extraData)
 18655  }
 18656  
 18657  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
 18658  //
 18659  // Solidity: function lockToken(address _token) returns()
 18660  func (_ExtBridge *ExtBridgeTransactor) LockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
 18661  	return _ExtBridge.contract.Transact(opts, "lockToken", _token)
 18662  }
 18663  
 18664  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
 18665  //
 18666  // Solidity: function lockToken(address _token) returns()
 18667  func (_ExtBridge *ExtBridgeSession) LockToken(_token common.Address) (*types.Transaction, error) {
 18668  	return _ExtBridge.Contract.LockToken(&_ExtBridge.TransactOpts, _token)
 18669  }
 18670  
 18671  // LockToken is a paid mutator transaction binding the contract method 0x10693fcd.
 18672  //
 18673  // Solidity: function lockToken(address _token) returns()
 18674  func (_ExtBridge *ExtBridgeTransactorSession) LockToken(_token common.Address) (*types.Transaction, error) {
 18675  	return _ExtBridge.Contract.LockToken(&_ExtBridge.TransactOpts, _token)
 18676  }
 18677  
 18678  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
 18679  //
 18680  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
 18681  func (_ExtBridge *ExtBridgeTransactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 18682  	return _ExtBridge.contract.Transact(opts, "onERC20Received", _from, _to, _value, _feeLimit, _extraData)
 18683  }
 18684  
 18685  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
 18686  //
 18687  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
 18688  func (_ExtBridge *ExtBridgeSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 18689  	return _ExtBridge.Contract.OnERC20Received(&_ExtBridge.TransactOpts, _from, _to, _value, _feeLimit, _extraData)
 18690  }
 18691  
 18692  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
 18693  //
 18694  // Solidity: function onERC20Received(address _from, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
 18695  func (_ExtBridge *ExtBridgeTransactorSession) OnERC20Received(_from common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 18696  	return _ExtBridge.Contract.OnERC20Received(&_ExtBridge.TransactOpts, _from, _to, _value, _feeLimit, _extraData)
 18697  }
 18698  
 18699  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 18700  //
 18701  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 18702  func (_ExtBridge *ExtBridgeTransactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 18703  	return _ExtBridge.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData)
 18704  }
 18705  
 18706  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 18707  //
 18708  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 18709  func (_ExtBridge *ExtBridgeSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 18710  	return _ExtBridge.Contract.OnERC721Received(&_ExtBridge.TransactOpts, _from, _tokenId, _to, _extraData)
 18711  }
 18712  
 18713  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 18714  //
 18715  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 18716  func (_ExtBridge *ExtBridgeTransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 18717  	return _ExtBridge.Contract.OnERC721Received(&_ExtBridge.TransactOpts, _from, _tokenId, _to, _extraData)
 18718  }
 18719  
 18720  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
 18721  //
 18722  // Solidity: function registerOperator(address _operator) returns()
 18723  func (_ExtBridge *ExtBridgeTransactor) RegisterOperator(opts *bind.TransactOpts, _operator common.Address) (*types.Transaction, error) {
 18724  	return _ExtBridge.contract.Transact(opts, "registerOperator", _operator)
 18725  }
 18726  
 18727  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
 18728  //
 18729  // Solidity: function registerOperator(address _operator) returns()
 18730  func (_ExtBridge *ExtBridgeSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
 18731  	return _ExtBridge.Contract.RegisterOperator(&_ExtBridge.TransactOpts, _operator)
 18732  }
 18733  
 18734  // RegisterOperator is a paid mutator transaction binding the contract method 0x3682a450.
 18735  //
 18736  // Solidity: function registerOperator(address _operator) returns()
 18737  func (_ExtBridge *ExtBridgeTransactorSession) RegisterOperator(_operator common.Address) (*types.Transaction, error) {
 18738  	return _ExtBridge.Contract.RegisterOperator(&_ExtBridge.TransactOpts, _operator)
 18739  }
 18740  
 18741  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
 18742  //
 18743  // Solidity: function registerToken(address _token, address _cToken) returns()
 18744  func (_ExtBridge *ExtBridgeTransactor) RegisterToken(opts *bind.TransactOpts, _token common.Address, _cToken common.Address) (*types.Transaction, error) {
 18745  	return _ExtBridge.contract.Transact(opts, "registerToken", _token, _cToken)
 18746  }
 18747  
 18748  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
 18749  //
 18750  // Solidity: function registerToken(address _token, address _cToken) returns()
 18751  func (_ExtBridge *ExtBridgeSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
 18752  	return _ExtBridge.Contract.RegisterToken(&_ExtBridge.TransactOpts, _token, _cToken)
 18753  }
 18754  
 18755  // RegisterToken is a paid mutator transaction binding the contract method 0x4739f7e5.
 18756  //
 18757  // Solidity: function registerToken(address _token, address _cToken) returns()
 18758  func (_ExtBridge *ExtBridgeTransactorSession) RegisterToken(_token common.Address, _cToken common.Address) (*types.Transaction, error) {
 18759  	return _ExtBridge.Contract.RegisterToken(&_ExtBridge.TransactOpts, _token, _cToken)
 18760  }
 18761  
 18762  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 18763  //
 18764  // Solidity: function renounceOwnership() returns()
 18765  func (_ExtBridge *ExtBridgeTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 18766  	return _ExtBridge.contract.Transact(opts, "renounceOwnership")
 18767  }
 18768  
 18769  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 18770  //
 18771  // Solidity: function renounceOwnership() returns()
 18772  func (_ExtBridge *ExtBridgeSession) RenounceOwnership() (*types.Transaction, error) {
 18773  	return _ExtBridge.Contract.RenounceOwnership(&_ExtBridge.TransactOpts)
 18774  }
 18775  
 18776  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 18777  //
 18778  // Solidity: function renounceOwnership() returns()
 18779  func (_ExtBridge *ExtBridgeTransactorSession) RenounceOwnership() (*types.Transaction, error) {
 18780  	return _ExtBridge.Contract.RenounceOwnership(&_ExtBridge.TransactOpts)
 18781  }
 18782  
 18783  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
 18784  //
 18785  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
 18786  func (_ExtBridge *ExtBridgeTransactor) RequestERC20Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 18787  	return _ExtBridge.contract.Transact(opts, "requestERC20Transfer", _tokenAddress, _to, _value, _feeLimit, _extraData)
 18788  }
 18789  
 18790  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
 18791  //
 18792  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
 18793  func (_ExtBridge *ExtBridgeSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 18794  	return _ExtBridge.Contract.RequestERC20Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData)
 18795  }
 18796  
 18797  // RequestERC20Transfer is a paid mutator transaction binding the contract method 0x26c23b54.
 18798  //
 18799  // Solidity: function requestERC20Transfer(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, bytes _extraData) returns()
 18800  func (_ExtBridge *ExtBridgeTransactorSession) RequestERC20Transfer(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 18801  	return _ExtBridge.Contract.RequestERC20Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _extraData)
 18802  }
 18803  
 18804  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
 18805  //
 18806  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
 18807  func (_ExtBridge *ExtBridgeTransactor) RequestERC721Transfer(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
 18808  	return _ExtBridge.contract.Transact(opts, "requestERC721Transfer", _tokenAddress, _to, _tokenId, _extraData)
 18809  }
 18810  
 18811  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
 18812  //
 18813  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
 18814  func (_ExtBridge *ExtBridgeSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
 18815  	return _ExtBridge.Contract.RequestERC721Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _extraData)
 18816  }
 18817  
 18818  // RequestERC721Transfer is a paid mutator transaction binding the contract method 0x22604742.
 18819  //
 18820  // Solidity: function requestERC721Transfer(address _tokenAddress, address _to, uint256 _tokenId, bytes _extraData) returns()
 18821  func (_ExtBridge *ExtBridgeTransactorSession) RequestERC721Transfer(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _extraData []byte) (*types.Transaction, error) {
 18822  	return _ExtBridge.Contract.RequestERC721Transfer(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _extraData)
 18823  }
 18824  
 18825  // RequestSellERC20 is a paid mutator transaction binding the contract method 0xc5e49073.
 18826  //
 18827  // Solidity: function requestSellERC20(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, uint256 _price) returns()
 18828  func (_ExtBridge *ExtBridgeTransactor) RequestSellERC20(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _price *big.Int) (*types.Transaction, error) {
 18829  	return _ExtBridge.contract.Transact(opts, "requestSellERC20", _tokenAddress, _to, _value, _feeLimit, _price)
 18830  }
 18831  
 18832  // RequestSellERC20 is a paid mutator transaction binding the contract method 0xc5e49073.
 18833  //
 18834  // Solidity: function requestSellERC20(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, uint256 _price) returns()
 18835  func (_ExtBridge *ExtBridgeSession) RequestSellERC20(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _price *big.Int) (*types.Transaction, error) {
 18836  	return _ExtBridge.Contract.RequestSellERC20(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _price)
 18837  }
 18838  
 18839  // RequestSellERC20 is a paid mutator transaction binding the contract method 0xc5e49073.
 18840  //
 18841  // Solidity: function requestSellERC20(address _tokenAddress, address _to, uint256 _value, uint256 _feeLimit, uint256 _price) returns()
 18842  func (_ExtBridge *ExtBridgeTransactorSession) RequestSellERC20(_tokenAddress common.Address, _to common.Address, _value *big.Int, _feeLimit *big.Int, _price *big.Int) (*types.Transaction, error) {
 18843  	return _ExtBridge.Contract.RequestSellERC20(&_ExtBridge.TransactOpts, _tokenAddress, _to, _value, _feeLimit, _price)
 18844  }
 18845  
 18846  // RequestSellERC721 is a paid mutator transaction binding the contract method 0x4c5146f5.
 18847  //
 18848  // Solidity: function requestSellERC721(address _tokenAddress, address _to, uint256 _tokenId, uint256 _price) returns()
 18849  func (_ExtBridge *ExtBridgeTransactor) RequestSellERC721(opts *bind.TransactOpts, _tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _price *big.Int) (*types.Transaction, error) {
 18850  	return _ExtBridge.contract.Transact(opts, "requestSellERC721", _tokenAddress, _to, _tokenId, _price)
 18851  }
 18852  
 18853  // RequestSellERC721 is a paid mutator transaction binding the contract method 0x4c5146f5.
 18854  //
 18855  // Solidity: function requestSellERC721(address _tokenAddress, address _to, uint256 _tokenId, uint256 _price) returns()
 18856  func (_ExtBridge *ExtBridgeSession) RequestSellERC721(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _price *big.Int) (*types.Transaction, error) {
 18857  	return _ExtBridge.Contract.RequestSellERC721(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _price)
 18858  }
 18859  
 18860  // RequestSellERC721 is a paid mutator transaction binding the contract method 0x4c5146f5.
 18861  //
 18862  // Solidity: function requestSellERC721(address _tokenAddress, address _to, uint256 _tokenId, uint256 _price) returns()
 18863  func (_ExtBridge *ExtBridgeTransactorSession) RequestSellERC721(_tokenAddress common.Address, _to common.Address, _tokenId *big.Int, _price *big.Int) (*types.Transaction, error) {
 18864  	return _ExtBridge.Contract.RequestSellERC721(&_ExtBridge.TransactOpts, _tokenAddress, _to, _tokenId, _price)
 18865  }
 18866  
 18867  // SetCallback is a paid mutator transaction binding the contract method 0x8daa63ac.
 18868  //
 18869  // Solidity: function setCallback(address _addr) returns()
 18870  func (_ExtBridge *ExtBridgeTransactor) SetCallback(opts *bind.TransactOpts, _addr common.Address) (*types.Transaction, error) {
 18871  	return _ExtBridge.contract.Transact(opts, "setCallback", _addr)
 18872  }
 18873  
 18874  // SetCallback is a paid mutator transaction binding the contract method 0x8daa63ac.
 18875  //
 18876  // Solidity: function setCallback(address _addr) returns()
 18877  func (_ExtBridge *ExtBridgeSession) SetCallback(_addr common.Address) (*types.Transaction, error) {
 18878  	return _ExtBridge.Contract.SetCallback(&_ExtBridge.TransactOpts, _addr)
 18879  }
 18880  
 18881  // SetCallback is a paid mutator transaction binding the contract method 0x8daa63ac.
 18882  //
 18883  // Solidity: function setCallback(address _addr) returns()
 18884  func (_ExtBridge *ExtBridgeTransactorSession) SetCallback(_addr common.Address) (*types.Transaction, error) {
 18885  	return _ExtBridge.Contract.SetCallback(&_ExtBridge.TransactOpts, _addr)
 18886  }
 18887  
 18888  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
 18889  //
 18890  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
 18891  func (_ExtBridge *ExtBridgeTransactor) SetERC20Fee(opts *bind.TransactOpts, _token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
 18892  	return _ExtBridge.contract.Transact(opts, "setERC20Fee", _token, _fee, _requestNonce)
 18893  }
 18894  
 18895  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
 18896  //
 18897  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
 18898  func (_ExtBridge *ExtBridgeSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
 18899  	return _ExtBridge.Contract.SetERC20Fee(&_ExtBridge.TransactOpts, _token, _fee, _requestNonce)
 18900  }
 18901  
 18902  // SetERC20Fee is a paid mutator transaction binding the contract method 0x2f88396c.
 18903  //
 18904  // Solidity: function setERC20Fee(address _token, uint256 _fee, uint64 _requestNonce) returns()
 18905  func (_ExtBridge *ExtBridgeTransactorSession) SetERC20Fee(_token common.Address, _fee *big.Int, _requestNonce uint64) (*types.Transaction, error) {
 18906  	return _ExtBridge.Contract.SetERC20Fee(&_ExtBridge.TransactOpts, _token, _fee, _requestNonce)
 18907  }
 18908  
 18909  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
 18910  //
 18911  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
 18912  func (_ExtBridge *ExtBridgeTransactor) SetFeeReceiver(opts *bind.TransactOpts, _feeReceiver common.Address) (*types.Transaction, error) {
 18913  	return _ExtBridge.contract.Transact(opts, "setFeeReceiver", _feeReceiver)
 18914  }
 18915  
 18916  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
 18917  //
 18918  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
 18919  func (_ExtBridge *ExtBridgeSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
 18920  	return _ExtBridge.Contract.SetFeeReceiver(&_ExtBridge.TransactOpts, _feeReceiver)
 18921  }
 18922  
 18923  // SetFeeReceiver is a paid mutator transaction binding the contract method 0xefdcd974.
 18924  //
 18925  // Solidity: function setFeeReceiver(address _feeReceiver) returns()
 18926  func (_ExtBridge *ExtBridgeTransactorSession) SetFeeReceiver(_feeReceiver common.Address) (*types.Transaction, error) {
 18927  	return _ExtBridge.Contract.SetFeeReceiver(&_ExtBridge.TransactOpts, _feeReceiver)
 18928  }
 18929  
 18930  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
 18931  //
 18932  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
 18933  func (_ExtBridge *ExtBridgeTransactor) SetOperatorThreshold(opts *bind.TransactOpts, _voteType uint8, _threshold uint8) (*types.Transaction, error) {
 18934  	return _ExtBridge.contract.Transact(opts, "setOperatorThreshold", _voteType, _threshold)
 18935  }
 18936  
 18937  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
 18938  //
 18939  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
 18940  func (_ExtBridge *ExtBridgeSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
 18941  	return _ExtBridge.Contract.SetOperatorThreshold(&_ExtBridge.TransactOpts, _voteType, _threshold)
 18942  }
 18943  
 18944  // SetOperatorThreshold is a paid mutator transaction binding the contract method 0xee2aec65.
 18945  //
 18946  // Solidity: function setOperatorThreshold(uint8 _voteType, uint8 _threshold) returns()
 18947  func (_ExtBridge *ExtBridgeTransactorSession) SetOperatorThreshold(_voteType uint8, _threshold uint8) (*types.Transaction, error) {
 18948  	return _ExtBridge.Contract.SetOperatorThreshold(&_ExtBridge.TransactOpts, _voteType, _threshold)
 18949  }
 18950  
 18951  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
 18952  //
 18953  // Solidity: function start(bool _status) returns()
 18954  func (_ExtBridge *ExtBridgeTransactor) Start(opts *bind.TransactOpts, _status bool) (*types.Transaction, error) {
 18955  	return _ExtBridge.contract.Transact(opts, "start", _status)
 18956  }
 18957  
 18958  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
 18959  //
 18960  // Solidity: function start(bool _status) returns()
 18961  func (_ExtBridge *ExtBridgeSession) Start(_status bool) (*types.Transaction, error) {
 18962  	return _ExtBridge.Contract.Start(&_ExtBridge.TransactOpts, _status)
 18963  }
 18964  
 18965  // Start is a paid mutator transaction binding the contract method 0xc877cf37.
 18966  //
 18967  // Solidity: function start(bool _status) returns()
 18968  func (_ExtBridge *ExtBridgeTransactorSession) Start(_status bool) (*types.Transaction, error) {
 18969  	return _ExtBridge.Contract.Start(&_ExtBridge.TransactOpts, _status)
 18970  }
 18971  
 18972  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 18973  //
 18974  // Solidity: function transferOwnership(address newOwner) returns()
 18975  func (_ExtBridge *ExtBridgeTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 18976  	return _ExtBridge.contract.Transact(opts, "transferOwnership", newOwner)
 18977  }
 18978  
 18979  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 18980  //
 18981  // Solidity: function transferOwnership(address newOwner) returns()
 18982  func (_ExtBridge *ExtBridgeSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 18983  	return _ExtBridge.Contract.TransferOwnership(&_ExtBridge.TransactOpts, newOwner)
 18984  }
 18985  
 18986  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 18987  //
 18988  // Solidity: function transferOwnership(address newOwner) returns()
 18989  func (_ExtBridge *ExtBridgeTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 18990  	return _ExtBridge.Contract.TransferOwnership(&_ExtBridge.TransactOpts, newOwner)
 18991  }
 18992  
 18993  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
 18994  //
 18995  // Solidity: function unlockToken(address _token) returns()
 18996  func (_ExtBridge *ExtBridgeTransactor) UnlockToken(opts *bind.TransactOpts, _token common.Address) (*types.Transaction, error) {
 18997  	return _ExtBridge.contract.Transact(opts, "unlockToken", _token)
 18998  }
 18999  
 19000  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
 19001  //
 19002  // Solidity: function unlockToken(address _token) returns()
 19003  func (_ExtBridge *ExtBridgeSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
 19004  	return _ExtBridge.Contract.UnlockToken(&_ExtBridge.TransactOpts, _token)
 19005  }
 19006  
 19007  // UnlockToken is a paid mutator transaction binding the contract method 0x9ef2017b.
 19008  //
 19009  // Solidity: function unlockToken(address _token) returns()
 19010  func (_ExtBridge *ExtBridgeTransactorSession) UnlockToken(_token common.Address) (*types.Transaction, error) {
 19011  	return _ExtBridge.Contract.UnlockToken(&_ExtBridge.TransactOpts, _token)
 19012  }
 19013  
 19014  // ExtBridgeERC20FeeChangedIterator is returned from FilterERC20FeeChanged and is used to iterate over the raw logs and unpacked data for ERC20FeeChanged events raised by the ExtBridge contract.
 19015  type ExtBridgeERC20FeeChangedIterator struct {
 19016  	Event *ExtBridgeERC20FeeChanged // Event containing the contract specifics and raw log
 19017  
 19018  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19019  	event    string              // Event name to use for unpacking event data
 19020  
 19021  	logs chan types.Log      // Log channel receiving the found contract events
 19022  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19023  	done bool                // Whether the subscription completed delivering logs
 19024  	fail error               // Occurred error to stop iteration
 19025  }
 19026  
 19027  // Next advances the iterator to the subsequent event, returning whether there
 19028  // are any more events found. In case of a retrieval or parsing error, false is
 19029  // returned and Error() can be queried for the exact failure.
 19030  func (it *ExtBridgeERC20FeeChangedIterator) Next() bool {
 19031  	// If the iterator failed, stop iterating
 19032  	if it.fail != nil {
 19033  		return false
 19034  	}
 19035  	// If the iterator completed, deliver directly whatever's available
 19036  	if it.done {
 19037  		select {
 19038  		case log := <-it.logs:
 19039  			it.Event = new(ExtBridgeERC20FeeChanged)
 19040  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19041  				it.fail = err
 19042  				return false
 19043  			}
 19044  			it.Event.Raw = log
 19045  			return true
 19046  
 19047  		default:
 19048  			return false
 19049  		}
 19050  	}
 19051  	// Iterator still in progress, wait for either a data or an error event
 19052  	select {
 19053  	case log := <-it.logs:
 19054  		it.Event = new(ExtBridgeERC20FeeChanged)
 19055  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19056  			it.fail = err
 19057  			return false
 19058  		}
 19059  		it.Event.Raw = log
 19060  		return true
 19061  
 19062  	case err := <-it.sub.Err():
 19063  		it.done = true
 19064  		it.fail = err
 19065  		return it.Next()
 19066  	}
 19067  }
 19068  
 19069  // Error returns any retrieval or parsing error occurred during filtering.
 19070  func (it *ExtBridgeERC20FeeChangedIterator) Error() error {
 19071  	return it.fail
 19072  }
 19073  
 19074  // Close terminates the iteration process, releasing any pending underlying
 19075  // resources.
 19076  func (it *ExtBridgeERC20FeeChangedIterator) Close() error {
 19077  	it.sub.Unsubscribe()
 19078  	return nil
 19079  }
 19080  
 19081  // ExtBridgeERC20FeeChanged represents a ERC20FeeChanged event raised by the ExtBridge contract.
 19082  type ExtBridgeERC20FeeChanged struct {
 19083  	Token common.Address
 19084  	Fee   *big.Int
 19085  	Raw   types.Log // Blockchain specific contextual infos
 19086  }
 19087  
 19088  // FilterERC20FeeChanged is a free log retrieval operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 19089  //
 19090  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 19091  func (_ExtBridge *ExtBridgeFilterer) FilterERC20FeeChanged(opts *bind.FilterOpts, token []common.Address, fee []*big.Int) (*ExtBridgeERC20FeeChangedIterator, error) {
 19092  
 19093  	var tokenRule []interface{}
 19094  	for _, tokenItem := range token {
 19095  		tokenRule = append(tokenRule, tokenItem)
 19096  	}
 19097  	var feeRule []interface{}
 19098  	for _, feeItem := range fee {
 19099  		feeRule = append(feeRule, feeItem)
 19100  	}
 19101  
 19102  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
 19103  	if err != nil {
 19104  		return nil, err
 19105  	}
 19106  	return &ExtBridgeERC20FeeChangedIterator{contract: _ExtBridge.contract, event: "ERC20FeeChanged", logs: logs, sub: sub}, nil
 19107  }
 19108  
 19109  // WatchERC20FeeChanged is a free log subscription operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 19110  //
 19111  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 19112  func (_ExtBridge *ExtBridgeFilterer) WatchERC20FeeChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeERC20FeeChanged, token []common.Address, fee []*big.Int) (event.Subscription, error) {
 19113  
 19114  	var tokenRule []interface{}
 19115  	for _, tokenItem := range token {
 19116  		tokenRule = append(tokenRule, tokenItem)
 19117  	}
 19118  	var feeRule []interface{}
 19119  	for _, feeItem := range fee {
 19120  		feeRule = append(feeRule, feeItem)
 19121  	}
 19122  
 19123  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "ERC20FeeChanged", tokenRule, feeRule)
 19124  	if err != nil {
 19125  		return nil, err
 19126  	}
 19127  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19128  		defer sub.Unsubscribe()
 19129  		for {
 19130  			select {
 19131  			case log := <-logs:
 19132  				// New log arrived, parse the event and forward to the user
 19133  				event := new(ExtBridgeERC20FeeChanged)
 19134  				if err := _ExtBridge.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
 19135  					return err
 19136  				}
 19137  				event.Raw = log
 19138  
 19139  				select {
 19140  				case sink <- event:
 19141  				case err := <-sub.Err():
 19142  					return err
 19143  				case <-quit:
 19144  					return nil
 19145  				}
 19146  			case err := <-sub.Err():
 19147  				return err
 19148  			case <-quit:
 19149  				return nil
 19150  			}
 19151  		}
 19152  	}), nil
 19153  }
 19154  
 19155  // ParseERC20FeeChanged is a log parse operation binding the contract event 0xdb5ad2e76ae20cfa4e7adbc7305d7538442164d85ead9937c98620a1aa4c255b.
 19156  //
 19157  // Solidity: event ERC20FeeChanged(address indexed token, uint256 indexed fee)
 19158  func (_ExtBridge *ExtBridgeFilterer) ParseERC20FeeChanged(log types.Log) (*ExtBridgeERC20FeeChanged, error) {
 19159  	event := new(ExtBridgeERC20FeeChanged)
 19160  	if err := _ExtBridge.contract.UnpackLog(event, "ERC20FeeChanged", log); err != nil {
 19161  		return nil, err
 19162  	}
 19163  	return event, nil
 19164  }
 19165  
 19166  // ExtBridgeFeeReceiverChangedIterator is returned from FilterFeeReceiverChanged and is used to iterate over the raw logs and unpacked data for FeeReceiverChanged events raised by the ExtBridge contract.
 19167  type ExtBridgeFeeReceiverChangedIterator struct {
 19168  	Event *ExtBridgeFeeReceiverChanged // Event containing the contract specifics and raw log
 19169  
 19170  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19171  	event    string              // Event name to use for unpacking event data
 19172  
 19173  	logs chan types.Log      // Log channel receiving the found contract events
 19174  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19175  	done bool                // Whether the subscription completed delivering logs
 19176  	fail error               // Occurred error to stop iteration
 19177  }
 19178  
 19179  // Next advances the iterator to the subsequent event, returning whether there
 19180  // are any more events found. In case of a retrieval or parsing error, false is
 19181  // returned and Error() can be queried for the exact failure.
 19182  func (it *ExtBridgeFeeReceiverChangedIterator) Next() bool {
 19183  	// If the iterator failed, stop iterating
 19184  	if it.fail != nil {
 19185  		return false
 19186  	}
 19187  	// If the iterator completed, deliver directly whatever's available
 19188  	if it.done {
 19189  		select {
 19190  		case log := <-it.logs:
 19191  			it.Event = new(ExtBridgeFeeReceiverChanged)
 19192  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19193  				it.fail = err
 19194  				return false
 19195  			}
 19196  			it.Event.Raw = log
 19197  			return true
 19198  
 19199  		default:
 19200  			return false
 19201  		}
 19202  	}
 19203  	// Iterator still in progress, wait for either a data or an error event
 19204  	select {
 19205  	case log := <-it.logs:
 19206  		it.Event = new(ExtBridgeFeeReceiverChanged)
 19207  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19208  			it.fail = err
 19209  			return false
 19210  		}
 19211  		it.Event.Raw = log
 19212  		return true
 19213  
 19214  	case err := <-it.sub.Err():
 19215  		it.done = true
 19216  		it.fail = err
 19217  		return it.Next()
 19218  	}
 19219  }
 19220  
 19221  // Error returns any retrieval or parsing error occurred during filtering.
 19222  func (it *ExtBridgeFeeReceiverChangedIterator) Error() error {
 19223  	return it.fail
 19224  }
 19225  
 19226  // Close terminates the iteration process, releasing any pending underlying
 19227  // resources.
 19228  func (it *ExtBridgeFeeReceiverChangedIterator) Close() error {
 19229  	it.sub.Unsubscribe()
 19230  	return nil
 19231  }
 19232  
 19233  // ExtBridgeFeeReceiverChanged represents a FeeReceiverChanged event raised by the ExtBridge contract.
 19234  type ExtBridgeFeeReceiverChanged struct {
 19235  	FeeReceiver common.Address
 19236  	Raw         types.Log // Blockchain specific contextual infos
 19237  }
 19238  
 19239  // FilterFeeReceiverChanged is a free log retrieval operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 19240  //
 19241  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 19242  func (_ExtBridge *ExtBridgeFilterer) FilterFeeReceiverChanged(opts *bind.FilterOpts, feeReceiver []common.Address) (*ExtBridgeFeeReceiverChangedIterator, error) {
 19243  
 19244  	var feeReceiverRule []interface{}
 19245  	for _, feeReceiverItem := range feeReceiver {
 19246  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
 19247  	}
 19248  
 19249  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "FeeReceiverChanged", feeReceiverRule)
 19250  	if err != nil {
 19251  		return nil, err
 19252  	}
 19253  	return &ExtBridgeFeeReceiverChangedIterator{contract: _ExtBridge.contract, event: "FeeReceiverChanged", logs: logs, sub: sub}, nil
 19254  }
 19255  
 19256  // WatchFeeReceiverChanged is a free log subscription operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 19257  //
 19258  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 19259  func (_ExtBridge *ExtBridgeFilterer) WatchFeeReceiverChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeFeeReceiverChanged, feeReceiver []common.Address) (event.Subscription, error) {
 19260  
 19261  	var feeReceiverRule []interface{}
 19262  	for _, feeReceiverItem := range feeReceiver {
 19263  		feeReceiverRule = append(feeReceiverRule, feeReceiverItem)
 19264  	}
 19265  
 19266  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "FeeReceiverChanged", feeReceiverRule)
 19267  	if err != nil {
 19268  		return nil, err
 19269  	}
 19270  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19271  		defer sub.Unsubscribe()
 19272  		for {
 19273  			select {
 19274  			case log := <-logs:
 19275  				// New log arrived, parse the event and forward to the user
 19276  				event := new(ExtBridgeFeeReceiverChanged)
 19277  				if err := _ExtBridge.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
 19278  					return err
 19279  				}
 19280  				event.Raw = log
 19281  
 19282  				select {
 19283  				case sink <- event:
 19284  				case err := <-sub.Err():
 19285  					return err
 19286  				case <-quit:
 19287  					return nil
 19288  				}
 19289  			case err := <-sub.Err():
 19290  				return err
 19291  			case <-quit:
 19292  				return nil
 19293  			}
 19294  		}
 19295  	}), nil
 19296  }
 19297  
 19298  // ParseFeeReceiverChanged is a log parse operation binding the contract event 0x647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059.
 19299  //
 19300  // Solidity: event FeeReceiverChanged(address indexed feeReceiver)
 19301  func (_ExtBridge *ExtBridgeFilterer) ParseFeeReceiverChanged(log types.Log) (*ExtBridgeFeeReceiverChanged, error) {
 19302  	event := new(ExtBridgeFeeReceiverChanged)
 19303  	if err := _ExtBridge.contract.UnpackLog(event, "FeeReceiverChanged", log); err != nil {
 19304  		return nil, err
 19305  	}
 19306  	return event, nil
 19307  }
 19308  
 19309  // ExtBridgeHandleValueTransferIterator is returned from FilterHandleValueTransfer and is used to iterate over the raw logs and unpacked data for HandleValueTransfer events raised by the ExtBridge contract.
 19310  type ExtBridgeHandleValueTransferIterator struct {
 19311  	Event *ExtBridgeHandleValueTransfer // Event containing the contract specifics and raw log
 19312  
 19313  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19314  	event    string              // Event name to use for unpacking event data
 19315  
 19316  	logs chan types.Log      // Log channel receiving the found contract events
 19317  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19318  	done bool                // Whether the subscription completed delivering logs
 19319  	fail error               // Occurred error to stop iteration
 19320  }
 19321  
 19322  // Next advances the iterator to the subsequent event, returning whether there
 19323  // are any more events found. In case of a retrieval or parsing error, false is
 19324  // returned and Error() can be queried for the exact failure.
 19325  func (it *ExtBridgeHandleValueTransferIterator) Next() bool {
 19326  	// If the iterator failed, stop iterating
 19327  	if it.fail != nil {
 19328  		return false
 19329  	}
 19330  	// If the iterator completed, deliver directly whatever's available
 19331  	if it.done {
 19332  		select {
 19333  		case log := <-it.logs:
 19334  			it.Event = new(ExtBridgeHandleValueTransfer)
 19335  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19336  				it.fail = err
 19337  				return false
 19338  			}
 19339  			it.Event.Raw = log
 19340  			return true
 19341  
 19342  		default:
 19343  			return false
 19344  		}
 19345  	}
 19346  	// Iterator still in progress, wait for either a data or an error event
 19347  	select {
 19348  	case log := <-it.logs:
 19349  		it.Event = new(ExtBridgeHandleValueTransfer)
 19350  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19351  			it.fail = err
 19352  			return false
 19353  		}
 19354  		it.Event.Raw = log
 19355  		return true
 19356  
 19357  	case err := <-it.sub.Err():
 19358  		it.done = true
 19359  		it.fail = err
 19360  		return it.Next()
 19361  	}
 19362  }
 19363  
 19364  // Error returns any retrieval or parsing error occurred during filtering.
 19365  func (it *ExtBridgeHandleValueTransferIterator) Error() error {
 19366  	return it.fail
 19367  }
 19368  
 19369  // Close terminates the iteration process, releasing any pending underlying
 19370  // resources.
 19371  func (it *ExtBridgeHandleValueTransferIterator) Close() error {
 19372  	it.sub.Unsubscribe()
 19373  	return nil
 19374  }
 19375  
 19376  // ExtBridgeHandleValueTransfer represents a HandleValueTransfer event raised by the ExtBridge contract.
 19377  type ExtBridgeHandleValueTransfer struct {
 19378  	RequestTxHash    [32]byte
 19379  	TokenType        uint8
 19380  	From             common.Address
 19381  	To               common.Address
 19382  	TokenAddress     common.Address
 19383  	ValueOrTokenId   *big.Int
 19384  	HandleNonce      uint64
 19385  	LowerHandleNonce uint64
 19386  	ExtraData        []byte
 19387  	Raw              types.Log // Blockchain specific contextual infos
 19388  }
 19389  
 19390  // FilterHandleValueTransfer is a free log retrieval operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 19391  //
 19392  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 19393  func (_ExtBridge *ExtBridgeFilterer) FilterHandleValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*ExtBridgeHandleValueTransferIterator, error) {
 19394  
 19395  	var fromRule []interface{}
 19396  	for _, fromItem := range from {
 19397  		fromRule = append(fromRule, fromItem)
 19398  	}
 19399  	var toRule []interface{}
 19400  	for _, toItem := range to {
 19401  		toRule = append(toRule, toItem)
 19402  	}
 19403  	var tokenAddressRule []interface{}
 19404  	for _, tokenAddressItem := range tokenAddress {
 19405  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 19406  	}
 19407  
 19408  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
 19409  	if err != nil {
 19410  		return nil, err
 19411  	}
 19412  	return &ExtBridgeHandleValueTransferIterator{contract: _ExtBridge.contract, event: "HandleValueTransfer", logs: logs, sub: sub}, nil
 19413  }
 19414  
 19415  // WatchHandleValueTransfer is a free log subscription operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 19416  //
 19417  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 19418  func (_ExtBridge *ExtBridgeFilterer) WatchHandleValueTransfer(opts *bind.WatchOpts, sink chan<- *ExtBridgeHandleValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 19419  
 19420  	var fromRule []interface{}
 19421  	for _, fromItem := range from {
 19422  		fromRule = append(fromRule, fromItem)
 19423  	}
 19424  	var toRule []interface{}
 19425  	for _, toItem := range to {
 19426  		toRule = append(toRule, toItem)
 19427  	}
 19428  	var tokenAddressRule []interface{}
 19429  	for _, tokenAddressItem := range tokenAddress {
 19430  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 19431  	}
 19432  
 19433  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "HandleValueTransfer", fromRule, toRule, tokenAddressRule)
 19434  	if err != nil {
 19435  		return nil, err
 19436  	}
 19437  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19438  		defer sub.Unsubscribe()
 19439  		for {
 19440  			select {
 19441  			case log := <-logs:
 19442  				// New log arrived, parse the event and forward to the user
 19443  				event := new(ExtBridgeHandleValueTransfer)
 19444  				if err := _ExtBridge.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
 19445  					return err
 19446  				}
 19447  				event.Raw = log
 19448  
 19449  				select {
 19450  				case sink <- event:
 19451  				case err := <-sub.Err():
 19452  					return err
 19453  				case <-quit:
 19454  					return nil
 19455  				}
 19456  			case err := <-sub.Err():
 19457  				return err
 19458  			case <-quit:
 19459  				return nil
 19460  			}
 19461  		}
 19462  	}), nil
 19463  }
 19464  
 19465  // ParseHandleValueTransfer is a log parse operation binding the contract event 0x12b02f226d965a2881e0e8ffed6c421803a22d57ad91f9ef996fe0748ea10175.
 19466  //
 19467  // Solidity: event HandleValueTransfer(bytes32 requestTxHash, uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 handleNonce, uint64 lowerHandleNonce, bytes extraData)
 19468  func (_ExtBridge *ExtBridgeFilterer) ParseHandleValueTransfer(log types.Log) (*ExtBridgeHandleValueTransfer, error) {
 19469  	event := new(ExtBridgeHandleValueTransfer)
 19470  	if err := _ExtBridge.contract.UnpackLog(event, "HandleValueTransfer", log); err != nil {
 19471  		return nil, err
 19472  	}
 19473  	return event, nil
 19474  }
 19475  
 19476  // ExtBridgeKLAYFeeChangedIterator is returned from FilterKLAYFeeChanged and is used to iterate over the raw logs and unpacked data for KLAYFeeChanged events raised by the ExtBridge contract.
 19477  type ExtBridgeKLAYFeeChangedIterator struct {
 19478  	Event *ExtBridgeKLAYFeeChanged // Event containing the contract specifics and raw log
 19479  
 19480  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19481  	event    string              // Event name to use for unpacking event data
 19482  
 19483  	logs chan types.Log      // Log channel receiving the found contract events
 19484  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19485  	done bool                // Whether the subscription completed delivering logs
 19486  	fail error               // Occurred error to stop iteration
 19487  }
 19488  
 19489  // Next advances the iterator to the subsequent event, returning whether there
 19490  // are any more events found. In case of a retrieval or parsing error, false is
 19491  // returned and Error() can be queried for the exact failure.
 19492  func (it *ExtBridgeKLAYFeeChangedIterator) Next() bool {
 19493  	// If the iterator failed, stop iterating
 19494  	if it.fail != nil {
 19495  		return false
 19496  	}
 19497  	// If the iterator completed, deliver directly whatever's available
 19498  	if it.done {
 19499  		select {
 19500  		case log := <-it.logs:
 19501  			it.Event = new(ExtBridgeKLAYFeeChanged)
 19502  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19503  				it.fail = err
 19504  				return false
 19505  			}
 19506  			it.Event.Raw = log
 19507  			return true
 19508  
 19509  		default:
 19510  			return false
 19511  		}
 19512  	}
 19513  	// Iterator still in progress, wait for either a data or an error event
 19514  	select {
 19515  	case log := <-it.logs:
 19516  		it.Event = new(ExtBridgeKLAYFeeChanged)
 19517  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19518  			it.fail = err
 19519  			return false
 19520  		}
 19521  		it.Event.Raw = log
 19522  		return true
 19523  
 19524  	case err := <-it.sub.Err():
 19525  		it.done = true
 19526  		it.fail = err
 19527  		return it.Next()
 19528  	}
 19529  }
 19530  
 19531  // Error returns any retrieval or parsing error occurred during filtering.
 19532  func (it *ExtBridgeKLAYFeeChangedIterator) Error() error {
 19533  	return it.fail
 19534  }
 19535  
 19536  // Close terminates the iteration process, releasing any pending underlying
 19537  // resources.
 19538  func (it *ExtBridgeKLAYFeeChangedIterator) Close() error {
 19539  	it.sub.Unsubscribe()
 19540  	return nil
 19541  }
 19542  
 19543  // ExtBridgeKLAYFeeChanged represents a KLAYFeeChanged event raised by the ExtBridge contract.
 19544  type ExtBridgeKLAYFeeChanged struct {
 19545  	Fee *big.Int
 19546  	Raw types.Log // Blockchain specific contextual infos
 19547  }
 19548  
 19549  // FilterKLAYFeeChanged is a free log retrieval operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 19550  //
 19551  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 19552  func (_ExtBridge *ExtBridgeFilterer) FilterKLAYFeeChanged(opts *bind.FilterOpts, fee []*big.Int) (*ExtBridgeKLAYFeeChangedIterator, error) {
 19553  
 19554  	var feeRule []interface{}
 19555  	for _, feeItem := range fee {
 19556  		feeRule = append(feeRule, feeItem)
 19557  	}
 19558  
 19559  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "KLAYFeeChanged", feeRule)
 19560  	if err != nil {
 19561  		return nil, err
 19562  	}
 19563  	return &ExtBridgeKLAYFeeChangedIterator{contract: _ExtBridge.contract, event: "KLAYFeeChanged", logs: logs, sub: sub}, nil
 19564  }
 19565  
 19566  // WatchKLAYFeeChanged is a free log subscription operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 19567  //
 19568  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 19569  func (_ExtBridge *ExtBridgeFilterer) WatchKLAYFeeChanged(opts *bind.WatchOpts, sink chan<- *ExtBridgeKLAYFeeChanged, fee []*big.Int) (event.Subscription, error) {
 19570  
 19571  	var feeRule []interface{}
 19572  	for _, feeItem := range fee {
 19573  		feeRule = append(feeRule, feeItem)
 19574  	}
 19575  
 19576  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "KLAYFeeChanged", feeRule)
 19577  	if err != nil {
 19578  		return nil, err
 19579  	}
 19580  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19581  		defer sub.Unsubscribe()
 19582  		for {
 19583  			select {
 19584  			case log := <-logs:
 19585  				// New log arrived, parse the event and forward to the user
 19586  				event := new(ExtBridgeKLAYFeeChanged)
 19587  				if err := _ExtBridge.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
 19588  					return err
 19589  				}
 19590  				event.Raw = log
 19591  
 19592  				select {
 19593  				case sink <- event:
 19594  				case err := <-sub.Err():
 19595  					return err
 19596  				case <-quit:
 19597  					return nil
 19598  				}
 19599  			case err := <-sub.Err():
 19600  				return err
 19601  			case <-quit:
 19602  				return nil
 19603  			}
 19604  		}
 19605  	}), nil
 19606  }
 19607  
 19608  // ParseKLAYFeeChanged is a log parse operation binding the contract event 0xa7a33d0996347e1aa55ca2206015b61b9534bdd881d59d59aa680e25eefac365.
 19609  //
 19610  // Solidity: event KLAYFeeChanged(uint256 indexed fee)
 19611  func (_ExtBridge *ExtBridgeFilterer) ParseKLAYFeeChanged(log types.Log) (*ExtBridgeKLAYFeeChanged, error) {
 19612  	event := new(ExtBridgeKLAYFeeChanged)
 19613  	if err := _ExtBridge.contract.UnpackLog(event, "KLAYFeeChanged", log); err != nil {
 19614  		return nil, err
 19615  	}
 19616  	return event, nil
 19617  }
 19618  
 19619  // ExtBridgeOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ExtBridge contract.
 19620  type ExtBridgeOwnershipTransferredIterator struct {
 19621  	Event *ExtBridgeOwnershipTransferred // Event containing the contract specifics and raw log
 19622  
 19623  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19624  	event    string              // Event name to use for unpacking event data
 19625  
 19626  	logs chan types.Log      // Log channel receiving the found contract events
 19627  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19628  	done bool                // Whether the subscription completed delivering logs
 19629  	fail error               // Occurred error to stop iteration
 19630  }
 19631  
 19632  // Next advances the iterator to the subsequent event, returning whether there
 19633  // are any more events found. In case of a retrieval or parsing error, false is
 19634  // returned and Error() can be queried for the exact failure.
 19635  func (it *ExtBridgeOwnershipTransferredIterator) Next() bool {
 19636  	// If the iterator failed, stop iterating
 19637  	if it.fail != nil {
 19638  		return false
 19639  	}
 19640  	// If the iterator completed, deliver directly whatever's available
 19641  	if it.done {
 19642  		select {
 19643  		case log := <-it.logs:
 19644  			it.Event = new(ExtBridgeOwnershipTransferred)
 19645  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19646  				it.fail = err
 19647  				return false
 19648  			}
 19649  			it.Event.Raw = log
 19650  			return true
 19651  
 19652  		default:
 19653  			return false
 19654  		}
 19655  	}
 19656  	// Iterator still in progress, wait for either a data or an error event
 19657  	select {
 19658  	case log := <-it.logs:
 19659  		it.Event = new(ExtBridgeOwnershipTransferred)
 19660  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19661  			it.fail = err
 19662  			return false
 19663  		}
 19664  		it.Event.Raw = log
 19665  		return true
 19666  
 19667  	case err := <-it.sub.Err():
 19668  		it.done = true
 19669  		it.fail = err
 19670  		return it.Next()
 19671  	}
 19672  }
 19673  
 19674  // Error returns any retrieval or parsing error occurred during filtering.
 19675  func (it *ExtBridgeOwnershipTransferredIterator) Error() error {
 19676  	return it.fail
 19677  }
 19678  
 19679  // Close terminates the iteration process, releasing any pending underlying
 19680  // resources.
 19681  func (it *ExtBridgeOwnershipTransferredIterator) Close() error {
 19682  	it.sub.Unsubscribe()
 19683  	return nil
 19684  }
 19685  
 19686  // ExtBridgeOwnershipTransferred represents a OwnershipTransferred event raised by the ExtBridge contract.
 19687  type ExtBridgeOwnershipTransferred struct {
 19688  	PreviousOwner common.Address
 19689  	NewOwner      common.Address
 19690  	Raw           types.Log // Blockchain specific contextual infos
 19691  }
 19692  
 19693  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 19694  //
 19695  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 19696  func (_ExtBridge *ExtBridgeFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ExtBridgeOwnershipTransferredIterator, error) {
 19697  
 19698  	var previousOwnerRule []interface{}
 19699  	for _, previousOwnerItem := range previousOwner {
 19700  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 19701  	}
 19702  	var newOwnerRule []interface{}
 19703  	for _, newOwnerItem := range newOwner {
 19704  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 19705  	}
 19706  
 19707  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 19708  	if err != nil {
 19709  		return nil, err
 19710  	}
 19711  	return &ExtBridgeOwnershipTransferredIterator{contract: _ExtBridge.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 19712  }
 19713  
 19714  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 19715  //
 19716  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 19717  func (_ExtBridge *ExtBridgeFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ExtBridgeOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 19718  
 19719  	var previousOwnerRule []interface{}
 19720  	for _, previousOwnerItem := range previousOwner {
 19721  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 19722  	}
 19723  	var newOwnerRule []interface{}
 19724  	for _, newOwnerItem := range newOwner {
 19725  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 19726  	}
 19727  
 19728  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 19729  	if err != nil {
 19730  		return nil, err
 19731  	}
 19732  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19733  		defer sub.Unsubscribe()
 19734  		for {
 19735  			select {
 19736  			case log := <-logs:
 19737  				// New log arrived, parse the event and forward to the user
 19738  				event := new(ExtBridgeOwnershipTransferred)
 19739  				if err := _ExtBridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 19740  					return err
 19741  				}
 19742  				event.Raw = log
 19743  
 19744  				select {
 19745  				case sink <- event:
 19746  				case err := <-sub.Err():
 19747  					return err
 19748  				case <-quit:
 19749  					return nil
 19750  				}
 19751  			case err := <-sub.Err():
 19752  				return err
 19753  			case <-quit:
 19754  				return nil
 19755  			}
 19756  		}
 19757  	}), nil
 19758  }
 19759  
 19760  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 19761  //
 19762  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 19763  func (_ExtBridge *ExtBridgeFilterer) ParseOwnershipTransferred(log types.Log) (*ExtBridgeOwnershipTransferred, error) {
 19764  	event := new(ExtBridgeOwnershipTransferred)
 19765  	if err := _ExtBridge.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 19766  		return nil, err
 19767  	}
 19768  	return event, nil
 19769  }
 19770  
 19771  // ExtBridgeRequestValueTransferIterator is returned from FilterRequestValueTransfer and is used to iterate over the raw logs and unpacked data for RequestValueTransfer events raised by the ExtBridge contract.
 19772  type ExtBridgeRequestValueTransferIterator struct {
 19773  	Event *ExtBridgeRequestValueTransfer // Event containing the contract specifics and raw log
 19774  
 19775  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19776  	event    string              // Event name to use for unpacking event data
 19777  
 19778  	logs chan types.Log      // Log channel receiving the found contract events
 19779  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19780  	done bool                // Whether the subscription completed delivering logs
 19781  	fail error               // Occurred error to stop iteration
 19782  }
 19783  
 19784  // Next advances the iterator to the subsequent event, returning whether there
 19785  // are any more events found. In case of a retrieval or parsing error, false is
 19786  // returned and Error() can be queried for the exact failure.
 19787  func (it *ExtBridgeRequestValueTransferIterator) Next() bool {
 19788  	// If the iterator failed, stop iterating
 19789  	if it.fail != nil {
 19790  		return false
 19791  	}
 19792  	// If the iterator completed, deliver directly whatever's available
 19793  	if it.done {
 19794  		select {
 19795  		case log := <-it.logs:
 19796  			it.Event = new(ExtBridgeRequestValueTransfer)
 19797  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19798  				it.fail = err
 19799  				return false
 19800  			}
 19801  			it.Event.Raw = log
 19802  			return true
 19803  
 19804  		default:
 19805  			return false
 19806  		}
 19807  	}
 19808  	// Iterator still in progress, wait for either a data or an error event
 19809  	select {
 19810  	case log := <-it.logs:
 19811  		it.Event = new(ExtBridgeRequestValueTransfer)
 19812  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19813  			it.fail = err
 19814  			return false
 19815  		}
 19816  		it.Event.Raw = log
 19817  		return true
 19818  
 19819  	case err := <-it.sub.Err():
 19820  		it.done = true
 19821  		it.fail = err
 19822  		return it.Next()
 19823  	}
 19824  }
 19825  
 19826  // Error returns any retrieval or parsing error occurred during filtering.
 19827  func (it *ExtBridgeRequestValueTransferIterator) Error() error {
 19828  	return it.fail
 19829  }
 19830  
 19831  // Close terminates the iteration process, releasing any pending underlying
 19832  // resources.
 19833  func (it *ExtBridgeRequestValueTransferIterator) Close() error {
 19834  	it.sub.Unsubscribe()
 19835  	return nil
 19836  }
 19837  
 19838  // ExtBridgeRequestValueTransfer represents a RequestValueTransfer event raised by the ExtBridge contract.
 19839  type ExtBridgeRequestValueTransfer struct {
 19840  	TokenType      uint8
 19841  	From           common.Address
 19842  	To             common.Address
 19843  	TokenAddress   common.Address
 19844  	ValueOrTokenId *big.Int
 19845  	RequestNonce   uint64
 19846  	Fee            *big.Int
 19847  	ExtraData      []byte
 19848  	Raw            types.Log // Blockchain specific contextual infos
 19849  }
 19850  
 19851  // FilterRequestValueTransfer is a free log retrieval operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 19852  //
 19853  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 19854  func (_ExtBridge *ExtBridgeFilterer) FilterRequestValueTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*ExtBridgeRequestValueTransferIterator, error) {
 19855  
 19856  	var fromRule []interface{}
 19857  	for _, fromItem := range from {
 19858  		fromRule = append(fromRule, fromItem)
 19859  	}
 19860  	var toRule []interface{}
 19861  	for _, toItem := range to {
 19862  		toRule = append(toRule, toItem)
 19863  	}
 19864  	var tokenAddressRule []interface{}
 19865  	for _, tokenAddressItem := range tokenAddress {
 19866  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 19867  	}
 19868  
 19869  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
 19870  	if err != nil {
 19871  		return nil, err
 19872  	}
 19873  	return &ExtBridgeRequestValueTransferIterator{contract: _ExtBridge.contract, event: "RequestValueTransfer", logs: logs, sub: sub}, nil
 19874  }
 19875  
 19876  // WatchRequestValueTransfer is a free log subscription operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 19877  //
 19878  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 19879  func (_ExtBridge *ExtBridgeFilterer) WatchRequestValueTransfer(opts *bind.WatchOpts, sink chan<- *ExtBridgeRequestValueTransfer, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 19880  
 19881  	var fromRule []interface{}
 19882  	for _, fromItem := range from {
 19883  		fromRule = append(fromRule, fromItem)
 19884  	}
 19885  	var toRule []interface{}
 19886  	for _, toItem := range to {
 19887  		toRule = append(toRule, toItem)
 19888  	}
 19889  	var tokenAddressRule []interface{}
 19890  	for _, tokenAddressItem := range tokenAddress {
 19891  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 19892  	}
 19893  
 19894  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "RequestValueTransfer", fromRule, toRule, tokenAddressRule)
 19895  	if err != nil {
 19896  		return nil, err
 19897  	}
 19898  	return event.NewSubscription(func(quit <-chan struct{}) error {
 19899  		defer sub.Unsubscribe()
 19900  		for {
 19901  			select {
 19902  			case log := <-logs:
 19903  				// New log arrived, parse the event and forward to the user
 19904  				event := new(ExtBridgeRequestValueTransfer)
 19905  				if err := _ExtBridge.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
 19906  					return err
 19907  				}
 19908  				event.Raw = log
 19909  
 19910  				select {
 19911  				case sink <- event:
 19912  				case err := <-sub.Err():
 19913  					return err
 19914  				case <-quit:
 19915  					return nil
 19916  				}
 19917  			case err := <-sub.Err():
 19918  				return err
 19919  			case <-quit:
 19920  				return nil
 19921  			}
 19922  		}
 19923  	}), nil
 19924  }
 19925  
 19926  // ParseRequestValueTransfer is a log parse operation binding the contract event 0xeff76c36e53fa5ff52f27acc8a34d5047a8246abb07b77b12f1309f71e337f09.
 19927  //
 19928  // Solidity: event RequestValueTransfer(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData)
 19929  func (_ExtBridge *ExtBridgeFilterer) ParseRequestValueTransfer(log types.Log) (*ExtBridgeRequestValueTransfer, error) {
 19930  	event := new(ExtBridgeRequestValueTransfer)
 19931  	if err := _ExtBridge.contract.UnpackLog(event, "RequestValueTransfer", log); err != nil {
 19932  		return nil, err
 19933  	}
 19934  	return event, nil
 19935  }
 19936  
 19937  // ExtBridgeRequestValueTransferEncodedIterator is returned from FilterRequestValueTransferEncoded and is used to iterate over the raw logs and unpacked data for RequestValueTransferEncoded events raised by the ExtBridge contract.
 19938  type ExtBridgeRequestValueTransferEncodedIterator struct {
 19939  	Event *ExtBridgeRequestValueTransferEncoded // Event containing the contract specifics and raw log
 19940  
 19941  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 19942  	event    string              // Event name to use for unpacking event data
 19943  
 19944  	logs chan types.Log      // Log channel receiving the found contract events
 19945  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 19946  	done bool                // Whether the subscription completed delivering logs
 19947  	fail error               // Occurred error to stop iteration
 19948  }
 19949  
 19950  // Next advances the iterator to the subsequent event, returning whether there
 19951  // are any more events found. In case of a retrieval or parsing error, false is
 19952  // returned and Error() can be queried for the exact failure.
 19953  func (it *ExtBridgeRequestValueTransferEncodedIterator) Next() bool {
 19954  	// If the iterator failed, stop iterating
 19955  	if it.fail != nil {
 19956  		return false
 19957  	}
 19958  	// If the iterator completed, deliver directly whatever's available
 19959  	if it.done {
 19960  		select {
 19961  		case log := <-it.logs:
 19962  			it.Event = new(ExtBridgeRequestValueTransferEncoded)
 19963  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19964  				it.fail = err
 19965  				return false
 19966  			}
 19967  			it.Event.Raw = log
 19968  			return true
 19969  
 19970  		default:
 19971  			return false
 19972  		}
 19973  	}
 19974  	// Iterator still in progress, wait for either a data or an error event
 19975  	select {
 19976  	case log := <-it.logs:
 19977  		it.Event = new(ExtBridgeRequestValueTransferEncoded)
 19978  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 19979  			it.fail = err
 19980  			return false
 19981  		}
 19982  		it.Event.Raw = log
 19983  		return true
 19984  
 19985  	case err := <-it.sub.Err():
 19986  		it.done = true
 19987  		it.fail = err
 19988  		return it.Next()
 19989  	}
 19990  }
 19991  
 19992  // Error returns any retrieval or parsing error occurred during filtering.
 19993  func (it *ExtBridgeRequestValueTransferEncodedIterator) Error() error {
 19994  	return it.fail
 19995  }
 19996  
 19997  // Close terminates the iteration process, releasing any pending underlying
 19998  // resources.
 19999  func (it *ExtBridgeRequestValueTransferEncodedIterator) Close() error {
 20000  	it.sub.Unsubscribe()
 20001  	return nil
 20002  }
 20003  
 20004  // ExtBridgeRequestValueTransferEncoded represents a RequestValueTransferEncoded event raised by the ExtBridge contract.
 20005  type ExtBridgeRequestValueTransferEncoded struct {
 20006  	TokenType      uint8
 20007  	From           common.Address
 20008  	To             common.Address
 20009  	TokenAddress   common.Address
 20010  	ValueOrTokenId *big.Int
 20011  	RequestNonce   uint64
 20012  	Fee            *big.Int
 20013  	ExtraData      []byte
 20014  	EncodingVer    uint8
 20015  	EncodedData    []byte
 20016  	Raw            types.Log // Blockchain specific contextual infos
 20017  }
 20018  
 20019  // FilterRequestValueTransferEncoded is a free log retrieval operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 20020  //
 20021  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 20022  func (_ExtBridge *ExtBridgeFilterer) FilterRequestValueTransferEncoded(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenAddress []common.Address) (*ExtBridgeRequestValueTransferEncodedIterator, error) {
 20023  
 20024  	var fromRule []interface{}
 20025  	for _, fromItem := range from {
 20026  		fromRule = append(fromRule, fromItem)
 20027  	}
 20028  	var toRule []interface{}
 20029  	for _, toItem := range to {
 20030  		toRule = append(toRule, toItem)
 20031  	}
 20032  	var tokenAddressRule []interface{}
 20033  	for _, tokenAddressItem := range tokenAddress {
 20034  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 20035  	}
 20036  
 20037  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
 20038  	if err != nil {
 20039  		return nil, err
 20040  	}
 20041  	return &ExtBridgeRequestValueTransferEncodedIterator{contract: _ExtBridge.contract, event: "RequestValueTransferEncoded", logs: logs, sub: sub}, nil
 20042  }
 20043  
 20044  // WatchRequestValueTransferEncoded is a free log subscription operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 20045  //
 20046  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 20047  func (_ExtBridge *ExtBridgeFilterer) WatchRequestValueTransferEncoded(opts *bind.WatchOpts, sink chan<- *ExtBridgeRequestValueTransferEncoded, from []common.Address, to []common.Address, tokenAddress []common.Address) (event.Subscription, error) {
 20048  
 20049  	var fromRule []interface{}
 20050  	for _, fromItem := range from {
 20051  		fromRule = append(fromRule, fromItem)
 20052  	}
 20053  	var toRule []interface{}
 20054  	for _, toItem := range to {
 20055  		toRule = append(toRule, toItem)
 20056  	}
 20057  	var tokenAddressRule []interface{}
 20058  	for _, tokenAddressItem := range tokenAddress {
 20059  		tokenAddressRule = append(tokenAddressRule, tokenAddressItem)
 20060  	}
 20061  
 20062  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "RequestValueTransferEncoded", fromRule, toRule, tokenAddressRule)
 20063  	if err != nil {
 20064  		return nil, err
 20065  	}
 20066  	return event.NewSubscription(func(quit <-chan struct{}) error {
 20067  		defer sub.Unsubscribe()
 20068  		for {
 20069  			select {
 20070  			case log := <-logs:
 20071  				// New log arrived, parse the event and forward to the user
 20072  				event := new(ExtBridgeRequestValueTransferEncoded)
 20073  				if err := _ExtBridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
 20074  					return err
 20075  				}
 20076  				event.Raw = log
 20077  
 20078  				select {
 20079  				case sink <- event:
 20080  				case err := <-sub.Err():
 20081  					return err
 20082  				case <-quit:
 20083  					return nil
 20084  				}
 20085  			case err := <-sub.Err():
 20086  				return err
 20087  			case <-quit:
 20088  				return nil
 20089  			}
 20090  		}
 20091  	}), nil
 20092  }
 20093  
 20094  // ParseRequestValueTransferEncoded is a log parse operation binding the contract event 0x17d76053ca34a4dd8c402fe6498deb797fac89bf7ed02f3f5161aa9368cc8c1f.
 20095  //
 20096  // Solidity: event RequestValueTransferEncoded(uint8 tokenType, address indexed from, address indexed to, address indexed tokenAddress, uint256 valueOrTokenId, uint64 requestNonce, uint256 fee, bytes extraData, uint8 encodingVer, bytes encodedData)
 20097  func (_ExtBridge *ExtBridgeFilterer) ParseRequestValueTransferEncoded(log types.Log) (*ExtBridgeRequestValueTransferEncoded, error) {
 20098  	event := new(ExtBridgeRequestValueTransferEncoded)
 20099  	if err := _ExtBridge.contract.UnpackLog(event, "RequestValueTransferEncoded", log); err != nil {
 20100  		return nil, err
 20101  	}
 20102  	return event, nil
 20103  }
 20104  
 20105  // ExtBridgeTokenDeregisteredIterator is returned from FilterTokenDeregistered and is used to iterate over the raw logs and unpacked data for TokenDeregistered events raised by the ExtBridge contract.
 20106  type ExtBridgeTokenDeregisteredIterator struct {
 20107  	Event *ExtBridgeTokenDeregistered // Event containing the contract specifics and raw log
 20108  
 20109  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 20110  	event    string              // Event name to use for unpacking event data
 20111  
 20112  	logs chan types.Log      // Log channel receiving the found contract events
 20113  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 20114  	done bool                // Whether the subscription completed delivering logs
 20115  	fail error               // Occurred error to stop iteration
 20116  }
 20117  
 20118  // Next advances the iterator to the subsequent event, returning whether there
 20119  // are any more events found. In case of a retrieval or parsing error, false is
 20120  // returned and Error() can be queried for the exact failure.
 20121  func (it *ExtBridgeTokenDeregisteredIterator) Next() bool {
 20122  	// If the iterator failed, stop iterating
 20123  	if it.fail != nil {
 20124  		return false
 20125  	}
 20126  	// If the iterator completed, deliver directly whatever's available
 20127  	if it.done {
 20128  		select {
 20129  		case log := <-it.logs:
 20130  			it.Event = new(ExtBridgeTokenDeregistered)
 20131  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20132  				it.fail = err
 20133  				return false
 20134  			}
 20135  			it.Event.Raw = log
 20136  			return true
 20137  
 20138  		default:
 20139  			return false
 20140  		}
 20141  	}
 20142  	// Iterator still in progress, wait for either a data or an error event
 20143  	select {
 20144  	case log := <-it.logs:
 20145  		it.Event = new(ExtBridgeTokenDeregistered)
 20146  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20147  			it.fail = err
 20148  			return false
 20149  		}
 20150  		it.Event.Raw = log
 20151  		return true
 20152  
 20153  	case err := <-it.sub.Err():
 20154  		it.done = true
 20155  		it.fail = err
 20156  		return it.Next()
 20157  	}
 20158  }
 20159  
 20160  // Error returns any retrieval or parsing error occurred during filtering.
 20161  func (it *ExtBridgeTokenDeregisteredIterator) Error() error {
 20162  	return it.fail
 20163  }
 20164  
 20165  // Close terminates the iteration process, releasing any pending underlying
 20166  // resources.
 20167  func (it *ExtBridgeTokenDeregisteredIterator) Close() error {
 20168  	it.sub.Unsubscribe()
 20169  	return nil
 20170  }
 20171  
 20172  // ExtBridgeTokenDeregistered represents a TokenDeregistered event raised by the ExtBridge contract.
 20173  type ExtBridgeTokenDeregistered struct {
 20174  	Token common.Address
 20175  	Raw   types.Log // Blockchain specific contextual infos
 20176  }
 20177  
 20178  // FilterTokenDeregistered is a free log retrieval operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 20179  //
 20180  // Solidity: event TokenDeregistered(address indexed token)
 20181  func (_ExtBridge *ExtBridgeFilterer) FilterTokenDeregistered(opts *bind.FilterOpts, token []common.Address) (*ExtBridgeTokenDeregisteredIterator, error) {
 20182  
 20183  	var tokenRule []interface{}
 20184  	for _, tokenItem := range token {
 20185  		tokenRule = append(tokenRule, tokenItem)
 20186  	}
 20187  
 20188  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "TokenDeregistered", tokenRule)
 20189  	if err != nil {
 20190  		return nil, err
 20191  	}
 20192  	return &ExtBridgeTokenDeregisteredIterator{contract: _ExtBridge.contract, event: "TokenDeregistered", logs: logs, sub: sub}, nil
 20193  }
 20194  
 20195  // WatchTokenDeregistered is a free log subscription operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 20196  //
 20197  // Solidity: event TokenDeregistered(address indexed token)
 20198  func (_ExtBridge *ExtBridgeFilterer) WatchTokenDeregistered(opts *bind.WatchOpts, sink chan<- *ExtBridgeTokenDeregistered, token []common.Address) (event.Subscription, error) {
 20199  
 20200  	var tokenRule []interface{}
 20201  	for _, tokenItem := range token {
 20202  		tokenRule = append(tokenRule, tokenItem)
 20203  	}
 20204  
 20205  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "TokenDeregistered", tokenRule)
 20206  	if err != nil {
 20207  		return nil, err
 20208  	}
 20209  	return event.NewSubscription(func(quit <-chan struct{}) error {
 20210  		defer sub.Unsubscribe()
 20211  		for {
 20212  			select {
 20213  			case log := <-logs:
 20214  				// New log arrived, parse the event and forward to the user
 20215  				event := new(ExtBridgeTokenDeregistered)
 20216  				if err := _ExtBridge.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
 20217  					return err
 20218  				}
 20219  				event.Raw = log
 20220  
 20221  				select {
 20222  				case sink <- event:
 20223  				case err := <-sub.Err():
 20224  					return err
 20225  				case <-quit:
 20226  					return nil
 20227  				}
 20228  			case err := <-sub.Err():
 20229  				return err
 20230  			case <-quit:
 20231  				return nil
 20232  			}
 20233  		}
 20234  	}), nil
 20235  }
 20236  
 20237  // ParseTokenDeregistered is a log parse operation binding the contract event 0x1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b6.
 20238  //
 20239  // Solidity: event TokenDeregistered(address indexed token)
 20240  func (_ExtBridge *ExtBridgeFilterer) ParseTokenDeregistered(log types.Log) (*ExtBridgeTokenDeregistered, error) {
 20241  	event := new(ExtBridgeTokenDeregistered)
 20242  	if err := _ExtBridge.contract.UnpackLog(event, "TokenDeregistered", log); err != nil {
 20243  		return nil, err
 20244  	}
 20245  	return event, nil
 20246  }
 20247  
 20248  // ExtBridgeTokenLockedIterator is returned from FilterTokenLocked and is used to iterate over the raw logs and unpacked data for TokenLocked events raised by the ExtBridge contract.
 20249  type ExtBridgeTokenLockedIterator struct {
 20250  	Event *ExtBridgeTokenLocked // Event containing the contract specifics and raw log
 20251  
 20252  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 20253  	event    string              // Event name to use for unpacking event data
 20254  
 20255  	logs chan types.Log      // Log channel receiving the found contract events
 20256  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 20257  	done bool                // Whether the subscription completed delivering logs
 20258  	fail error               // Occurred error to stop iteration
 20259  }
 20260  
 20261  // Next advances the iterator to the subsequent event, returning whether there
 20262  // are any more events found. In case of a retrieval or parsing error, false is
 20263  // returned and Error() can be queried for the exact failure.
 20264  func (it *ExtBridgeTokenLockedIterator) Next() bool {
 20265  	// If the iterator failed, stop iterating
 20266  	if it.fail != nil {
 20267  		return false
 20268  	}
 20269  	// If the iterator completed, deliver directly whatever's available
 20270  	if it.done {
 20271  		select {
 20272  		case log := <-it.logs:
 20273  			it.Event = new(ExtBridgeTokenLocked)
 20274  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20275  				it.fail = err
 20276  				return false
 20277  			}
 20278  			it.Event.Raw = log
 20279  			return true
 20280  
 20281  		default:
 20282  			return false
 20283  		}
 20284  	}
 20285  	// Iterator still in progress, wait for either a data or an error event
 20286  	select {
 20287  	case log := <-it.logs:
 20288  		it.Event = new(ExtBridgeTokenLocked)
 20289  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20290  			it.fail = err
 20291  			return false
 20292  		}
 20293  		it.Event.Raw = log
 20294  		return true
 20295  
 20296  	case err := <-it.sub.Err():
 20297  		it.done = true
 20298  		it.fail = err
 20299  		return it.Next()
 20300  	}
 20301  }
 20302  
 20303  // Error returns any retrieval or parsing error occurred during filtering.
 20304  func (it *ExtBridgeTokenLockedIterator) Error() error {
 20305  	return it.fail
 20306  }
 20307  
 20308  // Close terminates the iteration process, releasing any pending underlying
 20309  // resources.
 20310  func (it *ExtBridgeTokenLockedIterator) Close() error {
 20311  	it.sub.Unsubscribe()
 20312  	return nil
 20313  }
 20314  
 20315  // ExtBridgeTokenLocked represents a TokenLocked event raised by the ExtBridge contract.
 20316  type ExtBridgeTokenLocked struct {
 20317  	Token common.Address
 20318  	Raw   types.Log // Blockchain specific contextual infos
 20319  }
 20320  
 20321  // FilterTokenLocked is a free log retrieval operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 20322  //
 20323  // Solidity: event TokenLocked(address indexed token)
 20324  func (_ExtBridge *ExtBridgeFilterer) FilterTokenLocked(opts *bind.FilterOpts, token []common.Address) (*ExtBridgeTokenLockedIterator, error) {
 20325  
 20326  	var tokenRule []interface{}
 20327  	for _, tokenItem := range token {
 20328  		tokenRule = append(tokenRule, tokenItem)
 20329  	}
 20330  
 20331  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "TokenLocked", tokenRule)
 20332  	if err != nil {
 20333  		return nil, err
 20334  	}
 20335  	return &ExtBridgeTokenLockedIterator{contract: _ExtBridge.contract, event: "TokenLocked", logs: logs, sub: sub}, nil
 20336  }
 20337  
 20338  // WatchTokenLocked is a free log subscription operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 20339  //
 20340  // Solidity: event TokenLocked(address indexed token)
 20341  func (_ExtBridge *ExtBridgeFilterer) WatchTokenLocked(opts *bind.WatchOpts, sink chan<- *ExtBridgeTokenLocked, token []common.Address) (event.Subscription, error) {
 20342  
 20343  	var tokenRule []interface{}
 20344  	for _, tokenItem := range token {
 20345  		tokenRule = append(tokenRule, tokenItem)
 20346  	}
 20347  
 20348  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "TokenLocked", tokenRule)
 20349  	if err != nil {
 20350  		return nil, err
 20351  	}
 20352  	return event.NewSubscription(func(quit <-chan struct{}) error {
 20353  		defer sub.Unsubscribe()
 20354  		for {
 20355  			select {
 20356  			case log := <-logs:
 20357  				// New log arrived, parse the event and forward to the user
 20358  				event := new(ExtBridgeTokenLocked)
 20359  				if err := _ExtBridge.contract.UnpackLog(event, "TokenLocked", log); err != nil {
 20360  					return err
 20361  				}
 20362  				event.Raw = log
 20363  
 20364  				select {
 20365  				case sink <- event:
 20366  				case err := <-sub.Err():
 20367  					return err
 20368  				case <-quit:
 20369  					return nil
 20370  				}
 20371  			case err := <-sub.Err():
 20372  				return err
 20373  			case <-quit:
 20374  				return nil
 20375  			}
 20376  		}
 20377  	}), nil
 20378  }
 20379  
 20380  // ParseTokenLocked is a log parse operation binding the contract event 0xca1b0a14e18ada4c44846768dd186e35630cdc5cfeaca83c404ae4acaafbecd7.
 20381  //
 20382  // Solidity: event TokenLocked(address indexed token)
 20383  func (_ExtBridge *ExtBridgeFilterer) ParseTokenLocked(log types.Log) (*ExtBridgeTokenLocked, error) {
 20384  	event := new(ExtBridgeTokenLocked)
 20385  	if err := _ExtBridge.contract.UnpackLog(event, "TokenLocked", log); err != nil {
 20386  		return nil, err
 20387  	}
 20388  	return event, nil
 20389  }
 20390  
 20391  // ExtBridgeTokenRegisteredIterator is returned from FilterTokenRegistered and is used to iterate over the raw logs and unpacked data for TokenRegistered events raised by the ExtBridge contract.
 20392  type ExtBridgeTokenRegisteredIterator struct {
 20393  	Event *ExtBridgeTokenRegistered // Event containing the contract specifics and raw log
 20394  
 20395  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 20396  	event    string              // Event name to use for unpacking event data
 20397  
 20398  	logs chan types.Log      // Log channel receiving the found contract events
 20399  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 20400  	done bool                // Whether the subscription completed delivering logs
 20401  	fail error               // Occurred error to stop iteration
 20402  }
 20403  
 20404  // Next advances the iterator to the subsequent event, returning whether there
 20405  // are any more events found. In case of a retrieval or parsing error, false is
 20406  // returned and Error() can be queried for the exact failure.
 20407  func (it *ExtBridgeTokenRegisteredIterator) Next() bool {
 20408  	// If the iterator failed, stop iterating
 20409  	if it.fail != nil {
 20410  		return false
 20411  	}
 20412  	// If the iterator completed, deliver directly whatever's available
 20413  	if it.done {
 20414  		select {
 20415  		case log := <-it.logs:
 20416  			it.Event = new(ExtBridgeTokenRegistered)
 20417  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20418  				it.fail = err
 20419  				return false
 20420  			}
 20421  			it.Event.Raw = log
 20422  			return true
 20423  
 20424  		default:
 20425  			return false
 20426  		}
 20427  	}
 20428  	// Iterator still in progress, wait for either a data or an error event
 20429  	select {
 20430  	case log := <-it.logs:
 20431  		it.Event = new(ExtBridgeTokenRegistered)
 20432  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20433  			it.fail = err
 20434  			return false
 20435  		}
 20436  		it.Event.Raw = log
 20437  		return true
 20438  
 20439  	case err := <-it.sub.Err():
 20440  		it.done = true
 20441  		it.fail = err
 20442  		return it.Next()
 20443  	}
 20444  }
 20445  
 20446  // Error returns any retrieval or parsing error occurred during filtering.
 20447  func (it *ExtBridgeTokenRegisteredIterator) Error() error {
 20448  	return it.fail
 20449  }
 20450  
 20451  // Close terminates the iteration process, releasing any pending underlying
 20452  // resources.
 20453  func (it *ExtBridgeTokenRegisteredIterator) Close() error {
 20454  	it.sub.Unsubscribe()
 20455  	return nil
 20456  }
 20457  
 20458  // ExtBridgeTokenRegistered represents a TokenRegistered event raised by the ExtBridge contract.
 20459  type ExtBridgeTokenRegistered struct {
 20460  	Token common.Address
 20461  	Raw   types.Log // Blockchain specific contextual infos
 20462  }
 20463  
 20464  // FilterTokenRegistered is a free log retrieval operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 20465  //
 20466  // Solidity: event TokenRegistered(address indexed token)
 20467  func (_ExtBridge *ExtBridgeFilterer) FilterTokenRegistered(opts *bind.FilterOpts, token []common.Address) (*ExtBridgeTokenRegisteredIterator, error) {
 20468  
 20469  	var tokenRule []interface{}
 20470  	for _, tokenItem := range token {
 20471  		tokenRule = append(tokenRule, tokenItem)
 20472  	}
 20473  
 20474  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "TokenRegistered", tokenRule)
 20475  	if err != nil {
 20476  		return nil, err
 20477  	}
 20478  	return &ExtBridgeTokenRegisteredIterator{contract: _ExtBridge.contract, event: "TokenRegistered", logs: logs, sub: sub}, nil
 20479  }
 20480  
 20481  // WatchTokenRegistered is a free log subscription operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 20482  //
 20483  // Solidity: event TokenRegistered(address indexed token)
 20484  func (_ExtBridge *ExtBridgeFilterer) WatchTokenRegistered(opts *bind.WatchOpts, sink chan<- *ExtBridgeTokenRegistered, token []common.Address) (event.Subscription, error) {
 20485  
 20486  	var tokenRule []interface{}
 20487  	for _, tokenItem := range token {
 20488  		tokenRule = append(tokenRule, tokenItem)
 20489  	}
 20490  
 20491  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "TokenRegistered", tokenRule)
 20492  	if err != nil {
 20493  		return nil, err
 20494  	}
 20495  	return event.NewSubscription(func(quit <-chan struct{}) error {
 20496  		defer sub.Unsubscribe()
 20497  		for {
 20498  			select {
 20499  			case log := <-logs:
 20500  				// New log arrived, parse the event and forward to the user
 20501  				event := new(ExtBridgeTokenRegistered)
 20502  				if err := _ExtBridge.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
 20503  					return err
 20504  				}
 20505  				event.Raw = log
 20506  
 20507  				select {
 20508  				case sink <- event:
 20509  				case err := <-sub.Err():
 20510  					return err
 20511  				case <-quit:
 20512  					return nil
 20513  				}
 20514  			case err := <-sub.Err():
 20515  				return err
 20516  			case <-quit:
 20517  				return nil
 20518  			}
 20519  		}
 20520  	}), nil
 20521  }
 20522  
 20523  // ParseTokenRegistered is a log parse operation binding the contract event 0x158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d.
 20524  //
 20525  // Solidity: event TokenRegistered(address indexed token)
 20526  func (_ExtBridge *ExtBridgeFilterer) ParseTokenRegistered(log types.Log) (*ExtBridgeTokenRegistered, error) {
 20527  	event := new(ExtBridgeTokenRegistered)
 20528  	if err := _ExtBridge.contract.UnpackLog(event, "TokenRegistered", log); err != nil {
 20529  		return nil, err
 20530  	}
 20531  	return event, nil
 20532  }
 20533  
 20534  // ExtBridgeTokenUnlockedIterator is returned from FilterTokenUnlocked and is used to iterate over the raw logs and unpacked data for TokenUnlocked events raised by the ExtBridge contract.
 20535  type ExtBridgeTokenUnlockedIterator struct {
 20536  	Event *ExtBridgeTokenUnlocked // Event containing the contract specifics and raw log
 20537  
 20538  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 20539  	event    string              // Event name to use for unpacking event data
 20540  
 20541  	logs chan types.Log      // Log channel receiving the found contract events
 20542  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 20543  	done bool                // Whether the subscription completed delivering logs
 20544  	fail error               // Occurred error to stop iteration
 20545  }
 20546  
 20547  // Next advances the iterator to the subsequent event, returning whether there
 20548  // are any more events found. In case of a retrieval or parsing error, false is
 20549  // returned and Error() can be queried for the exact failure.
 20550  func (it *ExtBridgeTokenUnlockedIterator) Next() bool {
 20551  	// If the iterator failed, stop iterating
 20552  	if it.fail != nil {
 20553  		return false
 20554  	}
 20555  	// If the iterator completed, deliver directly whatever's available
 20556  	if it.done {
 20557  		select {
 20558  		case log := <-it.logs:
 20559  			it.Event = new(ExtBridgeTokenUnlocked)
 20560  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20561  				it.fail = err
 20562  				return false
 20563  			}
 20564  			it.Event.Raw = log
 20565  			return true
 20566  
 20567  		default:
 20568  			return false
 20569  		}
 20570  	}
 20571  	// Iterator still in progress, wait for either a data or an error event
 20572  	select {
 20573  	case log := <-it.logs:
 20574  		it.Event = new(ExtBridgeTokenUnlocked)
 20575  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 20576  			it.fail = err
 20577  			return false
 20578  		}
 20579  		it.Event.Raw = log
 20580  		return true
 20581  
 20582  	case err := <-it.sub.Err():
 20583  		it.done = true
 20584  		it.fail = err
 20585  		return it.Next()
 20586  	}
 20587  }
 20588  
 20589  // Error returns any retrieval or parsing error occurred during filtering.
 20590  func (it *ExtBridgeTokenUnlockedIterator) Error() error {
 20591  	return it.fail
 20592  }
 20593  
 20594  // Close terminates the iteration process, releasing any pending underlying
 20595  // resources.
 20596  func (it *ExtBridgeTokenUnlockedIterator) Close() error {
 20597  	it.sub.Unsubscribe()
 20598  	return nil
 20599  }
 20600  
 20601  // ExtBridgeTokenUnlocked represents a TokenUnlocked event raised by the ExtBridge contract.
 20602  type ExtBridgeTokenUnlocked struct {
 20603  	Token common.Address
 20604  	Raw   types.Log // Blockchain specific contextual infos
 20605  }
 20606  
 20607  // FilterTokenUnlocked is a free log retrieval operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 20608  //
 20609  // Solidity: event TokenUnlocked(address indexed token)
 20610  func (_ExtBridge *ExtBridgeFilterer) FilterTokenUnlocked(opts *bind.FilterOpts, token []common.Address) (*ExtBridgeTokenUnlockedIterator, error) {
 20611  
 20612  	var tokenRule []interface{}
 20613  	for _, tokenItem := range token {
 20614  		tokenRule = append(tokenRule, tokenItem)
 20615  	}
 20616  
 20617  	logs, sub, err := _ExtBridge.contract.FilterLogs(opts, "TokenUnlocked", tokenRule)
 20618  	if err != nil {
 20619  		return nil, err
 20620  	}
 20621  	return &ExtBridgeTokenUnlockedIterator{contract: _ExtBridge.contract, event: "TokenUnlocked", logs: logs, sub: sub}, nil
 20622  }
 20623  
 20624  // WatchTokenUnlocked is a free log subscription operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 20625  //
 20626  // Solidity: event TokenUnlocked(address indexed token)
 20627  func (_ExtBridge *ExtBridgeFilterer) WatchTokenUnlocked(opts *bind.WatchOpts, sink chan<- *ExtBridgeTokenUnlocked, token []common.Address) (event.Subscription, error) {
 20628  
 20629  	var tokenRule []interface{}
 20630  	for _, tokenItem := range token {
 20631  		tokenRule = append(tokenRule, tokenItem)
 20632  	}
 20633  
 20634  	logs, sub, err := _ExtBridge.contract.WatchLogs(opts, "TokenUnlocked", tokenRule)
 20635  	if err != nil {
 20636  		return nil, err
 20637  	}
 20638  	return event.NewSubscription(func(quit <-chan struct{}) error {
 20639  		defer sub.Unsubscribe()
 20640  		for {
 20641  			select {
 20642  			case log := <-logs:
 20643  				// New log arrived, parse the event and forward to the user
 20644  				event := new(ExtBridgeTokenUnlocked)
 20645  				if err := _ExtBridge.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
 20646  					return err
 20647  				}
 20648  				event.Raw = log
 20649  
 20650  				select {
 20651  				case sink <- event:
 20652  				case err := <-sub.Err():
 20653  					return err
 20654  				case <-quit:
 20655  					return nil
 20656  				}
 20657  			case err := <-sub.Err():
 20658  				return err
 20659  			case <-quit:
 20660  				return nil
 20661  			}
 20662  		}
 20663  	}), nil
 20664  }
 20665  
 20666  // ParseTokenUnlocked is a log parse operation binding the contract event 0x81ec08d3372506e176c49e626d8beb7e091712ef92908a130f4ccc6524fe2eec.
 20667  //
 20668  // Solidity: event TokenUnlocked(address indexed token)
 20669  func (_ExtBridge *ExtBridgeFilterer) ParseTokenUnlocked(log types.Log) (*ExtBridgeTokenUnlocked, error) {
 20670  	event := new(ExtBridgeTokenUnlocked)
 20671  	if err := _ExtBridge.contract.UnpackLog(event, "TokenUnlocked", log); err != nil {
 20672  		return nil, err
 20673  	}
 20674  	return event, nil
 20675  }
 20676  
 20677  // IERC165ABI is the input ABI used to generate the binding from.
 20678  const IERC165ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
 20679  
 20680  // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 20681  const IERC165BinRuntime = ``
 20682  
 20683  // IERC165FuncSigs maps the 4-byte function signature to its string representation.
 20684  var IERC165FuncSigs = map[string]string{
 20685  	"01ffc9a7": "supportsInterface(bytes4)",
 20686  }
 20687  
 20688  // IERC165 is an auto generated Go binding around a Klaytn contract.
 20689  type IERC165 struct {
 20690  	IERC165Caller     // Read-only binding to the contract
 20691  	IERC165Transactor // Write-only binding to the contract
 20692  	IERC165Filterer   // Log filterer for contract events
 20693  }
 20694  
 20695  // IERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
 20696  type IERC165Caller struct {
 20697  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 20698  }
 20699  
 20700  // IERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
 20701  type IERC165Transactor struct {
 20702  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 20703  }
 20704  
 20705  // IERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 20706  type IERC165Filterer struct {
 20707  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 20708  }
 20709  
 20710  // IERC165Session is an auto generated Go binding around a Klaytn contract,
 20711  // with pre-set call and transact options.
 20712  type IERC165Session struct {
 20713  	Contract     *IERC165          // Generic contract binding to set the session for
 20714  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 20715  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 20716  }
 20717  
 20718  // IERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 20719  // with pre-set call options.
 20720  type IERC165CallerSession struct {
 20721  	Contract *IERC165Caller // Generic contract caller binding to set the session for
 20722  	CallOpts bind.CallOpts  // Call options to use throughout this session
 20723  }
 20724  
 20725  // IERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 20726  // with pre-set transact options.
 20727  type IERC165TransactorSession struct {
 20728  	Contract     *IERC165Transactor // Generic contract transactor binding to set the session for
 20729  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
 20730  }
 20731  
 20732  // IERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
 20733  type IERC165Raw struct {
 20734  	Contract *IERC165 // Generic contract binding to access the raw methods on
 20735  }
 20736  
 20737  // IERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 20738  type IERC165CallerRaw struct {
 20739  	Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on
 20740  }
 20741  
 20742  // IERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 20743  type IERC165TransactorRaw struct {
 20744  	Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on
 20745  }
 20746  
 20747  // NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract.
 20748  func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) {
 20749  	contract, err := bindIERC165(address, backend, backend, backend)
 20750  	if err != nil {
 20751  		return nil, err
 20752  	}
 20753  	return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil
 20754  }
 20755  
 20756  // NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract.
 20757  func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) {
 20758  	contract, err := bindIERC165(address, caller, nil, nil)
 20759  	if err != nil {
 20760  		return nil, err
 20761  	}
 20762  	return &IERC165Caller{contract: contract}, nil
 20763  }
 20764  
 20765  // NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract.
 20766  func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) {
 20767  	contract, err := bindIERC165(address, nil, transactor, nil)
 20768  	if err != nil {
 20769  		return nil, err
 20770  	}
 20771  	return &IERC165Transactor{contract: contract}, nil
 20772  }
 20773  
 20774  // NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract.
 20775  func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) {
 20776  	contract, err := bindIERC165(address, nil, nil, filterer)
 20777  	if err != nil {
 20778  		return nil, err
 20779  	}
 20780  	return &IERC165Filterer{contract: contract}, nil
 20781  }
 20782  
 20783  // bindIERC165 binds a generic wrapper to an already deployed contract.
 20784  func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 20785  	parsed, err := abi.JSON(strings.NewReader(IERC165ABI))
 20786  	if err != nil {
 20787  		return nil, err
 20788  	}
 20789  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 20790  }
 20791  
 20792  // Call invokes the (constant) contract method with params as input values and
 20793  // sets the output to result. The result type might be a single field for simple
 20794  // returns, a slice of interfaces for anonymous returns and a struct for named
 20795  // returns.
 20796  func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 20797  	return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...)
 20798  }
 20799  
 20800  // Transfer initiates a plain transaction to move funds to the contract, calling
 20801  // its default method if one is available.
 20802  func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 20803  	return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts)
 20804  }
 20805  
 20806  // Transact invokes the (paid) contract method with params as input values.
 20807  func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 20808  	return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...)
 20809  }
 20810  
 20811  // Call invokes the (constant) contract method with params as input values and
 20812  // sets the output to result. The result type might be a single field for simple
 20813  // returns, a slice of interfaces for anonymous returns and a struct for named
 20814  // returns.
 20815  func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 20816  	return _IERC165.Contract.contract.Call(opts, result, method, params...)
 20817  }
 20818  
 20819  // Transfer initiates a plain transaction to move funds to the contract, calling
 20820  // its default method if one is available.
 20821  func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 20822  	return _IERC165.Contract.contract.Transfer(opts)
 20823  }
 20824  
 20825  // Transact invokes the (paid) contract method with params as input values.
 20826  func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 20827  	return _IERC165.Contract.contract.Transact(opts, method, params...)
 20828  }
 20829  
 20830  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 20831  //
 20832  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 20833  func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 20834  	var (
 20835  		ret0 = new(bool)
 20836  	)
 20837  	out := ret0
 20838  	err := _IERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
 20839  	return *ret0, err
 20840  }
 20841  
 20842  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 20843  //
 20844  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 20845  func (_IERC165 *IERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
 20846  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
 20847  }
 20848  
 20849  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 20850  //
 20851  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 20852  func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 20853  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
 20854  }
 20855  
 20856  // IERC20ABI is the input ABI used to generate the binding from.
 20857  const IERC20ABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"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\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"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\":\"\",\"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\"}]"
 20858  
 20859  // IERC20BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 20860  const IERC20BinRuntime = ``
 20861  
 20862  // IERC20FuncSigs maps the 4-byte function signature to its string representation.
 20863  var IERC20FuncSigs = map[string]string{
 20864  	"dd62ed3e": "allowance(address,address)",
 20865  	"095ea7b3": "approve(address,uint256)",
 20866  	"70a08231": "balanceOf(address)",
 20867  	"18160ddd": "totalSupply()",
 20868  	"a9059cbb": "transfer(address,uint256)",
 20869  	"23b872dd": "transferFrom(address,address,uint256)",
 20870  }
 20871  
 20872  // IERC20 is an auto generated Go binding around a Klaytn contract.
 20873  type IERC20 struct {
 20874  	IERC20Caller     // Read-only binding to the contract
 20875  	IERC20Transactor // Write-only binding to the contract
 20876  	IERC20Filterer   // Log filterer for contract events
 20877  }
 20878  
 20879  // IERC20Caller is an auto generated read-only Go binding around a Klaytn contract.
 20880  type IERC20Caller struct {
 20881  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 20882  }
 20883  
 20884  // IERC20Transactor is an auto generated write-only Go binding around a Klaytn contract.
 20885  type IERC20Transactor struct {
 20886  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 20887  }
 20888  
 20889  // IERC20Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 20890  type IERC20Filterer struct {
 20891  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 20892  }
 20893  
 20894  // IERC20Session is an auto generated Go binding around a Klaytn contract,
 20895  // with pre-set call and transact options.
 20896  type IERC20Session struct {
 20897  	Contract     *IERC20           // Generic contract binding to set the session for
 20898  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 20899  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 20900  }
 20901  
 20902  // IERC20CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 20903  // with pre-set call options.
 20904  type IERC20CallerSession struct {
 20905  	Contract *IERC20Caller // Generic contract caller binding to set the session for
 20906  	CallOpts bind.CallOpts // Call options to use throughout this session
 20907  }
 20908  
 20909  // IERC20TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 20910  // with pre-set transact options.
 20911  type IERC20TransactorSession struct {
 20912  	Contract     *IERC20Transactor // Generic contract transactor binding to set the session for
 20913  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 20914  }
 20915  
 20916  // IERC20Raw is an auto generated low-level Go binding around a Klaytn contract.
 20917  type IERC20Raw struct {
 20918  	Contract *IERC20 // Generic contract binding to access the raw methods on
 20919  }
 20920  
 20921  // IERC20CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 20922  type IERC20CallerRaw struct {
 20923  	Contract *IERC20Caller // Generic read-only contract binding to access the raw methods on
 20924  }
 20925  
 20926  // IERC20TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 20927  type IERC20TransactorRaw struct {
 20928  	Contract *IERC20Transactor // Generic write-only contract binding to access the raw methods on
 20929  }
 20930  
 20931  // NewIERC20 creates a new instance of IERC20, bound to a specific deployed contract.
 20932  func NewIERC20(address common.Address, backend bind.ContractBackend) (*IERC20, error) {
 20933  	contract, err := bindIERC20(address, backend, backend, backend)
 20934  	if err != nil {
 20935  		return nil, err
 20936  	}
 20937  	return &IERC20{IERC20Caller: IERC20Caller{contract: contract}, IERC20Transactor: IERC20Transactor{contract: contract}, IERC20Filterer: IERC20Filterer{contract: contract}}, nil
 20938  }
 20939  
 20940  // NewIERC20Caller creates a new read-only instance of IERC20, bound to a specific deployed contract.
 20941  func NewIERC20Caller(address common.Address, caller bind.ContractCaller) (*IERC20Caller, error) {
 20942  	contract, err := bindIERC20(address, caller, nil, nil)
 20943  	if err != nil {
 20944  		return nil, err
 20945  	}
 20946  	return &IERC20Caller{contract: contract}, nil
 20947  }
 20948  
 20949  // NewIERC20Transactor creates a new write-only instance of IERC20, bound to a specific deployed contract.
 20950  func NewIERC20Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC20Transactor, error) {
 20951  	contract, err := bindIERC20(address, nil, transactor, nil)
 20952  	if err != nil {
 20953  		return nil, err
 20954  	}
 20955  	return &IERC20Transactor{contract: contract}, nil
 20956  }
 20957  
 20958  // NewIERC20Filterer creates a new log filterer instance of IERC20, bound to a specific deployed contract.
 20959  func NewIERC20Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC20Filterer, error) {
 20960  	contract, err := bindIERC20(address, nil, nil, filterer)
 20961  	if err != nil {
 20962  		return nil, err
 20963  	}
 20964  	return &IERC20Filterer{contract: contract}, nil
 20965  }
 20966  
 20967  // bindIERC20 binds a generic wrapper to an already deployed contract.
 20968  func bindIERC20(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 20969  	parsed, err := abi.JSON(strings.NewReader(IERC20ABI))
 20970  	if err != nil {
 20971  		return nil, err
 20972  	}
 20973  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 20974  }
 20975  
 20976  // Call invokes the (constant) contract method with params as input values and
 20977  // sets the output to result. The result type might be a single field for simple
 20978  // returns, a slice of interfaces for anonymous returns and a struct for named
 20979  // returns.
 20980  func (_IERC20 *IERC20Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 20981  	return _IERC20.Contract.IERC20Caller.contract.Call(opts, result, method, params...)
 20982  }
 20983  
 20984  // Transfer initiates a plain transaction to move funds to the contract, calling
 20985  // its default method if one is available.
 20986  func (_IERC20 *IERC20Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 20987  	return _IERC20.Contract.IERC20Transactor.contract.Transfer(opts)
 20988  }
 20989  
 20990  // Transact invokes the (paid) contract method with params as input values.
 20991  func (_IERC20 *IERC20Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 20992  	return _IERC20.Contract.IERC20Transactor.contract.Transact(opts, method, params...)
 20993  }
 20994  
 20995  // Call invokes the (constant) contract method with params as input values and
 20996  // sets the output to result. The result type might be a single field for simple
 20997  // returns, a slice of interfaces for anonymous returns and a struct for named
 20998  // returns.
 20999  func (_IERC20 *IERC20CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 21000  	return _IERC20.Contract.contract.Call(opts, result, method, params...)
 21001  }
 21002  
 21003  // Transfer initiates a plain transaction to move funds to the contract, calling
 21004  // its default method if one is available.
 21005  func (_IERC20 *IERC20TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 21006  	return _IERC20.Contract.contract.Transfer(opts)
 21007  }
 21008  
 21009  // Transact invokes the (paid) contract method with params as input values.
 21010  func (_IERC20 *IERC20TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 21011  	return _IERC20.Contract.contract.Transact(opts, method, params...)
 21012  }
 21013  
 21014  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 21015  //
 21016  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 21017  func (_IERC20 *IERC20Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) {
 21018  	var (
 21019  		ret0 = new(*big.Int)
 21020  	)
 21021  	out := ret0
 21022  	err := _IERC20.contract.Call(opts, out, "allowance", owner, spender)
 21023  	return *ret0, err
 21024  }
 21025  
 21026  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 21027  //
 21028  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 21029  func (_IERC20 *IERC20Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 21030  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
 21031  }
 21032  
 21033  // Allowance is a free data retrieval call binding the contract method 0xdd62ed3e.
 21034  //
 21035  // Solidity: function allowance(address owner, address spender) view returns(uint256)
 21036  func (_IERC20 *IERC20CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) {
 21037  	return _IERC20.Contract.Allowance(&_IERC20.CallOpts, owner, spender)
 21038  }
 21039  
 21040  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 21041  //
 21042  // Solidity: function balanceOf(address account) view returns(uint256)
 21043  func (_IERC20 *IERC20Caller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) {
 21044  	var (
 21045  		ret0 = new(*big.Int)
 21046  	)
 21047  	out := ret0
 21048  	err := _IERC20.contract.Call(opts, out, "balanceOf", account)
 21049  	return *ret0, err
 21050  }
 21051  
 21052  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 21053  //
 21054  // Solidity: function balanceOf(address account) view returns(uint256)
 21055  func (_IERC20 *IERC20Session) BalanceOf(account common.Address) (*big.Int, error) {
 21056  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
 21057  }
 21058  
 21059  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 21060  //
 21061  // Solidity: function balanceOf(address account) view returns(uint256)
 21062  func (_IERC20 *IERC20CallerSession) BalanceOf(account common.Address) (*big.Int, error) {
 21063  	return _IERC20.Contract.BalanceOf(&_IERC20.CallOpts, account)
 21064  }
 21065  
 21066  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 21067  //
 21068  // Solidity: function totalSupply() view returns(uint256)
 21069  func (_IERC20 *IERC20Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 21070  	var (
 21071  		ret0 = new(*big.Int)
 21072  	)
 21073  	out := ret0
 21074  	err := _IERC20.contract.Call(opts, out, "totalSupply")
 21075  	return *ret0, err
 21076  }
 21077  
 21078  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 21079  //
 21080  // Solidity: function totalSupply() view returns(uint256)
 21081  func (_IERC20 *IERC20Session) TotalSupply() (*big.Int, error) {
 21082  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
 21083  }
 21084  
 21085  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 21086  //
 21087  // Solidity: function totalSupply() view returns(uint256)
 21088  func (_IERC20 *IERC20CallerSession) TotalSupply() (*big.Int, error) {
 21089  	return _IERC20.Contract.TotalSupply(&_IERC20.CallOpts)
 21090  }
 21091  
 21092  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 21093  //
 21094  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 21095  func (_IERC20 *IERC20Transactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) {
 21096  	return _IERC20.contract.Transact(opts, "approve", spender, amount)
 21097  }
 21098  
 21099  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 21100  //
 21101  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 21102  func (_IERC20 *IERC20Session) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 21103  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
 21104  }
 21105  
 21106  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 21107  //
 21108  // Solidity: function approve(address spender, uint256 amount) returns(bool)
 21109  func (_IERC20 *IERC20TransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) {
 21110  	return _IERC20.Contract.Approve(&_IERC20.TransactOpts, spender, amount)
 21111  }
 21112  
 21113  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 21114  //
 21115  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 21116  func (_IERC20 *IERC20Transactor) Transfer(opts *bind.TransactOpts, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 21117  	return _IERC20.contract.Transact(opts, "transfer", recipient, amount)
 21118  }
 21119  
 21120  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 21121  //
 21122  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 21123  func (_IERC20 *IERC20Session) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 21124  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
 21125  }
 21126  
 21127  // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb.
 21128  //
 21129  // Solidity: function transfer(address recipient, uint256 amount) returns(bool)
 21130  func (_IERC20 *IERC20TransactorSession) Transfer(recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 21131  	return _IERC20.Contract.Transfer(&_IERC20.TransactOpts, recipient, amount)
 21132  }
 21133  
 21134  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 21135  //
 21136  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 21137  func (_IERC20 *IERC20Transactor) TransferFrom(opts *bind.TransactOpts, sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 21138  	return _IERC20.contract.Transact(opts, "transferFrom", sender, recipient, amount)
 21139  }
 21140  
 21141  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 21142  //
 21143  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 21144  func (_IERC20 *IERC20Session) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 21145  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
 21146  }
 21147  
 21148  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 21149  //
 21150  // Solidity: function transferFrom(address sender, address recipient, uint256 amount) returns(bool)
 21151  func (_IERC20 *IERC20TransactorSession) TransferFrom(sender common.Address, recipient common.Address, amount *big.Int) (*types.Transaction, error) {
 21152  	return _IERC20.Contract.TransferFrom(&_IERC20.TransactOpts, sender, recipient, amount)
 21153  }
 21154  
 21155  // IERC20ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC20 contract.
 21156  type IERC20ApprovalIterator struct {
 21157  	Event *IERC20Approval // Event containing the contract specifics and raw log
 21158  
 21159  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 21160  	event    string              // Event name to use for unpacking event data
 21161  
 21162  	logs chan types.Log      // Log channel receiving the found contract events
 21163  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 21164  	done bool                // Whether the subscription completed delivering logs
 21165  	fail error               // Occurred error to stop iteration
 21166  }
 21167  
 21168  // Next advances the iterator to the subsequent event, returning whether there
 21169  // are any more events found. In case of a retrieval or parsing error, false is
 21170  // returned and Error() can be queried for the exact failure.
 21171  func (it *IERC20ApprovalIterator) Next() bool {
 21172  	// If the iterator failed, stop iterating
 21173  	if it.fail != nil {
 21174  		return false
 21175  	}
 21176  	// If the iterator completed, deliver directly whatever's available
 21177  	if it.done {
 21178  		select {
 21179  		case log := <-it.logs:
 21180  			it.Event = new(IERC20Approval)
 21181  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21182  				it.fail = err
 21183  				return false
 21184  			}
 21185  			it.Event.Raw = log
 21186  			return true
 21187  
 21188  		default:
 21189  			return false
 21190  		}
 21191  	}
 21192  	// Iterator still in progress, wait for either a data or an error event
 21193  	select {
 21194  	case log := <-it.logs:
 21195  		it.Event = new(IERC20Approval)
 21196  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21197  			it.fail = err
 21198  			return false
 21199  		}
 21200  		it.Event.Raw = log
 21201  		return true
 21202  
 21203  	case err := <-it.sub.Err():
 21204  		it.done = true
 21205  		it.fail = err
 21206  		return it.Next()
 21207  	}
 21208  }
 21209  
 21210  // Error returns any retrieval or parsing error occurred during filtering.
 21211  func (it *IERC20ApprovalIterator) Error() error {
 21212  	return it.fail
 21213  }
 21214  
 21215  // Close terminates the iteration process, releasing any pending underlying
 21216  // resources.
 21217  func (it *IERC20ApprovalIterator) Close() error {
 21218  	it.sub.Unsubscribe()
 21219  	return nil
 21220  }
 21221  
 21222  // IERC20Approval represents a Approval event raised by the IERC20 contract.
 21223  type IERC20Approval struct {
 21224  	Owner   common.Address
 21225  	Spender common.Address
 21226  	Value   *big.Int
 21227  	Raw     types.Log // Blockchain specific contextual infos
 21228  }
 21229  
 21230  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 21231  //
 21232  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 21233  func (_IERC20 *IERC20Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IERC20ApprovalIterator, error) {
 21234  
 21235  	var ownerRule []interface{}
 21236  	for _, ownerItem := range owner {
 21237  		ownerRule = append(ownerRule, ownerItem)
 21238  	}
 21239  	var spenderRule []interface{}
 21240  	for _, spenderItem := range spender {
 21241  		spenderRule = append(spenderRule, spenderItem)
 21242  	}
 21243  
 21244  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule)
 21245  	if err != nil {
 21246  		return nil, err
 21247  	}
 21248  	return &IERC20ApprovalIterator{contract: _IERC20.contract, event: "Approval", logs: logs, sub: sub}, nil
 21249  }
 21250  
 21251  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 21252  //
 21253  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 21254  func (_IERC20 *IERC20Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC20Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) {
 21255  
 21256  	var ownerRule []interface{}
 21257  	for _, ownerItem := range owner {
 21258  		ownerRule = append(ownerRule, ownerItem)
 21259  	}
 21260  	var spenderRule []interface{}
 21261  	for _, spenderItem := range spender {
 21262  		spenderRule = append(spenderRule, spenderItem)
 21263  	}
 21264  
 21265  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule)
 21266  	if err != nil {
 21267  		return nil, err
 21268  	}
 21269  	return event.NewSubscription(func(quit <-chan struct{}) error {
 21270  		defer sub.Unsubscribe()
 21271  		for {
 21272  			select {
 21273  			case log := <-logs:
 21274  				// New log arrived, parse the event and forward to the user
 21275  				event := new(IERC20Approval)
 21276  				if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
 21277  					return err
 21278  				}
 21279  				event.Raw = log
 21280  
 21281  				select {
 21282  				case sink <- event:
 21283  				case err := <-sub.Err():
 21284  					return err
 21285  				case <-quit:
 21286  					return nil
 21287  				}
 21288  			case err := <-sub.Err():
 21289  				return err
 21290  			case <-quit:
 21291  				return nil
 21292  			}
 21293  		}
 21294  	}), nil
 21295  }
 21296  
 21297  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 21298  //
 21299  // Solidity: event Approval(address indexed owner, address indexed spender, uint256 value)
 21300  func (_IERC20 *IERC20Filterer) ParseApproval(log types.Log) (*IERC20Approval, error) {
 21301  	event := new(IERC20Approval)
 21302  	if err := _IERC20.contract.UnpackLog(event, "Approval", log); err != nil {
 21303  		return nil, err
 21304  	}
 21305  	return event, nil
 21306  }
 21307  
 21308  // IERC20TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC20 contract.
 21309  type IERC20TransferIterator struct {
 21310  	Event *IERC20Transfer // Event containing the contract specifics and raw log
 21311  
 21312  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 21313  	event    string              // Event name to use for unpacking event data
 21314  
 21315  	logs chan types.Log      // Log channel receiving the found contract events
 21316  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 21317  	done bool                // Whether the subscription completed delivering logs
 21318  	fail error               // Occurred error to stop iteration
 21319  }
 21320  
 21321  // Next advances the iterator to the subsequent event, returning whether there
 21322  // are any more events found. In case of a retrieval or parsing error, false is
 21323  // returned and Error() can be queried for the exact failure.
 21324  func (it *IERC20TransferIterator) Next() bool {
 21325  	// If the iterator failed, stop iterating
 21326  	if it.fail != nil {
 21327  		return false
 21328  	}
 21329  	// If the iterator completed, deliver directly whatever's available
 21330  	if it.done {
 21331  		select {
 21332  		case log := <-it.logs:
 21333  			it.Event = new(IERC20Transfer)
 21334  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21335  				it.fail = err
 21336  				return false
 21337  			}
 21338  			it.Event.Raw = log
 21339  			return true
 21340  
 21341  		default:
 21342  			return false
 21343  		}
 21344  	}
 21345  	// Iterator still in progress, wait for either a data or an error event
 21346  	select {
 21347  	case log := <-it.logs:
 21348  		it.Event = new(IERC20Transfer)
 21349  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 21350  			it.fail = err
 21351  			return false
 21352  		}
 21353  		it.Event.Raw = log
 21354  		return true
 21355  
 21356  	case err := <-it.sub.Err():
 21357  		it.done = true
 21358  		it.fail = err
 21359  		return it.Next()
 21360  	}
 21361  }
 21362  
 21363  // Error returns any retrieval or parsing error occurred during filtering.
 21364  func (it *IERC20TransferIterator) Error() error {
 21365  	return it.fail
 21366  }
 21367  
 21368  // Close terminates the iteration process, releasing any pending underlying
 21369  // resources.
 21370  func (it *IERC20TransferIterator) Close() error {
 21371  	it.sub.Unsubscribe()
 21372  	return nil
 21373  }
 21374  
 21375  // IERC20Transfer represents a Transfer event raised by the IERC20 contract.
 21376  type IERC20Transfer struct {
 21377  	From  common.Address
 21378  	To    common.Address
 21379  	Value *big.Int
 21380  	Raw   types.Log // Blockchain specific contextual infos
 21381  }
 21382  
 21383  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 21384  //
 21385  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 21386  func (_IERC20 *IERC20Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IERC20TransferIterator, error) {
 21387  
 21388  	var fromRule []interface{}
 21389  	for _, fromItem := range from {
 21390  		fromRule = append(fromRule, fromItem)
 21391  	}
 21392  	var toRule []interface{}
 21393  	for _, toItem := range to {
 21394  		toRule = append(toRule, toItem)
 21395  	}
 21396  
 21397  	logs, sub, err := _IERC20.contract.FilterLogs(opts, "Transfer", fromRule, toRule)
 21398  	if err != nil {
 21399  		return nil, err
 21400  	}
 21401  	return &IERC20TransferIterator{contract: _IERC20.contract, event: "Transfer", logs: logs, sub: sub}, nil
 21402  }
 21403  
 21404  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 21405  //
 21406  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 21407  func (_IERC20 *IERC20Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC20Transfer, from []common.Address, to []common.Address) (event.Subscription, error) {
 21408  
 21409  	var fromRule []interface{}
 21410  	for _, fromItem := range from {
 21411  		fromRule = append(fromRule, fromItem)
 21412  	}
 21413  	var toRule []interface{}
 21414  	for _, toItem := range to {
 21415  		toRule = append(toRule, toItem)
 21416  	}
 21417  
 21418  	logs, sub, err := _IERC20.contract.WatchLogs(opts, "Transfer", fromRule, toRule)
 21419  	if err != nil {
 21420  		return nil, err
 21421  	}
 21422  	return event.NewSubscription(func(quit <-chan struct{}) error {
 21423  		defer sub.Unsubscribe()
 21424  		for {
 21425  			select {
 21426  			case log := <-logs:
 21427  				// New log arrived, parse the event and forward to the user
 21428  				event := new(IERC20Transfer)
 21429  				if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
 21430  					return err
 21431  				}
 21432  				event.Raw = log
 21433  
 21434  				select {
 21435  				case sink <- event:
 21436  				case err := <-sub.Err():
 21437  					return err
 21438  				case <-quit:
 21439  					return nil
 21440  				}
 21441  			case err := <-sub.Err():
 21442  				return err
 21443  			case <-quit:
 21444  				return nil
 21445  			}
 21446  		}
 21447  	}), nil
 21448  }
 21449  
 21450  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 21451  //
 21452  // Solidity: event Transfer(address indexed from, address indexed to, uint256 value)
 21453  func (_IERC20 *IERC20Filterer) ParseTransfer(log types.Log) (*IERC20Transfer, error) {
 21454  	event := new(IERC20Transfer)
 21455  	if err := _IERC20.contract.UnpackLog(event, "Transfer", log); err != nil {
 21456  		return nil, err
 21457  	}
 21458  	return event, nil
 21459  }
 21460  
 21461  // IERC20BridgeReceiverABI is the input ABI used to generate the binding from.
 21462  const IERC20BridgeReceiverABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_feeLimit\",\"type\":\"uint256\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC20Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 21463  
 21464  // IERC20BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 21465  const IERC20BridgeReceiverBinRuntime = ``
 21466  
 21467  // IERC20BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation.
 21468  var IERC20BridgeReceiverFuncSigs = map[string]string{
 21469  	"f1656e53": "onERC20Received(address,address,uint256,uint256,bytes)",
 21470  }
 21471  
 21472  // IERC20BridgeReceiver is an auto generated Go binding around a Klaytn contract.
 21473  type IERC20BridgeReceiver struct {
 21474  	IERC20BridgeReceiverCaller     // Read-only binding to the contract
 21475  	IERC20BridgeReceiverTransactor // Write-only binding to the contract
 21476  	IERC20BridgeReceiverFilterer   // Log filterer for contract events
 21477  }
 21478  
 21479  // IERC20BridgeReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
 21480  type IERC20BridgeReceiverCaller struct {
 21481  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 21482  }
 21483  
 21484  // IERC20BridgeReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
 21485  type IERC20BridgeReceiverTransactor struct {
 21486  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 21487  }
 21488  
 21489  // IERC20BridgeReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 21490  type IERC20BridgeReceiverFilterer struct {
 21491  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 21492  }
 21493  
 21494  // IERC20BridgeReceiverSession is an auto generated Go binding around a Klaytn contract,
 21495  // with pre-set call and transact options.
 21496  type IERC20BridgeReceiverSession struct {
 21497  	Contract     *IERC20BridgeReceiver // Generic contract binding to set the session for
 21498  	CallOpts     bind.CallOpts         // Call options to use throughout this session
 21499  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
 21500  }
 21501  
 21502  // IERC20BridgeReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 21503  // with pre-set call options.
 21504  type IERC20BridgeReceiverCallerSession struct {
 21505  	Contract *IERC20BridgeReceiverCaller // Generic contract caller binding to set the session for
 21506  	CallOpts bind.CallOpts               // Call options to use throughout this session
 21507  }
 21508  
 21509  // IERC20BridgeReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 21510  // with pre-set transact options.
 21511  type IERC20BridgeReceiverTransactorSession struct {
 21512  	Contract     *IERC20BridgeReceiverTransactor // Generic contract transactor binding to set the session for
 21513  	TransactOpts bind.TransactOpts               // Transaction auth options to use throughout this session
 21514  }
 21515  
 21516  // IERC20BridgeReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
 21517  type IERC20BridgeReceiverRaw struct {
 21518  	Contract *IERC20BridgeReceiver // Generic contract binding to access the raw methods on
 21519  }
 21520  
 21521  // IERC20BridgeReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 21522  type IERC20BridgeReceiverCallerRaw struct {
 21523  	Contract *IERC20BridgeReceiverCaller // Generic read-only contract binding to access the raw methods on
 21524  }
 21525  
 21526  // IERC20BridgeReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 21527  type IERC20BridgeReceiverTransactorRaw struct {
 21528  	Contract *IERC20BridgeReceiverTransactor // Generic write-only contract binding to access the raw methods on
 21529  }
 21530  
 21531  // NewIERC20BridgeReceiver creates a new instance of IERC20BridgeReceiver, bound to a specific deployed contract.
 21532  func NewIERC20BridgeReceiver(address common.Address, backend bind.ContractBackend) (*IERC20BridgeReceiver, error) {
 21533  	contract, err := bindIERC20BridgeReceiver(address, backend, backend, backend)
 21534  	if err != nil {
 21535  		return nil, err
 21536  	}
 21537  	return &IERC20BridgeReceiver{IERC20BridgeReceiverCaller: IERC20BridgeReceiverCaller{contract: contract}, IERC20BridgeReceiverTransactor: IERC20BridgeReceiverTransactor{contract: contract}, IERC20BridgeReceiverFilterer: IERC20BridgeReceiverFilterer{contract: contract}}, nil
 21538  }
 21539  
 21540  // NewIERC20BridgeReceiverCaller creates a new read-only instance of IERC20BridgeReceiver, bound to a specific deployed contract.
 21541  func NewIERC20BridgeReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC20BridgeReceiverCaller, error) {
 21542  	contract, err := bindIERC20BridgeReceiver(address, caller, nil, nil)
 21543  	if err != nil {
 21544  		return nil, err
 21545  	}
 21546  	return &IERC20BridgeReceiverCaller{contract: contract}, nil
 21547  }
 21548  
 21549  // NewIERC20BridgeReceiverTransactor creates a new write-only instance of IERC20BridgeReceiver, bound to a specific deployed contract.
 21550  func NewIERC20BridgeReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC20BridgeReceiverTransactor, error) {
 21551  	contract, err := bindIERC20BridgeReceiver(address, nil, transactor, nil)
 21552  	if err != nil {
 21553  		return nil, err
 21554  	}
 21555  	return &IERC20BridgeReceiverTransactor{contract: contract}, nil
 21556  }
 21557  
 21558  // NewIERC20BridgeReceiverFilterer creates a new log filterer instance of IERC20BridgeReceiver, bound to a specific deployed contract.
 21559  func NewIERC20BridgeReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC20BridgeReceiverFilterer, error) {
 21560  	contract, err := bindIERC20BridgeReceiver(address, nil, nil, filterer)
 21561  	if err != nil {
 21562  		return nil, err
 21563  	}
 21564  	return &IERC20BridgeReceiverFilterer{contract: contract}, nil
 21565  }
 21566  
 21567  // bindIERC20BridgeReceiver binds a generic wrapper to an already deployed contract.
 21568  func bindIERC20BridgeReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 21569  	parsed, err := abi.JSON(strings.NewReader(IERC20BridgeReceiverABI))
 21570  	if err != nil {
 21571  		return nil, err
 21572  	}
 21573  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 21574  }
 21575  
 21576  // Call invokes the (constant) contract method with params as input values and
 21577  // sets the output to result. The result type might be a single field for simple
 21578  // returns, a slice of interfaces for anonymous returns and a struct for named
 21579  // returns.
 21580  func (_IERC20BridgeReceiver *IERC20BridgeReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 21581  	return _IERC20BridgeReceiver.Contract.IERC20BridgeReceiverCaller.contract.Call(opts, result, method, params...)
 21582  }
 21583  
 21584  // Transfer initiates a plain transaction to move funds to the contract, calling
 21585  // its default method if one is available.
 21586  func (_IERC20BridgeReceiver *IERC20BridgeReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 21587  	return _IERC20BridgeReceiver.Contract.IERC20BridgeReceiverTransactor.contract.Transfer(opts)
 21588  }
 21589  
 21590  // Transact invokes the (paid) contract method with params as input values.
 21591  func (_IERC20BridgeReceiver *IERC20BridgeReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 21592  	return _IERC20BridgeReceiver.Contract.IERC20BridgeReceiverTransactor.contract.Transact(opts, method, params...)
 21593  }
 21594  
 21595  // Call invokes the (constant) contract method with params as input values and
 21596  // sets the output to result. The result type might be a single field for simple
 21597  // returns, a slice of interfaces for anonymous returns and a struct for named
 21598  // returns.
 21599  func (_IERC20BridgeReceiver *IERC20BridgeReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 21600  	return _IERC20BridgeReceiver.Contract.contract.Call(opts, result, method, params...)
 21601  }
 21602  
 21603  // Transfer initiates a plain transaction to move funds to the contract, calling
 21604  // its default method if one is available.
 21605  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 21606  	return _IERC20BridgeReceiver.Contract.contract.Transfer(opts)
 21607  }
 21608  
 21609  // Transact invokes the (paid) contract method with params as input values.
 21610  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 21611  	return _IERC20BridgeReceiver.Contract.contract.Transact(opts, method, params...)
 21612  }
 21613  
 21614  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
 21615  //
 21616  // Solidity: function onERC20Received(address _from, address _to, uint256 _amount, uint256 _feeLimit, bytes _extraData) returns()
 21617  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactor) OnERC20Received(opts *bind.TransactOpts, _from common.Address, _to common.Address, _amount *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 21618  	return _IERC20BridgeReceiver.contract.Transact(opts, "onERC20Received", _from, _to, _amount, _feeLimit, _extraData)
 21619  }
 21620  
 21621  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
 21622  //
 21623  // Solidity: function onERC20Received(address _from, address _to, uint256 _amount, uint256 _feeLimit, bytes _extraData) returns()
 21624  func (_IERC20BridgeReceiver *IERC20BridgeReceiverSession) OnERC20Received(_from common.Address, _to common.Address, _amount *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 21625  	return _IERC20BridgeReceiver.Contract.OnERC20Received(&_IERC20BridgeReceiver.TransactOpts, _from, _to, _amount, _feeLimit, _extraData)
 21626  }
 21627  
 21628  // OnERC20Received is a paid mutator transaction binding the contract method 0xf1656e53.
 21629  //
 21630  // Solidity: function onERC20Received(address _from, address _to, uint256 _amount, uint256 _feeLimit, bytes _extraData) returns()
 21631  func (_IERC20BridgeReceiver *IERC20BridgeReceiverTransactorSession) OnERC20Received(_from common.Address, _to common.Address, _amount *big.Int, _feeLimit *big.Int, _extraData []byte) (*types.Transaction, error) {
 21632  	return _IERC20BridgeReceiver.Contract.OnERC20Received(&_IERC20BridgeReceiver.TransactOpts, _from, _to, _amount, _feeLimit, _extraData)
 21633  }
 21634  
 21635  // IERC721ABI is the input ABI used to generate the binding from.
 21636  const IERC721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"operator\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":\"operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 21637  
 21638  // IERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 21639  const IERC721BinRuntime = ``
 21640  
 21641  // IERC721FuncSigs maps the 4-byte function signature to its string representation.
 21642  var IERC721FuncSigs = map[string]string{
 21643  	"095ea7b3": "approve(address,uint256)",
 21644  	"70a08231": "balanceOf(address)",
 21645  	"081812fc": "getApproved(uint256)",
 21646  	"e985e9c5": "isApprovedForAll(address,address)",
 21647  	"6352211e": "ownerOf(uint256)",
 21648  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 21649  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 21650  	"a22cb465": "setApprovalForAll(address,bool)",
 21651  	"01ffc9a7": "supportsInterface(bytes4)",
 21652  	"23b872dd": "transferFrom(address,address,uint256)",
 21653  }
 21654  
 21655  // IERC721 is an auto generated Go binding around a Klaytn contract.
 21656  type IERC721 struct {
 21657  	IERC721Caller     // Read-only binding to the contract
 21658  	IERC721Transactor // Write-only binding to the contract
 21659  	IERC721Filterer   // Log filterer for contract events
 21660  }
 21661  
 21662  // IERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
 21663  type IERC721Caller struct {
 21664  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 21665  }
 21666  
 21667  // IERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
 21668  type IERC721Transactor struct {
 21669  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 21670  }
 21671  
 21672  // IERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
 21673  type IERC721Filterer struct {
 21674  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 21675  }
 21676  
 21677  // IERC721Session is an auto generated Go binding around a Klaytn contract,
 21678  // with pre-set call and transact options.
 21679  type IERC721Session struct {
 21680  	Contract     *IERC721          // Generic contract binding to set the session for
 21681  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 21682  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 21683  }
 21684  
 21685  // IERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
 21686  // with pre-set call options.
 21687  type IERC721CallerSession struct {
 21688  	Contract *IERC721Caller // Generic contract caller binding to set the session for
 21689  	CallOpts bind.CallOpts  // Call options to use throughout this session
 21690  }
 21691  
 21692  // IERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 21693  // with pre-set transact options.
 21694  type IERC721TransactorSession struct {
 21695  	Contract     *IERC721Transactor // Generic contract transactor binding to set the session for
 21696  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
 21697  }
 21698  
 21699  // IERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
 21700  type IERC721Raw struct {
 21701  	Contract *IERC721 // Generic contract binding to access the raw methods on
 21702  }
 21703  
 21704  // IERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 21705  type IERC721CallerRaw struct {
 21706  	Contract *IERC721Caller // Generic read-only contract binding to access the raw methods on
 21707  }
 21708  
 21709  // IERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 21710  type IERC721TransactorRaw struct {
 21711  	Contract *IERC721Transactor // Generic write-only contract binding to access the raw methods on
 21712  }
 21713  
 21714  // NewIERC721 creates a new instance of IERC721, bound to a specific deployed contract.
 21715  func NewIERC721(address common.Address, backend bind.ContractBackend) (*IERC721, error) {
 21716  	contract, err := bindIERC721(address, backend, backend, backend)
 21717  	if err != nil {
 21718  		return nil, err
 21719  	}
 21720  	return &IERC721{IERC721Caller: IERC721Caller{contract: contract}, IERC721Transactor: IERC721Transactor{contract: contract}, IERC721Filterer: IERC721Filterer{contract: contract}}, nil
 21721  }
 21722  
 21723  // NewIERC721Caller creates a new read-only instance of IERC721, bound to a specific deployed contract.
 21724  func NewIERC721Caller(address common.Address, caller bind.ContractCaller) (*IERC721Caller, error) {
 21725  	contract, err := bindIERC721(address, caller, nil, nil)
 21726  	if err != nil {
 21727  		return nil, err
 21728  	}
 21729  	return &IERC721Caller{contract: contract}, nil
 21730  }
 21731  
 21732  // NewIERC721Transactor creates a new write-only instance of IERC721, bound to a specific deployed contract.
 21733  func NewIERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC721Transactor, error) {
 21734  	contract, err := bindIERC721(address, nil, transactor, nil)
 21735  	if err != nil {
 21736  		return nil, err
 21737  	}
 21738  	return &IERC721Transactor{contract: contract}, nil
 21739  }
 21740  
 21741  // NewIERC721Filterer creates a new log filterer instance of IERC721, bound to a specific deployed contract.
 21742  func NewIERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC721Filterer, error) {
 21743  	contract, err := bindIERC721(address, nil, nil, filterer)
 21744  	if err != nil {
 21745  		return nil, err
 21746  	}
 21747  	return &IERC721Filterer{contract: contract}, nil
 21748  }
 21749  
 21750  // bindIERC721 binds a generic wrapper to an already deployed contract.
 21751  func bindIERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 21752  	parsed, err := abi.JSON(strings.NewReader(IERC721ABI))
 21753  	if err != nil {
 21754  		return nil, err
 21755  	}
 21756  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 21757  }
 21758  
 21759  // Call invokes the (constant) contract method with params as input values and
 21760  // sets the output to result. The result type might be a single field for simple
 21761  // returns, a slice of interfaces for anonymous returns and a struct for named
 21762  // returns.
 21763  func (_IERC721 *IERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 21764  	return _IERC721.Contract.IERC721Caller.contract.Call(opts, result, method, params...)
 21765  }
 21766  
 21767  // Transfer initiates a plain transaction to move funds to the contract, calling
 21768  // its default method if one is available.
 21769  func (_IERC721 *IERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 21770  	return _IERC721.Contract.IERC721Transactor.contract.Transfer(opts)
 21771  }
 21772  
 21773  // Transact invokes the (paid) contract method with params as input values.
 21774  func (_IERC721 *IERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 21775  	return _IERC721.Contract.IERC721Transactor.contract.Transact(opts, method, params...)
 21776  }
 21777  
 21778  // Call invokes the (constant) contract method with params as input values and
 21779  // sets the output to result. The result type might be a single field for simple
 21780  // returns, a slice of interfaces for anonymous returns and a struct for named
 21781  // returns.
 21782  func (_IERC721 *IERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 21783  	return _IERC721.Contract.contract.Call(opts, result, method, params...)
 21784  }
 21785  
 21786  // Transfer initiates a plain transaction to move funds to the contract, calling
 21787  // its default method if one is available.
 21788  func (_IERC721 *IERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 21789  	return _IERC721.Contract.contract.Transfer(opts)
 21790  }
 21791  
 21792  // Transact invokes the (paid) contract method with params as input values.
 21793  func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 21794  	return _IERC721.Contract.contract.Transact(opts, method, params...)
 21795  }
 21796  
 21797  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 21798  //
 21799  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 21800  func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 21801  	var (
 21802  		ret0 = new(*big.Int)
 21803  	)
 21804  	out := ret0
 21805  	err := _IERC721.contract.Call(opts, out, "balanceOf", owner)
 21806  	return *ret0, err
 21807  }
 21808  
 21809  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 21810  //
 21811  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 21812  func (_IERC721 *IERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
 21813  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
 21814  }
 21815  
 21816  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 21817  //
 21818  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 21819  func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 21820  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
 21821  }
 21822  
 21823  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 21824  //
 21825  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 21826  func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 21827  	var (
 21828  		ret0 = new(common.Address)
 21829  	)
 21830  	out := ret0
 21831  	err := _IERC721.contract.Call(opts, out, "getApproved", tokenId)
 21832  	return *ret0, err
 21833  }
 21834  
 21835  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 21836  //
 21837  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 21838  func (_IERC721 *IERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
 21839  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
 21840  }
 21841  
 21842  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 21843  //
 21844  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 21845  func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 21846  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
 21847  }
 21848  
 21849  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 21850  //
 21851  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 21852  func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 21853  	var (
 21854  		ret0 = new(bool)
 21855  	)
 21856  	out := ret0
 21857  	err := _IERC721.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 21858  	return *ret0, err
 21859  }
 21860  
 21861  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 21862  //
 21863  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 21864  func (_IERC721 *IERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 21865  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
 21866  }
 21867  
 21868  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 21869  //
 21870  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 21871  func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 21872  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
 21873  }
 21874  
 21875  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 21876  //
 21877  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 21878  func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 21879  	var (
 21880  		ret0 = new(common.Address)
 21881  	)
 21882  	out := ret0
 21883  	err := _IERC721.contract.Call(opts, out, "ownerOf", tokenId)
 21884  	return *ret0, err
 21885  }
 21886  
 21887  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 21888  //
 21889  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 21890  func (_IERC721 *IERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
 21891  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
 21892  }
 21893  
 21894  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 21895  //
 21896  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 21897  func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 21898  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
 21899  }
 21900  
 21901  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 21902  //
 21903  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 21904  func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 21905  	var (
 21906  		ret0 = new(bool)
 21907  	)
 21908  	out := ret0
 21909  	err := _IERC721.contract.Call(opts, out, "supportsInterface", interfaceId)
 21910  	return *ret0, err
 21911  }
 21912  
 21913  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 21914  //
 21915  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 21916  func (_IERC721 *IERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
 21917  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
 21918  }
 21919  
 21920  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 21921  //
 21922  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 21923  func (_IERC721 *IERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 21924  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
 21925  }
 21926  
 21927  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 21928  //
 21929  // Solidity: function approve(address to, uint256 tokenId) returns()
 21930  func (_IERC721 *IERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21931  	return _IERC721.contract.Transact(opts, "approve", to, tokenId)
 21932  }
 21933  
 21934  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 21935  //
 21936  // Solidity: function approve(address to, uint256 tokenId) returns()
 21937  func (_IERC721 *IERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21938  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
 21939  }
 21940  
 21941  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 21942  //
 21943  // Solidity: function approve(address to, uint256 tokenId) returns()
 21944  func (_IERC721 *IERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21945  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
 21946  }
 21947  
 21948  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 21949  //
 21950  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 21951  func (_IERC721 *IERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21952  	return _IERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 21953  }
 21954  
 21955  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 21956  //
 21957  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 21958  func (_IERC721 *IERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21959  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
 21960  }
 21961  
 21962  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 21963  //
 21964  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 21965  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 21966  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
 21967  }
 21968  
 21969  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 21970  //
 21971  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 21972  func (_IERC721 *IERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 21973  	return _IERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
 21974  }
 21975  
 21976  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 21977  //
 21978  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 21979  func (_IERC721 *IERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 21980  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
 21981  }
 21982  
 21983  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 21984  //
 21985  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 21986  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 21987  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
 21988  }
 21989  
 21990  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 21991  //
 21992  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 21993  func (_IERC721 *IERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
 21994  	return _IERC721.contract.Transact(opts, "setApprovalForAll", operator, _approved)
 21995  }
 21996  
 21997  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 21998  //
 21999  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 22000  func (_IERC721 *IERC721Session) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 22001  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
 22002  }
 22003  
 22004  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 22005  //
 22006  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 22007  func (_IERC721 *IERC721TransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 22008  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
 22009  }
 22010  
 22011  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 22012  //
 22013  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 22014  func (_IERC721 *IERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22015  	return _IERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
 22016  }
 22017  
 22018  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 22019  //
 22020  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 22021  func (_IERC721 *IERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22022  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
 22023  }
 22024  
 22025  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 22026  //
 22027  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 22028  func (_IERC721 *IERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 22029  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
 22030  }
 22031  
 22032  // IERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721 contract.
 22033  type IERC721ApprovalIterator struct {
 22034  	Event *IERC721Approval // Event containing the contract specifics and raw log
 22035  
 22036  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 22037  	event    string              // Event name to use for unpacking event data
 22038  
 22039  	logs chan types.Log      // Log channel receiving the found contract events
 22040  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 22041  	done bool                // Whether the subscription completed delivering logs
 22042  	fail error               // Occurred error to stop iteration
 22043  }
 22044  
 22045  // Next advances the iterator to the subsequent event, returning whether there
 22046  // are any more events found. In case of a retrieval or parsing error, false is
 22047  // returned and Error() can be queried for the exact failure.
 22048  func (it *IERC721ApprovalIterator) Next() bool {
 22049  	// If the iterator failed, stop iterating
 22050  	if it.fail != nil {
 22051  		return false
 22052  	}
 22053  	// If the iterator completed, deliver directly whatever's available
 22054  	if it.done {
 22055  		select {
 22056  		case log := <-it.logs:
 22057  			it.Event = new(IERC721Approval)
 22058  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22059  				it.fail = err
 22060  				return false
 22061  			}
 22062  			it.Event.Raw = log
 22063  			return true
 22064  
 22065  		default:
 22066  			return false
 22067  		}
 22068  	}
 22069  	// Iterator still in progress, wait for either a data or an error event
 22070  	select {
 22071  	case log := <-it.logs:
 22072  		it.Event = new(IERC721Approval)
 22073  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22074  			it.fail = err
 22075  			return false
 22076  		}
 22077  		it.Event.Raw = log
 22078  		return true
 22079  
 22080  	case err := <-it.sub.Err():
 22081  		it.done = true
 22082  		it.fail = err
 22083  		return it.Next()
 22084  	}
 22085  }
 22086  
 22087  // Error returns any retrieval or parsing error occurred during filtering.
 22088  func (it *IERC721ApprovalIterator) Error() error {
 22089  	return it.fail
 22090  }
 22091  
 22092  // Close terminates the iteration process, releasing any pending underlying
 22093  // resources.
 22094  func (it *IERC721ApprovalIterator) Close() error {
 22095  	it.sub.Unsubscribe()
 22096  	return nil
 22097  }
 22098  
 22099  // IERC721Approval represents a Approval event raised by the IERC721 contract.
 22100  type IERC721Approval struct {
 22101  	Owner    common.Address
 22102  	Approved common.Address
 22103  	TokenId  *big.Int
 22104  	Raw      types.Log // Blockchain specific contextual infos
 22105  }
 22106  
 22107  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 22108  //
 22109  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 22110  func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) {
 22111  
 22112  	var ownerRule []interface{}
 22113  	for _, ownerItem := range owner {
 22114  		ownerRule = append(ownerRule, ownerItem)
 22115  	}
 22116  	var approvedRule []interface{}
 22117  	for _, approvedItem := range approved {
 22118  		approvedRule = append(approvedRule, approvedItem)
 22119  	}
 22120  	var tokenIdRule []interface{}
 22121  	for _, tokenIdItem := range tokenId {
 22122  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 22123  	}
 22124  
 22125  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 22126  	if err != nil {
 22127  		return nil, err
 22128  	}
 22129  	return &IERC721ApprovalIterator{contract: _IERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
 22130  }
 22131  
 22132  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 22133  //
 22134  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 22135  func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 22136  
 22137  	var ownerRule []interface{}
 22138  	for _, ownerItem := range owner {
 22139  		ownerRule = append(ownerRule, ownerItem)
 22140  	}
 22141  	var approvedRule []interface{}
 22142  	for _, approvedItem := range approved {
 22143  		approvedRule = append(approvedRule, approvedItem)
 22144  	}
 22145  	var tokenIdRule []interface{}
 22146  	for _, tokenIdItem := range tokenId {
 22147  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 22148  	}
 22149  
 22150  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 22151  	if err != nil {
 22152  		return nil, err
 22153  	}
 22154  	return event.NewSubscription(func(quit <-chan struct{}) error {
 22155  		defer sub.Unsubscribe()
 22156  		for {
 22157  			select {
 22158  			case log := <-logs:
 22159  				// New log arrived, parse the event and forward to the user
 22160  				event := new(IERC721Approval)
 22161  				if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
 22162  					return err
 22163  				}
 22164  				event.Raw = log
 22165  
 22166  				select {
 22167  				case sink <- event:
 22168  				case err := <-sub.Err():
 22169  					return err
 22170  				case <-quit:
 22171  					return nil
 22172  				}
 22173  			case err := <-sub.Err():
 22174  				return err
 22175  			case <-quit:
 22176  				return nil
 22177  			}
 22178  		}
 22179  	}), nil
 22180  }
 22181  
 22182  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 22183  //
 22184  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 22185  func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, error) {
 22186  	event := new(IERC721Approval)
 22187  	if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
 22188  		return nil, err
 22189  	}
 22190  	return event, nil
 22191  }
 22192  
 22193  // IERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721 contract.
 22194  type IERC721ApprovalForAllIterator struct {
 22195  	Event *IERC721ApprovalForAll // Event containing the contract specifics and raw log
 22196  
 22197  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 22198  	event    string              // Event name to use for unpacking event data
 22199  
 22200  	logs chan types.Log      // Log channel receiving the found contract events
 22201  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 22202  	done bool                // Whether the subscription completed delivering logs
 22203  	fail error               // Occurred error to stop iteration
 22204  }
 22205  
 22206  // Next advances the iterator to the subsequent event, returning whether there
 22207  // are any more events found. In case of a retrieval or parsing error, false is
 22208  // returned and Error() can be queried for the exact failure.
 22209  func (it *IERC721ApprovalForAllIterator) Next() bool {
 22210  	// If the iterator failed, stop iterating
 22211  	if it.fail != nil {
 22212  		return false
 22213  	}
 22214  	// If the iterator completed, deliver directly whatever's available
 22215  	if it.done {
 22216  		select {
 22217  		case log := <-it.logs:
 22218  			it.Event = new(IERC721ApprovalForAll)
 22219  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22220  				it.fail = err
 22221  				return false
 22222  			}
 22223  			it.Event.Raw = log
 22224  			return true
 22225  
 22226  		default:
 22227  			return false
 22228  		}
 22229  	}
 22230  	// Iterator still in progress, wait for either a data or an error event
 22231  	select {
 22232  	case log := <-it.logs:
 22233  		it.Event = new(IERC721ApprovalForAll)
 22234  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22235  			it.fail = err
 22236  			return false
 22237  		}
 22238  		it.Event.Raw = log
 22239  		return true
 22240  
 22241  	case err := <-it.sub.Err():
 22242  		it.done = true
 22243  		it.fail = err
 22244  		return it.Next()
 22245  	}
 22246  }
 22247  
 22248  // Error returns any retrieval or parsing error occurred during filtering.
 22249  func (it *IERC721ApprovalForAllIterator) Error() error {
 22250  	return it.fail
 22251  }
 22252  
 22253  // Close terminates the iteration process, releasing any pending underlying
 22254  // resources.
 22255  func (it *IERC721ApprovalForAllIterator) Close() error {
 22256  	it.sub.Unsubscribe()
 22257  	return nil
 22258  }
 22259  
 22260  // IERC721ApprovalForAll represents a ApprovalForAll event raised by the IERC721 contract.
 22261  type IERC721ApprovalForAll struct {
 22262  	Owner    common.Address
 22263  	Operator common.Address
 22264  	Approved bool
 22265  	Raw      types.Log // Blockchain specific contextual infos
 22266  }
 22267  
 22268  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 22269  //
 22270  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 22271  func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) {
 22272  
 22273  	var ownerRule []interface{}
 22274  	for _, ownerItem := range owner {
 22275  		ownerRule = append(ownerRule, ownerItem)
 22276  	}
 22277  	var operatorRule []interface{}
 22278  	for _, operatorItem := range operator {
 22279  		operatorRule = append(operatorRule, operatorItem)
 22280  	}
 22281  
 22282  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 22283  	if err != nil {
 22284  		return nil, err
 22285  	}
 22286  	return &IERC721ApprovalForAllIterator{contract: _IERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 22287  }
 22288  
 22289  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 22290  //
 22291  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 22292  func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 22293  
 22294  	var ownerRule []interface{}
 22295  	for _, ownerItem := range owner {
 22296  		ownerRule = append(ownerRule, ownerItem)
 22297  	}
 22298  	var operatorRule []interface{}
 22299  	for _, operatorItem := range operator {
 22300  		operatorRule = append(operatorRule, operatorItem)
 22301  	}
 22302  
 22303  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 22304  	if err != nil {
 22305  		return nil, err
 22306  	}
 22307  	return event.NewSubscription(func(quit <-chan struct{}) error {
 22308  		defer sub.Unsubscribe()
 22309  		for {
 22310  			select {
 22311  			case log := <-logs:
 22312  				// New log arrived, parse the event and forward to the user
 22313  				event := new(IERC721ApprovalForAll)
 22314  				if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 22315  					return err
 22316  				}
 22317  				event.Raw = log
 22318  
 22319  				select {
 22320  				case sink <- event:
 22321  				case err := <-sub.Err():
 22322  					return err
 22323  				case <-quit:
 22324  					return nil
 22325  				}
 22326  			case err := <-sub.Err():
 22327  				return err
 22328  			case <-quit:
 22329  				return nil
 22330  			}
 22331  		}
 22332  	}), nil
 22333  }
 22334  
 22335  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 22336  //
 22337  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 22338  func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721ApprovalForAll, error) {
 22339  	event := new(IERC721ApprovalForAll)
 22340  	if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 22341  		return nil, err
 22342  	}
 22343  	return event, nil
 22344  }
 22345  
 22346  // IERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721 contract.
 22347  type IERC721TransferIterator struct {
 22348  	Event *IERC721Transfer // Event containing the contract specifics and raw log
 22349  
 22350  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 22351  	event    string              // Event name to use for unpacking event data
 22352  
 22353  	logs chan types.Log      // Log channel receiving the found contract events
 22354  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 22355  	done bool                // Whether the subscription completed delivering logs
 22356  	fail error               // Occurred error to stop iteration
 22357  }
 22358  
 22359  // Next advances the iterator to the subsequent event, returning whether there
 22360  // are any more events found. In case of a retrieval or parsing error, false is
 22361  // returned and Error() can be queried for the exact failure.
 22362  func (it *IERC721TransferIterator) Next() bool {
 22363  	// If the iterator failed, stop iterating
 22364  	if it.fail != nil {
 22365  		return false
 22366  	}
 22367  	// If the iterator completed, deliver directly whatever's available
 22368  	if it.done {
 22369  		select {
 22370  		case log := <-it.logs:
 22371  			it.Event = new(IERC721Transfer)
 22372  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22373  				it.fail = err
 22374  				return false
 22375  			}
 22376  			it.Event.Raw = log
 22377  			return true
 22378  
 22379  		default:
 22380  			return false
 22381  		}
 22382  	}
 22383  	// Iterator still in progress, wait for either a data or an error event
 22384  	select {
 22385  	case log := <-it.logs:
 22386  		it.Event = new(IERC721Transfer)
 22387  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 22388  			it.fail = err
 22389  			return false
 22390  		}
 22391  		it.Event.Raw = log
 22392  		return true
 22393  
 22394  	case err := <-it.sub.Err():
 22395  		it.done = true
 22396  		it.fail = err
 22397  		return it.Next()
 22398  	}
 22399  }
 22400  
 22401  // Error returns any retrieval or parsing error occurred during filtering.
 22402  func (it *IERC721TransferIterator) Error() error {
 22403  	return it.fail
 22404  }
 22405  
 22406  // Close terminates the iteration process, releasing any pending underlying
 22407  // resources.
 22408  func (it *IERC721TransferIterator) Close() error {
 22409  	it.sub.Unsubscribe()
 22410  	return nil
 22411  }
 22412  
 22413  // IERC721Transfer represents a Transfer event raised by the IERC721 contract.
 22414  type IERC721Transfer struct {
 22415  	From    common.Address
 22416  	To      common.Address
 22417  	TokenId *big.Int
 22418  	Raw     types.Log // Blockchain specific contextual infos
 22419  }
 22420  
 22421  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 22422  //
 22423  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 22424  func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) {
 22425  
 22426  	var fromRule []interface{}
 22427  	for _, fromItem := range from {
 22428  		fromRule = append(fromRule, fromItem)
 22429  	}
 22430  	var toRule []interface{}
 22431  	for _, toItem := range to {
 22432  		toRule = append(toRule, toItem)
 22433  	}
 22434  	var tokenIdRule []interface{}
 22435  	for _, tokenIdItem := range tokenId {
 22436  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 22437  	}
 22438  
 22439  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 22440  	if err != nil {
 22441  		return nil, err
 22442  	}
 22443  	return &IERC721TransferIterator{contract: _IERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
 22444  }
 22445  
 22446  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 22447  //
 22448  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 22449  func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 22450  
 22451  	var fromRule []interface{}
 22452  	for _, fromItem := range from {
 22453  		fromRule = append(fromRule, fromItem)
 22454  	}
 22455  	var toRule []interface{}
 22456  	for _, toItem := range to {
 22457  		toRule = append(toRule, toItem)
 22458  	}
 22459  	var tokenIdRule []interface{}
 22460  	for _, tokenIdItem := range tokenId {
 22461  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 22462  	}
 22463  
 22464  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 22465  	if err != nil {
 22466  		return nil, err
 22467  	}
 22468  	return event.NewSubscription(func(quit <-chan struct{}) error {
 22469  		defer sub.Unsubscribe()
 22470  		for {
 22471  			select {
 22472  			case log := <-logs:
 22473  				// New log arrived, parse the event and forward to the user
 22474  				event := new(IERC721Transfer)
 22475  				if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
 22476  					return err
 22477  				}
 22478  				event.Raw = log
 22479  
 22480  				select {
 22481  				case sink <- event:
 22482  				case err := <-sub.Err():
 22483  					return err
 22484  				case <-quit:
 22485  					return nil
 22486  				}
 22487  			case err := <-sub.Err():
 22488  				return err
 22489  			case <-quit:
 22490  				return nil
 22491  			}
 22492  		}
 22493  	}), nil
 22494  }
 22495  
 22496  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 22497  //
 22498  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 22499  func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, error) {
 22500  	event := new(IERC721Transfer)
 22501  	if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
 22502  		return nil, err
 22503  	}
 22504  	return event, nil
 22505  }
 22506  
 22507  // IERC721BridgeReceiverABI is the input ABI used to generate the binding from.
 22508  const IERC721BridgeReceiverABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 22509  
 22510  // IERC721BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 22511  const IERC721BridgeReceiverBinRuntime = ``
 22512  
 22513  // IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation.
 22514  var IERC721BridgeReceiverFuncSigs = map[string]string{
 22515  	"cf0da290": "onERC721Received(address,uint256,address,bytes)",
 22516  }
 22517  
 22518  // IERC721BridgeReceiver is an auto generated Go binding around a Klaytn contract.
 22519  type IERC721BridgeReceiver struct {
 22520  	IERC721BridgeReceiverCaller     // Read-only binding to the contract
 22521  	IERC721BridgeReceiverTransactor // Write-only binding to the contract
 22522  	IERC721BridgeReceiverFilterer   // Log filterer for contract events
 22523  }
 22524  
 22525  // IERC721BridgeReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
 22526  type IERC721BridgeReceiverCaller struct {
 22527  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 22528  }
 22529  
 22530  // IERC721BridgeReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
 22531  type IERC721BridgeReceiverTransactor struct {
 22532  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 22533  }
 22534  
 22535  // IERC721BridgeReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 22536  type IERC721BridgeReceiverFilterer struct {
 22537  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 22538  }
 22539  
 22540  // IERC721BridgeReceiverSession is an auto generated Go binding around a Klaytn contract,
 22541  // with pre-set call and transact options.
 22542  type IERC721BridgeReceiverSession struct {
 22543  	Contract     *IERC721BridgeReceiver // Generic contract binding to set the session for
 22544  	CallOpts     bind.CallOpts          // Call options to use throughout this session
 22545  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
 22546  }
 22547  
 22548  // IERC721BridgeReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 22549  // with pre-set call options.
 22550  type IERC721BridgeReceiverCallerSession struct {
 22551  	Contract *IERC721BridgeReceiverCaller // Generic contract caller binding to set the session for
 22552  	CallOpts bind.CallOpts                // Call options to use throughout this session
 22553  }
 22554  
 22555  // IERC721BridgeReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 22556  // with pre-set transact options.
 22557  type IERC721BridgeReceiverTransactorSession struct {
 22558  	Contract     *IERC721BridgeReceiverTransactor // Generic contract transactor binding to set the session for
 22559  	TransactOpts bind.TransactOpts                // Transaction auth options to use throughout this session
 22560  }
 22561  
 22562  // IERC721BridgeReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
 22563  type IERC721BridgeReceiverRaw struct {
 22564  	Contract *IERC721BridgeReceiver // Generic contract binding to access the raw methods on
 22565  }
 22566  
 22567  // IERC721BridgeReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 22568  type IERC721BridgeReceiverCallerRaw struct {
 22569  	Contract *IERC721BridgeReceiverCaller // Generic read-only contract binding to access the raw methods on
 22570  }
 22571  
 22572  // IERC721BridgeReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 22573  type IERC721BridgeReceiverTransactorRaw struct {
 22574  	Contract *IERC721BridgeReceiverTransactor // Generic write-only contract binding to access the raw methods on
 22575  }
 22576  
 22577  // NewIERC721BridgeReceiver creates a new instance of IERC721BridgeReceiver, bound to a specific deployed contract.
 22578  func NewIERC721BridgeReceiver(address common.Address, backend bind.ContractBackend) (*IERC721BridgeReceiver, error) {
 22579  	contract, err := bindIERC721BridgeReceiver(address, backend, backend, backend)
 22580  	if err != nil {
 22581  		return nil, err
 22582  	}
 22583  	return &IERC721BridgeReceiver{IERC721BridgeReceiverCaller: IERC721BridgeReceiverCaller{contract: contract}, IERC721BridgeReceiverTransactor: IERC721BridgeReceiverTransactor{contract: contract}, IERC721BridgeReceiverFilterer: IERC721BridgeReceiverFilterer{contract: contract}}, nil
 22584  }
 22585  
 22586  // NewIERC721BridgeReceiverCaller creates a new read-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
 22587  func NewIERC721BridgeReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721BridgeReceiverCaller, error) {
 22588  	contract, err := bindIERC721BridgeReceiver(address, caller, nil, nil)
 22589  	if err != nil {
 22590  		return nil, err
 22591  	}
 22592  	return &IERC721BridgeReceiverCaller{contract: contract}, nil
 22593  }
 22594  
 22595  // NewIERC721BridgeReceiverTransactor creates a new write-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
 22596  func NewIERC721BridgeReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721BridgeReceiverTransactor, error) {
 22597  	contract, err := bindIERC721BridgeReceiver(address, nil, transactor, nil)
 22598  	if err != nil {
 22599  		return nil, err
 22600  	}
 22601  	return &IERC721BridgeReceiverTransactor{contract: contract}, nil
 22602  }
 22603  
 22604  // NewIERC721BridgeReceiverFilterer creates a new log filterer instance of IERC721BridgeReceiver, bound to a specific deployed contract.
 22605  func NewIERC721BridgeReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721BridgeReceiverFilterer, error) {
 22606  	contract, err := bindIERC721BridgeReceiver(address, nil, nil, filterer)
 22607  	if err != nil {
 22608  		return nil, err
 22609  	}
 22610  	return &IERC721BridgeReceiverFilterer{contract: contract}, nil
 22611  }
 22612  
 22613  // bindIERC721BridgeReceiver binds a generic wrapper to an already deployed contract.
 22614  func bindIERC721BridgeReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 22615  	parsed, err := abi.JSON(strings.NewReader(IERC721BridgeReceiverABI))
 22616  	if err != nil {
 22617  		return nil, err
 22618  	}
 22619  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 22620  }
 22621  
 22622  // Call invokes the (constant) contract method with params as input values and
 22623  // sets the output to result. The result type might be a single field for simple
 22624  // returns, a slice of interfaces for anonymous returns and a struct for named
 22625  // returns.
 22626  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 22627  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverCaller.contract.Call(opts, result, method, params...)
 22628  }
 22629  
 22630  // Transfer initiates a plain transaction to move funds to the contract, calling
 22631  // its default method if one is available.
 22632  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 22633  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transfer(opts)
 22634  }
 22635  
 22636  // Transact invokes the (paid) contract method with params as input values.
 22637  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 22638  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transact(opts, method, params...)
 22639  }
 22640  
 22641  // Call invokes the (constant) contract method with params as input values and
 22642  // sets the output to result. The result type might be a single field for simple
 22643  // returns, a slice of interfaces for anonymous returns and a struct for named
 22644  // returns.
 22645  func (_IERC721BridgeReceiver *IERC721BridgeReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 22646  	return _IERC721BridgeReceiver.Contract.contract.Call(opts, result, method, params...)
 22647  }
 22648  
 22649  // Transfer initiates a plain transaction to move funds to the contract, calling
 22650  // its default method if one is available.
 22651  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 22652  	return _IERC721BridgeReceiver.Contract.contract.Transfer(opts)
 22653  }
 22654  
 22655  // Transact invokes the (paid) contract method with params as input values.
 22656  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 22657  	return _IERC721BridgeReceiver.Contract.contract.Transact(opts, method, params...)
 22658  }
 22659  
 22660  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 22661  //
 22662  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 22663  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 22664  	return _IERC721BridgeReceiver.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData)
 22665  }
 22666  
 22667  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 22668  //
 22669  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 22670  func (_IERC721BridgeReceiver *IERC721BridgeReceiverSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 22671  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
 22672  }
 22673  
 22674  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
 22675  //
 22676  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
 22677  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 22678  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
 22679  }
 22680  
 22681  // IERC721MetadataABI is the input ABI used to generate the binding from.
 22682  const IERC721MetadataABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"operator\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"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\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 22683  
 22684  // IERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 22685  const IERC721MetadataBinRuntime = ``
 22686  
 22687  // IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation.
 22688  var IERC721MetadataFuncSigs = map[string]string{
 22689  	"095ea7b3": "approve(address,uint256)",
 22690  	"70a08231": "balanceOf(address)",
 22691  	"081812fc": "getApproved(uint256)",
 22692  	"e985e9c5": "isApprovedForAll(address,address)",
 22693  	"06fdde03": "name()",
 22694  	"6352211e": "ownerOf(uint256)",
 22695  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 22696  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 22697  	"a22cb465": "setApprovalForAll(address,bool)",
 22698  	"01ffc9a7": "supportsInterface(bytes4)",
 22699  	"95d89b41": "symbol()",
 22700  	"c87b56dd": "tokenURI(uint256)",
 22701  	"23b872dd": "transferFrom(address,address,uint256)",
 22702  }
 22703  
 22704  // IERC721Metadata is an auto generated Go binding around a Klaytn contract.
 22705  type IERC721Metadata struct {
 22706  	IERC721MetadataCaller     // Read-only binding to the contract
 22707  	IERC721MetadataTransactor // Write-only binding to the contract
 22708  	IERC721MetadataFilterer   // Log filterer for contract events
 22709  }
 22710  
 22711  // IERC721MetadataCaller is an auto generated read-only Go binding around a Klaytn contract.
 22712  type IERC721MetadataCaller struct {
 22713  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 22714  }
 22715  
 22716  // IERC721MetadataTransactor is an auto generated write-only Go binding around a Klaytn contract.
 22717  type IERC721MetadataTransactor struct {
 22718  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 22719  }
 22720  
 22721  // IERC721MetadataFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 22722  type IERC721MetadataFilterer struct {
 22723  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 22724  }
 22725  
 22726  // IERC721MetadataSession is an auto generated Go binding around a Klaytn contract,
 22727  // with pre-set call and transact options.
 22728  type IERC721MetadataSession struct {
 22729  	Contract     *IERC721Metadata  // Generic contract binding to set the session for
 22730  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 22731  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 22732  }
 22733  
 22734  // IERC721MetadataCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 22735  // with pre-set call options.
 22736  type IERC721MetadataCallerSession struct {
 22737  	Contract *IERC721MetadataCaller // Generic contract caller binding to set the session for
 22738  	CallOpts bind.CallOpts          // Call options to use throughout this session
 22739  }
 22740  
 22741  // IERC721MetadataTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 22742  // with pre-set transact options.
 22743  type IERC721MetadataTransactorSession struct {
 22744  	Contract     *IERC721MetadataTransactor // Generic contract transactor binding to set the session for
 22745  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 22746  }
 22747  
 22748  // IERC721MetadataRaw is an auto generated low-level Go binding around a Klaytn contract.
 22749  type IERC721MetadataRaw struct {
 22750  	Contract *IERC721Metadata // Generic contract binding to access the raw methods on
 22751  }
 22752  
 22753  // IERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 22754  type IERC721MetadataCallerRaw struct {
 22755  	Contract *IERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
 22756  }
 22757  
 22758  // IERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 22759  type IERC721MetadataTransactorRaw struct {
 22760  	Contract *IERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
 22761  }
 22762  
 22763  // NewIERC721Metadata creates a new instance of IERC721Metadata, bound to a specific deployed contract.
 22764  func NewIERC721Metadata(address common.Address, backend bind.ContractBackend) (*IERC721Metadata, error) {
 22765  	contract, err := bindIERC721Metadata(address, backend, backend, backend)
 22766  	if err != nil {
 22767  		return nil, err
 22768  	}
 22769  	return &IERC721Metadata{IERC721MetadataCaller: IERC721MetadataCaller{contract: contract}, IERC721MetadataTransactor: IERC721MetadataTransactor{contract: contract}, IERC721MetadataFilterer: IERC721MetadataFilterer{contract: contract}}, nil
 22770  }
 22771  
 22772  // NewIERC721MetadataCaller creates a new read-only instance of IERC721Metadata, bound to a specific deployed contract.
 22773  func NewIERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC721MetadataCaller, error) {
 22774  	contract, err := bindIERC721Metadata(address, caller, nil, nil)
 22775  	if err != nil {
 22776  		return nil, err
 22777  	}
 22778  	return &IERC721MetadataCaller{contract: contract}, nil
 22779  }
 22780  
 22781  // NewIERC721MetadataTransactor creates a new write-only instance of IERC721Metadata, bound to a specific deployed contract.
 22782  func NewIERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721MetadataTransactor, error) {
 22783  	contract, err := bindIERC721Metadata(address, nil, transactor, nil)
 22784  	if err != nil {
 22785  		return nil, err
 22786  	}
 22787  	return &IERC721MetadataTransactor{contract: contract}, nil
 22788  }
 22789  
 22790  // NewIERC721MetadataFilterer creates a new log filterer instance of IERC721Metadata, bound to a specific deployed contract.
 22791  func NewIERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721MetadataFilterer, error) {
 22792  	contract, err := bindIERC721Metadata(address, nil, nil, filterer)
 22793  	if err != nil {
 22794  		return nil, err
 22795  	}
 22796  	return &IERC721MetadataFilterer{contract: contract}, nil
 22797  }
 22798  
 22799  // bindIERC721Metadata binds a generic wrapper to an already deployed contract.
 22800  func bindIERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 22801  	parsed, err := abi.JSON(strings.NewReader(IERC721MetadataABI))
 22802  	if err != nil {
 22803  		return nil, err
 22804  	}
 22805  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 22806  }
 22807  
 22808  // Call invokes the (constant) contract method with params as input values and
 22809  // sets the output to result. The result type might be a single field for simple
 22810  // returns, a slice of interfaces for anonymous returns and a struct for named
 22811  // returns.
 22812  func (_IERC721Metadata *IERC721MetadataRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 22813  	return _IERC721Metadata.Contract.IERC721MetadataCaller.contract.Call(opts, result, method, params...)
 22814  }
 22815  
 22816  // Transfer initiates a plain transaction to move funds to the contract, calling
 22817  // its default method if one is available.
 22818  func (_IERC721Metadata *IERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 22819  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transfer(opts)
 22820  }
 22821  
 22822  // Transact invokes the (paid) contract method with params as input values.
 22823  func (_IERC721Metadata *IERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 22824  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transact(opts, method, params...)
 22825  }
 22826  
 22827  // Call invokes the (constant) contract method with params as input values and
 22828  // sets the output to result. The result type might be a single field for simple
 22829  // returns, a slice of interfaces for anonymous returns and a struct for named
 22830  // returns.
 22831  func (_IERC721Metadata *IERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 22832  	return _IERC721Metadata.Contract.contract.Call(opts, result, method, params...)
 22833  }
 22834  
 22835  // Transfer initiates a plain transaction to move funds to the contract, calling
 22836  // its default method if one is available.
 22837  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 22838  	return _IERC721Metadata.Contract.contract.Transfer(opts)
 22839  }
 22840  
 22841  // Transact invokes the (paid) contract method with params as input values.
 22842  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 22843  	return _IERC721Metadata.Contract.contract.Transact(opts, method, params...)
 22844  }
 22845  
 22846  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 22847  //
 22848  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 22849  func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 22850  	var (
 22851  		ret0 = new(*big.Int)
 22852  	)
 22853  	out := ret0
 22854  	err := _IERC721Metadata.contract.Call(opts, out, "balanceOf", owner)
 22855  	return *ret0, err
 22856  }
 22857  
 22858  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 22859  //
 22860  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 22861  func (_IERC721Metadata *IERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) {
 22862  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
 22863  }
 22864  
 22865  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 22866  //
 22867  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 22868  func (_IERC721Metadata *IERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 22869  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
 22870  }
 22871  
 22872  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 22873  //
 22874  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 22875  func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 22876  	var (
 22877  		ret0 = new(common.Address)
 22878  	)
 22879  	out := ret0
 22880  	err := _IERC721Metadata.contract.Call(opts, out, "getApproved", tokenId)
 22881  	return *ret0, err
 22882  }
 22883  
 22884  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 22885  //
 22886  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 22887  func (_IERC721Metadata *IERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 22888  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
 22889  }
 22890  
 22891  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 22892  //
 22893  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 22894  func (_IERC721Metadata *IERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 22895  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
 22896  }
 22897  
 22898  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 22899  //
 22900  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 22901  func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 22902  	var (
 22903  		ret0 = new(bool)
 22904  	)
 22905  	out := ret0
 22906  	err := _IERC721Metadata.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 22907  	return *ret0, err
 22908  }
 22909  
 22910  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 22911  //
 22912  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 22913  func (_IERC721Metadata *IERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 22914  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
 22915  }
 22916  
 22917  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 22918  //
 22919  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 22920  func (_IERC721Metadata *IERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 22921  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
 22922  }
 22923  
 22924  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 22925  //
 22926  // Solidity: function name() view returns(string)
 22927  func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
 22928  	var (
 22929  		ret0 = new(string)
 22930  	)
 22931  	out := ret0
 22932  	err := _IERC721Metadata.contract.Call(opts, out, "name")
 22933  	return *ret0, err
 22934  }
 22935  
 22936  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 22937  //
 22938  // Solidity: function name() view returns(string)
 22939  func (_IERC721Metadata *IERC721MetadataSession) Name() (string, error) {
 22940  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
 22941  }
 22942  
 22943  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 22944  //
 22945  // Solidity: function name() view returns(string)
 22946  func (_IERC721Metadata *IERC721MetadataCallerSession) Name() (string, error) {
 22947  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
 22948  }
 22949  
 22950  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 22951  //
 22952  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 22953  func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 22954  	var (
 22955  		ret0 = new(common.Address)
 22956  	)
 22957  	out := ret0
 22958  	err := _IERC721Metadata.contract.Call(opts, out, "ownerOf", tokenId)
 22959  	return *ret0, err
 22960  }
 22961  
 22962  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 22963  //
 22964  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 22965  func (_IERC721Metadata *IERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 22966  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
 22967  }
 22968  
 22969  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 22970  //
 22971  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 22972  func (_IERC721Metadata *IERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 22973  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
 22974  }
 22975  
 22976  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 22977  //
 22978  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 22979  func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 22980  	var (
 22981  		ret0 = new(bool)
 22982  	)
 22983  	out := ret0
 22984  	err := _IERC721Metadata.contract.Call(opts, out, "supportsInterface", interfaceId)
 22985  	return *ret0, err
 22986  }
 22987  
 22988  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 22989  //
 22990  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 22991  func (_IERC721Metadata *IERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 22992  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
 22993  }
 22994  
 22995  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 22996  //
 22997  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 22998  func (_IERC721Metadata *IERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 22999  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
 23000  }
 23001  
 23002  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 23003  //
 23004  // Solidity: function symbol() view returns(string)
 23005  func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
 23006  	var (
 23007  		ret0 = new(string)
 23008  	)
 23009  	out := ret0
 23010  	err := _IERC721Metadata.contract.Call(opts, out, "symbol")
 23011  	return *ret0, err
 23012  }
 23013  
 23014  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 23015  //
 23016  // Solidity: function symbol() view returns(string)
 23017  func (_IERC721Metadata *IERC721MetadataSession) Symbol() (string, error) {
 23018  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
 23019  }
 23020  
 23021  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 23022  //
 23023  // Solidity: function symbol() view returns(string)
 23024  func (_IERC721Metadata *IERC721MetadataCallerSession) Symbol() (string, error) {
 23025  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
 23026  }
 23027  
 23028  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 23029  //
 23030  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 23031  func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 23032  	var (
 23033  		ret0 = new(string)
 23034  	)
 23035  	out := ret0
 23036  	err := _IERC721Metadata.contract.Call(opts, out, "tokenURI", tokenId)
 23037  	return *ret0, err
 23038  }
 23039  
 23040  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 23041  //
 23042  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 23043  func (_IERC721Metadata *IERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) {
 23044  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
 23045  }
 23046  
 23047  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 23048  //
 23049  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 23050  func (_IERC721Metadata *IERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 23051  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
 23052  }
 23053  
 23054  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 23055  //
 23056  // Solidity: function approve(address to, uint256 tokenId) returns()
 23057  func (_IERC721Metadata *IERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 23058  	return _IERC721Metadata.contract.Transact(opts, "approve", to, tokenId)
 23059  }
 23060  
 23061  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 23062  //
 23063  // Solidity: function approve(address to, uint256 tokenId) returns()
 23064  func (_IERC721Metadata *IERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 23065  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
 23066  }
 23067  
 23068  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 23069  //
 23070  // Solidity: function approve(address to, uint256 tokenId) returns()
 23071  func (_IERC721Metadata *IERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 23072  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
 23073  }
 23074  
 23075  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 23076  //
 23077  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 23078  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 23079  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 23080  }
 23081  
 23082  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 23083  //
 23084  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 23085  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 23086  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 23087  }
 23088  
 23089  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 23090  //
 23091  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 23092  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 23093  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 23094  }
 23095  
 23096  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 23097  //
 23098  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 23099  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 23100  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
 23101  }
 23102  
 23103  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 23104  //
 23105  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 23106  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 23107  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
 23108  }
 23109  
 23110  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 23111  //
 23112  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 23113  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 23114  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
 23115  }
 23116  
 23117  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 23118  //
 23119  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 23120  func (_IERC721Metadata *IERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
 23121  	return _IERC721Metadata.contract.Transact(opts, "setApprovalForAll", operator, _approved)
 23122  }
 23123  
 23124  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 23125  //
 23126  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 23127  func (_IERC721Metadata *IERC721MetadataSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 23128  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
 23129  }
 23130  
 23131  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 23132  //
 23133  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 23134  func (_IERC721Metadata *IERC721MetadataTransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 23135  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
 23136  }
 23137  
 23138  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 23139  //
 23140  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 23141  func (_IERC721Metadata *IERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 23142  	return _IERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId)
 23143  }
 23144  
 23145  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 23146  //
 23147  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 23148  func (_IERC721Metadata *IERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 23149  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 23150  }
 23151  
 23152  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 23153  //
 23154  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 23155  func (_IERC721Metadata *IERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 23156  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 23157  }
 23158  
 23159  // IERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721Metadata contract.
 23160  type IERC721MetadataApprovalIterator struct {
 23161  	Event *IERC721MetadataApproval // Event containing the contract specifics and raw log
 23162  
 23163  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 23164  	event    string              // Event name to use for unpacking event data
 23165  
 23166  	logs chan types.Log      // Log channel receiving the found contract events
 23167  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 23168  	done bool                // Whether the subscription completed delivering logs
 23169  	fail error               // Occurred error to stop iteration
 23170  }
 23171  
 23172  // Next advances the iterator to the subsequent event, returning whether there
 23173  // are any more events found. In case of a retrieval or parsing error, false is
 23174  // returned and Error() can be queried for the exact failure.
 23175  func (it *IERC721MetadataApprovalIterator) Next() bool {
 23176  	// If the iterator failed, stop iterating
 23177  	if it.fail != nil {
 23178  		return false
 23179  	}
 23180  	// If the iterator completed, deliver directly whatever's available
 23181  	if it.done {
 23182  		select {
 23183  		case log := <-it.logs:
 23184  			it.Event = new(IERC721MetadataApproval)
 23185  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23186  				it.fail = err
 23187  				return false
 23188  			}
 23189  			it.Event.Raw = log
 23190  			return true
 23191  
 23192  		default:
 23193  			return false
 23194  		}
 23195  	}
 23196  	// Iterator still in progress, wait for either a data or an error event
 23197  	select {
 23198  	case log := <-it.logs:
 23199  		it.Event = new(IERC721MetadataApproval)
 23200  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23201  			it.fail = err
 23202  			return false
 23203  		}
 23204  		it.Event.Raw = log
 23205  		return true
 23206  
 23207  	case err := <-it.sub.Err():
 23208  		it.done = true
 23209  		it.fail = err
 23210  		return it.Next()
 23211  	}
 23212  }
 23213  
 23214  // Error returns any retrieval or parsing error occurred during filtering.
 23215  func (it *IERC721MetadataApprovalIterator) Error() error {
 23216  	return it.fail
 23217  }
 23218  
 23219  // Close terminates the iteration process, releasing any pending underlying
 23220  // resources.
 23221  func (it *IERC721MetadataApprovalIterator) Close() error {
 23222  	it.sub.Unsubscribe()
 23223  	return nil
 23224  }
 23225  
 23226  // IERC721MetadataApproval represents a Approval event raised by the IERC721Metadata contract.
 23227  type IERC721MetadataApproval struct {
 23228  	Owner    common.Address
 23229  	Approved common.Address
 23230  	TokenId  *big.Int
 23231  	Raw      types.Log // Blockchain specific contextual infos
 23232  }
 23233  
 23234  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 23235  //
 23236  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 23237  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721MetadataApprovalIterator, error) {
 23238  
 23239  	var ownerRule []interface{}
 23240  	for _, ownerItem := range owner {
 23241  		ownerRule = append(ownerRule, ownerItem)
 23242  	}
 23243  	var approvedRule []interface{}
 23244  	for _, approvedItem := range approved {
 23245  		approvedRule = append(approvedRule, approvedItem)
 23246  	}
 23247  	var tokenIdRule []interface{}
 23248  	for _, tokenIdItem := range tokenId {
 23249  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 23250  	}
 23251  
 23252  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 23253  	if err != nil {
 23254  		return nil, err
 23255  	}
 23256  	return &IERC721MetadataApprovalIterator{contract: _IERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil
 23257  }
 23258  
 23259  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 23260  //
 23261  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 23262  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 23263  
 23264  	var ownerRule []interface{}
 23265  	for _, ownerItem := range owner {
 23266  		ownerRule = append(ownerRule, ownerItem)
 23267  	}
 23268  	var approvedRule []interface{}
 23269  	for _, approvedItem := range approved {
 23270  		approvedRule = append(approvedRule, approvedItem)
 23271  	}
 23272  	var tokenIdRule []interface{}
 23273  	for _, tokenIdItem := range tokenId {
 23274  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 23275  	}
 23276  
 23277  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 23278  	if err != nil {
 23279  		return nil, err
 23280  	}
 23281  	return event.NewSubscription(func(quit <-chan struct{}) error {
 23282  		defer sub.Unsubscribe()
 23283  		for {
 23284  			select {
 23285  			case log := <-logs:
 23286  				// New log arrived, parse the event and forward to the user
 23287  				event := new(IERC721MetadataApproval)
 23288  				if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 23289  					return err
 23290  				}
 23291  				event.Raw = log
 23292  
 23293  				select {
 23294  				case sink <- event:
 23295  				case err := <-sub.Err():
 23296  					return err
 23297  				case <-quit:
 23298  					return nil
 23299  				}
 23300  			case err := <-sub.Err():
 23301  				return err
 23302  			case <-quit:
 23303  				return nil
 23304  			}
 23305  		}
 23306  	}), nil
 23307  }
 23308  
 23309  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 23310  //
 23311  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 23312  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApproval(log types.Log) (*IERC721MetadataApproval, error) {
 23313  	event := new(IERC721MetadataApproval)
 23314  	if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 23315  		return nil, err
 23316  	}
 23317  	return event, nil
 23318  }
 23319  
 23320  // IERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721Metadata contract.
 23321  type IERC721MetadataApprovalForAllIterator struct {
 23322  	Event *IERC721MetadataApprovalForAll // Event containing the contract specifics and raw log
 23323  
 23324  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 23325  	event    string              // Event name to use for unpacking event data
 23326  
 23327  	logs chan types.Log      // Log channel receiving the found contract events
 23328  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 23329  	done bool                // Whether the subscription completed delivering logs
 23330  	fail error               // Occurred error to stop iteration
 23331  }
 23332  
 23333  // Next advances the iterator to the subsequent event, returning whether there
 23334  // are any more events found. In case of a retrieval or parsing error, false is
 23335  // returned and Error() can be queried for the exact failure.
 23336  func (it *IERC721MetadataApprovalForAllIterator) Next() bool {
 23337  	// If the iterator failed, stop iterating
 23338  	if it.fail != nil {
 23339  		return false
 23340  	}
 23341  	// If the iterator completed, deliver directly whatever's available
 23342  	if it.done {
 23343  		select {
 23344  		case log := <-it.logs:
 23345  			it.Event = new(IERC721MetadataApprovalForAll)
 23346  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23347  				it.fail = err
 23348  				return false
 23349  			}
 23350  			it.Event.Raw = log
 23351  			return true
 23352  
 23353  		default:
 23354  			return false
 23355  		}
 23356  	}
 23357  	// Iterator still in progress, wait for either a data or an error event
 23358  	select {
 23359  	case log := <-it.logs:
 23360  		it.Event = new(IERC721MetadataApprovalForAll)
 23361  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23362  			it.fail = err
 23363  			return false
 23364  		}
 23365  		it.Event.Raw = log
 23366  		return true
 23367  
 23368  	case err := <-it.sub.Err():
 23369  		it.done = true
 23370  		it.fail = err
 23371  		return it.Next()
 23372  	}
 23373  }
 23374  
 23375  // Error returns any retrieval or parsing error occurred during filtering.
 23376  func (it *IERC721MetadataApprovalForAllIterator) Error() error {
 23377  	return it.fail
 23378  }
 23379  
 23380  // Close terminates the iteration process, releasing any pending underlying
 23381  // resources.
 23382  func (it *IERC721MetadataApprovalForAllIterator) Close() error {
 23383  	it.sub.Unsubscribe()
 23384  	return nil
 23385  }
 23386  
 23387  // IERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the IERC721Metadata contract.
 23388  type IERC721MetadataApprovalForAll struct {
 23389  	Owner    common.Address
 23390  	Operator common.Address
 23391  	Approved bool
 23392  	Raw      types.Log // Blockchain specific contextual infos
 23393  }
 23394  
 23395  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 23396  //
 23397  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 23398  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721MetadataApprovalForAllIterator, error) {
 23399  
 23400  	var ownerRule []interface{}
 23401  	for _, ownerItem := range owner {
 23402  		ownerRule = append(ownerRule, ownerItem)
 23403  	}
 23404  	var operatorRule []interface{}
 23405  	for _, operatorItem := range operator {
 23406  		operatorRule = append(operatorRule, operatorItem)
 23407  	}
 23408  
 23409  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 23410  	if err != nil {
 23411  		return nil, err
 23412  	}
 23413  	return &IERC721MetadataApprovalForAllIterator{contract: _IERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 23414  }
 23415  
 23416  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 23417  //
 23418  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 23419  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 23420  
 23421  	var ownerRule []interface{}
 23422  	for _, ownerItem := range owner {
 23423  		ownerRule = append(ownerRule, ownerItem)
 23424  	}
 23425  	var operatorRule []interface{}
 23426  	for _, operatorItem := range operator {
 23427  		operatorRule = append(operatorRule, operatorItem)
 23428  	}
 23429  
 23430  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 23431  	if err != nil {
 23432  		return nil, err
 23433  	}
 23434  	return event.NewSubscription(func(quit <-chan struct{}) error {
 23435  		defer sub.Unsubscribe()
 23436  		for {
 23437  			select {
 23438  			case log := <-logs:
 23439  				// New log arrived, parse the event and forward to the user
 23440  				event := new(IERC721MetadataApprovalForAll)
 23441  				if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 23442  					return err
 23443  				}
 23444  				event.Raw = log
 23445  
 23446  				select {
 23447  				case sink <- event:
 23448  				case err := <-sub.Err():
 23449  					return err
 23450  				case <-quit:
 23451  					return nil
 23452  				}
 23453  			case err := <-sub.Err():
 23454  				return err
 23455  			case <-quit:
 23456  				return nil
 23457  			}
 23458  		}
 23459  	}), nil
 23460  }
 23461  
 23462  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 23463  //
 23464  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 23465  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*IERC721MetadataApprovalForAll, error) {
 23466  	event := new(IERC721MetadataApprovalForAll)
 23467  	if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 23468  		return nil, err
 23469  	}
 23470  	return event, nil
 23471  }
 23472  
 23473  // IERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721Metadata contract.
 23474  type IERC721MetadataTransferIterator struct {
 23475  	Event *IERC721MetadataTransfer // Event containing the contract specifics and raw log
 23476  
 23477  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 23478  	event    string              // Event name to use for unpacking event data
 23479  
 23480  	logs chan types.Log      // Log channel receiving the found contract events
 23481  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 23482  	done bool                // Whether the subscription completed delivering logs
 23483  	fail error               // Occurred error to stop iteration
 23484  }
 23485  
 23486  // Next advances the iterator to the subsequent event, returning whether there
 23487  // are any more events found. In case of a retrieval or parsing error, false is
 23488  // returned and Error() can be queried for the exact failure.
 23489  func (it *IERC721MetadataTransferIterator) Next() bool {
 23490  	// If the iterator failed, stop iterating
 23491  	if it.fail != nil {
 23492  		return false
 23493  	}
 23494  	// If the iterator completed, deliver directly whatever's available
 23495  	if it.done {
 23496  		select {
 23497  		case log := <-it.logs:
 23498  			it.Event = new(IERC721MetadataTransfer)
 23499  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23500  				it.fail = err
 23501  				return false
 23502  			}
 23503  			it.Event.Raw = log
 23504  			return true
 23505  
 23506  		default:
 23507  			return false
 23508  		}
 23509  	}
 23510  	// Iterator still in progress, wait for either a data or an error event
 23511  	select {
 23512  	case log := <-it.logs:
 23513  		it.Event = new(IERC721MetadataTransfer)
 23514  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 23515  			it.fail = err
 23516  			return false
 23517  		}
 23518  		it.Event.Raw = log
 23519  		return true
 23520  
 23521  	case err := <-it.sub.Err():
 23522  		it.done = true
 23523  		it.fail = err
 23524  		return it.Next()
 23525  	}
 23526  }
 23527  
 23528  // Error returns any retrieval or parsing error occurred during filtering.
 23529  func (it *IERC721MetadataTransferIterator) Error() error {
 23530  	return it.fail
 23531  }
 23532  
 23533  // Close terminates the iteration process, releasing any pending underlying
 23534  // resources.
 23535  func (it *IERC721MetadataTransferIterator) Close() error {
 23536  	it.sub.Unsubscribe()
 23537  	return nil
 23538  }
 23539  
 23540  // IERC721MetadataTransfer represents a Transfer event raised by the IERC721Metadata contract.
 23541  type IERC721MetadataTransfer struct {
 23542  	From    common.Address
 23543  	To      common.Address
 23544  	TokenId *big.Int
 23545  	Raw     types.Log // Blockchain specific contextual infos
 23546  }
 23547  
 23548  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 23549  //
 23550  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 23551  func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721MetadataTransferIterator, error) {
 23552  
 23553  	var fromRule []interface{}
 23554  	for _, fromItem := range from {
 23555  		fromRule = append(fromRule, fromItem)
 23556  	}
 23557  	var toRule []interface{}
 23558  	for _, toItem := range to {
 23559  		toRule = append(toRule, toItem)
 23560  	}
 23561  	var tokenIdRule []interface{}
 23562  	for _, tokenIdItem := range tokenId {
 23563  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 23564  	}
 23565  
 23566  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 23567  	if err != nil {
 23568  		return nil, err
 23569  	}
 23570  	return &IERC721MetadataTransferIterator{contract: _IERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil
 23571  }
 23572  
 23573  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 23574  //
 23575  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 23576  func (_IERC721Metadata *IERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 23577  
 23578  	var fromRule []interface{}
 23579  	for _, fromItem := range from {
 23580  		fromRule = append(fromRule, fromItem)
 23581  	}
 23582  	var toRule []interface{}
 23583  	for _, toItem := range to {
 23584  		toRule = append(toRule, toItem)
 23585  	}
 23586  	var tokenIdRule []interface{}
 23587  	for _, tokenIdItem := range tokenId {
 23588  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 23589  	}
 23590  
 23591  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 23592  	if err != nil {
 23593  		return nil, err
 23594  	}
 23595  	return event.NewSubscription(func(quit <-chan struct{}) error {
 23596  		defer sub.Unsubscribe()
 23597  		for {
 23598  			select {
 23599  			case log := <-logs:
 23600  				// New log arrived, parse the event and forward to the user
 23601  				event := new(IERC721MetadataTransfer)
 23602  				if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 23603  					return err
 23604  				}
 23605  				event.Raw = log
 23606  
 23607  				select {
 23608  				case sink <- event:
 23609  				case err := <-sub.Err():
 23610  					return err
 23611  				case <-quit:
 23612  					return nil
 23613  				}
 23614  			case err := <-sub.Err():
 23615  				return err
 23616  			case <-quit:
 23617  				return nil
 23618  			}
 23619  		}
 23620  	}), nil
 23621  }
 23622  
 23623  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 23624  //
 23625  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 23626  func (_IERC721Metadata *IERC721MetadataFilterer) ParseTransfer(log types.Log) (*IERC721MetadataTransfer, error) {
 23627  	event := new(IERC721MetadataTransfer)
 23628  	if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 23629  		return nil, err
 23630  	}
 23631  	return event, nil
 23632  }
 23633  
 23634  // IERC721ReceiverABI is the input ABI used to generate the binding from.
 23635  const IERC721ReceiverABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 23636  
 23637  // IERC721ReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 23638  const IERC721ReceiverBinRuntime = ``
 23639  
 23640  // IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation.
 23641  var IERC721ReceiverFuncSigs = map[string]string{
 23642  	"150b7a02": "onERC721Received(address,address,uint256,bytes)",
 23643  }
 23644  
 23645  // IERC721Receiver is an auto generated Go binding around a Klaytn contract.
 23646  type IERC721Receiver struct {
 23647  	IERC721ReceiverCaller     // Read-only binding to the contract
 23648  	IERC721ReceiverTransactor // Write-only binding to the contract
 23649  	IERC721ReceiverFilterer   // Log filterer for contract events
 23650  }
 23651  
 23652  // IERC721ReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
 23653  type IERC721ReceiverCaller struct {
 23654  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23655  }
 23656  
 23657  // IERC721ReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
 23658  type IERC721ReceiverTransactor struct {
 23659  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23660  }
 23661  
 23662  // IERC721ReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 23663  type IERC721ReceiverFilterer struct {
 23664  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23665  }
 23666  
 23667  // IERC721ReceiverSession is an auto generated Go binding around a Klaytn contract,
 23668  // with pre-set call and transact options.
 23669  type IERC721ReceiverSession struct {
 23670  	Contract     *IERC721Receiver  // Generic contract binding to set the session for
 23671  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 23672  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 23673  }
 23674  
 23675  // IERC721ReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 23676  // with pre-set call options.
 23677  type IERC721ReceiverCallerSession struct {
 23678  	Contract *IERC721ReceiverCaller // Generic contract caller binding to set the session for
 23679  	CallOpts bind.CallOpts          // Call options to use throughout this session
 23680  }
 23681  
 23682  // IERC721ReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 23683  // with pre-set transact options.
 23684  type IERC721ReceiverTransactorSession struct {
 23685  	Contract     *IERC721ReceiverTransactor // Generic contract transactor binding to set the session for
 23686  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 23687  }
 23688  
 23689  // IERC721ReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
 23690  type IERC721ReceiverRaw struct {
 23691  	Contract *IERC721Receiver // Generic contract binding to access the raw methods on
 23692  }
 23693  
 23694  // IERC721ReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 23695  type IERC721ReceiverCallerRaw struct {
 23696  	Contract *IERC721ReceiverCaller // Generic read-only contract binding to access the raw methods on
 23697  }
 23698  
 23699  // IERC721ReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 23700  type IERC721ReceiverTransactorRaw struct {
 23701  	Contract *IERC721ReceiverTransactor // Generic write-only contract binding to access the raw methods on
 23702  }
 23703  
 23704  // NewIERC721Receiver creates a new instance of IERC721Receiver, bound to a specific deployed contract.
 23705  func NewIERC721Receiver(address common.Address, backend bind.ContractBackend) (*IERC721Receiver, error) {
 23706  	contract, err := bindIERC721Receiver(address, backend, backend, backend)
 23707  	if err != nil {
 23708  		return nil, err
 23709  	}
 23710  	return &IERC721Receiver{IERC721ReceiverCaller: IERC721ReceiverCaller{contract: contract}, IERC721ReceiverTransactor: IERC721ReceiverTransactor{contract: contract}, IERC721ReceiverFilterer: IERC721ReceiverFilterer{contract: contract}}, nil
 23711  }
 23712  
 23713  // NewIERC721ReceiverCaller creates a new read-only instance of IERC721Receiver, bound to a specific deployed contract.
 23714  func NewIERC721ReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721ReceiverCaller, error) {
 23715  	contract, err := bindIERC721Receiver(address, caller, nil, nil)
 23716  	if err != nil {
 23717  		return nil, err
 23718  	}
 23719  	return &IERC721ReceiverCaller{contract: contract}, nil
 23720  }
 23721  
 23722  // NewIERC721ReceiverTransactor creates a new write-only instance of IERC721Receiver, bound to a specific deployed contract.
 23723  func NewIERC721ReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721ReceiverTransactor, error) {
 23724  	contract, err := bindIERC721Receiver(address, nil, transactor, nil)
 23725  	if err != nil {
 23726  		return nil, err
 23727  	}
 23728  	return &IERC721ReceiverTransactor{contract: contract}, nil
 23729  }
 23730  
 23731  // NewIERC721ReceiverFilterer creates a new log filterer instance of IERC721Receiver, bound to a specific deployed contract.
 23732  func NewIERC721ReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721ReceiverFilterer, error) {
 23733  	contract, err := bindIERC721Receiver(address, nil, nil, filterer)
 23734  	if err != nil {
 23735  		return nil, err
 23736  	}
 23737  	return &IERC721ReceiverFilterer{contract: contract}, nil
 23738  }
 23739  
 23740  // bindIERC721Receiver binds a generic wrapper to an already deployed contract.
 23741  func bindIERC721Receiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 23742  	parsed, err := abi.JSON(strings.NewReader(IERC721ReceiverABI))
 23743  	if err != nil {
 23744  		return nil, err
 23745  	}
 23746  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 23747  }
 23748  
 23749  // Call invokes the (constant) contract method with params as input values and
 23750  // sets the output to result. The result type might be a single field for simple
 23751  // returns, a slice of interfaces for anonymous returns and a struct for named
 23752  // returns.
 23753  func (_IERC721Receiver *IERC721ReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 23754  	return _IERC721Receiver.Contract.IERC721ReceiverCaller.contract.Call(opts, result, method, params...)
 23755  }
 23756  
 23757  // Transfer initiates a plain transaction to move funds to the contract, calling
 23758  // its default method if one is available.
 23759  func (_IERC721Receiver *IERC721ReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 23760  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transfer(opts)
 23761  }
 23762  
 23763  // Transact invokes the (paid) contract method with params as input values.
 23764  func (_IERC721Receiver *IERC721ReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 23765  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transact(opts, method, params...)
 23766  }
 23767  
 23768  // Call invokes the (constant) contract method with params as input values and
 23769  // sets the output to result. The result type might be a single field for simple
 23770  // returns, a slice of interfaces for anonymous returns and a struct for named
 23771  // returns.
 23772  func (_IERC721Receiver *IERC721ReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 23773  	return _IERC721Receiver.Contract.contract.Call(opts, result, method, params...)
 23774  }
 23775  
 23776  // Transfer initiates a plain transaction to move funds to the contract, calling
 23777  // its default method if one is available.
 23778  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 23779  	return _IERC721Receiver.Contract.contract.Transfer(opts)
 23780  }
 23781  
 23782  // Transact invokes the (paid) contract method with params as input values.
 23783  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 23784  	return _IERC721Receiver.Contract.contract.Transact(opts, method, params...)
 23785  }
 23786  
 23787  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 23788  //
 23789  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 23790  func (_IERC721Receiver *IERC721ReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 23791  	return _IERC721Receiver.contract.Transact(opts, "onERC721Received", operator, from, tokenId, data)
 23792  }
 23793  
 23794  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 23795  //
 23796  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 23797  func (_IERC721Receiver *IERC721ReceiverSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 23798  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
 23799  }
 23800  
 23801  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 23802  //
 23803  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 23804  func (_IERC721Receiver *IERC721ReceiverTransactorSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 23805  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
 23806  }
 23807  
 23808  // MinterRoleABI is the input ABI used to generate the binding from.
 23809  const MinterRoleABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"}]"
 23810  
 23811  // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 23812  const MinterRoleBinRuntime = ``
 23813  
 23814  // MinterRoleFuncSigs maps the 4-byte function signature to its string representation.
 23815  var MinterRoleFuncSigs = map[string]string{
 23816  	"983b2d56": "addMinter(address)",
 23817  	"aa271e1a": "isMinter(address)",
 23818  	"98650275": "renounceMinter()",
 23819  }
 23820  
 23821  // MinterRole is an auto generated Go binding around a Klaytn contract.
 23822  type MinterRole struct {
 23823  	MinterRoleCaller     // Read-only binding to the contract
 23824  	MinterRoleTransactor // Write-only binding to the contract
 23825  	MinterRoleFilterer   // Log filterer for contract events
 23826  }
 23827  
 23828  // MinterRoleCaller is an auto generated read-only Go binding around a Klaytn contract.
 23829  type MinterRoleCaller struct {
 23830  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23831  }
 23832  
 23833  // MinterRoleTransactor is an auto generated write-only Go binding around a Klaytn contract.
 23834  type MinterRoleTransactor struct {
 23835  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23836  }
 23837  
 23838  // MinterRoleFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 23839  type MinterRoleFilterer struct {
 23840  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 23841  }
 23842  
 23843  // MinterRoleSession is an auto generated Go binding around a Klaytn contract,
 23844  // with pre-set call and transact options.
 23845  type MinterRoleSession struct {
 23846  	Contract     *MinterRole       // Generic contract binding to set the session for
 23847  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 23848  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 23849  }
 23850  
 23851  // MinterRoleCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 23852  // with pre-set call options.
 23853  type MinterRoleCallerSession struct {
 23854  	Contract *MinterRoleCaller // Generic contract caller binding to set the session for
 23855  	CallOpts bind.CallOpts     // Call options to use throughout this session
 23856  }
 23857  
 23858  // MinterRoleTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 23859  // with pre-set transact options.
 23860  type MinterRoleTransactorSession struct {
 23861  	Contract     *MinterRoleTransactor // Generic contract transactor binding to set the session for
 23862  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
 23863  }
 23864  
 23865  // MinterRoleRaw is an auto generated low-level Go binding around a Klaytn contract.
 23866  type MinterRoleRaw struct {
 23867  	Contract *MinterRole // Generic contract binding to access the raw methods on
 23868  }
 23869  
 23870  // MinterRoleCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 23871  type MinterRoleCallerRaw struct {
 23872  	Contract *MinterRoleCaller // Generic read-only contract binding to access the raw methods on
 23873  }
 23874  
 23875  // MinterRoleTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 23876  type MinterRoleTransactorRaw struct {
 23877  	Contract *MinterRoleTransactor // Generic write-only contract binding to access the raw methods on
 23878  }
 23879  
 23880  // NewMinterRole creates a new instance of MinterRole, bound to a specific deployed contract.
 23881  func NewMinterRole(address common.Address, backend bind.ContractBackend) (*MinterRole, error) {
 23882  	contract, err := bindMinterRole(address, backend, backend, backend)
 23883  	if err != nil {
 23884  		return nil, err
 23885  	}
 23886  	return &MinterRole{MinterRoleCaller: MinterRoleCaller{contract: contract}, MinterRoleTransactor: MinterRoleTransactor{contract: contract}, MinterRoleFilterer: MinterRoleFilterer{contract: contract}}, nil
 23887  }
 23888  
 23889  // NewMinterRoleCaller creates a new read-only instance of MinterRole, bound to a specific deployed contract.
 23890  func NewMinterRoleCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleCaller, error) {
 23891  	contract, err := bindMinterRole(address, caller, nil, nil)
 23892  	if err != nil {
 23893  		return nil, err
 23894  	}
 23895  	return &MinterRoleCaller{contract: contract}, nil
 23896  }
 23897  
 23898  // NewMinterRoleTransactor creates a new write-only instance of MinterRole, bound to a specific deployed contract.
 23899  func NewMinterRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleTransactor, error) {
 23900  	contract, err := bindMinterRole(address, nil, transactor, nil)
 23901  	if err != nil {
 23902  		return nil, err
 23903  	}
 23904  	return &MinterRoleTransactor{contract: contract}, nil
 23905  }
 23906  
 23907  // NewMinterRoleFilterer creates a new log filterer instance of MinterRole, bound to a specific deployed contract.
 23908  func NewMinterRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleFilterer, error) {
 23909  	contract, err := bindMinterRole(address, nil, nil, filterer)
 23910  	if err != nil {
 23911  		return nil, err
 23912  	}
 23913  	return &MinterRoleFilterer{contract: contract}, nil
 23914  }
 23915  
 23916  // bindMinterRole binds a generic wrapper to an already deployed contract.
 23917  func bindMinterRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 23918  	parsed, err := abi.JSON(strings.NewReader(MinterRoleABI))
 23919  	if err != nil {
 23920  		return nil, err
 23921  	}
 23922  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 23923  }
 23924  
 23925  // Call invokes the (constant) contract method with params as input values and
 23926  // sets the output to result. The result type might be a single field for simple
 23927  // returns, a slice of interfaces for anonymous returns and a struct for named
 23928  // returns.
 23929  func (_MinterRole *MinterRoleRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 23930  	return _MinterRole.Contract.MinterRoleCaller.contract.Call(opts, result, method, params...)
 23931  }
 23932  
 23933  // Transfer initiates a plain transaction to move funds to the contract, calling
 23934  // its default method if one is available.
 23935  func (_MinterRole *MinterRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 23936  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transfer(opts)
 23937  }
 23938  
 23939  // Transact invokes the (paid) contract method with params as input values.
 23940  func (_MinterRole *MinterRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 23941  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transact(opts, method, params...)
 23942  }
 23943  
 23944  // Call invokes the (constant) contract method with params as input values and
 23945  // sets the output to result. The result type might be a single field for simple
 23946  // returns, a slice of interfaces for anonymous returns and a struct for named
 23947  // returns.
 23948  func (_MinterRole *MinterRoleCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 23949  	return _MinterRole.Contract.contract.Call(opts, result, method, params...)
 23950  }
 23951  
 23952  // Transfer initiates a plain transaction to move funds to the contract, calling
 23953  // its default method if one is available.
 23954  func (_MinterRole *MinterRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 23955  	return _MinterRole.Contract.contract.Transfer(opts)
 23956  }
 23957  
 23958  // Transact invokes the (paid) contract method with params as input values.
 23959  func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 23960  	return _MinterRole.Contract.contract.Transact(opts, method, params...)
 23961  }
 23962  
 23963  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 23964  //
 23965  // Solidity: function isMinter(address account) view returns(bool)
 23966  func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 23967  	var (
 23968  		ret0 = new(bool)
 23969  	)
 23970  	out := ret0
 23971  	err := _MinterRole.contract.Call(opts, out, "isMinter", account)
 23972  	return *ret0, err
 23973  }
 23974  
 23975  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 23976  //
 23977  // Solidity: function isMinter(address account) view returns(bool)
 23978  func (_MinterRole *MinterRoleSession) IsMinter(account common.Address) (bool, error) {
 23979  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
 23980  }
 23981  
 23982  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 23983  //
 23984  // Solidity: function isMinter(address account) view returns(bool)
 23985  func (_MinterRole *MinterRoleCallerSession) IsMinter(account common.Address) (bool, error) {
 23986  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
 23987  }
 23988  
 23989  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 23990  //
 23991  // Solidity: function addMinter(address account) returns()
 23992  func (_MinterRole *MinterRoleTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 23993  	return _MinterRole.contract.Transact(opts, "addMinter", account)
 23994  }
 23995  
 23996  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 23997  //
 23998  // Solidity: function addMinter(address account) returns()
 23999  func (_MinterRole *MinterRoleSession) AddMinter(account common.Address) (*types.Transaction, error) {
 24000  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
 24001  }
 24002  
 24003  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 24004  //
 24005  // Solidity: function addMinter(address account) returns()
 24006  func (_MinterRole *MinterRoleTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 24007  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
 24008  }
 24009  
 24010  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 24011  //
 24012  // Solidity: function renounceMinter() returns()
 24013  func (_MinterRole *MinterRoleTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 24014  	return _MinterRole.contract.Transact(opts, "renounceMinter")
 24015  }
 24016  
 24017  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 24018  //
 24019  // Solidity: function renounceMinter() returns()
 24020  func (_MinterRole *MinterRoleSession) RenounceMinter() (*types.Transaction, error) {
 24021  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
 24022  }
 24023  
 24024  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 24025  //
 24026  // Solidity: function renounceMinter() returns()
 24027  func (_MinterRole *MinterRoleTransactorSession) RenounceMinter() (*types.Transaction, error) {
 24028  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
 24029  }
 24030  
 24031  // MinterRoleMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the MinterRole contract.
 24032  type MinterRoleMinterAddedIterator struct {
 24033  	Event *MinterRoleMinterAdded // Event containing the contract specifics and raw log
 24034  
 24035  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 24036  	event    string              // Event name to use for unpacking event data
 24037  
 24038  	logs chan types.Log      // Log channel receiving the found contract events
 24039  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 24040  	done bool                // Whether the subscription completed delivering logs
 24041  	fail error               // Occurred error to stop iteration
 24042  }
 24043  
 24044  // Next advances the iterator to the subsequent event, returning whether there
 24045  // are any more events found. In case of a retrieval or parsing error, false is
 24046  // returned and Error() can be queried for the exact failure.
 24047  func (it *MinterRoleMinterAddedIterator) Next() bool {
 24048  	// If the iterator failed, stop iterating
 24049  	if it.fail != nil {
 24050  		return false
 24051  	}
 24052  	// If the iterator completed, deliver directly whatever's available
 24053  	if it.done {
 24054  		select {
 24055  		case log := <-it.logs:
 24056  			it.Event = new(MinterRoleMinterAdded)
 24057  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24058  				it.fail = err
 24059  				return false
 24060  			}
 24061  			it.Event.Raw = log
 24062  			return true
 24063  
 24064  		default:
 24065  			return false
 24066  		}
 24067  	}
 24068  	// Iterator still in progress, wait for either a data or an error event
 24069  	select {
 24070  	case log := <-it.logs:
 24071  		it.Event = new(MinterRoleMinterAdded)
 24072  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24073  			it.fail = err
 24074  			return false
 24075  		}
 24076  		it.Event.Raw = log
 24077  		return true
 24078  
 24079  	case err := <-it.sub.Err():
 24080  		it.done = true
 24081  		it.fail = err
 24082  		return it.Next()
 24083  	}
 24084  }
 24085  
 24086  // Error returns any retrieval or parsing error occurred during filtering.
 24087  func (it *MinterRoleMinterAddedIterator) Error() error {
 24088  	return it.fail
 24089  }
 24090  
 24091  // Close terminates the iteration process, releasing any pending underlying
 24092  // resources.
 24093  func (it *MinterRoleMinterAddedIterator) Close() error {
 24094  	it.sub.Unsubscribe()
 24095  	return nil
 24096  }
 24097  
 24098  // MinterRoleMinterAdded represents a MinterAdded event raised by the MinterRole contract.
 24099  type MinterRoleMinterAdded struct {
 24100  	Account common.Address
 24101  	Raw     types.Log // Blockchain specific contextual infos
 24102  }
 24103  
 24104  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 24105  //
 24106  // Solidity: event MinterAdded(address indexed account)
 24107  func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) {
 24108  
 24109  	var accountRule []interface{}
 24110  	for _, accountItem := range account {
 24111  		accountRule = append(accountRule, accountItem)
 24112  	}
 24113  
 24114  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterAdded", accountRule)
 24115  	if err != nil {
 24116  		return nil, err
 24117  	}
 24118  	return &MinterRoleMinterAddedIterator{contract: _MinterRole.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 24119  }
 24120  
 24121  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 24122  //
 24123  // Solidity: event MinterAdded(address indexed account)
 24124  func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) {
 24125  
 24126  	var accountRule []interface{}
 24127  	for _, accountItem := range account {
 24128  		accountRule = append(accountRule, accountItem)
 24129  	}
 24130  
 24131  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterAdded", accountRule)
 24132  	if err != nil {
 24133  		return nil, err
 24134  	}
 24135  	return event.NewSubscription(func(quit <-chan struct{}) error {
 24136  		defer sub.Unsubscribe()
 24137  		for {
 24138  			select {
 24139  			case log := <-logs:
 24140  				// New log arrived, parse the event and forward to the user
 24141  				event := new(MinterRoleMinterAdded)
 24142  				if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 24143  					return err
 24144  				}
 24145  				event.Raw = log
 24146  
 24147  				select {
 24148  				case sink <- event:
 24149  				case err := <-sub.Err():
 24150  					return err
 24151  				case <-quit:
 24152  					return nil
 24153  				}
 24154  			case err := <-sub.Err():
 24155  				return err
 24156  			case <-quit:
 24157  				return nil
 24158  			}
 24159  		}
 24160  	}), nil
 24161  }
 24162  
 24163  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 24164  //
 24165  // Solidity: event MinterAdded(address indexed account)
 24166  func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterRoleMinterAdded, error) {
 24167  	event := new(MinterRoleMinterAdded)
 24168  	if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 24169  		return nil, err
 24170  	}
 24171  	return event, nil
 24172  }
 24173  
 24174  // MinterRoleMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the MinterRole contract.
 24175  type MinterRoleMinterRemovedIterator struct {
 24176  	Event *MinterRoleMinterRemoved // Event containing the contract specifics and raw log
 24177  
 24178  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 24179  	event    string              // Event name to use for unpacking event data
 24180  
 24181  	logs chan types.Log      // Log channel receiving the found contract events
 24182  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 24183  	done bool                // Whether the subscription completed delivering logs
 24184  	fail error               // Occurred error to stop iteration
 24185  }
 24186  
 24187  // Next advances the iterator to the subsequent event, returning whether there
 24188  // are any more events found. In case of a retrieval or parsing error, false is
 24189  // returned and Error() can be queried for the exact failure.
 24190  func (it *MinterRoleMinterRemovedIterator) Next() bool {
 24191  	// If the iterator failed, stop iterating
 24192  	if it.fail != nil {
 24193  		return false
 24194  	}
 24195  	// If the iterator completed, deliver directly whatever's available
 24196  	if it.done {
 24197  		select {
 24198  		case log := <-it.logs:
 24199  			it.Event = new(MinterRoleMinterRemoved)
 24200  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24201  				it.fail = err
 24202  				return false
 24203  			}
 24204  			it.Event.Raw = log
 24205  			return true
 24206  
 24207  		default:
 24208  			return false
 24209  		}
 24210  	}
 24211  	// Iterator still in progress, wait for either a data or an error event
 24212  	select {
 24213  	case log := <-it.logs:
 24214  		it.Event = new(MinterRoleMinterRemoved)
 24215  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24216  			it.fail = err
 24217  			return false
 24218  		}
 24219  		it.Event.Raw = log
 24220  		return true
 24221  
 24222  	case err := <-it.sub.Err():
 24223  		it.done = true
 24224  		it.fail = err
 24225  		return it.Next()
 24226  	}
 24227  }
 24228  
 24229  // Error returns any retrieval or parsing error occurred during filtering.
 24230  func (it *MinterRoleMinterRemovedIterator) Error() error {
 24231  	return it.fail
 24232  }
 24233  
 24234  // Close terminates the iteration process, releasing any pending underlying
 24235  // resources.
 24236  func (it *MinterRoleMinterRemovedIterator) Close() error {
 24237  	it.sub.Unsubscribe()
 24238  	return nil
 24239  }
 24240  
 24241  // MinterRoleMinterRemoved represents a MinterRemoved event raised by the MinterRole contract.
 24242  type MinterRoleMinterRemoved struct {
 24243  	Account common.Address
 24244  	Raw     types.Log // Blockchain specific contextual infos
 24245  }
 24246  
 24247  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 24248  //
 24249  // Solidity: event MinterRemoved(address indexed account)
 24250  func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) {
 24251  
 24252  	var accountRule []interface{}
 24253  	for _, accountItem := range account {
 24254  		accountRule = append(accountRule, accountItem)
 24255  	}
 24256  
 24257  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 24258  	if err != nil {
 24259  		return nil, err
 24260  	}
 24261  	return &MinterRoleMinterRemovedIterator{contract: _MinterRole.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 24262  }
 24263  
 24264  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 24265  //
 24266  // Solidity: event MinterRemoved(address indexed account)
 24267  func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) {
 24268  
 24269  	var accountRule []interface{}
 24270  	for _, accountItem := range account {
 24271  		accountRule = append(accountRule, accountItem)
 24272  	}
 24273  
 24274  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 24275  	if err != nil {
 24276  		return nil, err
 24277  	}
 24278  	return event.NewSubscription(func(quit <-chan struct{}) error {
 24279  		defer sub.Unsubscribe()
 24280  		for {
 24281  			select {
 24282  			case log := <-logs:
 24283  				// New log arrived, parse the event and forward to the user
 24284  				event := new(MinterRoleMinterRemoved)
 24285  				if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 24286  					return err
 24287  				}
 24288  				event.Raw = log
 24289  
 24290  				select {
 24291  				case sink <- event:
 24292  				case err := <-sub.Err():
 24293  					return err
 24294  				case <-quit:
 24295  					return nil
 24296  				}
 24297  			case err := <-sub.Err():
 24298  				return err
 24299  			case <-quit:
 24300  				return nil
 24301  			}
 24302  		}
 24303  	}), nil
 24304  }
 24305  
 24306  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 24307  //
 24308  // Solidity: event MinterRemoved(address indexed account)
 24309  func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*MinterRoleMinterRemoved, error) {
 24310  	event := new(MinterRoleMinterRemoved)
 24311  	if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 24312  		return nil, err
 24313  	}
 24314  	return event, nil
 24315  }
 24316  
 24317  // OwnableABI is the input ABI used to generate the binding from.
 24318  const OwnableABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]"
 24319  
 24320  // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 24321  const OwnableBinRuntime = ``
 24322  
 24323  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
 24324  var OwnableFuncSigs = map[string]string{
 24325  	"8f32d59b": "isOwner()",
 24326  	"8da5cb5b": "owner()",
 24327  	"715018a6": "renounceOwnership()",
 24328  	"f2fde38b": "transferOwnership(address)",
 24329  }
 24330  
 24331  // Ownable is an auto generated Go binding around a Klaytn contract.
 24332  type Ownable struct {
 24333  	OwnableCaller     // Read-only binding to the contract
 24334  	OwnableTransactor // Write-only binding to the contract
 24335  	OwnableFilterer   // Log filterer for contract events
 24336  }
 24337  
 24338  // OwnableCaller is an auto generated read-only Go binding around a Klaytn contract.
 24339  type OwnableCaller struct {
 24340  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24341  }
 24342  
 24343  // OwnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 24344  type OwnableTransactor struct {
 24345  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24346  }
 24347  
 24348  // OwnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 24349  type OwnableFilterer struct {
 24350  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24351  }
 24352  
 24353  // OwnableSession is an auto generated Go binding around a Klaytn contract,
 24354  // with pre-set call and transact options.
 24355  type OwnableSession struct {
 24356  	Contract     *Ownable          // Generic contract binding to set the session for
 24357  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 24358  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 24359  }
 24360  
 24361  // OwnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 24362  // with pre-set call options.
 24363  type OwnableCallerSession struct {
 24364  	Contract *OwnableCaller // Generic contract caller binding to set the session for
 24365  	CallOpts bind.CallOpts  // Call options to use throughout this session
 24366  }
 24367  
 24368  // OwnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 24369  // with pre-set transact options.
 24370  type OwnableTransactorSession struct {
 24371  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
 24372  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
 24373  }
 24374  
 24375  // OwnableRaw is an auto generated low-level Go binding around a Klaytn contract.
 24376  type OwnableRaw struct {
 24377  	Contract *Ownable // Generic contract binding to access the raw methods on
 24378  }
 24379  
 24380  // OwnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 24381  type OwnableCallerRaw struct {
 24382  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
 24383  }
 24384  
 24385  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 24386  type OwnableTransactorRaw struct {
 24387  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
 24388  }
 24389  
 24390  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
 24391  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
 24392  	contract, err := bindOwnable(address, backend, backend, backend)
 24393  	if err != nil {
 24394  		return nil, err
 24395  	}
 24396  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
 24397  }
 24398  
 24399  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
 24400  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
 24401  	contract, err := bindOwnable(address, caller, nil, nil)
 24402  	if err != nil {
 24403  		return nil, err
 24404  	}
 24405  	return &OwnableCaller{contract: contract}, nil
 24406  }
 24407  
 24408  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
 24409  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
 24410  	contract, err := bindOwnable(address, nil, transactor, nil)
 24411  	if err != nil {
 24412  		return nil, err
 24413  	}
 24414  	return &OwnableTransactor{contract: contract}, nil
 24415  }
 24416  
 24417  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
 24418  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
 24419  	contract, err := bindOwnable(address, nil, nil, filterer)
 24420  	if err != nil {
 24421  		return nil, err
 24422  	}
 24423  	return &OwnableFilterer{contract: contract}, nil
 24424  }
 24425  
 24426  // bindOwnable binds a generic wrapper to an already deployed contract.
 24427  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 24428  	parsed, err := abi.JSON(strings.NewReader(OwnableABI))
 24429  	if err != nil {
 24430  		return nil, err
 24431  	}
 24432  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 24433  }
 24434  
 24435  // Call invokes the (constant) contract method with params as input values and
 24436  // sets the output to result. The result type might be a single field for simple
 24437  // returns, a slice of interfaces for anonymous returns and a struct for named
 24438  // returns.
 24439  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 24440  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
 24441  }
 24442  
 24443  // Transfer initiates a plain transaction to move funds to the contract, calling
 24444  // its default method if one is available.
 24445  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 24446  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
 24447  }
 24448  
 24449  // Transact invokes the (paid) contract method with params as input values.
 24450  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 24451  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
 24452  }
 24453  
 24454  // Call invokes the (constant) contract method with params as input values and
 24455  // sets the output to result. The result type might be a single field for simple
 24456  // returns, a slice of interfaces for anonymous returns and a struct for named
 24457  // returns.
 24458  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 24459  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
 24460  }
 24461  
 24462  // Transfer initiates a plain transaction to move funds to the contract, calling
 24463  // its default method if one is available.
 24464  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 24465  	return _Ownable.Contract.contract.Transfer(opts)
 24466  }
 24467  
 24468  // Transact invokes the (paid) contract method with params as input values.
 24469  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 24470  	return _Ownable.Contract.contract.Transact(opts, method, params...)
 24471  }
 24472  
 24473  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 24474  //
 24475  // Solidity: function isOwner() view returns(bool)
 24476  func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 24477  	var (
 24478  		ret0 = new(bool)
 24479  	)
 24480  	out := ret0
 24481  	err := _Ownable.contract.Call(opts, out, "isOwner")
 24482  	return *ret0, err
 24483  }
 24484  
 24485  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 24486  //
 24487  // Solidity: function isOwner() view returns(bool)
 24488  func (_Ownable *OwnableSession) IsOwner() (bool, error) {
 24489  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
 24490  }
 24491  
 24492  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 24493  //
 24494  // Solidity: function isOwner() view returns(bool)
 24495  func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) {
 24496  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
 24497  }
 24498  
 24499  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 24500  //
 24501  // Solidity: function owner() view returns(address)
 24502  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 24503  	var (
 24504  		ret0 = new(common.Address)
 24505  	)
 24506  	out := ret0
 24507  	err := _Ownable.contract.Call(opts, out, "owner")
 24508  	return *ret0, err
 24509  }
 24510  
 24511  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 24512  //
 24513  // Solidity: function owner() view returns(address)
 24514  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
 24515  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
 24516  }
 24517  
 24518  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 24519  //
 24520  // Solidity: function owner() view returns(address)
 24521  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
 24522  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
 24523  }
 24524  
 24525  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 24526  //
 24527  // Solidity: function renounceOwnership() returns()
 24528  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 24529  	return _Ownable.contract.Transact(opts, "renounceOwnership")
 24530  }
 24531  
 24532  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 24533  //
 24534  // Solidity: function renounceOwnership() returns()
 24535  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
 24536  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
 24537  }
 24538  
 24539  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 24540  //
 24541  // Solidity: function renounceOwnership() returns()
 24542  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
 24543  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
 24544  }
 24545  
 24546  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 24547  //
 24548  // Solidity: function transferOwnership(address newOwner) returns()
 24549  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 24550  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
 24551  }
 24552  
 24553  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 24554  //
 24555  // Solidity: function transferOwnership(address newOwner) returns()
 24556  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 24557  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
 24558  }
 24559  
 24560  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 24561  //
 24562  // Solidity: function transferOwnership(address newOwner) returns()
 24563  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 24564  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
 24565  }
 24566  
 24567  // OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract.
 24568  type OwnableOwnershipTransferredIterator struct {
 24569  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
 24570  
 24571  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 24572  	event    string              // Event name to use for unpacking event data
 24573  
 24574  	logs chan types.Log      // Log channel receiving the found contract events
 24575  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 24576  	done bool                // Whether the subscription completed delivering logs
 24577  	fail error               // Occurred error to stop iteration
 24578  }
 24579  
 24580  // Next advances the iterator to the subsequent event, returning whether there
 24581  // are any more events found. In case of a retrieval or parsing error, false is
 24582  // returned and Error() can be queried for the exact failure.
 24583  func (it *OwnableOwnershipTransferredIterator) Next() bool {
 24584  	// If the iterator failed, stop iterating
 24585  	if it.fail != nil {
 24586  		return false
 24587  	}
 24588  	// If the iterator completed, deliver directly whatever's available
 24589  	if it.done {
 24590  		select {
 24591  		case log := <-it.logs:
 24592  			it.Event = new(OwnableOwnershipTransferred)
 24593  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24594  				it.fail = err
 24595  				return false
 24596  			}
 24597  			it.Event.Raw = log
 24598  			return true
 24599  
 24600  		default:
 24601  			return false
 24602  		}
 24603  	}
 24604  	// Iterator still in progress, wait for either a data or an error event
 24605  	select {
 24606  	case log := <-it.logs:
 24607  		it.Event = new(OwnableOwnershipTransferred)
 24608  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 24609  			it.fail = err
 24610  			return false
 24611  		}
 24612  		it.Event.Raw = log
 24613  		return true
 24614  
 24615  	case err := <-it.sub.Err():
 24616  		it.done = true
 24617  		it.fail = err
 24618  		return it.Next()
 24619  	}
 24620  }
 24621  
 24622  // Error returns any retrieval or parsing error occurred during filtering.
 24623  func (it *OwnableOwnershipTransferredIterator) Error() error {
 24624  	return it.fail
 24625  }
 24626  
 24627  // Close terminates the iteration process, releasing any pending underlying
 24628  // resources.
 24629  func (it *OwnableOwnershipTransferredIterator) Close() error {
 24630  	it.sub.Unsubscribe()
 24631  	return nil
 24632  }
 24633  
 24634  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
 24635  type OwnableOwnershipTransferred struct {
 24636  	PreviousOwner common.Address
 24637  	NewOwner      common.Address
 24638  	Raw           types.Log // Blockchain specific contextual infos
 24639  }
 24640  
 24641  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 24642  //
 24643  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 24644  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
 24645  
 24646  	var previousOwnerRule []interface{}
 24647  	for _, previousOwnerItem := range previousOwner {
 24648  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 24649  	}
 24650  	var newOwnerRule []interface{}
 24651  	for _, newOwnerItem := range newOwner {
 24652  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 24653  	}
 24654  
 24655  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 24656  	if err != nil {
 24657  		return nil, err
 24658  	}
 24659  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 24660  }
 24661  
 24662  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 24663  //
 24664  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 24665  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 24666  
 24667  	var previousOwnerRule []interface{}
 24668  	for _, previousOwnerItem := range previousOwner {
 24669  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 24670  	}
 24671  	var newOwnerRule []interface{}
 24672  	for _, newOwnerItem := range newOwner {
 24673  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 24674  	}
 24675  
 24676  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 24677  	if err != nil {
 24678  		return nil, err
 24679  	}
 24680  	return event.NewSubscription(func(quit <-chan struct{}) error {
 24681  		defer sub.Unsubscribe()
 24682  		for {
 24683  			select {
 24684  			case log := <-logs:
 24685  				// New log arrived, parse the event and forward to the user
 24686  				event := new(OwnableOwnershipTransferred)
 24687  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 24688  					return err
 24689  				}
 24690  				event.Raw = log
 24691  
 24692  				select {
 24693  				case sink <- event:
 24694  				case err := <-sub.Err():
 24695  					return err
 24696  				case <-quit:
 24697  					return nil
 24698  				}
 24699  			case err := <-sub.Err():
 24700  				return err
 24701  			case <-quit:
 24702  				return nil
 24703  			}
 24704  		}
 24705  	}), nil
 24706  }
 24707  
 24708  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 24709  //
 24710  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 24711  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
 24712  	event := new(OwnableOwnershipTransferred)
 24713  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 24714  		return nil, err
 24715  	}
 24716  	return event, nil
 24717  }
 24718  
 24719  // RolesABI is the input ABI used to generate the binding from.
 24720  const RolesABI = "[]"
 24721  
 24722  // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 24723  const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582026429ed555f83236ac076363d644804ff5b0baa4e098f1d4ef783a49049f7df70029`
 24724  
 24725  // RolesBin is the compiled bytecode used for deploying new contracts.
 24726  var RolesBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582026429ed555f83236ac076363d644804ff5b0baa4e098f1d4ef783a49049f7df70029"
 24727  
 24728  // DeployRoles deploys a new Klaytn contract, binding an instance of Roles to it.
 24729  func DeployRoles(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Roles, error) {
 24730  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
 24731  	if err != nil {
 24732  		return common.Address{}, nil, nil, err
 24733  	}
 24734  
 24735  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RolesBin), backend)
 24736  	if err != nil {
 24737  		return common.Address{}, nil, nil, err
 24738  	}
 24739  	return address, tx, &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 24740  }
 24741  
 24742  // Roles is an auto generated Go binding around a Klaytn contract.
 24743  type Roles struct {
 24744  	RolesCaller     // Read-only binding to the contract
 24745  	RolesTransactor // Write-only binding to the contract
 24746  	RolesFilterer   // Log filterer for contract events
 24747  }
 24748  
 24749  // RolesCaller is an auto generated read-only Go binding around a Klaytn contract.
 24750  type RolesCaller struct {
 24751  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24752  }
 24753  
 24754  // RolesTransactor is an auto generated write-only Go binding around a Klaytn contract.
 24755  type RolesTransactor struct {
 24756  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24757  }
 24758  
 24759  // RolesFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 24760  type RolesFilterer struct {
 24761  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24762  }
 24763  
 24764  // RolesSession is an auto generated Go binding around a Klaytn contract,
 24765  // with pre-set call and transact options.
 24766  type RolesSession struct {
 24767  	Contract     *Roles            // Generic contract binding to set the session for
 24768  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 24769  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 24770  }
 24771  
 24772  // RolesCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 24773  // with pre-set call options.
 24774  type RolesCallerSession struct {
 24775  	Contract *RolesCaller  // Generic contract caller binding to set the session for
 24776  	CallOpts bind.CallOpts // Call options to use throughout this session
 24777  }
 24778  
 24779  // RolesTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 24780  // with pre-set transact options.
 24781  type RolesTransactorSession struct {
 24782  	Contract     *RolesTransactor  // Generic contract transactor binding to set the session for
 24783  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 24784  }
 24785  
 24786  // RolesRaw is an auto generated low-level Go binding around a Klaytn contract.
 24787  type RolesRaw struct {
 24788  	Contract *Roles // Generic contract binding to access the raw methods on
 24789  }
 24790  
 24791  // RolesCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 24792  type RolesCallerRaw struct {
 24793  	Contract *RolesCaller // Generic read-only contract binding to access the raw methods on
 24794  }
 24795  
 24796  // RolesTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 24797  type RolesTransactorRaw struct {
 24798  	Contract *RolesTransactor // Generic write-only contract binding to access the raw methods on
 24799  }
 24800  
 24801  // NewRoles creates a new instance of Roles, bound to a specific deployed contract.
 24802  func NewRoles(address common.Address, backend bind.ContractBackend) (*Roles, error) {
 24803  	contract, err := bindRoles(address, backend, backend, backend)
 24804  	if err != nil {
 24805  		return nil, err
 24806  	}
 24807  	return &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 24808  }
 24809  
 24810  // NewRolesCaller creates a new read-only instance of Roles, bound to a specific deployed contract.
 24811  func NewRolesCaller(address common.Address, caller bind.ContractCaller) (*RolesCaller, error) {
 24812  	contract, err := bindRoles(address, caller, nil, nil)
 24813  	if err != nil {
 24814  		return nil, err
 24815  	}
 24816  	return &RolesCaller{contract: contract}, nil
 24817  }
 24818  
 24819  // NewRolesTransactor creates a new write-only instance of Roles, bound to a specific deployed contract.
 24820  func NewRolesTransactor(address common.Address, transactor bind.ContractTransactor) (*RolesTransactor, error) {
 24821  	contract, err := bindRoles(address, nil, transactor, nil)
 24822  	if err != nil {
 24823  		return nil, err
 24824  	}
 24825  	return &RolesTransactor{contract: contract}, nil
 24826  }
 24827  
 24828  // NewRolesFilterer creates a new log filterer instance of Roles, bound to a specific deployed contract.
 24829  func NewRolesFilterer(address common.Address, filterer bind.ContractFilterer) (*RolesFilterer, error) {
 24830  	contract, err := bindRoles(address, nil, nil, filterer)
 24831  	if err != nil {
 24832  		return nil, err
 24833  	}
 24834  	return &RolesFilterer{contract: contract}, nil
 24835  }
 24836  
 24837  // bindRoles binds a generic wrapper to an already deployed contract.
 24838  func bindRoles(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 24839  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
 24840  	if err != nil {
 24841  		return nil, err
 24842  	}
 24843  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 24844  }
 24845  
 24846  // Call invokes the (constant) contract method with params as input values and
 24847  // sets the output to result. The result type might be a single field for simple
 24848  // returns, a slice of interfaces for anonymous returns and a struct for named
 24849  // returns.
 24850  func (_Roles *RolesRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 24851  	return _Roles.Contract.RolesCaller.contract.Call(opts, result, method, params...)
 24852  }
 24853  
 24854  // Transfer initiates a plain transaction to move funds to the contract, calling
 24855  // its default method if one is available.
 24856  func (_Roles *RolesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 24857  	return _Roles.Contract.RolesTransactor.contract.Transfer(opts)
 24858  }
 24859  
 24860  // Transact invokes the (paid) contract method with params as input values.
 24861  func (_Roles *RolesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 24862  	return _Roles.Contract.RolesTransactor.contract.Transact(opts, method, params...)
 24863  }
 24864  
 24865  // Call invokes the (constant) contract method with params as input values and
 24866  // sets the output to result. The result type might be a single field for simple
 24867  // returns, a slice of interfaces for anonymous returns and a struct for named
 24868  // returns.
 24869  func (_Roles *RolesCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 24870  	return _Roles.Contract.contract.Call(opts, result, method, params...)
 24871  }
 24872  
 24873  // Transfer initiates a plain transaction to move funds to the contract, calling
 24874  // its default method if one is available.
 24875  func (_Roles *RolesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 24876  	return _Roles.Contract.contract.Transfer(opts)
 24877  }
 24878  
 24879  // Transact invokes the (paid) contract method with params as input values.
 24880  func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 24881  	return _Roles.Contract.contract.Transact(opts, method, params...)
 24882  }
 24883  
 24884  // SafeMathABI is the input ABI used to generate the binding from.
 24885  const SafeMathABI = "[]"
 24886  
 24887  // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 24888  const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201aa360e6241ae1bc829140fb38ae5ca1672181b2a5c529c4ca3a045ed2896feb0029`
 24889  
 24890  // SafeMathBin is the compiled bytecode used for deploying new contracts.
 24891  var SafeMathBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201aa360e6241ae1bc829140fb38ae5ca1672181b2a5c529c4ca3a045ed2896feb0029"
 24892  
 24893  // DeploySafeMath deploys a new Klaytn contract, binding an instance of SafeMath to it.
 24894  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
 24895  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 24896  	if err != nil {
 24897  		return common.Address{}, nil, nil, err
 24898  	}
 24899  
 24900  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
 24901  	if err != nil {
 24902  		return common.Address{}, nil, nil, err
 24903  	}
 24904  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 24905  }
 24906  
 24907  // SafeMath is an auto generated Go binding around a Klaytn contract.
 24908  type SafeMath struct {
 24909  	SafeMathCaller     // Read-only binding to the contract
 24910  	SafeMathTransactor // Write-only binding to the contract
 24911  	SafeMathFilterer   // Log filterer for contract events
 24912  }
 24913  
 24914  // SafeMathCaller is an auto generated read-only Go binding around a Klaytn contract.
 24915  type SafeMathCaller struct {
 24916  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24917  }
 24918  
 24919  // SafeMathTransactor is an auto generated write-only Go binding around a Klaytn contract.
 24920  type SafeMathTransactor struct {
 24921  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24922  }
 24923  
 24924  // SafeMathFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 24925  type SafeMathFilterer struct {
 24926  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 24927  }
 24928  
 24929  // SafeMathSession is an auto generated Go binding around a Klaytn contract,
 24930  // with pre-set call and transact options.
 24931  type SafeMathSession struct {
 24932  	Contract     *SafeMath         // Generic contract binding to set the session for
 24933  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 24934  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 24935  }
 24936  
 24937  // SafeMathCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 24938  // with pre-set call options.
 24939  type SafeMathCallerSession struct {
 24940  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
 24941  	CallOpts bind.CallOpts   // Call options to use throughout this session
 24942  }
 24943  
 24944  // SafeMathTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 24945  // with pre-set transact options.
 24946  type SafeMathTransactorSession struct {
 24947  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
 24948  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 24949  }
 24950  
 24951  // SafeMathRaw is an auto generated low-level Go binding around a Klaytn contract.
 24952  type SafeMathRaw struct {
 24953  	Contract *SafeMath // Generic contract binding to access the raw methods on
 24954  }
 24955  
 24956  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 24957  type SafeMathCallerRaw struct {
 24958  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
 24959  }
 24960  
 24961  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 24962  type SafeMathTransactorRaw struct {
 24963  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
 24964  }
 24965  
 24966  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
 24967  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
 24968  	contract, err := bindSafeMath(address, backend, backend, backend)
 24969  	if err != nil {
 24970  		return nil, err
 24971  	}
 24972  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 24973  }
 24974  
 24975  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
 24976  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
 24977  	contract, err := bindSafeMath(address, caller, nil, nil)
 24978  	if err != nil {
 24979  		return nil, err
 24980  	}
 24981  	return &SafeMathCaller{contract: contract}, nil
 24982  }
 24983  
 24984  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
 24985  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
 24986  	contract, err := bindSafeMath(address, nil, transactor, nil)
 24987  	if err != nil {
 24988  		return nil, err
 24989  	}
 24990  	return &SafeMathTransactor{contract: contract}, nil
 24991  }
 24992  
 24993  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
 24994  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
 24995  	contract, err := bindSafeMath(address, nil, nil, filterer)
 24996  	if err != nil {
 24997  		return nil, err
 24998  	}
 24999  	return &SafeMathFilterer{contract: contract}, nil
 25000  }
 25001  
 25002  // bindSafeMath binds a generic wrapper to an already deployed contract.
 25003  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 25004  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 25005  	if err != nil {
 25006  		return nil, err
 25007  	}
 25008  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 25009  }
 25010  
 25011  // Call invokes the (constant) contract method with params as input values and
 25012  // sets the output to result. The result type might be a single field for simple
 25013  // returns, a slice of interfaces for anonymous returns and a struct for named
 25014  // returns.
 25015  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 25016  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
 25017  }
 25018  
 25019  // Transfer initiates a plain transaction to move funds to the contract, calling
 25020  // its default method if one is available.
 25021  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 25022  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
 25023  }
 25024  
 25025  // Transact invokes the (paid) contract method with params as input values.
 25026  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 25027  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
 25028  }
 25029  
 25030  // Call invokes the (constant) contract method with params as input values and
 25031  // sets the output to result. The result type might be a single field for simple
 25032  // returns, a slice of interfaces for anonymous returns and a struct for named
 25033  // returns.
 25034  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 25035  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
 25036  }
 25037  
 25038  // Transfer initiates a plain transaction to move funds to the contract, calling
 25039  // its default method if one is available.
 25040  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 25041  	return _SafeMath.Contract.contract.Transfer(opts)
 25042  }
 25043  
 25044  // Transact invokes the (paid) contract method with params as input values.
 25045  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 25046  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
 25047  }