github.com/aerth/aquachain@v1.4.1/contracts/ens/contract/publicresolver.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package contract
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/aquanetwork/aquachain"
    11  	"github.com/aquanetwork/aquachain/accounts/abi"
    12  	"github.com/aquanetwork/aquachain/accounts/abi/bind"
    13  	"github.com/aquanetwork/aquachain/common"
    14  	"github.com/aquanetwork/aquachain/core/types"
    15  	"github.com/aquanetwork/aquachain/event"
    16  )
    17  
    18  // PublicResolverABI is the input ABI used to generate the binding from.
    19  const PublicResolverABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"value\",\"type\":\"string\"}],\"name\":\"setText\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentTypes\",\"type\":\"uint256\"}],\"name\":\"ABI\",\"outputs\":[{\"name\":\"contentType\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"setPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"content\",\"outputs\":[{\"name\":\"ret\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"addr\",\"outputs\":[{\"name\":\"ret\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"key\",\"type\":\"string\"}],\"name\":\"text\",\"outputs\":[{\"name\":\"ret\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"contentType\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"setABI\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"name\",\"outputs\":[{\"name\":\"ret\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"name\",\"type\":\"string\"}],\"name\":\"setName\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"setContent\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"}],\"name\":\"pubkey\",\"outputs\":[{\"name\":\"x\",\"type\":\"bytes32\"},{\"name\":\"y\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"node\",\"type\":\"bytes32\"},{\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setAddr\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"ensAddr\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddrChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"hash\",\"type\":\"bytes32\"}],\"name\":\"ContentChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NameChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"contentType\",\"type\":\"uint256\"}],\"name\":\"ABIChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"x\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"y\",\"type\":\"bytes32\"}],\"name\":\"PubkeyChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"node\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"indexedKey\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"key\",\"type\":\"string\"}],\"name\":\"TextChanged\",\"type\":\"event\"}]"
    20  
    21  // PublicResolverBin is the compiled bytecode used for deploying new contracts.
    22  const PublicResolverBin = `0x6060604052341561000f57600080fd5b6040516020806111b28339810160405280805160008054600160a060020a03909216600160a060020a0319909216919091179055505061115e806100546000396000f3006060604052600436106100ab5763ffffffff60e060020a60003504166301ffc9a781146100b057806310f13a8c146100e45780632203ab561461017e57806329cd62ea146102155780632dff6941146102315780633b3b57de1461025957806359d1d43c1461028b578063623195b014610358578063691f3431146103b457806377372213146103ca578063c3d014d614610420578063c869023314610439578063d5fa2b0014610467575b600080fd5b34156100bb57600080fd5b6100d0600160e060020a031960043516610489565b604051901515815260200160405180910390f35b34156100ef57600080fd5b61017c600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284378201915050505050509190803590602001908201803590602001908080601f0160208091040260200160405190810160405281815292919060208401838380828437509496506105f695505050505050565b005b341561018957600080fd5b610197600435602435610807565b60405182815260406020820181815290820183818151815260200191508051906020019080838360005b838110156101d95780820151838201526020016101c1565b50505050905090810190601f1680156102065780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b341561022057600080fd5b61017c600435602435604435610931565b341561023c57600080fd5b610247600435610a30565b60405190815260200160405180910390f35b341561026457600080fd5b61026f600435610a46565b604051600160a060020a03909116815260200160405180910390f35b341561029657600080fd5b6102e1600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610a6195505050505050565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561031d578082015183820152602001610305565b50505050905090810190601f16801561034a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036357600080fd5b61017c600480359060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610b8095505050505050565b34156103bf57600080fd5b6102e1600435610c7c565b34156103d557600080fd5b61017c600480359060446024803590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610d4295505050505050565b341561042b57600080fd5b61017c600435602435610e8c565b341561044457600080fd5b61044f600435610f65565b60405191825260208201526040908101905180910390f35b341561047257600080fd5b61017c600435600160a060020a0360243516610f82565b6000600160e060020a031982167f3b3b57de0000000000000000000000000000000000000000000000000000000014806104ec5750600160e060020a031982167fd8389dc500000000000000000000000000000000000000000000000000000000145b806105205750600160e060020a031982167f691f343100000000000000000000000000000000000000000000000000000000145b806105545750600160e060020a031982167f2203ab5600000000000000000000000000000000000000000000000000000000145b806105885750600160e060020a031982167fc869023300000000000000000000000000000000000000000000000000000000145b806105bc5750600160e060020a031982167f59d1d43c00000000000000000000000000000000000000000000000000000000145b806105f05750600160e060020a031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b600080548491600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561064f57600080fd5b6102c65a03f1151561066057600080fd5b50505060405180519050600160a060020a031614151561067f57600080fd5b6000848152600160205260409081902083916005909101908590518082805190602001908083835b602083106106c65780518252601f1990920191602091820191016106a7565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902090805161070a929160200190611085565b50826040518082805190602001908083835b6020831061073b5780518252601f19909201916020918201910161071c565b6001836020036101000a0380198251168184511617909252505050919091019250604091505051908190039020847fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a75508560405160208082528190810183818151815260200191508051906020019080838360005b838110156107c75780820151838201526020016107af565b50505050905090810190601f1680156107f45780820380516001836020036101000a031916815260200191505b509250505060405180910390a350505050565b6000610811611103565b60008481526001602081905260409091209092505b838311610924578284161580159061085f5750600083815260068201602052604081205460026000196101006001841615020190911604115b15610919578060060160008481526020019081526020016000208054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561090d5780601f106108e25761010080835404028352916020019161090d565b820191906000526020600020905b8154815290600101906020018083116108f057829003601f168201915b50505050509150610929565b600290920291610826565b600092505b509250929050565b600080548491600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561098a57600080fd5b6102c65a03f1151561099b57600080fd5b50505060405180519050600160a060020a03161415156109ba57600080fd5b6040805190810160409081528482526020808301859052600087815260019091522060030181518155602082015160019091015550837f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46848460405191825260208201526040908101905180910390a250505050565b6000908152600160208190526040909120015490565b600090815260016020526040902054600160a060020a031690565b610a69611103565b60008381526001602052604090819020600501908390518082805190602001908083835b60208310610aac5780518252601f199092019160209182019101610a8d565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b735780601f10610b4857610100808354040283529160200191610b73565b820191906000526020600020905b815481529060010190602001808311610b5657829003601f168201915b5050505050905092915050565b600080548491600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610bd957600080fd5b6102c65a03f11515610bea57600080fd5b50505060405180519050600160a060020a0316141515610c0957600080fd5b6000198301831615610c1a57600080fd5b60008481526001602090815260408083208684526006019091529020828051610c47929160200190611085565b5082847faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe360405160405180910390a350505050565b610c84611103565b6001600083600019166000191681526020019081526020016000206002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d365780601f10610d0b57610100808354040283529160200191610d36565b820191906000526020600020905b815481529060010190602001808311610d1957829003601f168201915b50505050509050919050565b600080548391600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610d9b57600080fd5b6102c65a03f11515610dac57600080fd5b50505060405180519050600160a060020a0316141515610dcb57600080fd5b6000838152600160205260409020600201828051610ded929160200190611085565b50827fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78360405160208082528190810183818151815260200191508051906020019080838360005b83811015610e4d578082015183820152602001610e35565b50505050905090810190601f168015610e7a5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2505050565b600080548391600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610ee557600080fd5b6102c65a03f11515610ef657600080fd5b50505060405180519050600160a060020a0316141515610f1557600080fd5b6000838152600160208190526040918290200183905583907f0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc9084905190815260200160405180910390a2505050565b600090815260016020526040902060038101546004909101549091565b600080548391600160a060020a033381169216906302571be39084906040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610fdb57600080fd5b6102c65a03f11515610fec57600080fd5b50505060405180519050600160a060020a031614151561100b57600080fd5b60008381526001602052604090819020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03851617905583907f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd290849051600160a060020a03909116815260200160405180910390a2505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106110c657805160ff19168380011785556110f3565b828001600101855582156110f3579182015b828111156110f35782518255916020019190600101906110d8565b506110ff929150611115565b5090565b60206040519081016040526000815290565b61112f91905b808211156110ff576000815560010161111b565b905600a165627a7a723058201ecacbc445b9fbcd91b0ab164389f69d7283b856883bc7437eeed1008345a4920029`
    23  
    24  // DeployPublicResolver deploys a new Ethereum contract, binding an instance of PublicResolver to it.
    25  func DeployPublicResolver(auth *bind.TransactOpts, backend bind.ContractBackend, ensAddr common.Address) (common.Address, *types.Transaction, *PublicResolver, error) {
    26  	parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
    27  	if err != nil {
    28  		return common.Address{}, nil, nil, err
    29  	}
    30  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PublicResolverBin), backend, ensAddr)
    31  	if err != nil {
    32  		return common.Address{}, nil, nil, err
    33  	}
    34  	return address, tx, &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}, PublicResolverFilterer: PublicResolverFilterer{contract: contract}}, nil
    35  }
    36  
    37  // PublicResolver is an auto generated Go binding around an Ethereum contract.
    38  type PublicResolver struct {
    39  	PublicResolverCaller     // Read-only binding to the contract
    40  	PublicResolverTransactor // Write-only binding to the contract
    41  	PublicResolverFilterer   // Log filterer for contract events
    42  }
    43  
    44  // PublicResolverCaller is an auto generated read-only Go binding around an Ethereum contract.
    45  type PublicResolverCaller struct {
    46  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    47  }
    48  
    49  // PublicResolverTransactor is an auto generated write-only Go binding around an Ethereum contract.
    50  type PublicResolverTransactor struct {
    51  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    52  }
    53  
    54  // PublicResolverFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
    55  type PublicResolverFilterer struct {
    56  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    57  }
    58  
    59  // PublicResolverSession is an auto generated Go binding around an Ethereum contract,
    60  // with pre-set call and transact options.
    61  type PublicResolverSession struct {
    62  	Contract     *PublicResolver   // Generic contract binding to set the session for
    63  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    64  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    65  }
    66  
    67  // PublicResolverCallerSession is an auto generated read-only Go binding around an Ethereum contract,
    68  // with pre-set call options.
    69  type PublicResolverCallerSession struct {
    70  	Contract *PublicResolverCaller // Generic contract caller binding to set the session for
    71  	CallOpts bind.CallOpts         // Call options to use throughout this session
    72  }
    73  
    74  // PublicResolverTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    75  // with pre-set transact options.
    76  type PublicResolverTransactorSession struct {
    77  	Contract     *PublicResolverTransactor // Generic contract transactor binding to set the session for
    78  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
    79  }
    80  
    81  // PublicResolverRaw is an auto generated low-level Go binding around an Ethereum contract.
    82  type PublicResolverRaw struct {
    83  	Contract *PublicResolver // Generic contract binding to access the raw methods on
    84  }
    85  
    86  // PublicResolverCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
    87  type PublicResolverCallerRaw struct {
    88  	Contract *PublicResolverCaller // Generic read-only contract binding to access the raw methods on
    89  }
    90  
    91  // PublicResolverTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
    92  type PublicResolverTransactorRaw struct {
    93  	Contract *PublicResolverTransactor // Generic write-only contract binding to access the raw methods on
    94  }
    95  
    96  // NewPublicResolver creates a new instance of PublicResolver, bound to a specific deployed contract.
    97  func NewPublicResolver(address common.Address, backend bind.ContractBackend) (*PublicResolver, error) {
    98  	contract, err := bindPublicResolver(address, backend, backend, backend)
    99  	if err != nil {
   100  		return nil, err
   101  	}
   102  	return &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}, PublicResolverFilterer: PublicResolverFilterer{contract: contract}}, nil
   103  }
   104  
   105  // NewPublicResolverCaller creates a new read-only instance of PublicResolver, bound to a specific deployed contract.
   106  func NewPublicResolverCaller(address common.Address, caller bind.ContractCaller) (*PublicResolverCaller, error) {
   107  	contract, err := bindPublicResolver(address, caller, nil, nil)
   108  	if err != nil {
   109  		return nil, err
   110  	}
   111  	return &PublicResolverCaller{contract: contract}, nil
   112  }
   113  
   114  // NewPublicResolverTransactor creates a new write-only instance of PublicResolver, bound to a specific deployed contract.
   115  func NewPublicResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*PublicResolverTransactor, error) {
   116  	contract, err := bindPublicResolver(address, nil, transactor, nil)
   117  	if err != nil {
   118  		return nil, err
   119  	}
   120  	return &PublicResolverTransactor{contract: contract}, nil
   121  }
   122  
   123  // NewPublicResolverFilterer creates a new log filterer instance of PublicResolver, bound to a specific deployed contract.
   124  func NewPublicResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*PublicResolverFilterer, error) {
   125  	contract, err := bindPublicResolver(address, nil, nil, filterer)
   126  	if err != nil {
   127  		return nil, err
   128  	}
   129  	return &PublicResolverFilterer{contract: contract}, nil
   130  }
   131  
   132  // bindPublicResolver binds a generic wrapper to an already deployed contract.
   133  func bindPublicResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   134  	parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
   135  	if err != nil {
   136  		return nil, err
   137  	}
   138  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   139  }
   140  
   141  // Call invokes the (constant) contract method with params as input values and
   142  // sets the output to result. The result type might be a single field for simple
   143  // returns, a slice of interfaces for anonymous returns and a struct for named
   144  // returns.
   145  func (_PublicResolver *PublicResolverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   146  	return _PublicResolver.Contract.PublicResolverCaller.contract.Call(opts, result, method, params...)
   147  }
   148  
   149  // Transfer initiates a plain transaction to move funds to the contract, calling
   150  // its default method if one is available.
   151  func (_PublicResolver *PublicResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   152  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transfer(opts)
   153  }
   154  
   155  // Transact invokes the (paid) contract method with params as input values.
   156  func (_PublicResolver *PublicResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   157  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transact(opts, method, params...)
   158  }
   159  
   160  // Call invokes the (constant) contract method with params as input values and
   161  // sets the output to result. The result type might be a single field for simple
   162  // returns, a slice of interfaces for anonymous returns and a struct for named
   163  // returns.
   164  func (_PublicResolver *PublicResolverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   165  	return _PublicResolver.Contract.contract.Call(opts, result, method, params...)
   166  }
   167  
   168  // Transfer initiates a plain transaction to move funds to the contract, calling
   169  // its default method if one is available.
   170  func (_PublicResolver *PublicResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   171  	return _PublicResolver.Contract.contract.Transfer(opts)
   172  }
   173  
   174  // Transact invokes the (paid) contract method with params as input values.
   175  func (_PublicResolver *PublicResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   176  	return _PublicResolver.Contract.contract.Transact(opts, method, params...)
   177  }
   178  
   179  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   180  //
   181  // Solidity: function ABI(node bytes32, contentTypes uint256) constant returns(contentType uint256, data bytes)
   182  func (_PublicResolver *PublicResolverCaller) ABI(opts *bind.CallOpts, node [32]byte, contentTypes *big.Int) (struct {
   183  	ContentType *big.Int
   184  	Data        []byte
   185  }, error) {
   186  	ret := new(struct {
   187  		ContentType *big.Int
   188  		Data        []byte
   189  	})
   190  	out := ret
   191  	err := _PublicResolver.contract.Call(opts, out, "ABI", node, contentTypes)
   192  	return *ret, err
   193  }
   194  
   195  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   196  //
   197  // Solidity: function ABI(node bytes32, contentTypes uint256) constant returns(contentType uint256, data bytes)
   198  func (_PublicResolver *PublicResolverSession) ABI(node [32]byte, contentTypes *big.Int) (struct {
   199  	ContentType *big.Int
   200  	Data        []byte
   201  }, error) {
   202  	return _PublicResolver.Contract.ABI(&_PublicResolver.CallOpts, node, contentTypes)
   203  }
   204  
   205  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   206  //
   207  // Solidity: function ABI(node bytes32, contentTypes uint256) constant returns(contentType uint256, data bytes)
   208  func (_PublicResolver *PublicResolverCallerSession) ABI(node [32]byte, contentTypes *big.Int) (struct {
   209  	ContentType *big.Int
   210  	Data        []byte
   211  }, error) {
   212  	return _PublicResolver.Contract.ABI(&_PublicResolver.CallOpts, node, contentTypes)
   213  }
   214  
   215  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   216  //
   217  // Solidity: function addr(node bytes32) constant returns(ret address)
   218  func (_PublicResolver *PublicResolverCaller) Addr(opts *bind.CallOpts, node [32]byte) (common.Address, error) {
   219  	var (
   220  		ret0 = new(common.Address)
   221  	)
   222  	out := ret0
   223  	err := _PublicResolver.contract.Call(opts, out, "addr", node)
   224  	return *ret0, err
   225  }
   226  
   227  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   228  //
   229  // Solidity: function addr(node bytes32) constant returns(ret address)
   230  func (_PublicResolver *PublicResolverSession) Addr(node [32]byte) (common.Address, error) {
   231  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
   232  }
   233  
   234  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   235  //
   236  // Solidity: function addr(node bytes32) constant returns(ret address)
   237  func (_PublicResolver *PublicResolverCallerSession) Addr(node [32]byte) (common.Address, error) {
   238  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
   239  }
   240  
   241  // Content is a free data retrieval call binding the contract method 0x2dff6941.
   242  //
   243  // Solidity: function content(node bytes32) constant returns(ret bytes32)
   244  func (_PublicResolver *PublicResolverCaller) Content(opts *bind.CallOpts, node [32]byte) ([32]byte, error) {
   245  	var (
   246  		ret0 = new([32]byte)
   247  	)
   248  	out := ret0
   249  	err := _PublicResolver.contract.Call(opts, out, "content", node)
   250  	return *ret0, err
   251  }
   252  
   253  // Content is a free data retrieval call binding the contract method 0x2dff6941.
   254  //
   255  // Solidity: function content(node bytes32) constant returns(ret bytes32)
   256  func (_PublicResolver *PublicResolverSession) Content(node [32]byte) ([32]byte, error) {
   257  	return _PublicResolver.Contract.Content(&_PublicResolver.CallOpts, node)
   258  }
   259  
   260  // Content is a free data retrieval call binding the contract method 0x2dff6941.
   261  //
   262  // Solidity: function content(node bytes32) constant returns(ret bytes32)
   263  func (_PublicResolver *PublicResolverCallerSession) Content(node [32]byte) ([32]byte, error) {
   264  	return _PublicResolver.Contract.Content(&_PublicResolver.CallOpts, node)
   265  }
   266  
   267  // Name is a free data retrieval call binding the contract method 0x691f3431.
   268  //
   269  // Solidity: function name(node bytes32) constant returns(ret string)
   270  func (_PublicResolver *PublicResolverCaller) Name(opts *bind.CallOpts, node [32]byte) (string, error) {
   271  	var (
   272  		ret0 = new(string)
   273  	)
   274  	out := ret0
   275  	err := _PublicResolver.contract.Call(opts, out, "name", node)
   276  	return *ret0, err
   277  }
   278  
   279  // Name is a free data retrieval call binding the contract method 0x691f3431.
   280  //
   281  // Solidity: function name(node bytes32) constant returns(ret string)
   282  func (_PublicResolver *PublicResolverSession) Name(node [32]byte) (string, error) {
   283  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
   284  }
   285  
   286  // Name is a free data retrieval call binding the contract method 0x691f3431.
   287  //
   288  // Solidity: function name(node bytes32) constant returns(ret string)
   289  func (_PublicResolver *PublicResolverCallerSession) Name(node [32]byte) (string, error) {
   290  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
   291  }
   292  
   293  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
   294  //
   295  // Solidity: function pubkey(node bytes32) constant returns(x bytes32, y bytes32)
   296  func (_PublicResolver *PublicResolverCaller) Pubkey(opts *bind.CallOpts, node [32]byte) (struct {
   297  	X [32]byte
   298  	Y [32]byte
   299  }, error) {
   300  	ret := new(struct {
   301  		X [32]byte
   302  		Y [32]byte
   303  	})
   304  	out := ret
   305  	err := _PublicResolver.contract.Call(opts, out, "pubkey", node)
   306  	return *ret, err
   307  }
   308  
   309  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
   310  //
   311  // Solidity: function pubkey(node bytes32) constant returns(x bytes32, y bytes32)
   312  func (_PublicResolver *PublicResolverSession) Pubkey(node [32]byte) (struct {
   313  	X [32]byte
   314  	Y [32]byte
   315  }, error) {
   316  	return _PublicResolver.Contract.Pubkey(&_PublicResolver.CallOpts, node)
   317  }
   318  
   319  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
   320  //
   321  // Solidity: function pubkey(node bytes32) constant returns(x bytes32, y bytes32)
   322  func (_PublicResolver *PublicResolverCallerSession) Pubkey(node [32]byte) (struct {
   323  	X [32]byte
   324  	Y [32]byte
   325  }, error) {
   326  	return _PublicResolver.Contract.Pubkey(&_PublicResolver.CallOpts, node)
   327  }
   328  
   329  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   330  //
   331  // Solidity: function supportsInterface(interfaceID bytes4) constant returns(bool)
   332  func (_PublicResolver *PublicResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
   333  	var (
   334  		ret0 = new(bool)
   335  	)
   336  	out := ret0
   337  	err := _PublicResolver.contract.Call(opts, out, "supportsInterface", interfaceID)
   338  	return *ret0, err
   339  }
   340  
   341  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   342  //
   343  // Solidity: function supportsInterface(interfaceID bytes4) constant returns(bool)
   344  func (_PublicResolver *PublicResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   345  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
   346  }
   347  
   348  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   349  //
   350  // Solidity: function supportsInterface(interfaceID bytes4) constant returns(bool)
   351  func (_PublicResolver *PublicResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   352  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
   353  }
   354  
   355  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
   356  //
   357  // Solidity: function text(node bytes32, key string) constant returns(ret string)
   358  func (_PublicResolver *PublicResolverCaller) Text(opts *bind.CallOpts, node [32]byte, key string) (string, error) {
   359  	var (
   360  		ret0 = new(string)
   361  	)
   362  	out := ret0
   363  	err := _PublicResolver.contract.Call(opts, out, "text", node, key)
   364  	return *ret0, err
   365  }
   366  
   367  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
   368  //
   369  // Solidity: function text(node bytes32, key string) constant returns(ret string)
   370  func (_PublicResolver *PublicResolverSession) Text(node [32]byte, key string) (string, error) {
   371  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
   372  }
   373  
   374  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
   375  //
   376  // Solidity: function text(node bytes32, key string) constant returns(ret string)
   377  func (_PublicResolver *PublicResolverCallerSession) Text(node [32]byte, key string) (string, error) {
   378  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
   379  }
   380  
   381  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   382  //
   383  // Solidity: function setABI(node bytes32, contentType uint256, data bytes) returns()
   384  func (_PublicResolver *PublicResolverTransactor) SetABI(opts *bind.TransactOpts, node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   385  	return _PublicResolver.contract.Transact(opts, "setABI", node, contentType, data)
   386  }
   387  
   388  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   389  //
   390  // Solidity: function setABI(node bytes32, contentType uint256, data bytes) returns()
   391  func (_PublicResolver *PublicResolverSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   392  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
   393  }
   394  
   395  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   396  //
   397  // Solidity: function setABI(node bytes32, contentType uint256, data bytes) returns()
   398  func (_PublicResolver *PublicResolverTransactorSession) SetABI(node [32]byte, contentType *big.Int, data []byte) (*types.Transaction, error) {
   399  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
   400  }
   401  
   402  // SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
   403  //
   404  // Solidity: function setAddr(node bytes32, addr address) returns()
   405  func (_PublicResolver *PublicResolverTransactor) SetAddr(opts *bind.TransactOpts, node [32]byte, addr common.Address) (*types.Transaction, error) {
   406  	return _PublicResolver.contract.Transact(opts, "setAddr", node, addr)
   407  }
   408  
   409  // SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
   410  //
   411  // Solidity: function setAddr(node bytes32, addr address) returns()
   412  func (_PublicResolver *PublicResolverSession) SetAddr(node [32]byte, addr common.Address) (*types.Transaction, error) {
   413  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
   414  }
   415  
   416  // SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
   417  //
   418  // Solidity: function setAddr(node bytes32, addr address) returns()
   419  func (_PublicResolver *PublicResolverTransactorSession) SetAddr(node [32]byte, addr common.Address) (*types.Transaction, error) {
   420  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
   421  }
   422  
   423  // SetContent is a paid mutator transaction binding the contract method 0xc3d014d6.
   424  //
   425  // Solidity: function setContent(node bytes32, hash bytes32) returns()
   426  func (_PublicResolver *PublicResolverTransactor) SetContent(opts *bind.TransactOpts, node [32]byte, hash [32]byte) (*types.Transaction, error) {
   427  	return _PublicResolver.contract.Transact(opts, "setContent", node, hash)
   428  }
   429  
   430  // SetContent is a paid mutator transaction binding the contract method 0xc3d014d6.
   431  //
   432  // Solidity: function setContent(node bytes32, hash bytes32) returns()
   433  func (_PublicResolver *PublicResolverSession) SetContent(node [32]byte, hash [32]byte) (*types.Transaction, error) {
   434  	return _PublicResolver.Contract.SetContent(&_PublicResolver.TransactOpts, node, hash)
   435  }
   436  
   437  // SetContent is a paid mutator transaction binding the contract method 0xc3d014d6.
   438  //
   439  // Solidity: function setContent(node bytes32, hash bytes32) returns()
   440  func (_PublicResolver *PublicResolverTransactorSession) SetContent(node [32]byte, hash [32]byte) (*types.Transaction, error) {
   441  	return _PublicResolver.Contract.SetContent(&_PublicResolver.TransactOpts, node, hash)
   442  }
   443  
   444  // SetName is a paid mutator transaction binding the contract method 0x77372213.
   445  //
   446  // Solidity: function setName(node bytes32, name string) returns()
   447  func (_PublicResolver *PublicResolverTransactor) SetName(opts *bind.TransactOpts, node [32]byte, name string) (*types.Transaction, error) {
   448  	return _PublicResolver.contract.Transact(opts, "setName", node, name)
   449  }
   450  
   451  // SetName is a paid mutator transaction binding the contract method 0x77372213.
   452  //
   453  // Solidity: function setName(node bytes32, name string) returns()
   454  func (_PublicResolver *PublicResolverSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
   455  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
   456  }
   457  
   458  // SetName is a paid mutator transaction binding the contract method 0x77372213.
   459  //
   460  // Solidity: function setName(node bytes32, name string) returns()
   461  func (_PublicResolver *PublicResolverTransactorSession) SetName(node [32]byte, name string) (*types.Transaction, error) {
   462  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
   463  }
   464  
   465  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
   466  //
   467  // Solidity: function setPubkey(node bytes32, x bytes32, y bytes32) returns()
   468  func (_PublicResolver *PublicResolverTransactor) SetPubkey(opts *bind.TransactOpts, node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
   469  	return _PublicResolver.contract.Transact(opts, "setPubkey", node, x, y)
   470  }
   471  
   472  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
   473  //
   474  // Solidity: function setPubkey(node bytes32, x bytes32, y bytes32) returns()
   475  func (_PublicResolver *PublicResolverSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
   476  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
   477  }
   478  
   479  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
   480  //
   481  // Solidity: function setPubkey(node bytes32, x bytes32, y bytes32) returns()
   482  func (_PublicResolver *PublicResolverTransactorSession) SetPubkey(node [32]byte, x [32]byte, y [32]byte) (*types.Transaction, error) {
   483  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
   484  }
   485  
   486  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
   487  //
   488  // Solidity: function setText(node bytes32, key string, value string) returns()
   489  func (_PublicResolver *PublicResolverTransactor) SetText(opts *bind.TransactOpts, node [32]byte, key string, value string) (*types.Transaction, error) {
   490  	return _PublicResolver.contract.Transact(opts, "setText", node, key, value)
   491  }
   492  
   493  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
   494  //
   495  // Solidity: function setText(node bytes32, key string, value string) returns()
   496  func (_PublicResolver *PublicResolverSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
   497  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
   498  }
   499  
   500  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
   501  //
   502  // Solidity: function setText(node bytes32, key string, value string) returns()
   503  func (_PublicResolver *PublicResolverTransactorSession) SetText(node [32]byte, key string, value string) (*types.Transaction, error) {
   504  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
   505  }
   506  
   507  // PublicResolverABIChangedIterator is returned from FilterABIChanged and is used to iterate over the raw logs and unpacked data for ABIChanged events raised by the PublicResolver contract.
   508  type PublicResolverABIChangedIterator struct {
   509  	Event *PublicResolverABIChanged // Event containing the contract specifics and raw log
   510  
   511  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   512  	event    string              // Event name to use for unpacking event data
   513  
   514  	logs chan types.Log        // Log channel receiving the found contract events
   515  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   516  	done bool                  // Whether the subscription completed delivering logs
   517  	fail error                 // Occurred error to stop iteration
   518  }
   519  
   520  // Next advances the iterator to the subsequent event, returning whether there
   521  // are any more events found. In case of a retrieval or parsing error, false is
   522  // returned and Error() can be queried for the exact failure.
   523  func (it *PublicResolverABIChangedIterator) Next() bool {
   524  	// If the iterator failed, stop iterating
   525  	if it.fail != nil {
   526  		return false
   527  	}
   528  	// If the iterator completed, deliver directly whatever's available
   529  	if it.done {
   530  		select {
   531  		case log := <-it.logs:
   532  			it.Event = new(PublicResolverABIChanged)
   533  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   534  				it.fail = err
   535  				return false
   536  			}
   537  			it.Event.Raw = log
   538  			return true
   539  
   540  		default:
   541  			return false
   542  		}
   543  	}
   544  	// Iterator still in progress, wait for either a data or an error event
   545  	select {
   546  	case log := <-it.logs:
   547  		it.Event = new(PublicResolverABIChanged)
   548  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   549  			it.fail = err
   550  			return false
   551  		}
   552  		it.Event.Raw = log
   553  		return true
   554  
   555  	case err := <-it.sub.Err():
   556  		it.done = true
   557  		it.fail = err
   558  		return it.Next()
   559  	}
   560  }
   561  
   562  // Error retruned any retrieval or parsing error occurred during filtering.
   563  func (it *PublicResolverABIChangedIterator) Error() error {
   564  	return it.fail
   565  }
   566  
   567  // Close terminates the iteration process, releasing any pending underlying
   568  // resources.
   569  func (it *PublicResolverABIChangedIterator) Close() error {
   570  	it.sub.Unsubscribe()
   571  	return nil
   572  }
   573  
   574  // PublicResolverABIChanged represents a ABIChanged event raised by the PublicResolver contract.
   575  type PublicResolverABIChanged struct {
   576  	Node        [32]byte
   577  	ContentType *big.Int
   578  	Raw         types.Log // Blockchain specific contextual infos
   579  }
   580  
   581  // FilterABIChanged is a free log retrieval operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
   582  //
   583  // Solidity: event ABIChanged(node indexed bytes32, contentType indexed uint256)
   584  func (_PublicResolver *PublicResolverFilterer) FilterABIChanged(opts *bind.FilterOpts, node [][32]byte, contentType []*big.Int) (*PublicResolverABIChangedIterator, error) {
   585  
   586  	var nodeRule []interface{}
   587  	for _, nodeItem := range node {
   588  		nodeRule = append(nodeRule, nodeItem)
   589  	}
   590  	var contentTypeRule []interface{}
   591  	for _, contentTypeItem := range contentType {
   592  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   593  	}
   594  
   595  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   596  	if err != nil {
   597  		return nil, err
   598  	}
   599  	return &PublicResolverABIChangedIterator{contract: _PublicResolver.contract, event: "ABIChanged", logs: logs, sub: sub}, nil
   600  }
   601  
   602  // WatchABIChanged is a free log subscription operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
   603  //
   604  // Solidity: event ABIChanged(node indexed bytes32, contentType indexed uint256)
   605  func (_PublicResolver *PublicResolverFilterer) WatchABIChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverABIChanged, node [][32]byte, contentType []*big.Int) (event.Subscription, error) {
   606  
   607  	var nodeRule []interface{}
   608  	for _, nodeItem := range node {
   609  		nodeRule = append(nodeRule, nodeItem)
   610  	}
   611  	var contentTypeRule []interface{}
   612  	for _, contentTypeItem := range contentType {
   613  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   614  	}
   615  
   616  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   617  	if err != nil {
   618  		return nil, err
   619  	}
   620  	return event.NewSubscription(func(quit <-chan struct{}) error {
   621  		defer sub.Unsubscribe()
   622  		for {
   623  			select {
   624  			case log := <-logs:
   625  				// New log arrived, parse the event and forward to the user
   626  				event := new(PublicResolverABIChanged)
   627  				if err := _PublicResolver.contract.UnpackLog(event, "ABIChanged", log); err != nil {
   628  					return err
   629  				}
   630  				event.Raw = log
   631  
   632  				select {
   633  				case sink <- event:
   634  				case err := <-sub.Err():
   635  					return err
   636  				case <-quit:
   637  					return nil
   638  				}
   639  			case err := <-sub.Err():
   640  				return err
   641  			case <-quit:
   642  				return nil
   643  			}
   644  		}
   645  	}), nil
   646  }
   647  
   648  // PublicResolverAddrChangedIterator is returned from FilterAddrChanged and is used to iterate over the raw logs and unpacked data for AddrChanged events raised by the PublicResolver contract.
   649  type PublicResolverAddrChangedIterator struct {
   650  	Event *PublicResolverAddrChanged // Event containing the contract specifics and raw log
   651  
   652  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   653  	event    string              // Event name to use for unpacking event data
   654  
   655  	logs chan types.Log        // Log channel receiving the found contract events
   656  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   657  	done bool                  // Whether the subscription completed delivering logs
   658  	fail error                 // Occurred error to stop iteration
   659  }
   660  
   661  // Next advances the iterator to the subsequent event, returning whether there
   662  // are any more events found. In case of a retrieval or parsing error, false is
   663  // returned and Error() can be queried for the exact failure.
   664  func (it *PublicResolverAddrChangedIterator) Next() bool {
   665  	// If the iterator failed, stop iterating
   666  	if it.fail != nil {
   667  		return false
   668  	}
   669  	// If the iterator completed, deliver directly whatever's available
   670  	if it.done {
   671  		select {
   672  		case log := <-it.logs:
   673  			it.Event = new(PublicResolverAddrChanged)
   674  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   675  				it.fail = err
   676  				return false
   677  			}
   678  			it.Event.Raw = log
   679  			return true
   680  
   681  		default:
   682  			return false
   683  		}
   684  	}
   685  	// Iterator still in progress, wait for either a data or an error event
   686  	select {
   687  	case log := <-it.logs:
   688  		it.Event = new(PublicResolverAddrChanged)
   689  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   690  			it.fail = err
   691  			return false
   692  		}
   693  		it.Event.Raw = log
   694  		return true
   695  
   696  	case err := <-it.sub.Err():
   697  		it.done = true
   698  		it.fail = err
   699  		return it.Next()
   700  	}
   701  }
   702  
   703  // Error retruned any retrieval or parsing error occurred during filtering.
   704  func (it *PublicResolverAddrChangedIterator) Error() error {
   705  	return it.fail
   706  }
   707  
   708  // Close terminates the iteration process, releasing any pending underlying
   709  // resources.
   710  func (it *PublicResolverAddrChangedIterator) Close() error {
   711  	it.sub.Unsubscribe()
   712  	return nil
   713  }
   714  
   715  // PublicResolverAddrChanged represents a AddrChanged event raised by the PublicResolver contract.
   716  type PublicResolverAddrChanged struct {
   717  	Node [32]byte
   718  	A    common.Address
   719  	Raw  types.Log // Blockchain specific contextual infos
   720  }
   721  
   722  // FilterAddrChanged is a free log retrieval operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
   723  //
   724  // Solidity: event AddrChanged(node indexed bytes32, a address)
   725  func (_PublicResolver *PublicResolverFilterer) FilterAddrChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverAddrChangedIterator, error) {
   726  
   727  	var nodeRule []interface{}
   728  	for _, nodeItem := range node {
   729  		nodeRule = append(nodeRule, nodeItem)
   730  	}
   731  
   732  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "AddrChanged", nodeRule)
   733  	if err != nil {
   734  		return nil, err
   735  	}
   736  	return &PublicResolverAddrChangedIterator{contract: _PublicResolver.contract, event: "AddrChanged", logs: logs, sub: sub}, nil
   737  }
   738  
   739  // WatchAddrChanged is a free log subscription operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
   740  //
   741  // Solidity: event AddrChanged(node indexed bytes32, a address)
   742  func (_PublicResolver *PublicResolverFilterer) WatchAddrChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverAddrChanged, node [][32]byte) (event.Subscription, error) {
   743  
   744  	var nodeRule []interface{}
   745  	for _, nodeItem := range node {
   746  		nodeRule = append(nodeRule, nodeItem)
   747  	}
   748  
   749  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "AddrChanged", nodeRule)
   750  	if err != nil {
   751  		return nil, err
   752  	}
   753  	return event.NewSubscription(func(quit <-chan struct{}) error {
   754  		defer sub.Unsubscribe()
   755  		for {
   756  			select {
   757  			case log := <-logs:
   758  				// New log arrived, parse the event and forward to the user
   759  				event := new(PublicResolverAddrChanged)
   760  				if err := _PublicResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
   761  					return err
   762  				}
   763  				event.Raw = log
   764  
   765  				select {
   766  				case sink <- event:
   767  				case err := <-sub.Err():
   768  					return err
   769  				case <-quit:
   770  					return nil
   771  				}
   772  			case err := <-sub.Err():
   773  				return err
   774  			case <-quit:
   775  				return nil
   776  			}
   777  		}
   778  	}), nil
   779  }
   780  
   781  // PublicResolverContentChangedIterator is returned from FilterContentChanged and is used to iterate over the raw logs and unpacked data for ContentChanged events raised by the PublicResolver contract.
   782  type PublicResolverContentChangedIterator struct {
   783  	Event *PublicResolverContentChanged // Event containing the contract specifics and raw log
   784  
   785  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   786  	event    string              // Event name to use for unpacking event data
   787  
   788  	logs chan types.Log        // Log channel receiving the found contract events
   789  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   790  	done bool                  // Whether the subscription completed delivering logs
   791  	fail error                 // Occurred error to stop iteration
   792  }
   793  
   794  // Next advances the iterator to the subsequent event, returning whether there
   795  // are any more events found. In case of a retrieval or parsing error, false is
   796  // returned and Error() can be queried for the exact failure.
   797  func (it *PublicResolverContentChangedIterator) Next() bool {
   798  	// If the iterator failed, stop iterating
   799  	if it.fail != nil {
   800  		return false
   801  	}
   802  	// If the iterator completed, deliver directly whatever's available
   803  	if it.done {
   804  		select {
   805  		case log := <-it.logs:
   806  			it.Event = new(PublicResolverContentChanged)
   807  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   808  				it.fail = err
   809  				return false
   810  			}
   811  			it.Event.Raw = log
   812  			return true
   813  
   814  		default:
   815  			return false
   816  		}
   817  	}
   818  	// Iterator still in progress, wait for either a data or an error event
   819  	select {
   820  	case log := <-it.logs:
   821  		it.Event = new(PublicResolverContentChanged)
   822  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   823  			it.fail = err
   824  			return false
   825  		}
   826  		it.Event.Raw = log
   827  		return true
   828  
   829  	case err := <-it.sub.Err():
   830  		it.done = true
   831  		it.fail = err
   832  		return it.Next()
   833  	}
   834  }
   835  
   836  // Error retruned any retrieval or parsing error occurred during filtering.
   837  func (it *PublicResolverContentChangedIterator) Error() error {
   838  	return it.fail
   839  }
   840  
   841  // Close terminates the iteration process, releasing any pending underlying
   842  // resources.
   843  func (it *PublicResolverContentChangedIterator) Close() error {
   844  	it.sub.Unsubscribe()
   845  	return nil
   846  }
   847  
   848  // PublicResolverContentChanged represents a ContentChanged event raised by the PublicResolver contract.
   849  type PublicResolverContentChanged struct {
   850  	Node [32]byte
   851  	Hash [32]byte
   852  	Raw  types.Log // Blockchain specific contextual infos
   853  }
   854  
   855  // FilterContentChanged is a free log retrieval operation binding the contract event 0x0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc.
   856  //
   857  // Solidity: event ContentChanged(node indexed bytes32, hash bytes32)
   858  func (_PublicResolver *PublicResolverFilterer) FilterContentChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverContentChangedIterator, error) {
   859  
   860  	var nodeRule []interface{}
   861  	for _, nodeItem := range node {
   862  		nodeRule = append(nodeRule, nodeItem)
   863  	}
   864  
   865  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ContentChanged", nodeRule)
   866  	if err != nil {
   867  		return nil, err
   868  	}
   869  	return &PublicResolverContentChangedIterator{contract: _PublicResolver.contract, event: "ContentChanged", logs: logs, sub: sub}, nil
   870  }
   871  
   872  // WatchContentChanged is a free log subscription operation binding the contract event 0x0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc.
   873  //
   874  // Solidity: event ContentChanged(node indexed bytes32, hash bytes32)
   875  func (_PublicResolver *PublicResolverFilterer) WatchContentChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverContentChanged, node [][32]byte) (event.Subscription, error) {
   876  
   877  	var nodeRule []interface{}
   878  	for _, nodeItem := range node {
   879  		nodeRule = append(nodeRule, nodeItem)
   880  	}
   881  
   882  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ContentChanged", nodeRule)
   883  	if err != nil {
   884  		return nil, err
   885  	}
   886  	return event.NewSubscription(func(quit <-chan struct{}) error {
   887  		defer sub.Unsubscribe()
   888  		for {
   889  			select {
   890  			case log := <-logs:
   891  				// New log arrived, parse the event and forward to the user
   892  				event := new(PublicResolverContentChanged)
   893  				if err := _PublicResolver.contract.UnpackLog(event, "ContentChanged", log); err != nil {
   894  					return err
   895  				}
   896  				event.Raw = log
   897  
   898  				select {
   899  				case sink <- event:
   900  				case err := <-sub.Err():
   901  					return err
   902  				case <-quit:
   903  					return nil
   904  				}
   905  			case err := <-sub.Err():
   906  				return err
   907  			case <-quit:
   908  				return nil
   909  			}
   910  		}
   911  	}), nil
   912  }
   913  
   914  // PublicResolverNameChangedIterator is returned from FilterNameChanged and is used to iterate over the raw logs and unpacked data for NameChanged events raised by the PublicResolver contract.
   915  type PublicResolverNameChangedIterator struct {
   916  	Event *PublicResolverNameChanged // Event containing the contract specifics and raw log
   917  
   918  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   919  	event    string              // Event name to use for unpacking event data
   920  
   921  	logs chan types.Log        // Log channel receiving the found contract events
   922  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   923  	done bool                  // Whether the subscription completed delivering logs
   924  	fail error                 // Occurred error to stop iteration
   925  }
   926  
   927  // Next advances the iterator to the subsequent event, returning whether there
   928  // are any more events found. In case of a retrieval or parsing error, false is
   929  // returned and Error() can be queried for the exact failure.
   930  func (it *PublicResolverNameChangedIterator) Next() bool {
   931  	// If the iterator failed, stop iterating
   932  	if it.fail != nil {
   933  		return false
   934  	}
   935  	// If the iterator completed, deliver directly whatever's available
   936  	if it.done {
   937  		select {
   938  		case log := <-it.logs:
   939  			it.Event = new(PublicResolverNameChanged)
   940  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   941  				it.fail = err
   942  				return false
   943  			}
   944  			it.Event.Raw = log
   945  			return true
   946  
   947  		default:
   948  			return false
   949  		}
   950  	}
   951  	// Iterator still in progress, wait for either a data or an error event
   952  	select {
   953  	case log := <-it.logs:
   954  		it.Event = new(PublicResolverNameChanged)
   955  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   956  			it.fail = err
   957  			return false
   958  		}
   959  		it.Event.Raw = log
   960  		return true
   961  
   962  	case err := <-it.sub.Err():
   963  		it.done = true
   964  		it.fail = err
   965  		return it.Next()
   966  	}
   967  }
   968  
   969  // Error retruned any retrieval or parsing error occurred during filtering.
   970  func (it *PublicResolverNameChangedIterator) Error() error {
   971  	return it.fail
   972  }
   973  
   974  // Close terminates the iteration process, releasing any pending underlying
   975  // resources.
   976  func (it *PublicResolverNameChangedIterator) Close() error {
   977  	it.sub.Unsubscribe()
   978  	return nil
   979  }
   980  
   981  // PublicResolverNameChanged represents a NameChanged event raised by the PublicResolver contract.
   982  type PublicResolverNameChanged struct {
   983  	Node [32]byte
   984  	Name string
   985  	Raw  types.Log // Blockchain specific contextual infos
   986  }
   987  
   988  // FilterNameChanged is a free log retrieval operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
   989  //
   990  // Solidity: event NameChanged(node indexed bytes32, name string)
   991  func (_PublicResolver *PublicResolverFilterer) FilterNameChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverNameChangedIterator, error) {
   992  
   993  	var nodeRule []interface{}
   994  	for _, nodeItem := range node {
   995  		nodeRule = append(nodeRule, nodeItem)
   996  	}
   997  
   998  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "NameChanged", nodeRule)
   999  	if err != nil {
  1000  		return nil, err
  1001  	}
  1002  	return &PublicResolverNameChangedIterator{contract: _PublicResolver.contract, event: "NameChanged", logs: logs, sub: sub}, nil
  1003  }
  1004  
  1005  // WatchNameChanged is a free log subscription operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  1006  //
  1007  // Solidity: event NameChanged(node indexed bytes32, name string)
  1008  func (_PublicResolver *PublicResolverFilterer) WatchNameChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverNameChanged, node [][32]byte) (event.Subscription, error) {
  1009  
  1010  	var nodeRule []interface{}
  1011  	for _, nodeItem := range node {
  1012  		nodeRule = append(nodeRule, nodeItem)
  1013  	}
  1014  
  1015  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "NameChanged", nodeRule)
  1016  	if err != nil {
  1017  		return nil, err
  1018  	}
  1019  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1020  		defer sub.Unsubscribe()
  1021  		for {
  1022  			select {
  1023  			case log := <-logs:
  1024  				// New log arrived, parse the event and forward to the user
  1025  				event := new(PublicResolverNameChanged)
  1026  				if err := _PublicResolver.contract.UnpackLog(event, "NameChanged", log); err != nil {
  1027  					return err
  1028  				}
  1029  				event.Raw = log
  1030  
  1031  				select {
  1032  				case sink <- event:
  1033  				case err := <-sub.Err():
  1034  					return err
  1035  				case <-quit:
  1036  					return nil
  1037  				}
  1038  			case err := <-sub.Err():
  1039  				return err
  1040  			case <-quit:
  1041  				return nil
  1042  			}
  1043  		}
  1044  	}), nil
  1045  }
  1046  
  1047  // PublicResolverPubkeyChangedIterator is returned from FilterPubkeyChanged and is used to iterate over the raw logs and unpacked data for PubkeyChanged events raised by the PublicResolver contract.
  1048  type PublicResolverPubkeyChangedIterator struct {
  1049  	Event *PublicResolverPubkeyChanged // Event containing the contract specifics and raw log
  1050  
  1051  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1052  	event    string              // Event name to use for unpacking event data
  1053  
  1054  	logs chan types.Log        // Log channel receiving the found contract events
  1055  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1056  	done bool                  // Whether the subscription completed delivering logs
  1057  	fail error                 // Occurred error to stop iteration
  1058  }
  1059  
  1060  // Next advances the iterator to the subsequent event, returning whether there
  1061  // are any more events found. In case of a retrieval or parsing error, false is
  1062  // returned and Error() can be queried for the exact failure.
  1063  func (it *PublicResolverPubkeyChangedIterator) Next() bool {
  1064  	// If the iterator failed, stop iterating
  1065  	if it.fail != nil {
  1066  		return false
  1067  	}
  1068  	// If the iterator completed, deliver directly whatever's available
  1069  	if it.done {
  1070  		select {
  1071  		case log := <-it.logs:
  1072  			it.Event = new(PublicResolverPubkeyChanged)
  1073  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1074  				it.fail = err
  1075  				return false
  1076  			}
  1077  			it.Event.Raw = log
  1078  			return true
  1079  
  1080  		default:
  1081  			return false
  1082  		}
  1083  	}
  1084  	// Iterator still in progress, wait for either a data or an error event
  1085  	select {
  1086  	case log := <-it.logs:
  1087  		it.Event = new(PublicResolverPubkeyChanged)
  1088  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1089  			it.fail = err
  1090  			return false
  1091  		}
  1092  		it.Event.Raw = log
  1093  		return true
  1094  
  1095  	case err := <-it.sub.Err():
  1096  		it.done = true
  1097  		it.fail = err
  1098  		return it.Next()
  1099  	}
  1100  }
  1101  
  1102  // Error retruned any retrieval or parsing error occurred during filtering.
  1103  func (it *PublicResolverPubkeyChangedIterator) Error() error {
  1104  	return it.fail
  1105  }
  1106  
  1107  // Close terminates the iteration process, releasing any pending underlying
  1108  // resources.
  1109  func (it *PublicResolverPubkeyChangedIterator) Close() error {
  1110  	it.sub.Unsubscribe()
  1111  	return nil
  1112  }
  1113  
  1114  // PublicResolverPubkeyChanged represents a PubkeyChanged event raised by the PublicResolver contract.
  1115  type PublicResolverPubkeyChanged struct {
  1116  	Node [32]byte
  1117  	X    [32]byte
  1118  	Y    [32]byte
  1119  	Raw  types.Log // Blockchain specific contextual infos
  1120  }
  1121  
  1122  // FilterPubkeyChanged is a free log retrieval operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  1123  //
  1124  // Solidity: event PubkeyChanged(node indexed bytes32, x bytes32, y bytes32)
  1125  func (_PublicResolver *PublicResolverFilterer) FilterPubkeyChanged(opts *bind.FilterOpts, node [][32]byte) (*PublicResolverPubkeyChangedIterator, error) {
  1126  
  1127  	var nodeRule []interface{}
  1128  	for _, nodeItem := range node {
  1129  		nodeRule = append(nodeRule, nodeItem)
  1130  	}
  1131  
  1132  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "PubkeyChanged", nodeRule)
  1133  	if err != nil {
  1134  		return nil, err
  1135  	}
  1136  	return &PublicResolverPubkeyChangedIterator{contract: _PublicResolver.contract, event: "PubkeyChanged", logs: logs, sub: sub}, nil
  1137  }
  1138  
  1139  // WatchPubkeyChanged is a free log subscription operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  1140  //
  1141  // Solidity: event PubkeyChanged(node indexed bytes32, x bytes32, y bytes32)
  1142  func (_PublicResolver *PublicResolverFilterer) WatchPubkeyChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverPubkeyChanged, node [][32]byte) (event.Subscription, error) {
  1143  
  1144  	var nodeRule []interface{}
  1145  	for _, nodeItem := range node {
  1146  		nodeRule = append(nodeRule, nodeItem)
  1147  	}
  1148  
  1149  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "PubkeyChanged", nodeRule)
  1150  	if err != nil {
  1151  		return nil, err
  1152  	}
  1153  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1154  		defer sub.Unsubscribe()
  1155  		for {
  1156  			select {
  1157  			case log := <-logs:
  1158  				// New log arrived, parse the event and forward to the user
  1159  				event := new(PublicResolverPubkeyChanged)
  1160  				if err := _PublicResolver.contract.UnpackLog(event, "PubkeyChanged", log); err != nil {
  1161  					return err
  1162  				}
  1163  				event.Raw = log
  1164  
  1165  				select {
  1166  				case sink <- event:
  1167  				case err := <-sub.Err():
  1168  					return err
  1169  				case <-quit:
  1170  					return nil
  1171  				}
  1172  			case err := <-sub.Err():
  1173  				return err
  1174  			case <-quit:
  1175  				return nil
  1176  			}
  1177  		}
  1178  	}), nil
  1179  }
  1180  
  1181  // PublicResolverTextChangedIterator is returned from FilterTextChanged and is used to iterate over the raw logs and unpacked data for TextChanged events raised by the PublicResolver contract.
  1182  type PublicResolverTextChangedIterator struct {
  1183  	Event *PublicResolverTextChanged // Event containing the contract specifics and raw log
  1184  
  1185  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1186  	event    string              // Event name to use for unpacking event data
  1187  
  1188  	logs chan types.Log        // Log channel receiving the found contract events
  1189  	sub  ethereum.Subscription // Subscription for errors, completion and termination
  1190  	done bool                  // Whether the subscription completed delivering logs
  1191  	fail error                 // Occurred error to stop iteration
  1192  }
  1193  
  1194  // Next advances the iterator to the subsequent event, returning whether there
  1195  // are any more events found. In case of a retrieval or parsing error, false is
  1196  // returned and Error() can be queried for the exact failure.
  1197  func (it *PublicResolverTextChangedIterator) Next() bool {
  1198  	// If the iterator failed, stop iterating
  1199  	if it.fail != nil {
  1200  		return false
  1201  	}
  1202  	// If the iterator completed, deliver directly whatever's available
  1203  	if it.done {
  1204  		select {
  1205  		case log := <-it.logs:
  1206  			it.Event = new(PublicResolverTextChanged)
  1207  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1208  				it.fail = err
  1209  				return false
  1210  			}
  1211  			it.Event.Raw = log
  1212  			return true
  1213  
  1214  		default:
  1215  			return false
  1216  		}
  1217  	}
  1218  	// Iterator still in progress, wait for either a data or an error event
  1219  	select {
  1220  	case log := <-it.logs:
  1221  		it.Event = new(PublicResolverTextChanged)
  1222  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1223  			it.fail = err
  1224  			return false
  1225  		}
  1226  		it.Event.Raw = log
  1227  		return true
  1228  
  1229  	case err := <-it.sub.Err():
  1230  		it.done = true
  1231  		it.fail = err
  1232  		return it.Next()
  1233  	}
  1234  }
  1235  
  1236  // Error retruned any retrieval or parsing error occurred during filtering.
  1237  func (it *PublicResolverTextChangedIterator) Error() error {
  1238  	return it.fail
  1239  }
  1240  
  1241  // Close terminates the iteration process, releasing any pending underlying
  1242  // resources.
  1243  func (it *PublicResolverTextChangedIterator) Close() error {
  1244  	it.sub.Unsubscribe()
  1245  	return nil
  1246  }
  1247  
  1248  // PublicResolverTextChanged represents a TextChanged event raised by the PublicResolver contract.
  1249  type PublicResolverTextChanged struct {
  1250  	Node       [32]byte
  1251  	IndexedKey common.Hash
  1252  	Key        string
  1253  	Raw        types.Log // Blockchain specific contextual infos
  1254  }
  1255  
  1256  // FilterTextChanged is a free log retrieval operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
  1257  //
  1258  // Solidity: event TextChanged(node indexed bytes32, indexedKey indexed string, key string)
  1259  func (_PublicResolver *PublicResolverFilterer) FilterTextChanged(opts *bind.FilterOpts, node [][32]byte, indexedKey []string) (*PublicResolverTextChangedIterator, error) {
  1260  
  1261  	var nodeRule []interface{}
  1262  	for _, nodeItem := range node {
  1263  		nodeRule = append(nodeRule, nodeItem)
  1264  	}
  1265  	var indexedKeyRule []interface{}
  1266  	for _, indexedKeyItem := range indexedKey {
  1267  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
  1268  	}
  1269  
  1270  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
  1271  	if err != nil {
  1272  		return nil, err
  1273  	}
  1274  	return &PublicResolverTextChangedIterator{contract: _PublicResolver.contract, event: "TextChanged", logs: logs, sub: sub}, nil
  1275  }
  1276  
  1277  // WatchTextChanged is a free log subscription operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
  1278  //
  1279  // Solidity: event TextChanged(node indexed bytes32, indexedKey indexed string, key string)
  1280  func (_PublicResolver *PublicResolverFilterer) WatchTextChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverTextChanged, node [][32]byte, indexedKey []string) (event.Subscription, error) {
  1281  
  1282  	var nodeRule []interface{}
  1283  	for _, nodeItem := range node {
  1284  		nodeRule = append(nodeRule, nodeItem)
  1285  	}
  1286  	var indexedKeyRule []interface{}
  1287  	for _, indexedKeyItem := range indexedKey {
  1288  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
  1289  	}
  1290  
  1291  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
  1292  	if err != nil {
  1293  		return nil, err
  1294  	}
  1295  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1296  		defer sub.Unsubscribe()
  1297  		for {
  1298  			select {
  1299  			case log := <-logs:
  1300  				// New log arrived, parse the event and forward to the user
  1301  				event := new(PublicResolverTextChanged)
  1302  				if err := _PublicResolver.contract.UnpackLog(event, "TextChanged", log); err != nil {
  1303  					return err
  1304  				}
  1305  				event.Raw = log
  1306  
  1307  				select {
  1308  				case sink <- event:
  1309  				case err := <-sub.Err():
  1310  					return err
  1311  				case <-quit:
  1312  					return nil
  1313  				}
  1314  			case err := <-sub.Err():
  1315  				return err
  1316  			case <-quit:
  1317  				return nil
  1318  			}
  1319  		}
  1320  	}), nil
  1321  }