/* 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 { LazyMintERC20, LazyMintERC20Interface } from "../LazyMintERC20"; const _abi = [ { inputs: [ { internalType: "string", name: "_name", type: "string", }, { internalType: "string", name: "_symbol", type: "string", }, { internalType: "string", name: "_contractURI", type: "string", }, { internalType: "address payable", name: "_controlCenter", type: "address", }, { internalType: "address", name: "_trustedForwarder", type: "address", }, { internalType: "address", name: "_nativeTokenWrapper", type: "address", }, { internalType: "address", name: "_saleRecipient", type: "address", }, { internalType: "uint128", name: "_royaltyBps", type: "uint128", }, { internalType: "uint128", name: "_feeBps", type: "uint128", }, ], stateMutability: "nonpayable", type: "constructor", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "owner", type: "address", }, { indexed: true, internalType: "address", name: "spender", type: "address", }, { indexed: false, internalType: "uint256", name: "value", type: "uint256", }, ], name: "Approval", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "uint256", name: "claimConditionIndex", type: "uint256", }, { indexed: true, internalType: "address", name: "claimer", type: "address", }, { indexed: true, internalType: "address", name: "receiver", type: "address", }, { indexed: false, internalType: "uint256", name: "quantityClaimed", type: "uint256", }, ], name: "ClaimedTokens", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "delegator", type: "address", }, { indexed: true, internalType: "address", name: "fromDelegate", type: "address", }, { indexed: true, internalType: "address", name: "toDelegate", type: "address", }, ], name: "DelegateChanged", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "delegate", type: "address", }, { indexed: false, internalType: "uint256", name: "previousBalance", type: "uint256", }, { indexed: false, internalType: "uint256", name: "newBalance", type: "uint256", }, ], name: "DelegateVotesChanged", type: "event", }, { anonymous: false, inputs: [ { components: [ { internalType: "uint256", name: "startTimestamp", type: "uint256", }, { internalType: "uint256", name: "maxClaimableSupply", type: "uint256", }, { internalType: "uint256", name: "supplyClaimed", type: "uint256", }, { internalType: "uint256", name: "waitTimeInSecondsBetweenClaims", type: "uint256", }, { internalType: "bytes32", name: "merkleRoot", type: "bytes32", }, { internalType: "uint256", name: "pricePerToken", type: "uint256", }, { internalType: "address", name: "currency", type: "address", }, ], indexed: false, internalType: "struct ILazyMintERC20.ClaimCondition[]", name: "claimConditions", type: "tuple[]", }, ], name: "NewClaimConditions", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "recipient", type: "address", }, ], name: "NewSaleRecipient", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "account", type: "address", }, ], name: "Paused", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "uint256", name: "newFeeBps", type: "uint256", }, ], name: "PrimarySalesFeeUpdates", 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: "newRoyaltyBps", type: "uint256", }, ], name: "RoyaltyUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "from", type: "address", }, { indexed: true, internalType: "address", name: "to", type: "address", }, { indexed: false, internalType: "uint256", name: "value", type: "uint256", }, ], name: "Transfer", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "bool", name: "restricted", type: "bool", }, ], name: "TransfersRestricted", 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: "DOMAIN_SEPARATOR", 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: "VERSION", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "owner", type: "address", }, { internalType: "address", name: "spender", type: "address", }, ], name: "allowance", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "spender", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "approve", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, ], name: "balanceOf", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "burn", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "burnFrom", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, { internalType: "uint32", name: "pos", type: "uint32", }, ], name: "checkpoints", outputs: [ { components: [ { internalType: "uint32", name: "fromBlock", type: "uint32", }, { internalType: "uint224", name: "votes", type: "uint224", }, ], internalType: "struct ERC20Votes.Checkpoint", name: "", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_receiver", type: "address", }, { internalType: "uint256", name: "_quantity", type: "uint256", }, { internalType: "bytes32[]", name: "_proofs", type: "bytes32[]", }, ], name: "claim", outputs: [], stateMutability: "payable", type: "function", }, { inputs: [], name: "claimConditions", outputs: [ { internalType: "uint256", name: "totalConditionCount", type: "uint256", }, { internalType: "uint256", name: "timstampLimitIndex", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "contractURI", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "decimals", outputs: [ { internalType: "uint8", name: "", type: "uint8", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "spender", type: "address", }, { internalType: "uint256", name: "subtractedValue", type: "uint256", }, ], name: "decreaseAllowance", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "defaultSaleRecipient", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "delegatee", type: "address", }, ], name: "delegate", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "delegatee", type: "address", }, { internalType: "uint256", name: "nonce", type: "uint256", }, { internalType: "uint256", name: "expiry", type: "uint256", }, { internalType: "uint8", name: "v", type: "uint8", }, { internalType: "bytes32", name: "r", type: "bytes32", }, { internalType: "bytes32", name: "s", type: "bytes32", }, ], name: "delegateBySig", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, ], name: "delegates", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "feeBps", outputs: [ { internalType: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "_index", type: "uint256", }, ], name: "getClaimConditionAtIndex", outputs: [ { components: [ { internalType: "uint256", name: "startTimestamp", type: "uint256", }, { internalType: "uint256", name: "maxClaimableSupply", type: "uint256", }, { internalType: "uint256", name: "supplyClaimed", type: "uint256", }, { internalType: "uint256", name: "waitTimeInSecondsBetweenClaims", type: "uint256", }, { internalType: "bytes32", name: "merkleRoot", type: "bytes32", }, { internalType: "uint256", name: "pricePerToken", type: "uint256", }, { internalType: "address", name: "currency", type: "address", }, ], internalType: "struct ILazyMintERC20.ClaimCondition", name: "mintCondition", type: "tuple", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getIndexOfActiveCondition", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "blockNumber", type: "uint256", }, ], name: "getPastTotalSupply", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, { internalType: "uint256", name: "blockNumber", type: "uint256", }, ], name: "getPastVotes", outputs: [ { internalType: "uint256", name: "", 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: "uint256", name: "_index", type: "uint256", }, { internalType: "address", name: "_claimer", type: "address", }, ], name: "getTimestampForNextValidClaim", outputs: [ { internalType: "uint256", name: "nextValidTimestampForClaim", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, ], name: "getVotes", 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: "spender", type: "address", }, { internalType: "uint256", name: "addedValue", type: "uint256", }, ], name: "increaseAllowance", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "nonpayable", 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: "amount", type: "uint256", }, ], name: "mint", 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: "name", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "nativeTokenWrapper", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "owner", type: "address", }, ], name: "nonces", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "account", type: "address", }, ], name: "numCheckpoints", outputs: [ { internalType: "uint32", name: "", type: "uint32", }, ], 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: "address", name: "owner", type: "address", }, { internalType: "address", name: "spender", type: "address", }, { internalType: "uint256", name: "value", type: "uint256", }, { internalType: "uint256", name: "deadline", type: "uint256", }, { internalType: "uint8", name: "v", type: "uint8", }, { internalType: "bytes32", name: "r", type: "bytes32", }, { internalType: "bytes32", name: "s", type: "bytes32", }, ], name: "permit", 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: "uint64", name: "", type: "uint64", }, ], stateMutability: "view", type: "function", }, { inputs: [ { components: [ { internalType: "uint256", name: "startTimestamp", type: "uint256", }, { internalType: "uint256", name: "maxClaimableSupply", type: "uint256", }, { internalType: "uint256", name: "supplyClaimed", type: "uint256", }, { internalType: "uint256", name: "waitTimeInSecondsBetweenClaims", type: "uint256", }, { internalType: "bytes32", name: "merkleRoot", type: "bytes32", }, { internalType: "uint256", name: "pricePerToken", type: "uint256", }, { internalType: "address", name: "currency", type: "address", }, ], internalType: "struct ILazyMintERC20.ClaimCondition[]", name: "_conditions", type: "tuple[]", }, ], name: "setClaimConditions", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "string", name: "_URI", type: "string", }, ], name: "setContractURI", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "_saleRecipient", type: "address", }, ], name: "setDefaultSaleRecipient", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "_feeBps", type: "uint256", }, ], name: "setFeeBps", 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: [], name: "symbol", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "totalSupply", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "recipient", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "transfer", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "sender", type: "address", }, { internalType: "address", name: "recipient", type: "address", }, { internalType: "uint256", name: "amount", type: "uint256", }, ], name: "transferFrom", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "transfersRestricted", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "unpause", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { components: [ { internalType: "uint256", name: "startTimestamp", type: "uint256", }, { internalType: "uint256", name: "maxClaimableSupply", type: "uint256", }, { internalType: "uint256", name: "supplyClaimed", type: "uint256", }, { internalType: "uint256", name: "waitTimeInSecondsBetweenClaims", type: "uint256", }, { internalType: "bytes32", name: "merkleRoot", type: "bytes32", }, { internalType: "uint256", name: "pricePerToken", type: "uint256", }, { internalType: "address", name: "currency", type: "address", }, ], internalType: "struct ILazyMintERC20.ClaimCondition[]", name: "_conditions", type: "tuple[]", }, ], name: "updateClaimConditions", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "_claimer", type: "address", }, { internalType: "uint256", name: "_quantity", type: "uint256", }, { internalType: "bytes32[]", name: "_proofs", type: "bytes32[]", }, { internalType: "uint256", name: "_conditionIndex", type: "uint256", }, ], name: "verifyClaim", outputs: [], stateMutability: "view", type: "function", }, ]; const _bytecode = "0x6101806040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610140523480156200003757600080fd5b5060405162005c0438038062005c048339810160408190526200005a9162000607565b858989878a818480604051806040016040528060018152602001603160f81b81525087878160059080519060200190620000969291906200045f565b508051620000ac9060069060208401906200045f565b5050825160208085019190912083518483012060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81880181905281830187905260608201869052608082019490945230818401528151808203909301835260c0019052805194019390932091935091906080523060c052610120525050600b80546001600160a81b0319166101006001600160a01b03968716021790555050600c80546001600160a01b031916928816929092179091555080516200018e90600d9060208401906200045f565b50620001a560006200019f62000299565b620002b5565b620001d47f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c6200019f62000299565b620002037f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66200019f62000299565b620002327f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6200019f62000299565b50506001600e555050506001600160a01b0393841661016052600f8054939094166001600160e01b031990931692909217600160a01b6001600160401b039283160217909255601080546001600160401b0319169190921617905550620007469350505050565b6000620002b0620002c560201b6200246c1760201c565b905090565b620002c1828262000304565b5050565b600b546000906001600160a01b0361010090910416331415620002ef575060131936013560601c90565b620002b06200034760201b620024991760201c565b6200031b82826200034b60201b6200249d1760201c565b6000828152600160209081526040909120620003429183906200253c620003ed821b17901c565b505050565b3390565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620002c1576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620003a962000299565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000404836001600160a01b0384166200040d565b90505b92915050565b6000818152600183016020526040812054620004565750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000407565b50600062000407565b8280546200046d9062000709565b90600052602060002090601f016020900481019282620004915760008555620004dc565b82601f10620004ac57805160ff1916838001178555620004dc565b82800160010185558215620004dc579182015b82811115620004dc578251825591602001919060010190620004bf565b50620004ea929150620004ee565b5090565b5b80821115620004ea5760008155600101620004ef565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200052d57600080fd5b81516001600160401b03808211156200054a576200054a62000505565b604051601f8301601f19908116603f0116810190828211818310171562000575576200057562000505565b816040528381526020925086838588010111156200059257600080fd5b600091505b83821015620005b6578582018301518183018401529082019062000597565b83821115620005c85760008385830101525b9695505050505050565b80516001600160a01b0381168114620005ea57600080fd5b919050565b80516001600160801b0381168114620005ea57600080fd5b60008060008060008060008060006101208a8c0312156200062757600080fd5b89516001600160401b03808211156200063f57600080fd5b6200064d8d838e016200051b565b9a5060208c01519150808211156200066457600080fd5b620006728d838e016200051b565b995060408c01519150808211156200068957600080fd5b50620006988c828d016200051b565b975050620006a960608b01620005d2565b9550620006b960808b01620005d2565b9450620006c960a08b01620005d2565b9350620006d960c08b01620005d2565b9250620006e960e08b01620005ef565b9150620006fa6101008b01620005ef565b90509295985092959850929598565b600181811c908216806200071e57607f821691505b602082108114156200074057634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e0516101005161012051610140516101605161543c620007c860003960008181610cc501528181613a6d01528181613b680152818161439901526144100152600061222e01526000612d4b01526000612d9a01526000612d7501526000612cce01526000612cf801526000612d22015261543c6000f3fe6080604052600436106103ad5760003560e01c80636fcfff45116101e7578063a457c2d71161010d578063d5391393116100a0578063e8a3d4851161006f578063e8a3d48514610c54578063f1127ed814610c69578063f9ea29cb14610cb3578063ffa1ad7414610ce757600080fd5b8063d539139314610b86578063d547741f14610bba578063dd62ed3e14610bda578063e63ab1e914610c2057600080fd5b8063c63adb2b116100dc578063c63adb2b14610b09578063ca15c87314610b31578063ceb4aff314610b51578063d505accf14610b6657600080fd5b8063a457c2d714610a7c578063a9059cbb14610a9c578063ac9650d814610abc578063c3cda52014610ae957600080fd5b80638ba448c211610185578063938e3d7b11610154578063938e3d7b14610a1257806395d89b4114610a325780639ab24eb014610a47578063a217fddf14610a6757600080fd5b80638ba448c21461096e5780638e539e8c1461098e5780639010d07c146109ae57806391d14854146109ce57600080fd5b806379cc6790116101c157806379cc6790146108f85780637ecebe00146109185780638423df79146109385780638456cb591461095957600080fd5b80636fcfff451461086d57806370a08231146108a257806372c27b62146108d857600080fd5b806334ad5e4b116102d757806340c10f191161026a578063587cde1e11610239578063587cde1e146107cc5780635c19a95c146108055780635c975abb14610825578063666134631461083d57600080fd5b806340c10f191461073857806342966c68146107585780635157446914610778578063572b6c051461079857600080fd5b806339509351116102a657806339509351146106d05780633a46b1a8146106f05780633d13f874146107105780633f4ba83a1461072357600080fd5b806334ad5e4b146105fc5780633644e5151461061c57806336568abe146106315780633707d9dc1461065157600080fd5b8063206b60f91161034f57806324a9d8531161031e57806324a9d853146105665780632f2ff15d146105a0578063313ce567146105c057806333fd2999146105dc57600080fd5b8063206b60f9146104aa57806323b872dd146104de578063246b436b146104fe578063248a9ca31461053657600080fd5b8063097b3cdb1161038b578063097b3cdb146104295780631490ee761461044b57806318160ddd1461046b5780631f72d8311461048a57600080fd5b806301ffc9a7146103b257806306fdde03146103e7578063095ea7b314610409575b600080fd5b3480156103be57600080fd5b506103d26103cd366004614b6e565b610cfc565b60405190151581526020015b60405180910390f35b3480156103f357600080fd5b506103fc610d27565b6040516103de9190614bf0565b34801561041557600080fd5b506103d2610424366004614c18565b610db9565b34801561043557600080fd5b50610449610444366004614c90565b610dd6565b005b34801561045757600080fd5b50610449610466366004614cf4565b611032565b34801561047757600080fd5b506004545b6040519081526020016103de565b34801561049657600080fd5b506104496104a5366004614d11565b6110ce565b3480156104b657600080fd5b5061047c7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c81565b3480156104ea57600080fd5b506103d26104f9366004614d2a565b6111d3565b34801561050a57600080fd5b50600f5461051e906001600160a01b031681565b6040516001600160a01b0390911681526020016103de565b34801561054257600080fd5b5061047c610551366004614d11565b60009081526020819052604090206001015490565b34801561057257600080fd5b506010546105879067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016103de565b3480156105ac57600080fd5b506104496105bb366004614d6b565b6112bb565b3480156105cc57600080fd5b50604051601281526020016103de565b3480156105e857600080fd5b5061047c6105f7366004614d6b565b6112ed565b34801561060857600080fd5b50610449610617366004614d9b565b61134f565b34801561062857600080fd5b5061047c6113f6565b34801561063d57600080fd5b5061044961064c366004614d6b565b611405565b34801561065d57600080fd5b5061067161066c366004614d11565b6114a1565b6040516103de9190600060e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a08301526001600160a01b0360c08401511660c083015292915050565b3480156106dc57600080fd5b506103d26106eb366004614c18565b611559565b3480156106fc57600080fd5b5061047c61070b366004614c18565b6115ad565b61044961071e366004614e10565b611620565b34801561072f57600080fd5b50610449611778565b34801561074457600080fd5b50610449610753366004614c18565b611820565b34801561076457600080fd5b50610449610773366004614d11565b6118ae565b34801561078457600080fd5b50610449610793366004614d9b565b6118c2565b3480156107a457600080fd5b506103d26107b3366004614cf4565b600b5461010090046001600160a01b0390811691161490565b3480156107d857600080fd5b5061051e6107e7366004614cf4565b6001600160a01b039081166000908152600860205260409020541690565b34801561081157600080fd5b50610449610820366004614cf4565b61195c565b34801561083157600080fd5b50600b5460ff166103d2565b34801561084957600080fd5b50601154601254610858919082565b604080519283526020830191909152016103de565b34801561087957600080fd5b5061088d610888366004614cf4565b61196d565b60405163ffffffff90911681526020016103de565b3480156108ae57600080fd5b5061047c6108bd366004614cf4565b6001600160a01b031660009081526002602052604090205490565b3480156108e457600080fd5b506104496108f3366004614d11565b61198f565b34801561090457600080fd5b50610449610913366004614c18565b611a70565b34801561092457600080fd5b5061047c610933366004614cf4565b611afa565b34801561094457600080fd5b50600b546103d290600160a81b900460ff1681565b34801561096557600080fd5b50610449611b18565b34801561097a57600080fd5b50610449610989366004614e7a565b611ba4565b34801561099a57600080fd5b5061047c6109a9366004614d11565b611c5e565b3480156109ba57600080fd5b5061051e6109c9366004614e97565b611cba565b3480156109da57600080fd5b506103d26109e9366004614d6b565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b348015610a1e57600080fd5b50610449610a2d366004614eb9565b611cd2565b348015610a3e57600080fd5b506103fc611d30565b348015610a5357600080fd5b5061047c610a62366004614cf4565b611d3f565b348015610a7357600080fd5b5061047c600081565b348015610a8857600080fd5b506103d2610a97366004614c18565b611dc6565b348015610aa857600080fd5b506103d2610ab7366004614c18565b611e95565b348015610ac857600080fd5b50610adc610ad7366004614f19565b611ea9565b6040516103de9190614f5b565b348015610af557600080fd5b50610449610b04366004614fd3565b611f9e565b348015610b1557600080fd5b50600f5461058790600160a01b900467ffffffffffffffff1681565b348015610b3d57600080fd5b5061047c610b4c366004614d11565b6120d4565b348015610b5d57600080fd5b5061047c6120eb565b348015610b7257600080fd5b50610449610b8136600461502d565b6121da565b348015610b9257600080fd5b5061047c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b348015610bc657600080fd5b50610449610bd5366004614d6b565b612332565b348015610be657600080fd5b5061047c610bf536600461509b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610c2c57600080fd5b5061047c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b348015610c6057600080fd5b506103fc61235a565b348015610c7557600080fd5b50610c89610c843660046150c9565b6123e8565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016103de565b348015610cbf57600080fd5b5061051e7f000000000000000000000000000000000000000000000000000000000000000081565b348015610cf357600080fd5b5061047c600181565b60006001600160e01b03198216635a05180f60e01b1480610d215750610d2182612551565b92915050565b606060058054610d3690615100565b80601f0160208091040260200160405190810160405280929190818152602001828054610d6290615100565b8015610daf5780601f10610d8457610100808354040283529160200191610daf565b820191906000526020600020905b815481529060010190602001808311610d9257829003601f168201915b5050505050905090565b6000610dcd610dc6612586565b8484612590565b50600192915050565b600081815260136020908152604091829020825160e081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a08201526006909101546001600160a01b031660c08201528415801590610e6057508060200151858260400151610e5d919061514b565b11155b610eb15760405162461bcd60e51b815260206004820152601960248201527f696e76616c6964207175616e7469747920636c61696d65642e0000000000000060448201526064015b60405180910390fd5b601254600090610ec1908461514b565b6001600160a01b0388166000908152601460209081526040808320848452909152812054919250610ef2858a6112ed565b9050811580610f015750804210155b610f4d5760405162461bcd60e51b815260206004820152601160248201527f63616e6e6f7420636c61696d207965742e0000000000000000000000000000006044820152606401610ea8565b608084015115611027576040516bffffffffffffffffffffffff1960608b901b16602082015260348101899052600090605401604051602081830303815290604052805190602001209050610fd98888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050506080870151836126b4565b6110255760405162461bcd60e51b815260206004820152601160248201527f6e6f7420696e2077686974656c6973742e0000000000000000000000000000006044820152606401610ea8565b505b505050505050505050565b61103f60006109e9612586565b6110845760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610ea8565b600f80546001600160a01b0319166001600160a01b0383169081179091556040517f7469c47fe13b9fc961c218a4b283151f80fc15e3a95e1d1b95aeace021f3d0cc90600090a250565b6110db60006109e9612586565b6111205760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610ea8565b6127108111156111625760405162461bcd60e51b815260206004820152600d60248201526c313839901e1e9018981818181760991b6044820152606401610ea8565b600f80547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b67ffffffffffffffff8416021790556040518181527f244ea8d7627f5a08f4299862bd5a45752842c183aee5b0fb0d1e4887bfa605b3906020015b60405180910390a150565b60006111e08484846126ca565b6001600160a01b038416600090815260036020526040812081611201612586565b6001600160a01b03166001600160a01b031681526020019081526020016000205490508281101561129a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610ea8565b6112ae856112a6612586565b858403612590565b60019150505b9392505050565b6000828152602081905260409020600101546112de816112d9612586565b6128de565b6112e8838361295c565b505050565b60125460009081906112ff908561514b565b6001600160a01b038416600090815260146020908152604080832084845282528083205488845260139092529091206003015481019350909150808310156113475760001992505b505092915050565b61135c60006109e9612586565b6113a15760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610ea8565b60006113ad838361297e565b90506113b881612ca4565b7fe79cb078c5bee678e4a64f927c5d2bde55059136cd3abbaa48d1ad22d0a22e4083836040516113e9929190615163565b60405180910390a1505050565b6000611400612cc1565b905090565b61140d612586565b6001600160a01b0316816001600160a01b0316146114935760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610ea8565b61149d8282612de8565b5050565b6114ed6040518060e0016040528060008152602001600081526020016000815260200160008152602001600080191681526020016000815260200160006001600160a01b031681525090565b50600090815260136020908152604091829020825160e081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a08201526006909101546001600160a01b031660c082015290565b6000610dcd611566612586565b848460036000611574612586565b6001600160a01b03908116825260208083019390935260409182016000908120918b16815292529020546115a8919061514b565b612590565b60004382106115fe5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610ea8565b6001600160a01b03831660009081526009602052604090206112b49083612e0a565b6002600e5414156116735760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ea8565b6002600e5560006116826120eb565b600081815260136020908152604091829020825160e081018452815481526001820154928101929092526002810154928201929092526003820154606082015260048201546080820152600582015460a08201526006909101546001600160a01b031660c08201529091506117016116f8612586565b86868686610dd6565b61170b8186612ec7565b611716868387613063565b856001600160a01b0316611728612586565b6001600160a01b0316837f54ea1c71a2a9917902d116540f81645f85ca1a1669139bf4acc65461f619f5508860405161176391815260200190565b60405180910390a450506001600e5550505050565b6117a47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109e9612586565b6118165760405162461bcd60e51b815260206004820152602660248201527f436f696e3a206d75737420686176652070617573657220726f6c6520746f207560448201527f6e706175736500000000000000000000000000000000000000000000000000006064820152608401610ea8565b61181e6130d9565b565b61184c7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a66109e9612586565b6118a45760405162461bcd60e51b815260206004820152602360248201527f436f696e3a206d7573742068617665206d696e74657220726f6c6520746f206d6044820152621a5b9d60ea1b6064820152608401610ea8565b61149d828261317b565b6118bf6118b9612586565b82613185565b50565b6118cf60006109e9612586565b6119145760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610ea8565b61191e828261297e565b507fe79cb078c5bee678e4a64f927c5d2bde55059136cd3abbaa48d1ad22d0a22e408282604051611950929190615163565b60405180910390a15050565b6118bf611967612586565b8261318f565b6001600160a01b038116600090815260096020526040812054610d2190613209565b61199c60006109e9612586565b6119e15760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610ea8565b612710811115611a235760405162461bcd60e51b815260206004820152600d60248201526c313839901e1e9018981818181760991b6044820152606401610ea8565b6010805467ffffffffffffffff191667ffffffffffffffff83161790556040518181527f2440645f96173394eb0d508ef9d0c95e3ddc41c6a10ef86e547fc738df9ecce2906020016111c8565b6000611a7e83610bf5612586565b905081811015611adc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610ea8565b611af083611ae8612586565b848403612590565b6112e88383613185565b6001600160a01b038116600090815260076020526040812054610d21565b611b447f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6109e9612586565b611b9c5760405162461bcd60e51b8152602060048201526024808201527f436f696e3a206d75737420686176652070617573657220726f6c6520746f20706044820152636175736560e01b6064820152608401610ea8565b61181e613289565b611bb160006109e9612586565b611bf65760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610ea8565b600b8054821515600160a81b027fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff9091161790556040517ffb4ba02cee22486df888d7ffb97c6100ec3193781e025cb9a4bc6fc358d626cc906111c890831515815260200190565b6000438210611caf5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610ea8565b610d21600a83612e0a565b60008281526001602052604081206112b49083613312565b611cdf60006109e9612586565b611d245760405162461bcd60e51b81526020600482015260166024820152756f6e6c79206d6f64756c652061646d696e20726f6c6560501b6044820152606401610ea8565b6112e8600d8383614ade565b606060068054610d3690615100565b6001600160a01b0381166000908152600960205260408120548015611db3576001600160a01b0383166000908152600960205260409020611d816001836151ef565b81548110611d9157611d91615206565b60009182526020909120015464010000000090046001600160e01b0316611db6565b60005b6001600160e01b03169392505050565b60008060036000611dd5612586565b6001600160a01b0390811682526020808301939093526040918201600090812091881681529252902054905082811015611e775760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610ea8565b611e8b611e82612586565b85858403612590565b5060019392505050565b6000610dcd611ea2612586565b84846126ca565b60608167ffffffffffffffff811115611ec457611ec461521c565b604051908082528060200260200182016040528015611ef757816020015b6060815260200190600190039081611ee25790505b50905060005b82811015611f9757611f6730858584818110611f1b57611f1b615206565b9050602002810190611f2d9190615232565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061331e92505050565b828281518110611f7957611f79615206565b60200260200101819052508080611f8f90615279565b915050611efd565b5092915050565b83421115611fee5760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610ea8565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b038816918101919091526060810186905260808101859052600090612068906120609060a00160405160208183030381529060405280519060200120613343565b858585613391565b9050612073816133b9565b86146120c15760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610ea8565b6120cb818861318f565b50505050505050565b6000818152600160205260408120610d21906133e1565b6011546000908061213e5760405162461bcd60e51b815260206004820152601960248201527f6e6f207075626c6963206d696e7420636f6e646974696f6e2e000000000000006044820152606401610ea8565b805b801561219157601360006121556001846151ef565b815260200190815260200160002060000154421061217f576121786001826151ef565b9250505090565b61218a6001826151ef565b9050612140565b5060405162461bcd60e51b815260206004820152601960248201527f6e6f20616374697665206d696e7420636f6e646974696f6e2e000000000000006044820152606401610ea8565b8342111561222a5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610ea8565b60007f00000000000000000000000000000000000000000000000000000000000000008888886122598c6133b9565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006122b482613343565b905060006122c482878787613391565b9050896001600160a01b0316816001600160a01b0316146123275760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610ea8565b6110258a8a8a612590565b600082815260208190526040902060010154612350816112d9612586565b6112e88383612de8565b600d805461236790615100565b80601f016020809104026020016040519081016040528092919081815260200182805461239390615100565b80156123e05780601f106123b5576101008083540402835291602001916123e0565b820191906000526020600020905b8154815290600101906020018083116123c357829003601f168201915b505050505081565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020805463ffffffff841690811061242c5761242c615206565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b600b5460009061010090046001600160a01b0316331415612494575060131936013560601c90565b503390565b3390565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661149d576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556124f8612586565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006112b4836001600160a01b0384166133eb565b60006001600160e01b03198216637965db0b60e01b1480610d2157506301ffc9a760e01b6001600160e01b0319831614610d21565b600061140061246c565b6001600160a01b0383166125f25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ea8565b6001600160a01b0382166126535760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ea8565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000826126c1858461343a565b14949350505050565b6001600160a01b0383166127465760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ea8565b6001600160a01b0382166127a85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ea8565b6127b38383836134e6565b6001600160a01b038316600090815260026020526040902054818110156128425760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610ea8565b6001600160a01b0380851660009081526002602052604080822085850390559185168152908120805484929061287990849061514b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128c591815260200190565b60405180910390a36128d884848461361a565b50505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1661149d5761291a816001600160a01b03166014613625565b612925836020613625565b604051602001612936929190615294565b60408051601f198184030181529082905262461bcd60e51b8252610ea891600401614bf0565b612966828261249d565b60008281526001602052604090206112e8908261253c565b60008060005b83811015612c27578115806129b357508484828181106129a6576129a6615206565b905060e002016000013582105b612a255760405162461bcd60e51b815260206004820152602a60248201527f737461727454696d657374616d70206d75737420626520696e20617363656e6460448201527f696e67206f726465722e000000000000000000000000000000000000000000006064820152608401610ea8565b6000858583818110612a3957612a39615206565b905060e002016020013511612a905760405162461bcd60e51b815260206004820152601c60248201527f6d6178206d696e7420737570706c792063616e6e6f7420626520302e000000006044820152606401610ea8565b6040518060e00160405280868684818110612aad57612aad615206565b905060e00201600001358152602001868684818110612ace57612ace615206565b905060e0020160200135815260200160008152602001868684818110612af657612af6615206565b905060e00201606001358152602001868684818110612b1757612b17615206565b905060e00201608001358152602001868684818110612b3857612b38615206565b905060e0020160a001358152602001868684818110612b5957612b59615206565b905060e0020160c0016020810190612b719190614cf4565b6001600160a01b039081169091526000858152601360209081526040918290208451815590840151600180830191909155918401516002820155606084015160038201556080840151600482015560a0840151600582015560c090930151600690930180546001600160a01b03191693909216929092179055612bf4908461514b565b9250848482818110612c0857612c08615206565b905060e002016000013591508080612c1f90615279565b915050612984565b5060115480831015612c9757825b81811015612c955760008181526013602052604081208181556001808201839055600282018390556003820183905560048201839055600582019290925560060180546001600160a01b0319169055612c8e908261514b565b9050612c35565b505b5050601181905592915050565b8060116001016000828254612cb9919061514b565b909155505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612d1a57507f000000000000000000000000000000000000000000000000000000000000000046145b15612d4457507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b612df282826137ce565b60008281526001602052604090206112e8908261386b565b8154600090815b81811015612e6e576000612e258284613880565b905084868281548110612e3a57612e3a615206565b60009182526020909120015463ffffffff161115612e5a57809250612e68565b612e6581600161514b565b91505b50612e11565b8115612eb25784612e806001846151ef565b81548110612e9057612e90615206565b60009182526020909120015464010000000090046001600160e01b0316612eb5565b60005b6001600160e01b031695945050505050565b60a0820151612ed4575050565b60008260a0015182612ee69190615315565b60105490915060009061271090612f079067ffffffffffffffff1684615315565b612f119190615334565b60c08501519091506001600160a01b031673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612f9157813414612f8c5760405162461bcd60e51b815260206004820152601660248201527f6d7573742073656e6420746f74616c2070726963652e000000000000000000006044820152606401610ea8565b612fa7565b612fa7612f9c612586565b8560c001518461389b565b6130388460c00151612fb7612586565b600c5460405163f2aab4b360e01b81523060048201526001600160a01b039091169063f2aab4b39060240160206040518083038186803b158015612ffa57600080fd5b505afa15801561300e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130329190615356565b84613a17565b6128d88460c00151613048612586565b600f546001600160a01b031661305e85876151ef565b613a17565b6000828152601360205260408120600201805483929061308490849061514b565b9091555050601254600090613099908461514b565b905042601460006130a8612586565b6001600160a01b03168152602080820192909252604090810160009081208582529092529020556128d8848361317b565b600b5460ff1661312b5760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610ea8565b600b805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61315e612586565b6040516001600160a01b03909116815260200160405180910390a1565b61149d8282613bf5565b61149d8282613c8c565b6001600160a01b03828116600081815260086020818152604080842080546002845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46128d8828483613ca4565b600063ffffffff8211156132855760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610ea8565b5090565b600b5460ff16156132dc5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610ea8565b600b805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861315e612586565b60006112b48383613de1565b60606112b4838360405180606001604052806027815260200161540960279139613e0b565b6000610d21613350612cc1565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006133a287878787613ef6565b915091506133af81613fe3565b5095945050505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b6000610d21825490565b600081815260018301602052604081205461343257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d21565b506000610d21565b600081815b84518110156134de57600085828151811061345c5761345c615206565b6020026020010151905080831161349e5760408051602081018590529081018290526060016040516020818303038152906040528051906020012092506134cb565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806134d681615279565b91505061343f565b509392505050565b6134f183838361419e565b600b54600160a81b900460ff16801561351257506001600160a01b03831615155b801561352657506001600160a01b03821615155b156112e8576001600160a01b03831660009081527f7c7a990f752005aea38438cc35abc5417bd322e6c964ec21d52573494225142c602052604090205460ff16806135a857506001600160a01b03821660009081527f7c7a990f752005aea38438cc35abc5417bd322e6c964ec21d52573494225142c602052604090205460ff165b6112e85760405162461bcd60e51b815260206004820152603760248201527f436f696e3a205472616e7366657273206172652072657374726963746564207460448201527f6f205452414e534645525f524f4c4520686f6c646572730000000000000000006064820152608401610ea8565b6112e8838383614217565b60606000613634836002615315565b61363f90600261514b565b67ffffffffffffffff8111156136575761365761521c565b6040519080825280601f01601f191660200182016040528015613681576020820181803683370190505b509050600360fc1b8160008151811061369c5761369c615206565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106136cb576136cb615206565b60200101906001600160f81b031916908160001a90535060006136ef846002615315565b6136fa90600161514b565b90505b600181111561377f577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061373b5761373b615206565b1a60f81b82828151811061375157613751615206565b60200101906001600160f81b031916908160001a90535060049490941c9361377881615373565b90506136fd565b5083156112b45760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ea8565b6000828152602081815260408083206001600160a01b038516845290915290205460ff161561149d576000828152602081815260408083206001600160a01b03851684529091529020805460ff19169055613827612586565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b60006112b4836001600160a01b038416614249565b600061388f6002848418615334565b6112b49084841661514b565b6040516370a0823160e01b81526001600160a01b0384811660048301528291908416906370a082319060240160206040518083038186803b1580156138df57600080fd5b505afa1580156138f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613917919061538a565b101580156139a55750604051636eb1769f60e11b81526001600160a01b03848116600483015230602483015282919084169063dd62ed3e9060440160206040518083038186803b15801561396a57600080fd5b505afa15801561397e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139a2919061538a565b10155b6112e85760405162461bcd60e51b815260206004820152602b60248201527f696e73756666696369656e742063757272656e63792062616c616e6365206f7260448201527f20616c6c6f77616e63652e0000000000000000000000000000000000000000006064820152608401610ea8565b80613a21576128d8565b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415613be9576001600160a01b038316301415613ae057604051632e1a7d4d60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015613ab957600080fd5b505af1158015613acd573d6000803e3d6000fd5b50505050613adb828261433c565b6128d8565b6001600160a01b038216301415613bdf57348114613b665760405162461bcd60e51b815260206004820152602d60248201527f6e617469766520746f6b656e2076616c756520646f6573206e6f74206d61746360448201527f682062696420616d6f756e742e000000000000000000000000000000000000006064820152608401610ea8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613bc157600080fd5b505af1158015613bd5573d6000803e3d6000fd5b50505050506128d8565b613adb828261433c565b6128d884848484614433565b613bff8282614641565b6004546001600160e01b031015613c7e5760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610ea8565b6128d8600a61473483614740565b613c9682826148b9565b6128d8600a614a1a83614740565b816001600160a01b0316836001600160a01b031614158015613cc65750600081115b156112e8576001600160a01b03831615613d54576001600160a01b03831660009081526009602052604081208190613d0190614a1a85614740565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051613d49929190918252602082015260400190565b60405180910390a250505b6001600160a01b038216156112e8576001600160a01b03821660009081526009602052604081208190613d8a9061473485614740565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051613dd2929190918252602082015260400190565b60405180910390a25050505050565b6000826000018281548110613df857613df8615206565b9060005260206000200154905092915050565b6060833b613e815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610ea8565b600080856001600160a01b031685604051613e9c91906153a3565b600060405180830381855af49150503d8060008114613ed7576040519150601f19603f3d011682016040523d82523d6000602084013e613edc565b606091505b5091509150613eec828286614a26565b9695505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613f2d5750600090506003613fda565b8460ff16601b14158015613f4557508460ff16601c14155b15613f565750600090506004613fda565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613faa573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613fd357600060019250925050613fda565b9150600090505b94509492505050565b6000816004811115613ff757613ff76153bf565b14156140005750565b6001816004811115614014576140146153bf565b14156140625760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610ea8565b6002816004811115614076576140766153bf565b14156140c45760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ea8565b60038160048111156140d8576140d86153bf565b14156141315760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ea8565b6004816004811115614145576141456153bf565b14156118bf5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610ea8565b600b5460ff16156112e85760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e7366657220776860448201527f696c6520706175736564000000000000000000000000000000000000000000006064820152608401610ea8565b6001600160a01b038381166000908152600860205260408082205485841683529120546112e892918216911683613ca4565b6000818152600183016020526040812054801561433257600061426d6001836151ef565b8554909150600090614281906001906151ef565b90508181146142e65760008660000182815481106142a1576142a1615206565b90600052602060002001549050808760000184815481106142c4576142c4615206565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806142f7576142f76153d5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d21565b6000915050610d21565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114614389576040519150601f19603f3d011682016040523d82523d6000602084013e61438e565b606091505b50509050806112e8577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b1580156143f257600080fd5b505af1158015614406573d6000803e3d6000fd5b50505050506112e87f00000000000000000000000000000000000000000000000000000000000000003085855b816001600160a01b0316836001600160a01b03161415614452576128d8565b6040516370a0823160e01b81526001600160a01b038381166004830152600091908616906370a082319060240160206040518083038186803b15801561449757600080fd5b505afa1580156144ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144cf919061538a565b6040516323b872dd60e01b81526001600160a01b0386811660048301528581166024830152604482018590529192506000918716906323b872dd90606401602060405180830381600087803b15801561452757600080fd5b505af115801561453b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061455f91906153eb565b6040516370a0823160e01b81526001600160a01b0386811660048301529192506000918816906370a082319060240160206040518083038186803b1580156145a657600080fd5b505afa1580156145ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145de919061538a565b90508180156145f557506145f2848461514b565b81145b6120cb5760405162461bcd60e51b815260206004820152601c60248201527f6661696c656420746f207472616e736665722063757272656e63792e000000006044820152606401610ea8565b6001600160a01b0382166146975760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ea8565b6146a3600083836134e6565b80600460008282546146b5919061514b565b90915550506001600160a01b038216600090815260026020526040812080548392906146e290849061514b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361149d6000838361361a565b60006112b4828461514b565b82546000908190801561478b57856147596001836151ef565b8154811061476957614769615206565b60009182526020909120015464010000000090046001600160e01b031661478e565b60005b6001600160e01b031692506147a783858763ffffffff16565b91506000811180156147e5575043866147c16001846151ef565b815481106147d1576147d1615206565b60009182526020909120015463ffffffff16145b15614845576147f382614a5f565b866147ff6001846151ef565b8154811061480f5761480f615206565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b031602179055506148b0565b85604051806040016040528061485a43613209565b63ffffffff16815260200161486e85614a5f565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b6001600160a01b0382166149195760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ea8565b614925826000836134e6565b6001600160a01b038216600090815260026020526040902054818110156149995760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ea8565b6001600160a01b03831660009081526002602052604081208383039055600480548492906149c89084906151ef565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36112e88360008461361a565b60006112b482846151ef565b60608315614a355750816112b4565b825115614a455782518084602001fd5b8160405162461bcd60e51b8152600401610ea89190614bf0565b60006001600160e01b038211156132855760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610ea8565b828054614aea90615100565b90600052602060002090601f016020900481019282614b0c5760008555614b52565b82601f10614b255782800160ff19823516178555614b52565b82800160010185558215614b52579182015b82811115614b52578235825591602001919060010190614b37565b506132859291505b808211156132855760008155600101614b5a565b600060208284031215614b8057600080fd5b81356001600160e01b0319811681146112b457600080fd5b60005b83811015614bb3578181015183820152602001614b9b565b838111156128d85750506000910152565b60008151808452614bdc816020860160208601614b98565b601f01601f19169290920160200192915050565b6020815260006112b46020830184614bc4565b6001600160a01b03811681146118bf57600080fd5b60008060408385031215614c2b57600080fd5b8235614c3681614c03565b946020939093013593505050565b60008083601f840112614c5657600080fd5b50813567ffffffffffffffff811115614c6e57600080fd5b6020830191508360208260051b8501011115614c8957600080fd5b9250929050565b600080600080600060808688031215614ca857600080fd5b8535614cb381614c03565b945060208601359350604086013567ffffffffffffffff811115614cd657600080fd5b614ce288828901614c44565b96999598509660600135949350505050565b600060208284031215614d0657600080fd5b81356112b481614c03565b600060208284031215614d2357600080fd5b5035919050565b600080600060608486031215614d3f57600080fd5b8335614d4a81614c03565b92506020840135614d5a81614c03565b929592945050506040919091013590565b60008060408385031215614d7e57600080fd5b823591506020830135614d9081614c03565b809150509250929050565b60008060208385031215614dae57600080fd5b823567ffffffffffffffff80821115614dc657600080fd5b818501915085601f830112614dda57600080fd5b813581811115614de957600080fd5b86602060e083028501011115614dfe57600080fd5b60209290920196919550909350505050565b60008060008060608587031215614e2657600080fd5b8435614e3181614c03565b935060208501359250604085013567ffffffffffffffff811115614e5457600080fd5b614e6087828801614c44565b95989497509550505050565b80151581146118bf57600080fd5b600060208284031215614e8c57600080fd5b81356112b481614e6c565b60008060408385031215614eaa57600080fd5b50508035926020909101359150565b60008060208385031215614ecc57600080fd5b823567ffffffffffffffff80821115614ee457600080fd5b818501915085601f830112614ef857600080fd5b813581811115614f0757600080fd5b866020828501011115614dfe57600080fd5b60008060208385031215614f2c57600080fd5b823567ffffffffffffffff811115614f4357600080fd5b614f4f85828601614c44565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614fb057603f19888603018452614f9e858351614bc4565b94509285019290850190600101614f82565b5092979650505050505050565b803560ff81168114614fce57600080fd5b919050565b60008060008060008060c08789031215614fec57600080fd5b8635614ff781614c03565b9550602087013594506040870135935061501360608801614fbd565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a03121561504857600080fd5b873561505381614c03565b9650602088013561506381614c03565b9550604088013594506060880135935061507f60808901614fbd565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156150ae57600080fd5b82356150b981614c03565b91506020830135614d9081614c03565b600080604083850312156150dc57600080fd5b82356150e781614c03565b9150602083013563ffffffff81168114614d9057600080fd5b600181811c9082168061511457607f821691505b602082108114156133db57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561515e5761515e615135565b500190565b6020808252818101839052600090604080840186845b878110156151e2578135835284820135858401528382013584840152606080830135908401526080808301359084015260a0808301359084015260c0808301356151c281614c03565b6001600160a01b03169084015260e0928301929190910190600101615179565b5090979650505050505050565b60008282101561520157615201615135565b500390565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6000808335601e1984360301811261524957600080fd5b83018035915067ffffffffffffffff82111561526457600080fd5b602001915036819003821315614c8957600080fd5b600060001982141561528d5761528d615135565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516152cc816017850160208801614b98565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351615309816028840160208801614b98565b01602801949350505050565b600081600019048311821515161561532f5761532f615135565b500290565b60008261535157634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561536857600080fd5b81516112b481614c03565b60008161538257615382615135565b506000190190565b60006020828403121561539c57600080fd5b5051919050565b600082516153b5818460208701614b98565b9190910192915050565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b6000602082840312156153fd57600080fd5b81516112b481614e6c56fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000809000a"; type LazyMintERC20ConstructorParams = | [signer?: Signer] | ConstructorParameters; const isSuperArgs = ( xs: LazyMintERC20ConstructorParams ): xs is ConstructorParameters => xs.length > 1; export class LazyMintERC20__factory extends ContractFactory { constructor(...args: LazyMintERC20ConstructorParams) { if (isSuperArgs(args)) { super(...args); } else { super(_abi, _bytecode, args[0]); } } deploy( _name: string, _symbol: string, _contractURI: string, _controlCenter: string, _trustedForwarder: string, _nativeTokenWrapper: string, _saleRecipient: string, _royaltyBps: BigNumberish, _feeBps: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise { return super.deploy( _name, _symbol, _contractURI, _controlCenter, _trustedForwarder, _nativeTokenWrapper, _saleRecipient, _royaltyBps, _feeBps, overrides || {} ) as Promise; } getDeployTransaction( _name: string, _symbol: string, _contractURI: string, _controlCenter: string, _trustedForwarder: string, _nativeTokenWrapper: string, _saleRecipient: string, _royaltyBps: BigNumberish, _feeBps: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { return super.getDeployTransaction( _name, _symbol, _contractURI, _controlCenter, _trustedForwarder, _nativeTokenWrapper, _saleRecipient, _royaltyBps, _feeBps, overrides || {} ); } attach(address: string): LazyMintERC20 { return super.attach(address) as LazyMintERC20; } connect(signer: Signer): LazyMintERC20__factory { return super.connect(signer) as LazyMintERC20__factory; } static readonly bytecode = _bytecode; static readonly abi = _abi; static createInterface(): LazyMintERC20Interface { return new utils.Interface(_abi) as LazyMintERC20Interface; } static connect( address: string, signerOrProvider: Signer | Provider ): LazyMintERC20 { return new Contract(address, _abi, signerOrProvider) as LazyMintERC20; } }