327 txs
1.7k calls
constructor
constructor(address initialOwner, string name, string symbol, string initBaseURI)
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
BRONZE_MAX_SUPPLY
viewfunction BRONZE_MAX_SUPPLY() view returns (uint256)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getRarityType
viewfunction getRarityType(uint256 tokenId) view returns (uint8)
GOLD_MAX_SUPPLY
viewfunction GOLD_MAX_SUPPLY() view returns (uint256)
goPublic
viewfunction goPublic() view returns (bool)
howMany
viewfunction howMany(address) view returns (uint256)
INITIAL_MINT_PRICE
viewfunction INITIAL_MINT_PRICE() view returns (uint256)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
LEG_MAX_SUPPLY
viewfunction LEG_MAX_SUPPLY() view returns (uint256)
MAX_MINTS_PER_TX
viewfunction MAX_MINTS_PER_TX() view returns (uint256)
MAX_TOTAL_SUPPLY
viewfunction MAX_TOTAL_SUPPLY() view returns (uint256)
maxSupply
purefunction maxSupply() pure returns (uint256)
mintCount
viewfunction mintCount() view returns (uint256 bronze, uint256 silver, uint256 gold, uint256 legend)
mintPrice
viewfunction mintPrice() view returns (uint256)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
rarityTypes
viewfunction rarityTypes(uint8) view returns (uint256 maxSupply, uint256 currentSupply, string metadataURI)
SILVER_MAX_SUPPLY
viewfunction SILVER_MAX_SUPPLY() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
walletOfOwner
viewfunction walletOfOwner(address owner) view returns (uint256[])
whitelisted
viewfunction whitelisted(address) view returns (bool)
addFreeWhitelistUserOrAddMoreSpots
nonpayablefunction addFreeWhitelistUserOrAddMoreSpots(address user, uint256 howManySpots)
approve
nonpayablefunction approve(address to, uint256 tokenId)
getLegend
nonpayablefunction getLegend()
mint
payablefunction mint(uint256 quantity) payable returns (uint256[])
mintNFT
payablefunction mintNFT(address to, uint256 quantity) payable returns (uint256[])
ownerMint
nonpayablefunction ownerMint(address to, uint256 quantity) returns (uint256[])
removeFreeWhitelistUser
nonpayablefunction removeFreeWhitelistUser(address user)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string newBaseURI)
setGoPublic
nonpayablefunction setGoPublic()
setMintPrice
nonpayablefunction setMintPrice(uint256 newPrice)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
whiteMint
nonpayablefunction whiteMint() returns (uint256[])
withdraw
nonpayablefunction withdraw()
events
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
GoPublicSet
event GoPublicSet(bool isPublic)
MintedIds
event MintedIds(address indexed to, uint256[] ids)
MintPriceUpdated
event MintPriceUpdated(uint256 newPrice)
NFTMinted
event NFTMinted(address indexed to, uint256 tokenId, uint8 rarityType)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
errors
ERC721EnumerableForbiddenBatchMint
error ERC721EnumerableForbiddenBatchMint()
ERC721IncorrectOwner
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner)
ERC721InsufficientApproval
error ERC721InsufficientApproval(address operator, uint256 tokenId)
ERC721InvalidApprover
error ERC721InvalidApprover(address approver)
ERC721InvalidOperator
error ERC721InvalidOperator(address operator)
ERC721InvalidOwner
error ERC721InvalidOwner(address owner)
ERC721InvalidReceiver
error ERC721InvalidReceiver(address receiver)
ERC721InvalidSender
error ERC721InvalidSender(address sender)
ERC721NonexistentToken
error ERC721NonexistentToken(uint256 tokenId)
ERC721OutOfBoundsIndex
error ERC721OutOfBoundsIndex(address owner, uint256 index)
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
creation bytecode
0x6004600c5560c06040526005608090815264173539b7b760d91b60a0526014906200002b90826200065a565b5034801562000038575f80fd5b5060405162003d8138038062003d818339810160408190526200005b91620007d4565b8383835f6200006b83826200065a565b5060016200007a82826200065a565b5050506001600160a01b038116620000ac57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b620000b78162000569565b506001600b556001600160a01b038416620001155760405162461bcd60e51b815260206004820152601560248201527f496e76616c6964206f776e6572206164647265737300000000000000000000006044820152606401620000a3565b5f835111620001675760405162461bcd60e51b815260206004820152601460248201527f4e616d652063616e6e6f7420626520656d7074790000000000000000000000006044820152606401620000a3565b5f825111620001b95760405162461bcd60e51b815260206004820152601660248201527f53796d626f6c2063616e6e6f7420626520656d707479000000000000000000006044820152606401620000a3565b5f8151116200020b5760405162461bcd60e51b815260206004820152601860248201527f42617365205552492063616e6e6f7420626520656d70747900000000000000006044820152606401620000a3565b60136200021982826200065a565b5066dc44abe8130000600d556001601555600e805460ff191690556040805160608101825261025081525f6020808301919091528251919283019162000262918591016200087f565b60408051601f1981840301815291815291525f8052600f602090815282517ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec375908155908301517ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec37655908201517ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec37790620002fc90826200065a565b50905050604051806060016040528061012c81526020015f8152602001826040516020016200032c9190620008aa565b60408051601f19818403018152918152915260015f52600f602090815282517f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f88f908155908301517f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f89055908201517f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f89190620003c790826200065a565b509050506040518060600160405280606481526020015f815260200182604051602001620003f69190620008d5565b60408051601f19818403018152918152915260025f52600f602090815282517fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeead908155908301517fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeeae55908201517fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeeaf906200049190826200065a565b509050506040518060600160405280600781526020015f815260200182604051602001620004c0919062000900565b60408051601f19818403018152918152915260035f52600f602090815282517f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc8296828908155908301517f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc829682955908201517f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc829682a906200055b90826200065a565b50905050505050506200092b565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005e357607f821691505b6020821081036200060257634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000655575f81815260208120601f850160051c81016020861015620006305750805b601f850160051c820191505b8181101562000651578281556001016200063c565b5050505b505050565b81516001600160401b03811115620006765762000676620005ba565b6200068e81620006878454620005ce565b8462000608565b602080601f831160018114620006c4575f8415620006ac5750858301515b5f19600386901b1c1916600185901b17855562000651565b5f85815260208120601f198616915b82811015620006f457888601518255948401946001909101908401620006d3565b50858210156200071257878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f5b838110156200073e57818101518382015260200162000724565b50505f910152565b5f82601f83011262000756575f80fd5b81516001600160401b0380821115620007735762000773620005ba565b604051601f8301601f19908116603f011681019082821181831017156200079e576200079e620005ba565b81604052838152866020858801011115620007b7575f80fd5b620007ca84602083016020890162000722565b9695505050505050565b5f805f8060808587031215620007e8575f80fd5b84516001600160a01b0381168114620007ff575f80fd5b60208601519094506001600160401b03808211156200081c575f80fd5b6200082a8883890162000746565b9450604087015191508082111562000840575f80fd5b6200084e8883890162000746565b9350606087015191508082111562000864575f80fd5b50620008738782880162000746565b91505092959194509250565b5f82516200089281846020870162000722565b6518973539b7b760d11b920191825250600601919050565b5f8251620008bd81846020870162000722565b6519173539b7b760d11b920191825250600601919050565b5f8251620008e881846020870162000722565b6519973539b7b760d11b920191825250600601919050565b5f82516200091381846020870162000722565b651a173539b7b760d11b920191825250600601919050565b61344880620009395f395ff3fe608060405260043610610275575f3560e01c8063715018a61161014a578063a22cb465116100be578063d936547e11610078578063d936547e1461070b578063da56947614610739578063e985e9c514610767578063f0e78dd514610786578063f2fde38b1461079b578063f4a0a528146107ba575f80fd5b8063a22cb46514610672578063af21a62814610691578063b88d4fde146106a5578063c6a91b42146106c4578063c87b56dd146106d8578063d5abeb01146106f7575f80fd5b80638cbf465f1161010f5780638cbf465f146105cc5780638da5cb5b146105e65780638fb6caa11461060357806395d89b41146106175780639659867e1461062b578063a0712d681461065f575f80fd5b8063715018a6146105635780637479b6b6146105775780637b6e74ba1461058b5780638417fa2f1461059f57806389f53efa146105b8575f80fd5b80633c168eab116101ec578063511e820e116101a6578063511e820e1461049a57806355f804b3146104c6578063602977ad146104e55780636352211e146105105780636817c76c1461052f57806370a0823114610544575f80fd5b80633c168eab146103ea5780633ccfd60b1461040a57806342842e0e1461041e578063438b63001461043d578063484b973c1461045c5780634f6ccce71461047b575f80fd5b806323b872dd1161023d57806323b872dd146103445780632e124ec3146103635780632f745c591461038257806333039d3d146103a157806339bfaa5e146103b65780633abb9f91146103d5575f80fd5b806301ffc9a71461027957806306fdde03146102ad578063081812fc146102ce578063095ea7b31461030557806318160ddd14610326575b5f80fd5b348015610284575f80fd5b50610298610293366004612c85565b6107d9565b60405190151581526020015b60405180910390f35b3480156102b8575f80fd5b506102c16107e9565b6040516102a49190612ced565b3480156102d9575f80fd5b506102ed6102e8366004612cff565b610878565b6040516001600160a01b0390911681526020016102a4565b348015610310575f80fd5b5061032461031f366004612d31565b61089f565b005b348015610331575f80fd5b506008545b6040519081526020016102a4565b34801561034f575f80fd5b5061032461035e366004612d59565b6108ae565b34801561036e575f80fd5b5061032461037d366004612d92565b61093c565b34801561038d575f80fd5b5061033661039c366004612d31565b6109cd565b3480156103ac575f80fd5b506103366103e881565b3480156103c1575f80fd5b506103246103d0366004612d31565b610a30565b3480156103e0575f80fd5b5061033661012c81565b6103fd6103f8366004612d31565b610aca565b6040516102a49190612dab565b348015610415575f80fd5b50610324610f68565b348015610429575f80fd5b50610324610438366004612d59565b61106d565b348015610448575f80fd5b506103fd610457366004612d92565b61108c565b348015610467575f80fd5b506103fd610476366004612d31565b61112b565b348015610486575f80fd5b50610336610495366004612cff565b611362565b3480156104a5575f80fd5b506104b96104b4366004612cff565b6113b7565b6040516102a49190612e22565b3480156104d1575f80fd5b506103246104e0366004612eb7565b611424565b3480156104f0575f80fd5b506103366104ff366004612d92565b60126020525f908152604090205481565b34801561051b575f80fd5b506102ed61052a366004612cff565b6115e3565b34801561053a575f80fd5b50610336600d5481565b34801561054f575f80fd5b5061033661055e366004612d92565b6115ed565b34801561056e575f80fd5b50610324611632565b348015610582575f80fd5b506103fd611643565b348015610596575f80fd5b50610324611904565b3480156105aa575f80fd5b50600e546102989060ff1681565b3480156105c3575f80fd5b50610324611995565b3480156105d7575f80fd5b5061033666dc44abe813000081565b3480156105f1575f80fd5b50600a546001600160a01b03166102ed565b34801561060e575f80fd5b50610336600781565b348015610622575f80fd5b506102c1611b3f565b348015610636575f80fd5b5061063f611b4e565b6040805194855260208501939093529183015260608201526080016102a4565b6103fd61066d366004612cff565b611cca565b34801561067d575f80fd5b5061032461068c366004612efc565b611cd6565b34801561069c575f80fd5b50610336606481565b3480156106b0575f80fd5b506103246106bf366004612f35565b611ce1565b3480156106cf575f80fd5b50610336600581565b3480156106e3575f80fd5b506102c16106f2366004612cff565b611cf9565b348015610702575f80fd5b506103e8610336565b348015610716575f80fd5b50610298610725366004612d92565b60116020525f908152604090205460ff1681565b348015610744575f80fd5b50610758610753366004612fac565b611e93565b6040516102a493929190612fca565b348015610772575f80fd5b50610298610781366004612ff1565b611f3b565b348015610791575f80fd5b5061033661025081565b3480156107a6575f80fd5b506103246107b5366004612d92565b611f68565b3480156107c5575f80fd5b506103246107d4366004612cff565b611fa5565b5f6107e382612043565b92915050565b60605f80546107f790613022565b80601f016020809104026020016040519081016040528092919081815260200182805461082390613022565b801561086e5780601f106108455761010080835404028352916020019161086e565b820191905f5260205f20905b81548152906001019060200180831161085157829003601f168201915b5050505050905090565b5f61088282612067565b505f828152600460205260409020546001600160a01b03166107e3565b6108aa82823361209f565b5050565b6001600160a01b0382166108dc57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f6108e88383336120ac565b9050836001600160a01b0316816001600160a01b031614610936576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016108d3565b50505050565b6109446120c2565b6001600160a01b0381165f9081526011602052604090205460ff166109a25760405162461bcd60e51b8152602060048201526014602482015273155cd95c881b9bdd081dda1a5d195b1a5cdd195960621b60448201526064016108d3565b6001600160a01b03165f908152601160209081526040808320805460ff191690556012909152812055565b5f6109d7836115ed565b8210610a085760405163295f44f760e21b81526001600160a01b0384166004820152602481018390526044016108d3565b506001600160a01b03919091165f908152600660209081526040808320938352929052205490565b610a386120c2565b6001600160a01b038216610a855760405162461bcd60e51b8152602060048201526014602482015273496e76616c69642075736572206164647265737360601b60448201526064016108d3565b6001600160a01b0382165f908152601160209081526040808320805460ff19166001179055601290915281208054839290610ac190849061306e565b90915550505050565b6060610ad46120ef565b600e5460ff16610b1e5760405162461bcd60e51b8152602060048201526015602482015274139bdd081c1d589b1a58db1e481b1a5d99481e595d605a1b60448201526064016108d3565b6001600160a01b038316610b745760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74206d696e7420746f207a65726f2061646472657373000000000060448201526064016108d3565b306001600160a01b03841603610bcc5760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f74206d696e7420746f20636f6e747261637420616464726573730060448201526064016108d3565b5f82118015610bdc575060058211155b610c285760405162461bcd60e51b815260206004820181905260248201527f5175616e74697479206d757374206265206265747765656e203120616e64203560448201526064016108d3565b81600d54610c369190613081565b341015610c785760405162461bcd60e51b815260206004820152601060248201526f092dce6eaccccd2c6d2cadce8408aa8960831b60448201526064016108d3565b6103e882610c8560085490565b610c8f919061306e565b1115610cad5760405162461bcd60e51b81526004016108d390613098565b5f8267ffffffffffffffff811115610cc757610cc7612e30565b604051908082528060200260200182016040528015610cf0578160200160208202803683370190505b5090505f5b83811015610e06575f610d06612119565b6015805491925081905f610d19836130cf565b9190505550600f5f836003811115610d3357610d33612dee565b6003811115610d4457610d44612dee565b81526020019081526020015f206001015f815480929190610d64906130cf565b90915550505f818152601060205260409020805483919060ff19166001836003811115610d9357610d93612dee565b021790555080848481518110610dab57610dab6130e7565b602002602001018181525050610dc1878261231a565b866001600160a01b03165f805160206133f38339815191528284604051610de99291906130fb565b60405180910390a250508080610dfe906130cf565b915050610cf5565b5082600d54610e159190613081565b341115610f1b575f83600d54610e2b9190613081565b610e35903461310f565b60405190915047905f90339084908381818185875af1925050503d805f8114610e79576040519150601f19603f3d011682016040523d82523d5f602084013e610e7e565b606091505b5050905080610ebf5760405162461bcd60e51b815260206004820152600d60248201526c1499599d5b990819985a5b1959609a1b60448201526064016108d3565b610ec9838361310f565b4714610f175760405162461bcd60e51b815260206004820152601d60248201527f42616c616e6365206d69736d6174636820616674657220726566756e6400000060448201526064016108d3565b5050505b836001600160a01b03167ff8dfa56d027814d7034fddbc21e0e38f6bc7bfc8b44ed0c3d2faf765a872ecc282604051610f549190612dab565b60405180910390a290506107e36001600b55565b610f706120c2565b610f786120ef565b4780610fbb5760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b60448201526064016108d3565b5f610fce600a546001600160a01b031690565b6001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611015576040519150601f19603f3d011682016040523d82523d5f602084013e61101a565b606091505b505090508061105f5760405162461bcd60e51b815260206004820152601160248201527015da5d1a191c985dd85b0819985a5b1959607a1b60448201526064016108d3565b505061106b6001600b55565b565b61108783838360405180602001604052805f815250611ce1565b505050565b60605f611098836115ed565b90505f8167ffffffffffffffff8111156110b4576110b4612e30565b6040519080825280602002602001820160405280156110dd578160200160208202803683370190505b5090505f5b82811015611123576110f485826109cd565b828281518110611106576111066130e7565b60209081029190910101528061111b816130cf565b9150506110e2565b509392505050565b60606111356120c2565b6001600160a01b03831661118b5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74206d696e7420746f207a65726f2061646472657373000000000060448201526064016108d3565b6103e88261119860085490565b6111a2919061306e565b11156111c05760405162461bcd60e51b81526004016108d390613098565b5f8267ffffffffffffffff8111156111da576111da612e30565b604051908082528060200260200182016040528015611203578160200160208202803683370190505b5090505f5b83811015611319575f611219612119565b6015805491925081905f61122c836130cf565b9190505550600f5f83600381111561124657611246612dee565b600381111561125757611257612dee565b81526020019081526020015f206001015f815480929190611277906130cf565b90915550505f818152601060205260409020805483919060ff191660018360038111156112a6576112a6612dee565b0217905550808484815181106112be576112be6130e7565b6020026020010181815250506112d4878261231a565b866001600160a01b03165f805160206133f383398151915282846040516112fc9291906130fb565b60405180910390a250508080611311906130cf565b915050611208565b50836001600160a01b03167ff8dfa56d027814d7034fddbc21e0e38f6bc7bfc8b44ed0c3d2faf765a872ecc2826040516113539190612dab565b60405180910390a29392505050565b5f61136c60085490565b82106113945760405163295f44f760e21b81525f6004820152602481018390526044016108d3565b600882815481106113a7576113a76130e7565b905f5260205f2001549050919050565b5f806113c2836115e3565b6001600160a01b03160361140f5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b60448201526064016108d3565b505f9081526010602052604090205460ff1690565b61142c6120c2565b5f81511161147c5760405162461bcd60e51b815260206004820152601860248201527f42617365205552492063616e6e6f7420626520656d707479000000000000000060448201526064016108d3565b60136114888282613167565b508060405160200161149a9190613223565b60408051601f198184030181529190525f8052600f6020527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec377906114de9082613167565b50806040516020016114f0919061324c565b60408051601f1981840301815291905260015f52600f6020527f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f891906115359082613167565b50806040516020016115479190613275565b60408051601f1981840301815291905260025f52600f6020527fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeeaf9061158c9082613167565b508060405160200161159e919061329e565b60408051601f1981840301815291905260035f52600f6020527f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc829682a906108aa9082613167565b5f6107e382612067565b5f6001600160a01b038216611617576040516322718ad960e21b81525f60048201526024016108d3565b506001600160a01b03165f9081526003602052604090205490565b61163a6120c2565b61106b5f612333565b606061164d6120ef565b335f9081526011602052604090205460ff1661169d5760405162461bcd60e51b815260206004820152600f60248201526e139bdd081dda1a5d195b1a5cdd1959608a1b60448201526064016108d3565b335f908152601260205260409020546116f85760405162461bcd60e51b815260206004820152601c60248201527f4e6f2077686974656c697374206d696e74732072656d61696e696e670000000060448201526064016108d3565b6103e861170460085490565b61170f90600161306e565b11156117525760405162461bcd60e51b815260206004820152601260248201527113585e081cdd5c1c1b1e481c995858da195960721b60448201526064016108d3565b6040805160018082528183019092525f91602080830190803683370190505090505f61177c612119565b6015805491925081905f61178f836130cf565b9190505550600f5f8360038111156117a9576117a9612dee565b60038111156117ba576117ba612dee565b81526020019081526020015f206001015f8154809291906117da906130cf565b90915550505f818152601060205260409020805483919060ff1916600183600381111561180957611809612dee565b021790555080835f81518110611821576118216130e7565b602002602001018181525050611837338261231a565b335f90815260126020526040812080546001929061185690849061310f565b9091555050335f90815260126020526040812054900361188757335f908152601160205260409020805460ff191690555b336001600160a01b03165f805160206133f383398151915282846040516118af9291906130fb565b60405180910390a2336001600160a01b03167ff8dfa56d027814d7034fddbc21e0e38f6bc7bfc8b44ed0c3d2faf765a872ecc2846040516118f09190612dab565b60405180910390a250506001600b55905090565b61190c6120c2565b600e5460ff16156119505760405162461bcd60e51b815260206004820152600e60248201526d416c7265616479207075626c696360901b60448201526064016108d3565b600e805460ff191660019081179091556040519081527ff31a7c2e0f826a88afd10b6fe0821efd9a4284f8b243bf2cbe16825ccb0b77539060200160405180910390a1565b61199d6120c2565b6103e86119a960085490565b6119b490600161306e565b11156119d25760405162461bcd60e51b81526004016108d390613098565b60035f908152600f6020527f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc8296829547f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc829682854611a2b919061310f565b90505f8111611a6e5760405162461bcd60e51b815260206004820152600f60248201526e139bc8131959d95b991cc81319599d608a1b60448201526064016108d3565b6015805460039181905f611a81836130cf565b9190505550600f5f836003811115611a9b57611a9b612dee565b6003811115611aac57611aac612dee565b81526020019081526020015f206001015f815480929190611acc906130cf565b90915550505f818152601060205260409020805483919060ff19166001836003811115611afb57611afb612dee565b0217905550611b0a338261231a565b336001600160a01b03165f805160206133f38339815191528284604051611b329291906130fb565b60405180910390a2505050565b6060600180546107f790613022565b5f808052600f6020527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec376547ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec37554829182918291611baa9161310f565b60015f52600f6020527f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f890547f169f97de0d9a84d840042b17d3c6b9638b3d6fd9024c9eb0c7a306a17b49f88f54919550611c039161310f565b60025f52600f6020527fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeeae547fa74ba3945261e09fde15ba3db55005b205e61eeb4ad811ac0faa2b315bffeead54919450611c5c9161310f565b60035f52600f6020527f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc8296829547f45f76dafbbad695564362934e24d72eedc57f9fc1a65f39bca62176cc82968285491935090611cb890600161306e565b611cc2919061310f565b905090919293565b60606107e33383610aca565b6108aa338383612384565b611cec8484846108ae565b6109363385858585612422565b60605f611d05836115e3565b6001600160a01b031603611d525760405162461bcd60e51b8152602060048201526014602482015273151bdad95b88191bd95cc81b9bdd08195e1a5cdd60621b60448201526064016108d3565b5f8281526010602052604081205460ff1690600f81836003811115611d7957611d79612dee565b6003811115611d8a57611d8a612dee565b81526020019081526020015f206002018054611da590613022565b80601f0160208091040260200160405190810160405280929190818152602001828054611dd190613022565b8015611e1c5780601f10611df357610100808354040283529160200191611e1c565b820191905f5260205f20905b815481529060010190602001808311611dff57829003601f168201915b505050505090505f81511115611e33579392505050565b5f60138054611e4190613022565b905011611e5c5760405180602001604052805f815250611e8b565b6013611e678561254a565b6014604051602001611e7b93929190613336565b6040516020818303038152906040525b949350505050565b600f6020525f908152604090208054600182015460028301805492939192611eba90613022565b80601f0160208091040260200160405190810160405280929190818152602001828054611ee690613022565b8015611f315780601f10611f0857610100808354040283529160200191611f31565b820191905f5260205f20905b815481529060010190602001808311611f1457829003601f168201915b5050505050905083565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b611f706120c2565b6001600160a01b038116611f9957604051631e4fbdf760e01b81525f60048201526024016108d3565b611fa281612333565b50565b611fad6120c2565b5f81116120085760405162461bcd60e51b8152602060048201526024808201527f4d696e74207072696365206d7573742062652067726561746572207468616e206044820152637a65726f60e01b60648201526084016108d3565b600d8190556040518181527f525b762709cc2a983aec5ccdfd807a061f993c91090b5bcd7da92ca254976aaa9060200160405180910390a150565b5f6001600160e01b0319821663780e9d6360e01b14806107e357506107e3826125da565b5f818152600260205260408120546001600160a01b0316806107e357604051637e27328960e01b8152600481018490526024016108d3565b6110878383836001612629565b5f6120b884848461272d565b90505b9392505050565b600a546001600160a01b0316331461106b5760405163118cdaa760e01b81523360048201526024016108d3565b6002600b540361211257604051633ee5aeb560e01b815260040160405180910390fd5b6002600b55565b5f80600160155461212a919061310f565b612136906103e861310f565b90505f811161217b5760405162461bcd60e51b81526020600482015260116024820152704e6f204e46547320617661696c61626c6560781b60448201526064016108d3565b8060010361218b57600391505090565b5f8142336015546040516020016121c79392919092835260609190911b6bffffffffffffffffffffffff19166020830152603482015260540190565b604051602081830303815290604052805190602001205f1c6121e99190613368565b90505f805b600c548110156122d1575f81600381111561220b5761220b612dee565b90505f600f5f83600381111561222357612223612dee565b600381111561223457612234612dee565b81526020019081526020015f2060010154600f5f84600381111561225a5761225a612dee565b600381111561226b5761226b612dee565b81526020019081526020015f205f0154612285919061310f565b9050805f036122955750506122bf565b61229f818561306e565b8510156122b0575095945050505050565b6122ba818561306e565b935050505b806122c9816130cf565b9150506121ee565b5060405162461bcd60e51b815260206004820152601e60248201527f52616e646f6d207261726974792073656c656374696f6e206661696c6564000060448201526064016108d3565b6108aa828260405180602001604052805f8152506127f8565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166123b657604051630b61174360e31b81526001600160a01b03831660048201526024016108d3565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561254357604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290612464908890889087908790600401613387565b6020604051808303815f875af192505050801561249e575060408051601f3d908101601f1916820190925261249b918101906133c3565b60015b612505573d8080156124cb576040519150601f19603f3d011682016040523d82523d5f602084013e6124d0565b606091505b5080515f036124fd57604051633250574960e11b81526001600160a01b03851660048201526024016108d3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461254157604051633250574960e11b81526001600160a01b03851660048201526024016108d3565b505b5050505050565b60605f6125568361280f565b60010190505f8167ffffffffffffffff81111561257557612575612e30565b6040519080825280601f01601f19166020018201604052801561259f576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846125a957509392505050565b5f6001600160e01b031982166380ac58cd60e01b148061260a57506001600160e01b03198216635b5e139f60e01b145b806107e357506301ffc9a760e01b6001600160e01b03198316146107e3565b808061263d57506001600160a01b03821615155b156126fe575f61264c84612067565b90506001600160a01b038316158015906126785750826001600160a01b0316816001600160a01b031614155b801561268b57506126898184611f3b565b155b156126b45760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016108d3565b81156126fc5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b50505f90815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b5f8061273a8585856128e6565b90506001600160a01b0381166127965761279184600880545f838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b6127b9565b846001600160a01b0316816001600160a01b0316146127b9576127b981856129d8565b6001600160a01b0385166127d5576127d084612a55565b6120b8565b846001600160a01b0316816001600160a01b0316146120b8576120b88585612afc565b6128028383612b4a565b611087335f858585612422565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061284d5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612879576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061289757662386f26fc10000830492506010015b6305f5e10083106128af576305f5e100830492506008015b61271083106128c357612710830492506004015b606483106128d5576064830492506002015b600a83106107e35760010192915050565b5f828152600260205260408120546001600160a01b039081169083161561291257612912818486612bab565b6001600160a01b0381161561294c5761292d5f855f80612629565b6001600160a01b0381165f90815260036020526040902080545f190190555b6001600160a01b0385161561297a576001600160a01b0385165f908152600360205260409020805460010190555b5f8481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b5f6129e2836115ed565b5f838152600760209081526040808320546001600160a01b0388168452600690925290912091925090818314612a37575f83815260208281526040808320548584528184208190558352600790915290208290555b5f938452600760209081526040808620869055938552525081205550565b6008545f90612a669060019061310f565b5f8381526009602052604081205460088054939450909284908110612a8d57612a8d6130e7565b905f5260205f20015490508060088381548110612aac57612aac6130e7565b5f918252602080832090910192909255828152600990915260408082208490558582528120556008805480612ae357612ae36133de565b600190038181905f5260205f20015f9055905550505050565b5f6001612b08846115ed565b612b12919061310f565b6001600160a01b039093165f908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216612b7357604051633250574960e11b81525f60048201526024016108d3565b5f612b7f83835f6120ac565b90506001600160a01b03811615611087576040516339e3563760e11b81525f60048201526024016108d3565b612bb6838383612c0f565b611087576001600160a01b038316612be457604051637e27328960e01b8152600481018290526024016108d3565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016108d3565b5f6001600160a01b038316158015906120b85750826001600160a01b0316846001600160a01b03161480612c485750612c488484611f3b565b806120b85750505f908152600460205260409020546001600160a01b03908116911614919050565b6001600160e01b031981168114611fa2575f80fd5b5f60208284031215612c95575f80fd5b81356120bb81612c70565b5f5b83811015612cba578181015183820152602001612ca2565b50505f910152565b5f8151808452612cd9816020860160208601612ca0565b601f01601f19169290920160200192915050565b602081525f6120bb6020830184612cc2565b5f60208284031215612d0f575f80fd5b5035919050565b80356001600160a01b0381168114612d2c575f80fd5b919050565b5f8060408385031215612d42575f80fd5b612d4b83612d16565b946020939093013593505050565b5f805f60608486031215612d6b575f80fd5b612d7484612d16565b9250612d8260208501612d16565b9150604084013590509250925092565b5f60208284031215612da2575f80fd5b6120bb82612d16565b602080825282518282018190525f9190848201906040850190845b81811015612de257835183529284019291840191600101612dc6565b50909695505050505050565b634e487b7160e01b5f52602160045260245ffd5b60048110612e1e57634e487b7160e01b5f52602160045260245ffd5b9052565b602081016107e38284612e02565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115612e5e57612e5e612e30565b604051601f8501601f19908116603f01168101908282118183101715612e8657612e86612e30565b81604052809350858152868686011115612e9e575f80fd5b858560208301375f602087830101525050509392505050565b5f60208284031215612ec7575f80fd5b813567ffffffffffffffff811115612edd575f80fd5b8201601f81018413612eed575f80fd5b611e8b84823560208401612e44565b5f8060408385031215612f0d575f80fd5b612f1683612d16565b915060208301358015158114612f2a575f80fd5b809150509250929050565b5f805f8060808587031215612f48575f80fd5b612f5185612d16565b9350612f5f60208601612d16565b925060408501359150606085013567ffffffffffffffff811115612f81575f80fd5b8501601f81018713612f91575f80fd5b612fa087823560208401612e44565b91505092959194509250565b5f60208284031215612fbc575f80fd5b8135600481106120bb575f80fd5b838152826020820152606060408201525f612fe86060830184612cc2565b95945050505050565b5f8060408385031215613002575f80fd5b61300b83612d16565b915061301960208401612d16565b90509250929050565b600181811c9082168061303657607f821691505b60208210810361305457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107e3576107e361305a565b80820281158282048414176107e3576107e361305a565b60208082526018908201527f45786365656473206d617820746f74616c20737570706c790000000000000000604082015260600190565b5f600182016130e0576130e061305a565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b828152604081016120bb6020830184612e02565b818103818111156107e3576107e361305a565b601f821115611087575f81815260208120601f850160051c810160208610156131485750805b601f850160051c820191505b8181101561254157828155600101613154565b815167ffffffffffffffff81111561318157613181612e30565b6131958161318f8454613022565b84613122565b602080601f8311600181146131c8575f84156131b15750858301515b5f19600386901b1c1916600185901b178555612541565b5f85815260208120601f198616915b828110156131f6578886015182559484019460019091019084016131d7565b508582101561321357878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8251613234818460208701612ca0565b6518973539b7b760d11b920191825250600601919050565b5f825161325d818460208701612ca0565b6519173539b7b760d11b920191825250600601919050565b5f8251613286818460208701612ca0565b6519973539b7b760d11b920191825250600601919050565b5f82516132af818460208701612ca0565b651a173539b7b760d11b920191825250600601919050565b5f81546132d381613022565b600182811680156132eb57600181146133005761332c565b60ff198416875282151583028701945061332c565b855f526020805f205f5b858110156133235781548a82015290840190820161330a565b50505082870194505b5050505092915050565b5f61334182866132c7565b8451613351818360208901612ca0565b61335d818301866132c7565b979650505050505050565b5f8261338257634e487b7160e01b5f52601260045260245ffd5b500690565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f906133b990830184612cc2565b9695505050505050565b5f602082840312156133d3575f80fd5b81516120bb81612c70565b634e487b7160e01b5f52603160045260245ffdfe5716925f2a990bb51e5354134a606547c86dc787be1a2729eef575fd0c2bea1ea264697066735822122092d7cb689e1359ac816e8585fae3d9edd6058ebcccee9fe62365661bb615e47864736f6c6343000814003300000000000000000000000096c3307468dbc4ab9cb5e49887f7be20612e5b68000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a44454f544320204e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044f54434e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043697066733a2f2f6261667962656966793374746437787571637070696d616571757771693575716d34776d66656e61363468376e346c67726e6a3462737a6b6675342f0000000000000000000000000000000000000000000000000000000000