/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides, BigNumberish, } from "ethers"; import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { NFTCollection, NFTCollectionInterface } from "../NFTCollection"; const _abi = [ { inputs: [ { internalType: "address payable", name: "_controlCenter", type: "address", }, { internalType: "address", name: "_trustedForwarder", type: "address", }, { internalType: "string", name: "_uri", type: "string", }, { internalType: "uint256", name: "_royaltyBps", type: "uint256", }, ], stateMutability: "nonpayable", type: "constructor", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "account", type: "address", }, { indexed: true, internalType: "address", name: "operator", type: "address", }, { indexed: false, internalType: "bool", name: "approved", type: "bool", }, ], name: "ApprovalForAll", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "redeemer", type: "address", }, { indexed: true, internalType: "uint256", name: "tokenId", type: "uint256", }, { indexed: true, internalType: "address", name: "sourceOfUnderlying", type: "address", }, { indexed: false, internalType: "uint256", name: "tokenAmountReceived", type: "uint256", }, { indexed: false, internalType: "uint256", name: "sharesRedeemed", type: "uint256", }, ], name: "ERC20Redeemed", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "creator", type: "address", }, { indexed: true, internalType: "address", name: "sourceOfUnderlying", type: "address", }, { indexed: false, internalType: "uint256", name: "totalAmountOfUnderlying", type: "uint256", }, { indexed: false, internalType: "uint256", name: "shares", type: "uint256", }, { indexed: false, internalType: "uint256", name: "tokenId", type: "uint256", }, { indexed: false, internalType: "string", name: "tokenURI", type: "string", }, ], name: "ERC20WrappedToken", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "redeemer", type: "address", }, { indexed: true, internalType: "address", name: "sourceOfUnderlying", type: "address", }, { indexed: false, internalType: "uint256", name: "tokenIdOfUnderlying", type: "uint256", }, { indexed: false, internalType: "uint256", name: "tokenId", type: "uint256", }, ], name: "ERC721Redeemed", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "creator", type: "address", }, { indexed: true, internalType: "address", name: "sourceOfUnderlying", type: "address", }, { indexed: false, internalType: "uint256", name: "tokenIdOfUnderlying", type: "uint256", }, { indexed: false, internalType: "uint256", name: "tokenId", type: "uint256", }, { indexed: false, internalType: "string", name: "tokenURI", type: "string", }, ], name: "ERC721WrappedToken", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "creator", type: "address", }, { indexed: false, internalType: "uint256[]", name: "tokenIds", type: "uint256[]", }, { indexed: false, internalType: "string[]", name: "tokenURIs", type: "string[]", }, { indexed: false, internalType: "uint256[]", name: "tokenSupplies", type: "uint256[]", }, ], name: "NativeTokens", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "prevOwner", type: "address", }, { indexed: false, internalType: "address", name: "newOwner", type: "address", }, ], name: "NewOwner", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "account", type: "address", }, ], name: "Paused", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "bool", name: "transferable", type: "bool", }, ], name: "RestrictedTransferUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32", }, { indexed: true, internalType: "bytes32", name: "previousAdminRole", type: "bytes32", }, { indexed: true, internalType: "bytes32", name: "newAdminRole", type: "bytes32", }, ], name: "RoleAdminChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32", }, { indexed: true, internalType: "address", name: "account", type: "address", }, { indexed: true, internalType: "address", name: "sender", type: "address", }, ], name: "RoleGranted", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes32", name: "role", type: "bytes32", }, { indexed: true, internalType: "address", name: "account", type: "address", }, { indexed: true, internalType: "address", name: "sender", type: "address", }, ], name: "RoleRevoked", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "royaltyBps", type: "uint256", }, ], name: "RoyaltyUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "operator", type: "address", }, { indexed: true, internalType: "address", name: "from", type: "address", }, { indexed: true, internalType: "address", name: "to", type: "address", }, { indexed: false, internalType: "uint256[]", name: "ids", type: "uint256[]", }, { indexed: false, internalType: "uint256[]", name: "values", type: "uint256[]", }, ], name: "TransferBatch", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "operator", type: "address", }, { indexed: true, internalType: "address", name: "from", type: "address", }, { indexed: true, internalType: "address", name: "to", type: "address", }, { indexed: false, internalType: "uint256", name: "id", type: "uint256", }, { indexed: false, internalType: "uint256", name: "value", type: "uint256", }, ], name: "TransferSingle", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "string", name: "value", type: "string", }, { indexed: true, internalType: "uint256", name: "id", type: "uint256", }, ], name: "URI", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "account", type: "address", }, ], name: "Unpaused", type: "event", }, { inputs: [], name: "DEFAULT_ADMIN_ROLE", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "MINTER_ROLE", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "PAUSER_ROLE", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "TRANSFER_ROLE", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "_contractURI", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, { internalType: "uint256", name: "id", type: "uint256", }, ], name: "balanceOf", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address[]", name: "accounts", type: "address[]", }, { internalType: "uint256[]", name: "ids", type: "uint256[]", }, ], name: "balanceOfBatch", outputs: [ { internalType: "uint256[]", name: "", type: "uint256[]", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, { internalType: "uint256", name: "id", type: "uint256", }, { internalType: "uint256", name: "value", type: "uint256", }, ], name: "burn", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, { internalType: "uint256[]", name: "ids", type: "uint256[]", }, { internalType: "uint256[]", name: "values", type: "uint256[]", }, ], name: "burnBatch", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "contractURI", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "to", type: "address", }, { internalType: "string[]", name: "_nftURIs", type: "string[]", }, { internalType: "uint256[]", name: "_nftSupplies", type: "uint256[]", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "createNativeTokens", outputs: [ { internalType: "uint256[]", name: "nftIds", type: "uint256[]", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "_nftId", type: "uint256", }, ], name: "creator", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], name: "erc20WrappedTokens", outputs: [ { internalType: "address", name: "source", type: "address", }, { internalType: "uint256", name: "shares", type: "uint256", }, { internalType: "uint256", name: "underlyingTokenAmount", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], name: "erc721WrappedTokens", outputs: [ { internalType: "address", name: "source", type: "address", }, { internalType: "uint256", name: "tokenId", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, ], name: "getRoleAdmin", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "uint256", name: "index", type: "uint256", }, ], name: "getRoleMember", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, ], name: "getRoleMemberCount", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "address", name: "account", type: "address", }, ], name: "grantRole", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "address", name: "account", type: "address", }, ], name: "hasRole", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, { internalType: "address", name: "operator", type: "address", }, ], name: "isApprovedForAll", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "forwarder", type: "address", }, ], name: "isTrustedForwarder", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "to", type: "address", }, { internalType: "uint256", name: "id", type: "uint256", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "mint", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "to", type: "address", }, { internalType: "uint256[]", name: "ids", type: "uint256[]", }, { internalType: "uint256[]", name: "amounts", type: "uint256[]", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "mintBatch", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes[]", name: "data", type: "bytes[]", }, ], name: "multicall", outputs: [ { internalType: "bytes[]", name: "results", type: "bytes[]", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "nextTokenId", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, { internalType: "address", name: "", type: "address", }, { internalType: "uint256[]", name: "", type: "uint256[]", }, { internalType: "uint256[]", name: "", type: "uint256[]", }, { internalType: "bytes", name: "", type: "bytes", }, ], name: "onERC1155BatchReceived", outputs: [ { internalType: "bytes4", name: "", type: "bytes4", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, { internalType: "address", name: "", type: "address", }, { internalType: "uint256", name: "", type: "uint256", }, { internalType: "uint256", name: "", type: "uint256", }, { internalType: "bytes", name: "", type: "bytes", }, ], name: "onERC1155Received", outputs: [ { internalType: "bytes4", name: "", type: "bytes4", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "", type: "address", }, { internalType: "address", name: "", type: "address", }, { internalType: "uint256", name: "", type: "uint256", }, { internalType: "bytes", name: "", type: "bytes", }, ], name: "onERC721Received", outputs: [ { internalType: "bytes4", name: "", type: "bytes4", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "owner", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "pause", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "paused", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "_nftId", type: "uint256", }, { internalType: "uint256", name: "_amount", type: "uint256", }, ], name: "redeemERC20", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "_nftId", type: "uint256", }, ], name: "redeemERC721", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "address", name: "account", type: "address", }, ], name: "renounceRole", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, { internalType: "address", name: "account", type: "address", }, ], name: "revokeRole", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "royaltyBps", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "", type: "uint256", }, { internalType: "uint256", name: "salePrice", type: "uint256", }, ], name: "royaltyInfo", outputs: [ { internalType: "address", name: "receiver", type: "address", }, { internalType: "uint256", name: "royaltyAmount", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "from", type: "address", }, { internalType: "address", name: "to", type: "address", }, { internalType: "uint256[]", name: "ids", type: "uint256[]", }, { internalType: "uint256[]", name: "amounts", type: "uint256[]", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "safeBatchTransferFrom", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "from", type: "address", }, { internalType: "address", name: "to", type: "address", }, { internalType: "uint256", name: "id", type: "uint256", }, { internalType: "uint256", name: "amount", type: "uint256", }, { internalType: "bytes", name: "data", type: "bytes", }, ], name: "safeTransferFrom", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "operator", type: "address", }, { internalType: "bool", name: "approved", type: "bool", }, ], name: "setApprovalForAll", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "string", name: "_URI", type: "string", }, ], name: "setContractURI", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "_newOwner", type: "address", }, ], name: "setOwner", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bool", name: "_restrictedTransfer", type: "bool", }, ], name: "setRestrictedTransfer", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "_royaltyBps", type: "uint256", }, ], name: "setRoyaltyBps", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes4", name: "interfaceId", type: "bytes4", }, ], name: "supportsInterface", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], name: "tokenState", outputs: [ { internalType: "address", name: "creator", type: "address", }, { internalType: "string", name: "uri", type: "string", }, { internalType: "enum NFTCollection.UnderlyingType", name: "underlyingType", type: "uint8", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "_nftId", type: "uint256", }, ], name: "tokenURI", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "id", type: "uint256", }, ], name: "totalSupply", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "transfersRestricted", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "unpause", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "_nftId", type: "uint256", }, ], name: "uri", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_tokenContract", type: "address", }, { internalType: "uint256", name: "_tokenAmount", type: "uint256", }, { internalType: "uint256", name: "_numOfNftsToMint", type: "uint256", }, { internalType: "string", name: "_nftURI", type: "string", }, ], name: "wrapERC20", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "_nftContract", type: "address", }, { internalType: "uint256", name: "_tokenId", type: "uint256", }, { internalType: "string", name: "_nftURI", type: "string", }, ], name: "wrapERC721", outputs: [], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = "0x60806040523480156200001157600080fd5b50604051620060e8380380620060e883398101604081905262000034916200054d565b828280620000428162000175565b506005805460ff191690556200006360006200005d6200018e565b620001aa565b620000927f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66200005d6200018e565b620000c17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6200005d6200018e565b50600780546001600160a01b03199081166001600160a01b03938416179091556008805490911691861691909117905581516200010690600c90602085019062000478565b50620001116200018e565b600980546001600160a01b0319166001600160a01b0392909216919091179055620001607f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c6200005d6200018e565b6200016b81620001b6565b505050506200069a565b80516200018a90600490602084019062000478565b5050565b6000620001a5620002d360201b62002d191760201c565b905090565b6200018a82826200030c565b620001cc6000620001c66200018e565b6200034f565b6200021e5760405162461bcd60e51b815260206004820152601660248201527f6f6e6c79206d6f64756c652061646d696e20726f6c650000000000000000000060448201526064015b60405180910390fd5b612710811115620002985760405162461bcd60e51b815260206004820152603e60248201527f4e4654436f6c6c656374696f6e3a20496e76616c6964206270732070726f766960448201527f6465643b206d757374206265206c657373207468616e2031302c3030302e0000606482015260840162000215565b600b8190556040518181527f244ea8d7627f5a08f4299862bd5a45752842c183aee5b0fb0d1e4887bfa605b39060200160405180910390a150565b6007546000906001600160a01b0316331415620002f7575060131936013560601c90565b620001a56200037a60201b62002d441760201c565b6200032382826200037e60201b62002d481760201c565b60008281526001602090815260409091206200034a91839062002de762000408821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff165b92915050565b3390565b6200038a82826200034f565b6200018a576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620003c46200018e565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006200041f836001600160a01b03841662000426565b9392505050565b60008181526001830160205260408120546200046f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000374565b50600062000374565b82805462000486906200065d565b90600052602060002090601f016020900481019282620004aa5760008555620004f5565b82601f10620004c557805160ff1916838001178555620004f5565b82800160010185558215620004f5579182015b82811115620004f5578251825591602001919060010190620004d8565b506200050392915062000507565b5090565b5b8082111562000503576000815560010162000508565b6001600160a01b03811681146200053457600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156200056457600080fd5b845162000571816200051e565b8094505060208086015162000586816200051e565b60408701519094506001600160401b0380821115620005a457600080fd5b818801915088601f830112620005b957600080fd5b815181811115620005ce57620005ce62000537565b604051601f8201601f19908116603f01168101908382118183101715620005f957620005f962000537565b816040528281528b868487010111156200061257600080fd5b600093505b8284101562000636578484018601518185018701529285019262000617565b82841115620006485760008684830101525b60609a909a0151989b979a5050505050505050565b600181811c908216806200067257607f821691505b602082108114156200069457634e487b7160e01b600052602260045260246000fd5b50919050565b615a3e80620006aa6000396000f3fe608060405234801561001057600080fd5b50600436106103565760003560e01c80638456cb59116101c8578063c0e7274011610104578063e63ab1e9116100a2578063f23a6e611161007c578063f23a6e611461087f578063f242432a1461089e578063f5298aca146108b1578063fafdcc88146108c457600080fd5b8063e63ab1e914610814578063e8a3d4851461083b578063e985e9c51461084357600080fd5b8063ca15c873116100de578063ca15c873146107b4578063d5391393146107c7578063d547741f146107ee578063db884b0c1461080157600080fd5b8063c0e72740146107a3578063c63adb2b146107ab578063c87b56dd146103b957600080fd5b806393b778d411610171578063a22cb4651161014b578063a22cb46514610731578063ac9650d814610744578063bc197c8114610764578063bd85b0391461078357600080fd5b806393b778d4146106f45780639745cc3d14610707578063a217fddf1461072957600080fd5b80639010d07c116101a25780639010d07c1461069757806391d14854146106aa578063938e3d7b146106e157600080fd5b80638456cb59146106745780638ba448c21461067c5780638da5cb5b1461068f57600080fd5b806336568abe116102975780635c975abb11610240578063731133e91161021a578063731133e91461063857806375794a3c1461064b5780637a61080b146106545780638423df791461066757600080fd5b80635c975abb146105bc5780635cd9913d146105c75780636b20c4541461062557600080fd5b80634e1273f4116102715780634e1273f414610539578063510b515814610559578063572b6c051461059a57600080fd5b806336568abe146104eb578063367a182b146104fe5780633f4ba83a1461053157600080fd5b80631f72d83111610304578063248a9ca3116102de578063248a9ca3146104705780632a55205a146104935780632eb2c2d6146104c55780632f2ff15d146104d857600080fd5b80631f72d831146104235780631f7fdffa14610436578063206b60f91461044957600080fd5b80630e89341c116103355780630e89341c146103b957806313af4035146103d9578063150b7a02146103ec57600080fd5b8062fdd58e1461035b57806301ffc9a714610381578063090a3282146103a4575b600080fd5b61036e610369366004614a20565b6108d7565b6040519081526020015b60405180910390f35b61039461038f366004614a62565b610985565b6040519015158152602001610378565b6103b76103b2366004614ac8565b6109b0565b005b6103cc6103c7366004614b24565b610f3e565b6040516103789190614b95565b6103b76103e7366004614ba8565b610fe3565b61040a6103fa366004614c7c565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610378565b6103b7610431366004614b24565b61111d565b6103b7610444366004614d7d565b611223565b61036e7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c81565b61036e61047e366004614b24565b60009081526020819052604090206001015490565b6104a66104a1366004614e0c565b6113d4565b604080516001600160a01b039093168352602083019190915201610378565b6103b76104d3366004614e2e565b61147b565b6103b76104e6366004614edc565b61152f565b6103b76104f9366004614edc565b611561565b6104a661050c366004614b24565b600f60205260009081526040902080546001909101546001600160a01b039091169082565b6103b76115fd565b61054c610547366004614f0c565b6116a5565b6040516103789190615014565b610582610567366004614b24565b6000908152600e60205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610378565b6103946105a8366004614ba8565b6007546001600160a01b0391821691161490565b60055460ff16610394565b6106006105d5366004614b24565b6010602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b604080516001600160a01b039094168452602084019290925290820152606001610378565b6103b7610633366004615027565b6117e3565b6103b761064636600461509d565b61187a565b61036e600a5481565b6103b7610662366004614e0c565b61199d565b600d546103949060ff1681565b6103b7611bbc565b6103b761068a3660046150f6565b611c62565b610582611cf5565b6105826106a5366004614e0c565b611d4e565b6103946106b8366004614edc565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6103b76106ef366004615113565b611d6d565b6103b7610702366004614b24565b611dcb565b61071a610715366004614b24565b611f45565b6040516103789392919061516b565b61036e600081565b6103b761073f3660046151bb565b611ffd565b61075761075236600461522e565b61200f565b6040516103789190615264565b61040a610772366004614e2e565b63bc197c8160e01b95945050505050565b61036e610791366004614b24565b60009081526006602052604090205490565b6103cc612104565b61036e600b5481565b61036e6107c2366004614b24565b612192565b61036e7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6103b76107fc366004614edc565b6121a9565b6103b761080f3660046152c6565b6121d1565b61036e7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6103cc612749565b610394610851366004615330565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b61040a61088d36600461535e565b63f23a6e6160e01b95945050505050565b6103b76108ac36600461535e565b6127db565b6103b76108bf3660046153c7565b612874565b61054c6108d23660046153fc565b61290b565b60006001600160a01b03831661095a5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061099082612dfc565b8061097f57506001600160e01b0319821663152a902d60e11b1492915050565b60055460ff16156109f65760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610951565b610a227f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66106b8612e07565b610aa25760405162461bcd60e51b815260206004820152604560248201527f4e4654436f6c6c656374696f6e3a204f6e6c79206163636f756e74732077697460448201527f68204d494e5445525f524f4c452063616e2063616c6c20746869732066756e636064820152643a34b7b71760d91b608482015260a401610951565b610aaa612e07565b6040516331a9108f60e11b8152600481018590526001600160a01b0391821691861690636352211e9060240160206040518083038186803b158015610aee57600080fd5b505afa158015610b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2691906154a1565b6001600160a01b031614610ba25760405162461bcd60e51b815260206004820152603560248201527f4e4654436f6c6c656374696f6e3a204f6e6c7920746865206f776e6572206f6660448201527f20746865204e46542063616e20777261702069742e00000000000000000000006064820152608401610951565b60405163020604bf60e21b81526004810184905230906001600160a01b0386169063081812fc9060240160206040518083038186803b158015610be457600080fd5b505afa158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c91906154a1565b6001600160a01b03161480610cc05750836001600160a01b031663e985e9c5610c43612e07565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260440160206040518083038186803b158015610c8857600080fd5b505afa158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc091906154be565b610d325760405162461bcd60e51b815260206004820152603d60248201527f4e4654436f6c6c656374696f6e3a204d75737420617070726f7665207468652060448201527f636f6e747261637420746f207472616e7366657220746865204e46542e0000006064820152608401610951565b6000610d3c612e07565b600a80549192506001906000610d5283856154f1565b9091555050604051632142170760e11b81526001600160a01b038381166004830152306024830152604482018790528716906342842e0e90606401600060405180830381600087803b158015610da757600080fd5b505af1158015610dbb573d6000803e3d6000fd5b50505050610ddb8282600160405180602001604052806000815250612e11565b6040518060600160405280836001600160a01b0316815260200185858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050600260209384015250838152600e825260409020825181546001600160a01b0319166001600160a01b039091161781558282015180519192610e76926001850192909101906148fb565b5060408201518160020160006101000a81548160ff02191690836002811115610ea157610ea1615155565b0217905550506040805180820182526001600160a01b0389811680835260208084018b81526000888152600f90925290859020935184546001600160a01b031916908416178455516001909301929092559151909250908416907f797091bed1dcc535a592c3da1115fdb7467204ef9fb70943f0fc855ebe0a30f590610f2e90899086908a908a90615532565b60405180910390a3505050505050565b6000818152600e60205260409020600101805460609190610f5e90615552565b80601f0160208091040260200160405190810160405280929190818152602001828054610f8a90615552565b8015610fd75780601f10610fac57610100808354040283529160200191610fd7565b820191906000526020600020905b815481529060010190602001808311610fba57829003601f168201915b50505050509050919050565b610ff060006106b8612e07565b6110355760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610951565b6001600160a01b03811660009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff166110bc5760405162461bcd60e51b815260206004820152601b60248201527f6e6577206f776e6572206e6f74206d6f64756c652061646d696e2e00000000006044820152606401610951565b600980546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f70aea8d848e8a90fb7661b227dc522eb6395c3dac71b63cb59edd5c9899b2364910160405180910390a15050565b61112a60006106b8612e07565b61116f5760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610951565b6127108111156111e75760405162461bcd60e51b815260206004820152603e60248201527f4e4654436f6c6c656374696f6e3a20496e76616c6964206270732070726f766960448201527f6465643b206d757374206265206c657373207468616e2031302c3030302e00006064820152608401610951565b600b8190556040518181527f244ea8d7627f5a08f4299862bd5a45752842c183aee5b0fb0d1e4887bfa605b3906020015b60405180910390a150565b60018060005b85518110156112d957600a548682815181106112475761124761558d565b60200260200101511015801561125a5750825b1561126457600092505b6000600e600088848151811061127c5761127c61558d565b6020026020010151815260200190815260200160002060020160009054906101000a900460ff1660028111156112b4576112b4615155565b141580156112bf5750815b156112c957600091505b6112d2816155a3565b9050611229565b508161134d5760405162461bcd60e51b815260206004820152603960248201527f4e4654436f6c6c656374696f6e3a2063616e6e6f742063616c6c20746869732060448201527f666e20666f72206372656174696e67206e6577204e4654732e000000000000006064820152608401610951565b806113c05760405162461bcd60e51b815260206004820152603a60248201527f4e4654436f6c6c656374696f6e3a2063616e6e6f7420667265656c79206d696e60448201527f74206d6f7265206f66204552433230206f72204552433732312e0000000000006064820152608401610951565b6113cc86868686612f2e565b505050505050565b60085460405163f2aab4b360e01b815230600482015260009182916001600160a01b039091169063f2aab4b39060240160206040518083038186803b15801561141c57600080fd5b505afa158015611430573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145491906154a1565b600b549092506127109061146890856155be565b61147291906155dd565b90509250929050565b611483612e07565b6001600160a01b0316856001600160a01b031614806114a957506114a985610851612e07565b61151b5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610951565b6115288585858585612fd8565b5050505050565b6000828152602081905260409020600101546115528161154d612e07565b61324a565b61155c83836132c8565b505050565b611569612e07565b6001600160a01b0316816001600160a01b0316146115ef5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610951565b6115f982826132ea565b5050565b6116297f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106b8612e07565b61169b5760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610951565b6116a361330c565b565b6060815183511461171e5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610951565b6000835167ffffffffffffffff81111561173a5761173a614bc5565b604051908082528060200260200182016040528015611763578160200160208202803683370190505b50905060005b84518110156117db576117ae8582815181106117875761178761558d565b60200260200101518583815181106117a1576117a161558d565b60200260200101516108d7565b8282815181106117c0576117c061558d565b60209081029190910101526117d4816155a3565b9050611769565b509392505050565b6117eb612e07565b6001600160a01b0316836001600160a01b03161480611811575061181183610851612e07565b61186f5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610951565b61155c8383836133ae565b600a5483106118f15760405162461bcd60e51b815260206004820152603960248201527f4e4654436f6c6c656374696f6e3a2063616e6e6f742063616c6c20746869732060448201527f666e20666f72206372656174696e67206e6577204e4654732e000000000000006064820152608401610951565b6000838152600e6020526040812060029081015460ff169081111561191857611918615155565b1461198b5760405162461bcd60e51b815260206004820152603a60248201527f4e4654436f6c6c656374696f6e3a2063616e6e6f7420667265656c79206d696e60448201527f74206d6f7265206f66204552433230206f72204552433732312e0000000000006064820152608401610951565b611997848484846135f1565b50505050565b60006119a7612e07565b9050816119b482856108d7565b1015611a285760405162461bcd60e51b815260206004820152603360248201527f4e4654436f6c6c656374696f6e3a2043616e6e6f742072656465656d20616e2060448201527f4e465420796f7520646f206e6f74206f776e2e000000000000000000000000006064820152608401610951565b611a3381848461369b565b60008381526010602052604081206001810154600290910154611a579085906155be565b611a6191906155dd565b6000858152601060205260409081902054905163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905292935091169063a9059cbb90604401602060405180830381600087803b158015611abe57600080fd5b505af1158015611ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af691906154be565b611b5a5760405162461bcd60e51b815260206004820152602f60248201527f4e4654436f6c6c656374696f6e3a204661696c656420746f207472616e73666560448201526e391022a9219918103a37b5b2b7399760891b6064820152608401610951565b6000848152601060209081526040918290205482518481529182018690526001600160a01b03908116928792918616917fb80333a30b48beb3745280a5e4bb1b8e53f79569e454ec99ba13678dfbe728eb91015b60405180910390a450505050565b611be87f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6106b8612e07565b611c5a5760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610951565b6116a3613823565b611c6f60006106b8612e07565b611cb45760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610951565b600d805460ff19168215159081179091556040519081527ffb4ba02cee22486df888d7ffb97c6100ec3193781e025cb9a4bc6fc358d626cc90602001611218565b6009546001600160a01b031660009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff16611d3c5750600090565b6009546001600160a01b03165b905090565b6000828152600160205260408120611d66908361389f565b9392505050565b611d7a60006106b8612e07565b611dbf5760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610951565b61155c600c838361497f565b6000611dd5612e07565b90506000611de382846108d7565b11611e565760405162461bcd60e51b815260206004820152603360248201527f4e4654436f6c6c656374696f6e3a2043616e6e6f742072656465656d20616e2060448201527f4e465420796f7520646f206e6f74206f776e2e000000000000000000000000006064820152608401610951565b611e628183600161369b565b6000828152600f60205260409081902080546001909101549151632142170760e11b81523060048201526001600160a01b03848116602483015260448201939093529116906342842e0e90606401600060405180830381600087803b158015611eca57600080fd5b505af1158015611ede573d6000803e3d6000fd5b5050506000838152600f6020908152604091829020805460019091015483519081529182018690526001600160a01b0390811693508416917fea7b88a04220a2292e142652e8e1a59cc00e7d27d8ad6b11da6cf5870e6ba866910160405180910390a35050565b600e60205260009081526040902080546001820180546001600160a01b039092169291611f7190615552565b80601f0160208091040260200160405190810160405280929190818152602001828054611f9d90615552565b8015611fea5780601f10611fbf57610100808354040283529160200191611fea565b820191906000526020600020905b815481529060010190602001808311611fcd57829003601f168201915b5050506002909301549192505060ff1683565b6115f9612008612e07565b83836138ab565b60608167ffffffffffffffff81111561202a5761202a614bc5565b60405190808252806020026020018201604052801561205d57816020015b60608152602001906001900390816120485790505b50905060005b828110156120fd576120cd308585848181106120815761208161558d565b905060200281019061209391906155ff565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506139a092505050565b8282815181106120df576120df61558d565b602002602001018190525080806120f5906155a3565b915050612063565b5092915050565b600c805461211190615552565b80601f016020809104026020016040519081016040528092919081815260200182805461213d90615552565b801561218a5780601f1061215f5761010080835404028352916020019161218a565b820191906000526020600020905b81548152906001019060200180831161216d57829003601f168201915b505050505081565b600081815260016020526040812061097f906139c5565b6000828152602081905260409020600101546121c78161154d612e07565b61155c83836132ea565b60055460ff16156122175760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610951565b6122437f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66106b8612e07565b6122c35760405162461bcd60e51b815260206004820152604560248201527f4e4654436f6c6c656374696f6e3a204f6e6c79206163636f756e74732077697460448201527f68204d494e5445525f524f4c452063616e2063616c6c20746869732066756e636064820152643a34b7b71760d91b608482015260a401610951565b60006122cd612e07565b6040516370a0823160e01b81526001600160a01b03808316600483015291925086918816906370a082319060240160206040518083038186803b15801561231357600080fd5b505afa158015612327573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234b9190615646565b10156123bf5760405162461bcd60e51b815260206004820152603b60248201527f4e4654436f6c6c656374696f6e3a204d757374206f776e2074686520616d6f7560448201527f6e74206f6620746f6b656e73206265696e6720777261707065642e00000000006064820152608401610951565b604051636eb1769f60e11b81526001600160a01b03828116600483015230602483015286919088169063dd62ed3e9060440160206040518083038186803b15801561240957600080fd5b505afa15801561241d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124419190615646565b10156124b55760405162461bcd60e51b815260206004820152603d60248201527f4e4654436f6c6c656374696f6e3a204d75737420617070726f7665207468697360448201527f20636f6e747261637420746f207472616e7366657220746f6b656e732e0000006064820152608401610951565b6040516323b872dd60e01b81526001600160a01b038281166004830152306024830152604482018790528716906323b872dd90606401602060405180830381600087803b15801561250557600080fd5b505af1158015612519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061253d91906154be565b6125a15760405162461bcd60e51b815260206004820152602f60248201527f4e4654436f6c6c656374696f6e3a204661696c656420746f207472616e73666560448201526e391022a9219918103a37b5b2b7399760891b6064820152608401610951565b600a80549060019060006125b583856154f1565b925050819055506125d782828760405180602001604052806000815250612e11565b6040518060600160405280836001600160a01b0316815260200185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250938552505060016020938401819052858352600e84526040909220845181546001600160a01b0319166001600160a01b039091161781558484015180519194612671948601935001906148fb565b5060408201518160020160006101000a81548160ff0219169083600281111561269c5761269c615155565b021790555050604080516060810182526001600160a01b038a811680835260208084018b81528486018d81526000898152601090935291869020945185546001600160a01b031916908516178555516001850155516002909301929092559151909250908416907f53af9a53d4a11cb382035aa13d6d8e24575569953176d87464ba37e7013a6aa490612738908a908a9087908b908b9061565f565b60405180910390a350505050505050565b6060600c805461275890615552565b80601f016020809104026020016040519081016040528092919081815260200182805461278490615552565b80156127d15780601f106127a6576101008083540402835291602001916127d1565b820191906000526020600020905b8154815290600101906020018083116127b457829003601f168201915b5050505050905090565b6127e3612e07565b6001600160a01b0316856001600160a01b03161480612809575061280985610851612e07565b6128675760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610951565b61152885858585856139cf565b61287c612e07565b6001600160a01b0316836001600160a01b031614806128a257506128a283610851612e07565b6129005760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b6064820152608401610951565b61155c83838361369b565b606061291960055460ff1690565b156129595760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610951565b6129857f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66106b8612e07565b612a055760405162461bcd60e51b815260206004820152604560248201527f4e4654436f6c6c656374696f6e3a204f6e6c79206163636f756e74732077697460448201527f68204d494e5445525f524f4c452063616e2063616c6c20746869732066756e636064820152643a34b7b71760d91b608482015260a401610951565b848314612a7a5760405162461bcd60e51b815260206004820152603a60248201527f4e4654436f6c6c656374696f6e3a204d7573742073706563696679206571756160448201527f6c206e756d626572206f6620636f6e6669672076616c7565732e0000000000006064820152608401610951565b84612aed5760405162461bcd60e51b815260206004820152602c60248201527f4e4654436f6c6c656374696f6e3a204d75737420637265617465206174206c6560448201527f617374206f6e65204e46542e00000000000000000000000000000000000000006064820152608401610951565b6000612af7612e07565b90508567ffffffffffffffff811115612b1257612b12614bc5565b604051908082528060200260200182016040528015612b3b578160200160208202803683370190505b50600a5490925060005b87811015612c7c5781848281518110612b6057612b6061558d565b6020026020010181815250506040518060600160405280846001600160a01b031681526020018a8a84818110612b9857612b9861558d565b9050602002810190612baa91906155ff565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050506020918201819052848152600e825260409020825181546001600160a01b0319166001600160a01b039091161781558282015180519192612c29926001850192909101906148fb565b5060408201518160020160006101000a81548160ff02191690836002811115612c5457612c54615155565b0217905550612c68915060019050836154f1565b915080612c74816155a3565b915050612b45565b5080600a81905550612cc489848888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a9250613b7c915050565b816001600160a01b03167fbea5a4b7cf9a3f7d8bf7c987614db5dcfdcd917a2cd5788a210c0ebdccfc5da4848a8a8a8a604051612d059594939291906156df565b60405180910390a250509695505050505050565b6007546000906001600160a01b0316331415612d3c575060131936013560601c90565b503390565b90565b3390565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166115f9576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055612da3612e07565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611d66836001600160a01b038416613d5d565b600061097f82613dac565b6000611d49612d19565b6001600160a01b038416612e715760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610951565b6000612e7b612e07565b9050612e9c81600087612e8d88613dd1565b612e9688613dd1565b87613e1c565b60008481526002602090815260408083206001600160a01b038916845290915281208054859290612ece9084906154f1565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461152881600087878787613f72565b612f5a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66106b8612e07565b612fcc5760405162461bcd60e51b815260206004820152603860248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f68617665206d696e74657220726f6c6520746f206d696e7400000000000000006064820152608401610951565b61199784848484613b7c565b815183511461303a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610951565b6001600160a01b03841661309e5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610951565b60006130a8612e07565b90506130b8818787878787613e1c565b60005b84518110156131e45760008582815181106130d8576130d861558d565b6020026020010151905060008583815181106130f6576130f661558d565b60209081029190910181015160008481526002835260408082206001600160a01b038e16835290935291909120549091508181101561318a5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610951565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906131c99084906154f1565b92505081905550505050806131dd906155a3565b90506130bb565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516132349291906157a3565b60405180910390a46113cc818787878787614127565b6000828152602081815260408083206001600160a01b038516845290915290205460ff166115f957613286816001600160a01b03166014614232565b613291836020614232565b6040516020016132a29291906157d1565b60408051601f198184030181529082905262461bcd60e51b825261095191600401614b95565b6132d28282612d48565b600082815260016020526040902061155c9082612de7565b6132f482826143db565b600082815260016020526040902061155c9082614478565b60055460ff1661335e5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610951565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613391612e07565b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0383166134105760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610951565b80518251146134725760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610951565b600061347c612e07565b905061349c81856000868660405180602001604052806000815250613e1c565b60005b83518110156135a05760008482815181106134bc576134bc61558d565b6020026020010151905060008483815181106134da576134da61558d565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156135675760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610951565b60009283526002602090815260408085206001600160a01b038b1686529091529092209103905580613598816155a3565b91505061349f565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611bae9291906157a3565b61361d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66106b8612e07565b61368f5760405162461bcd60e51b815260206004820152603860248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f68617665206d696e74657220726f6c6520746f206d696e7400000000000000006064820152608401610951565b61199784848484612e11565b6001600160a01b0383166136fd5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610951565b6000613707612e07565b90506137378185600061371987613dd1565b61372287613dd1565b60405180602001604052806000815250613e1c565b60008381526002602090815260408083206001600160a01b0388168452909152902054828110156137b65760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610951565b60008481526002602090815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b60055460ff16156138695760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610951565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613391612e07565b6000611d66838361448d565b816001600160a01b0316836001600160a01b031614156139335760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610951565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060611d668383604051806060016040528060278152602001615a0b602791396144b7565b600061097f825490565b6001600160a01b038416613a335760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610951565b6000613a3d612e07565b9050613a4e818787612e8d88613dd1565b60008481526002602090815260408083206001600160a01b038a16845290915290205483811015613ad45760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610951565b60008581526002602090815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290613b139084906154f1565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4613b73828888888888613f72565b50505050505050565b6001600160a01b038416613bdc5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610951565b8151835114613c3e5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610951565b6000613c48612e07565b9050613c5981600087878787613e1c565b60005b8451811015613cf557838181518110613c7757613c7761558d565b602002602001015160026000878481518110613c9557613c9561558d565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254613cdd91906154f1565b90915550819050613ced816155a3565b915050613c5c565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051613d469291906157a3565b60405180910390a461152881600087878787614127565b6000818152600183016020526040812054613da45750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561097f565b50600061097f565b60006001600160e01b03198216630271189760e51b148061097f575061097f826145a2565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613e0b57613e0b61558d565b602090810291909101015292915050565b613e2a8686868686866145e2565b600d5460ff168015613e4457506001600160a01b03851615155b8015613e5857506001600160a01b03841615155b156113cc576001600160a01b03851660009081527f7c7a990f752005aea38438cc35abc5417bd322e6c964ec21d52573494225142c602052604090205460ff1680613eda57506001600160a01b03841660009081527f7c7a990f752005aea38438cc35abc5417bd322e6c964ec21d52573494225142c602052604090205460ff165b6113cc5760405162461bcd60e51b815260206004820152604860248201527f4e4654436f6c6c656374696f6e3a205472616e7366657273206172652072657360448201527f7472696374656420746f206f722066726f6d205452414e534645525f524f4c4560648201527f20686f6c64657273000000000000000000000000000000000000000000000000608482015260a401610951565b6001600160a01b0384163b156113cc5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190613fb69089908990889088908890600401615852565b602060405180830381600087803b158015613fd057600080fd5b505af1925050508015614000575060408051601f3d908101601f19168201909252613ffd9181019061588a565b60015b6140b65761400c6158a7565b806308c379a0141561404657506140216158c2565b8061402c5750614048565b8060405162461bcd60e51b81526004016109519190614b95565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610951565b6001600160e01b0319811663f23a6e6160e01b14613b735760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610951565b6001600160a01b0384163b156113cc5760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061416b908990899088908890889060040161594c565b602060405180830381600087803b15801561418557600080fd5b505af19250505080156141b5575060408051601f3d908101601f191682019092526141b29181019061588a565b60015b6141c15761400c6158a7565b6001600160e01b0319811663bc197c8160e01b14613b735760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610951565b606060006142418360026155be565b61424c9060026154f1565b67ffffffffffffffff81111561426457614264614bc5565b6040519080825280601f01601f19166020018201604052801561428e576020820181803683370190505b509050600360fc1b816000815181106142a9576142a961558d565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106142d8576142d861558d565b60200101906001600160f81b031916908160001a90535060006142fc8460026155be565b6143079060016154f1565b90505b600181111561438c577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106143485761434861558d565b1a60f81b82828151811061435e5761435e61558d565b60200101906001600160f81b031916908160001a90535060049490941c93614385816159aa565b905061430a565b508315611d665760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610951565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16156115f9576000828152602081815260408083206001600160a01b03851684529091529020805460ff19169055614434612e07565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000611d66836001600160a01b0384166146fc565b60008260000182815481106144a4576144a461558d565b9060005260206000200154905092915050565b6060833b61452d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610951565b600080856001600160a01b03168560405161454891906159c1565b600060405180830381855af49150503d8060008114614583576040519150601f19603f3d011682016040523d82523d6000602084013e614588565b606091505b50915091506145988282866147ef565b9695505050505050565b60006001600160e01b03198216636cdb3d1360e11b14806145d357506001600160e01b031982166303a24d0760e21b145b8061097f575061097f82614828565b6145f086868686868661484d565b6001600160a01b0385166146775760005b83518110156146755782818151811061461c5761461c61558d565b60200260200101516006600086848151811061463a5761463a61558d565b60200260200101518152602001908152602001600020600082825461465f91906154f1565b9091555061466e9050816155a3565b9050614601565b505b6001600160a01b0384166113cc5760005b8351811015613b73578281815181106146a3576146a361558d565b6020026020010151600660008684815181106146c1576146c161558d565b6020026020010151815260200190815260200160002060008282546146e691906159dd565b909155506146f59050816155a3565b9050614688565b600081815260018301602052604081205480156147e55760006147206001836159dd565b8554909150600090614734906001906159dd565b90508181146147995760008660000182815481106147545761475461558d565b90600052602060002001549050808760000184815481106147775761477761558d565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806147aa576147aa6159f4565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061097f565b600091505061097f565b606083156147fe575081611d66565b82511561480e5782518084602001fd5b8160405162461bcd60e51b81526004016109519190614b95565b60006001600160e01b03198216635a05180f60e01b148061097f575061097f826148c6565b60055460ff16156113cc5760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201527f7768696c652070617573656400000000000000000000000000000000000000006064820152608401610951565b60006001600160e01b03198216637965db0b60e01b148061097f57506301ffc9a760e01b6001600160e01b031983161461097f565b82805461490790615552565b90600052602060002090601f016020900481019282614929576000855561496f565b82601f1061494257805160ff191683800117855561496f565b8280016001018555821561496f579182015b8281111561496f578251825591602001919060010190614954565b5061497b9291506149f3565b5090565b82805461498b90615552565b90600052602060002090601f0160209004810192826149ad576000855561496f565b82601f106149c65782800160ff1982351617855561496f565b8280016001018555821561496f579182015b8281111561496f5782358255916020019190600101906149d8565b5b8082111561497b57600081556001016149f4565b6001600160a01b0381168114614a1d57600080fd5b50565b60008060408385031215614a3357600080fd5b8235614a3e81614a08565b946020939093013593505050565b6001600160e01b031981168114614a1d57600080fd5b600060208284031215614a7457600080fd5b8135611d6681614a4c565b60008083601f840112614a9157600080fd5b50813567ffffffffffffffff811115614aa957600080fd5b602083019150836020828501011115614ac157600080fd5b9250929050565b60008060008060608587031215614ade57600080fd5b8435614ae981614a08565b935060208501359250604085013567ffffffffffffffff811115614b0c57600080fd5b614b1887828801614a7f565b95989497509550505050565b600060208284031215614b3657600080fd5b5035919050565b60005b83811015614b58578181015183820152602001614b40565b838111156119975750506000910152565b60008151808452614b81816020860160208601614b3d565b601f01601f19169290920160200192915050565b602081526000611d666020830184614b69565b600060208284031215614bba57600080fd5b8135611d6681614a08565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715614c0157614c01614bc5565b6040525050565b600082601f830112614c1957600080fd5b813567ffffffffffffffff811115614c3357614c33614bc5565b604051614c4a601f8301601f191660200182614bdb565b818152846020838601011115614c5f57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215614c9257600080fd5b8435614c9d81614a08565b93506020850135614cad81614a08565b925060408501359150606085013567ffffffffffffffff811115614cd057600080fd5b614cdc87828801614c08565b91505092959194509250565b600067ffffffffffffffff821115614d0257614d02614bc5565b5060051b60200190565b600082601f830112614d1d57600080fd5b81356020614d2a82614ce8565b604051614d378282614bdb565b83815260059390931b8501820192828101915086841115614d5757600080fd5b8286015b84811015614d725780358352918301918301614d5b565b509695505050505050565b60008060008060808587031215614d9357600080fd5b8435614d9e81614a08565b9350602085013567ffffffffffffffff80821115614dbb57600080fd5b614dc788838901614d0c565b94506040870135915080821115614ddd57600080fd5b614de988838901614d0c565b93506060870135915080821115614dff57600080fd5b50614cdc87828801614c08565b60008060408385031215614e1f57600080fd5b50508035926020909101359150565b600080600080600060a08688031215614e4657600080fd5b8535614e5181614a08565b94506020860135614e6181614a08565b9350604086013567ffffffffffffffff80821115614e7e57600080fd5b614e8a89838a01614d0c565b94506060880135915080821115614ea057600080fd5b614eac89838a01614d0c565b93506080880135915080821115614ec257600080fd5b50614ecf88828901614c08565b9150509295509295909350565b60008060408385031215614eef57600080fd5b823591506020830135614f0181614a08565b809150509250929050565b60008060408385031215614f1f57600080fd5b823567ffffffffffffffff80821115614f3757600080fd5b818501915085601f830112614f4b57600080fd5b81356020614f5882614ce8565b604051614f658282614bdb565b83815260059390931b8501820192828101915089841115614f8557600080fd5b948201945b83861015614fac578535614f9d81614a08565b82529482019490820190614f8a565b96505086013592505080821115614fc257600080fd5b50614fcf85828601614d0c565b9150509250929050565b600081518084526020808501945080840160005b8381101561500957815187529582019590820190600101614fed565b509495945050505050565b602081526000611d666020830184614fd9565b60008060006060848603121561503c57600080fd5b833561504781614a08565b9250602084013567ffffffffffffffff8082111561506457600080fd5b61507087838801614d0c565b9350604086013591508082111561508657600080fd5b5061509386828701614d0c565b9150509250925092565b600080600080608085870312156150b357600080fd5b84356150be81614a08565b93506020850135925060408501359150606085013567ffffffffffffffff811115614cd057600080fd5b8015158114614a1d57600080fd5b60006020828403121561510857600080fd5b8135611d66816150e8565b6000806020838503121561512657600080fd5b823567ffffffffffffffff81111561513d57600080fd5b61514985828601614a7f565b90969095509350505050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b038416815260606020820152600061518d6060830185614b69565b9050600383106151ad57634e487b7160e01b600052602160045260246000fd5b826040830152949350505050565b600080604083850312156151ce57600080fd5b82356151d981614a08565b91506020830135614f01816150e8565b60008083601f8401126151fb57600080fd5b50813567ffffffffffffffff81111561521357600080fd5b6020830191508360208260051b8501011115614ac157600080fd5b6000806020838503121561524157600080fd5b823567ffffffffffffffff81111561525857600080fd5b615149858286016151e9565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156152b957603f198886030184526152a7858351614b69565b9450928501929085019060010161528b565b5092979650505050505050565b6000806000806000608086880312156152de57600080fd5b85356152e981614a08565b94506020860135935060408601359250606086013567ffffffffffffffff81111561531357600080fd5b61531f88828901614a7f565b969995985093965092949392505050565b6000806040838503121561534357600080fd5b823561534e81614a08565b91506020830135614f0181614a08565b600080600080600060a0868803121561537657600080fd5b853561538181614a08565b9450602086013561539181614a08565b93506040860135925060608601359150608086013567ffffffffffffffff8111156153bb57600080fd5b614ecf88828901614c08565b6000806000606084860312156153dc57600080fd5b83356153e781614a08565b95602085013595506040909401359392505050565b6000806000806000806080878903121561541557600080fd5b863561542081614a08565b9550602087013567ffffffffffffffff8082111561543d57600080fd5b6154498a838b016151e9565b9097509550604089013591508082111561546257600080fd5b61546e8a838b016151e9565b9095509350606089013591508082111561548757600080fd5b5061549489828a01614c08565b9150509295509295509295565b6000602082840312156154b357600080fd5b8151611d6681614a08565b6000602082840312156154d057600080fd5b8151611d66816150e8565b634e487b7160e01b600052601160045260246000fd5b60008219821115615504576155046154db565b500190565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b848152836020820152606060408201526000614598606083018486615509565b600181811c9082168061556657607f821691505b6020821081141561558757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b60006000198214156155b7576155b76154db565b5060010190565b60008160001904831182151516156155d8576155d86154db565b500290565b6000826155fa57634e487b7160e01b600052601260045260246000fd5b500490565b6000808335601e1984360301811261561657600080fd5b83018035915067ffffffffffffffff82111561563157600080fd5b602001915036819003821315614ac157600080fd5b60006020828403121561565857600080fd5b5051919050565b858152846020820152836040820152608060608201526000615685608083018486615509565b979650505050505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156156c257600080fd5b8260051b8083602087013760009401602001938452509192915050565b6060815260006156f26060830188614fd9565b602083820381850152818783528183019050818860051b8401018960005b8a81101561577f57858303601f190184528135368d9003601e1901811261573657600080fd5b8c01803567ffffffffffffffff81111561574f57600080fd5b8036038e131561575e57600080fd5b61576b8582898501615509565b958701959450505090840190600101615710565b5050858103604087015261579481888a615690565b9b9a5050505050505050505050565b6040815260006157b66040830185614fd9565b82810360208401526157c88185614fd9565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615809816017850160208801614b3d565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351615846816028840160208801614b3d565b01602801949350505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261568560a0830184614b69565b60006020828403121561589c57600080fd5b8151611d6681614a4c565b600060033d1115612d415760046000803e5060005160e01c90565b600060443d10156158d05790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561590057505050505090565b82850191508151818111156159185750505050505090565b843d87010160208285010111156159325750505050505090565b61594160208286010187614bdb565b509095945050505050565b60006001600160a01b03808816835280871660208401525060a0604083015261597860a0830186614fd9565b828103606084015261598a8186614fd9565b9050828103608084015261599e8185614b69565b98975050505050505050565b6000816159b9576159b96154db565b506000190190565b600082516159d3818460208701614b3d565b9190910192915050565b6000828210156159ef576159ef6154db565b500390565b634e487b7160e01b600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000809000a"; type NFTCollectionConstructorParams = | [signer?: Signer] | ConstructorParameters; const isSuperArgs = ( xs: NFTCollectionConstructorParams ): xs is ConstructorParameters => xs.length > 1; export class NFTCollection__factory extends ContractFactory { constructor(...args: NFTCollectionConstructorParams) { if (isSuperArgs(args)) { super(...args); } else { super(_abi, _bytecode, args[0]); } } deploy( _controlCenter: string, _trustedForwarder: string, _uri: string, _royaltyBps: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise { return super.deploy( _controlCenter, _trustedForwarder, _uri, _royaltyBps, overrides || {} ) as Promise; } getDeployTransaction( _controlCenter: string, _trustedForwarder: string, _uri: string, _royaltyBps: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { return super.getDeployTransaction( _controlCenter, _trustedForwarder, _uri, _royaltyBps, overrides || {} ); } attach(address: string): NFTCollection { return super.attach(address) as NFTCollection; } connect(signer: Signer): NFTCollection__factory { return super.connect(signer) as NFTCollection__factory; } static readonly bytecode = _bytecode; static readonly abi = _abi; static createInterface(): NFTCollectionInterface { return new utils.Interface(_abi) as NFTCollectionInterface; } static connect( address: string, signerOrProvider: Signer | Provider ): NFTCollection { return new Contract(address, _abi, signerOrProvider) as NFTCollection; } }