Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
0x60806040 | 14679806 | 920 days ago | IN | 0 ETH | 0.15662043 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Items
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.7; import { ERC721MM } from "./ERC721MM.sol"; contract Items is ERC721MM { string constant public name = "Meta & Magic Items"; string constant public symbol = "ITEMS"; mapping(uint256 => address) statsAddress; mapping(uint256 => uint256) bossSupplies; /*/////////////////////////////////////////////////////////////// INITIALIZATION //////////////////////////////////////////////////////////////*/ function initialize(address stats_1, address stats_2, address stats_3, address stats_4, address stats_5, address renderer_) external { require(msg.sender == _owner(), "not authorized"); statsAddress[0] = stats_1; statsAddress[1] = stats_2; statsAddress[2] = stats_3; statsAddress[3] = stats_4; statsAddress[9] = stats_5; renderer = renderer_; // Setting boss drop supplies bossSupplies[1] = 1000; bossSupplies[2] = 900; bossSupplies[3] = 800; bossSupplies[4] = 700; bossSupplies[5] = 600; bossSupplies[6] = 500; bossSupplies[7] = 400; bossSupplies[8] = 300; bossSupplies[9] = 200; } /*/////////////////////////////////////////////////////////////// VIEW FUNCTIONS //////////////////////////////////////////////////////////////*/ function getStats(uint256 id_) external view virtual returns(bytes10[6] memory stats_) { uint256 seed = entropySeed; require(seed != 0, "Not revealed"); stats_ = StatsLike(statsAddress[id_ > 10000 ? 9 : (id_ % 4)]).getStats(_traits(seed, id_)); } function isSpecial(uint256 id) external view returns(bool sp) { return _isSpecial(id, entropySeed); } function tokenURI(uint256 id) external view returns (string memory) { uint256 seed = entropySeed; if (seed == 0) return RendererLike(renderer).getPlaceholder(2); return RendererLike(renderer).getUri(id, _traits(seed, id), _getCategory(id,seed)); } /*/////////////////////////////////////////////////////////////// MINT FUNCTIONS //////////////////////////////////////////////////////////////*/ function mintDrop(uint256 boss, address to) external virtual returns(uint256 id) { require(auth[msg.sender], "not authorized"); id = _bossDropStart(boss) + bossSupplies[boss]--; // Note boss drops are predictable because the entropy seed is known _mint(to, id, 2); } function burnFrom(address from, uint256 id) external returns (bool) { require(auth[msg.sender], "not authorized"); _burn(from, id); return true; } /*/////////////////////////////////////////////////////////////// TRAIT FUNCTIONS //////////////////////////////////////////////////////////////*/ function _traits(uint256 seed_, uint256 id_) internal pure override returns (uint256[6] memory traits) { require(seed_ != uint256(0), "seed not set"); if (_isSpecial(id_, seed_)) return _getSpecialTraits(id_); traits = [_getTier(id_, seed_, "LEVEL"), _getTier(id_, seed_, "KIND"), _getTier(id_, seed_, "MATERIAL"), _getTier(id_, seed_, "RARITY"), _getTier(id_, seed_, "QUALITY"), _getElement(id_, seed_, "ELEMENT")]; uint256 boss = _getBossForId(id_); if (boss > 0) { traits[1] = 10 + boss; traits[4] = 0; // Boss traits doesnt have material type } } function _getSpecialTraits(uint256 id_) internal pure returns (uint256[6] memory t) { uint256 spc = (id_ / 1250) + 1; uint256 traitIndcator = spc * 10 + spc; t = [traitIndcator,traitIndcator,traitIndcator,traitIndcator,traitIndcator,traitIndcator]; } function _getElement(uint256 id_, uint256 seed, bytes32 salt) internal pure returns (uint256 class_) { if (id_ % 4 == 3) return _getTier(id_, seed, "POTENCY"); uint256 rdn = uint256(keccak256(abi.encode(id_, seed, salt))) % 100_0000 + 1; if (rdn <= 50_0000) return 1; return (rdn % 5) + 2; } function _bossDropStart(uint256 boss) internal pure returns(uint256 start) { if (boss == 1) start = 10000; if (boss == 2) start = 11000; if (boss == 3) start = 11900; if (boss == 4) start = 12700; if (boss == 5) start = 13400; if (boss == 6) start = 14000; if (boss == 7) start = 14500; if (boss == 8) start = 14900; if (boss == 9) start = 15200; } function _getBossForId(uint256 id) internal pure returns(uint256 boss) { if (id <= 10000) return 0; if (id <= 11000) return 1; if (id <= 11900) return 2; if (id <= 12700) return 3; if (id <= 13400) return 4; if (id <= 14000) return 5; if (id <= 14500) return 6; if (id <= 14900) return 7; if (id <= 15200) return 8; if (id <= 15400) return 9; } function _isSpecial(uint256 id, uint256 seed) internal pure returns (bool special) { uint256 rdn = _getRndForSpecial(seed); for (uint256 i = 0; i < 9; i++) { if (id == rdn + (1250 * i)) { special = true; break; } } } function _getSpecialCategory(uint256 id, uint256 seed) internal pure returns (uint256 spc) { uint256 num = (id / 1250) + 1; spc = num + 5 + (num - 1); } function _getCategory(uint256 id, uint256 seed) internal pure returns (uint256 cat) { // Boss Drop if (id > 10000) return cat = 4; if (_isSpecial(id, seed)) return _getSpecialCategory(id, seed); return 2; } function _getRndForSpecial(uint256 seed) internal pure virtual returns (uint256 rdn) { rdn = uint256(keccak256(abi.encode(seed, "SPECIAL"))) % 1250 + 1; } } interface RendererLike { function getUri(uint256 id, uint256[6] calldata traits, uint256 cat) external view returns (string memory meta); function getPlaceholder(uint256 cat) external pure returns (string memory meta); } interface StatsLike { function getStats(uint256[6] calldata attributes) external view returns (bytes10[6] memory stats_); } interface VRFCoordinatorV2Interface { function requestRandomWords( bytes32 keyHash, uint64 subId, uint16 minimumRequestConfirmations, uint32 callbackGasLimit, uint32 numWords ) external returns (uint256 requestId); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.7; /// @notice Modern and gas efficient ERC-721 + ERC-20/EIP-2612-like implementation, /// Modified version inspired by ERC721A abstract contract ERC721MM { /*/////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); event Approval(address indexed owner, address indexed spender, uint256 indexed tokenId); event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /*/////////////////////////////////////////////////////////////// ERC-721 STORAGE //////////////////////////////////////////////////////////////*/ struct AddressData { uint128 balance; uint64 listMinted; uint64 publicMinted; } uint256 public totalSupply; uint256 public entropySeed; mapping(address => bool) public auth; mapping(address => AddressData) public datas; mapping(uint256 => address) public ownerOf; mapping(uint256 => address) public getApproved; mapping(address => mapping(address => bool)) public isApprovedForAll; // Rendering information address public renderer; // Oracle information address public VRFcoord; uint64 public subId; bytes32 public keyhash; /*/////////////////////////////////////////////////////////////// VIRTUAL FUNCTIONS //////////////////////////////////////////////////////////////*/ function _traits(uint256 entropy_, uint256 id_) internal pure virtual returns (uint256[6] memory traits_); /*/////////////////////////////////////////////////////////////// VIEW FUNCTION //////////////////////////////////////////////////////////////*/ function owner() external view returns (address owner_) { return _owner(); } function balanceOf(address add) external view returns(uint256 balance_) { balance_ = datas[add].balance; } function listMinted(address add) external view returns(uint256 minted_) { minted_ = datas[add].listMinted; } function publicMinted(address add) external view returns(uint256 minted_) { minted_ = datas[add].publicMinted; } /*/////////////////////////////////////////////////////////////// M&M SPECIFIC LOGIC //////////////////////////////////////////////////////////////*/ function setAuth(address add_, bool auth_) external { require(_owner() == msg.sender, "not authorized"); auth[add_] = auth_; } function mint(address to, uint256 amount, uint256 stage) external virtual returns(uint256 id) { require(auth[msg.sender], "not authorized"); for (uint256 i = 0; i < amount; i++) { id = totalSupply + 1; _mint(to, id, stage); } } function setUpOracle(address vrf_, bytes32 keyHash, uint64 subscriptionId) external { require(msg.sender == _owner()); VRFcoord = vrf_; keyhash = keyHash; subId = subscriptionId; } function requestEntropy() external { require(msg.sender == _owner(), "not auth"); require(entropySeed == 0, "already requested"); VRFCoordinatorV2Interface(VRFcoord).requestRandomWords(keyhash, subId, 3, 200000, 1); } function rawFulfillRandomWords(uint256 , uint256[] memory randomWords) external { require(msg.sender == VRFcoord, "not allowed"); require(entropySeed == 0); entropySeed = randomWords[0]; } function getTraits(uint256 id_) external view returns (uint256[6] memory traits_) { return _traits(entropySeed, id_); } function _getTier(uint256 id_, uint256 seed, bytes32 salt) internal pure returns (uint256 t_) { uint256 rdn = uint256(keccak256(abi.encode(id_, seed, salt))) % 100_0000 + 1; if (rdn <= 28_9333) return 1; if (rdn <= 52_8781) return 2; if (rdn <= 71_8344) return 3; if (rdn <= 85_8022) return 4; if (rdn <= 94_7815) return 5; return 6; } /*/////////////////////////////////////////////////////////////// ERC-721 LOGIC //////////////////////////////////////////////////////////////*/ function transfer(address to, uint256 tokenId) external returns (bool) { require(msg.sender == ownerOf[tokenId], "NOT_OWNER"); _transfer(msg.sender, to, tokenId); return true; } function supportsInterface(bytes4 interfaceId) external pure returns (bool supported) { supported = interfaceId == 0x80ac58cd || interfaceId == 0x5b5e139f; } function approve(address spender, uint256 tokenId) external { address owner_ = ownerOf[tokenId]; require(msg.sender == owner_ || isApprovedForAll[owner_][msg.sender], "NOT_APPROVED"); getApproved[tokenId] = spender; emit Approval(owner_, spender, tokenId); } function setApprovalForAll(address operator, bool approved) external { isApprovedForAll[msg.sender][operator] = approved; emit ApprovalForAll(msg.sender, operator, approved); } function transferFrom(address from, address to, uint256 tokenId) public returns (bool){ require( msg.sender == from || msg.sender == getApproved[tokenId] || isApprovedForAll[from][msg.sender] || auth[msg.sender], "NOT_APPROVED" ); _transfer(from, to, tokenId); return true; } function safeTransferFrom(address from, address to, uint256 tokenId) external { safeTransferFrom(from, to, tokenId, ""); } function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public { transferFrom(from, to, tokenId); if (to.code.length != 0) { // selector = `onERC721Received(address,address,uint,bytes)` (, bytes memory returned) = to.staticcall(abi.encodeWithSelector(0x150b7a02, msg.sender, address(0), tokenId, data)); bytes4 selector = abi.decode(returned, (bytes4)); require(selector == 0x150b7a02, "NOT_ERC721_RECEIVER"); } } /*/////////////////////////////////////////////////////////////// INTERNAL UTILS //////////////////////////////////////////////////////////////*/ function _owner() internal view returns (address owner_) { bytes32 slot = bytes32(0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103); assembly { owner_ := sload(slot) } } function _transfer(address from, address to, uint256 tokenId) internal { require(ownerOf[tokenId] == from, "not owner"); datas[from].balance--; datas[to].balance++; delete getApproved[tokenId]; ownerOf[tokenId] = to; emit Transfer(from, to, tokenId); } function _mint(address to, uint256 tokenId, uint256 stage) internal { require(ownerOf[tokenId] == address(0), "ALREADY_MINTED"); totalSupply++; // This is safe because the sum of all user // balances can't exceed type(uint256).max! unchecked { datas[to].balance++; stage == 1 ? datas[to].listMinted++ : datas[to].publicMinted++; } ownerOf[tokenId] = to; emit Transfer(address(0), to, tokenId); } function _burn(address acc, uint256 tokenId) internal { address owner_ = ownerOf[tokenId]; require(acc == owner_, "NOT_OWNER"); require(ownerOf[tokenId] != address(0), "NOT_MINTED"); totalSupply--; datas[owner_].balance--; delete ownerOf[tokenId]; emit Transfer(owner_, address(0), tokenId); } } interface VRFCoordinatorV2Interface { function requestRandomWords( bytes32 keyHash, uint64 subId, uint16 minimumRequestConfirmations, uint32 callbackGasLimit, uint32 numWords ) external returns (uint256 requestId); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"VRFcoord","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"auth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"datas","outputs":[{"internalType":"uint128","name":"balance","type":"uint128"},{"internalType":"uint64","name":"listMinted","type":"uint64"},{"internalType":"uint64","name":"publicMinted","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entropySeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"getStats","outputs":[{"internalType":"bytes10[6]","name":"stats_","type":"bytes10[6]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id_","type":"uint256"}],"name":"getTraits","outputs":[{"internalType":"uint256[6]","name":"traits_","type":"uint256[6]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"stats_1","type":"address"},{"internalType":"address","name":"stats_2","type":"address"},{"internalType":"address","name":"stats_3","type":"address"},{"internalType":"address","name":"stats_4","type":"address"},{"internalType":"address","name":"stats_5","type":"address"},{"internalType":"address","name":"renderer_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"isSpecial","outputs":[{"internalType":"bool","name":"sp","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"keyhash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"listMinted","outputs":[{"internalType":"uint256","name":"minted_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"stage","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"boss","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"mintDrop","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"owner_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"add","type":"address"}],"name":"publicMinted","outputs":[{"internalType":"uint256","name":"minted_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"randomWords","type":"uint256[]"}],"name":"rawFulfillRandomWords","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renderer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requestEntropy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"add_","type":"address"},{"internalType":"bool","name":"auth_","type":"bool"}],"name":"setAuth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vrf_","type":"address"},{"internalType":"bytes32","name":"keyHash","type":"bytes32"},{"internalType":"uint64","name":"subscriptionId","type":"uint64"}],"name":"setUpOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"subId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"supported","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"tokenURI","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":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50612567806100206000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806370a0823111610125578063b88d4fde116100ad578063cd5d21181161007c578063cd5d2118146105b8578063d4d46e50146105db578063e1dc0761146105ee578063e985e9c51461060e578063eb1d28bb1461063c57600080fd5b8063b88d4fde1461056c578063c87b56dd1461057f578063cba57e3814610592578063cc2a9a5b146105a557600080fd5b80638da5cb5b116100f45780638da5cb5b1461051257806395d89b411461051a578063a22cb4651461053e578063a9059cbb14610551578063b13038a11461056457600080fd5b806370a082311461049a57806379cc6790146104cc5780637b303965146104df5780638ada6b0f146104ff57600080fd5b80631fe543e3116101a857806342842e0e1161017757806342842e0e146103d8578063468f9b14146103eb5780636352211e146103f457806368a6cdf21461041d57806369ebe78e1461049157600080fd5b80631fe543e31461038c57806323b872dd1461039f57806332ed5391146103b257806335599310146103c557600080fd5b80630b44a218116101ef5780630b44a218146102dd5780631015805b146102f0578063156e29f61461033757806318160ddd1461034a5780631d02f7b81461035357600080fd5b806301ffc9a71461022157806306fdde0314610249578063081812fc14610287578063095ea7b3146102c8575b600080fd5b61023461022f36600461202b565b61066e565b60405190151581526020015b60405180910390f35b61027a604051806040016040528060128152602001714d6574612026204d61676963204974656d7360701b81525081565b60405161024091906122d0565b6102b06102953660046120d2565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610240565b6102db6102d6366004611f31565b6106a5565b005b6102db6102eb366004611ea9565b61078a565b6103296102fe366004611d01565b6001600160a01b0316600090815260036020526040902054600160c01b90046001600160401b031690565b604051908152602001610240565b610329610345366004611f5b565b6107f2565b61032960005481565b610329610361366004611d01565b6001600160a01b0316600090815260036020526040902054600160801b90046001600160401b031690565b6102db61039a366004612127565b610861565b6102346103ad366004611dc3565b6108db565b6102db6103c0366004611ee5565b6109a3565b6103296103d3366004612104565b610a0b565b6102db6103e6366004611dc3565b610a79565b61032960015481565b6102b06104023660046120d2565b6004602052600090815260409020546001600160a01b031681565b61046261042b366004611d01565b6003602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b604080516001600160801b0390941684526001600160401b039283166020850152911690820152606001610240565b61032960095481565b6103296104a8366004611d01565b6001600160a01b03166000908152600360205260409020546001600160801b031690565b6102346104da366004611f31565b610a99565b6104f26104ed3660046120d2565b610adb565b6040516102409190612287565b6007546102b0906001600160a01b031681565b6102b0610bd7565b61027a604051806040016040528060058152602001644954454d5360d81b81525081565b6102db61054c366004611ea9565b610bf4565b61023461055f366004611f31565b610c60565b6102db610cbd565b6102db61057a366004611dff565b610e0d565b61027a61058d3660046120d2565b610f46565b6102346105a03660046120d2565b611016565b6102db6105b3366004611d4f565b611024565b6102346105c6366004611d01565b60026020526000908152604090205460ff1681565b6008546102b0906001600160a01b031681565b6106016105fc3660046120d2565b6112c4565b60405161024091906122c2565b61023461061c366004611d1c565b600660209081526000928352604080842090915290825290205460ff1681565b60085461065690600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610240565b60006380ac58cd60e01b6001600160e01b03198316148061069f5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000818152600460205260409020546001600160a01b0316338114806106ee57506001600160a01b038116600090815260066020908152604080832033845290915290205460ff165b61072e5760405162461bcd60e51b815260206004820152600c60248201526b1393d517d054141493d5915160a21b60448201526064015b60405180910390fd5b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b336107a16000805160206125128339815191525490565b6001600160a01b0316146107c75760405162461bcd60e51b8152600401610725906122e3565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b3360009081526002602052604081205460ff166108215760405162461bcd60e51b8152600401610725906122e3565b60005b838110156108595760005461083a906001612385565b91506108478583856112d8565b8061085181612474565b915050610824565b509392505050565b6008546001600160a01b031633146108a95760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401610725565b600154156108b657600080fd5b806000815181106108c9576108c96124cf565b60200260200101516001819055505050565b6000336001600160a01b038516148061090a57506000828152600560205260409020546001600160a01b031633145b8061093857506001600160a01b038416600090815260066020908152604080832033845290915290205460ff165b8061095257503360009081526002602052604090205460ff165b61098d5760405162461bcd60e51b815260206004820152600c60248201526b1393d517d054141493d5915160a21b6044820152606401610725565b61099884848461147e565b5060015b9392505050565b600080516020612512833981519152546001600160a01b0316336001600160a01b0316146109d057600080fd5b600880546009939093556001600160401b03909116600160a01b026001600160e01b03199092166001600160a01b0390931692909217179055565b3360009081526002602052604081205460ff16610a3a5760405162461bcd60e51b8152600401610725906122e3565b6000838152600b60205260408120805491610a5483612436565b91905055610a61846115dc565b610a6b9190612385565b905061069f828260026112d8565b610a9483838360405180602001604052806000815250610e0d565b505050565b3360009081526002602052604081205460ff16610ac85760405162461bcd60e51b8152600401610725906122e3565b610ad28383611661565b50600192915050565b610ae3611ccc565b60015480610b225760405162461bcd60e51b815260206004820152600c60248201526b139bdd081c995d99585b195960a21b6044820152606401610725565b600a60006127108511610b3f57610b3a60048661248f565b610b42565b60095b81526020810191909152604001600020546001600160a01b031663ecac6724610b6b83866117c3565b6040518263ffffffff1660e01b8152600401610b8791906122c2565b60c06040518083038186803b158015610b9f57600080fd5b505afa158015610bb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190611f8e565b6000610bef6000805160206125128339815191525490565b905090565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000818152600460205260408120546001600160a01b03163314610cb25760405162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b6044820152606401610725565b610ad233848461147e565b600080516020612512833981519152546001600160a01b0316336001600160a01b031614610d185760405162461bcd60e51b81526020600482015260086024820152670dcdee840c2eae8d60c31b6044820152606401610725565b60015415610d5c5760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e481c995c5d595cdd1959607a1b6044820152606401610725565b6008546009546040516305d3b1d360e41b81526004810191909152600160a01b82046001600160401b031660248201526003604482015262030d406064820152600160848201526001600160a01b0390911690635d3b1d309060a401602060405180830381600087803b158015610dd257600080fd5b505af1158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a91906120eb565b50565b610e188484846108db565b506001600160a01b0383163b15610f40576000836001600160a01b031663150b7a023360008686604051602401610e52949392919061224a565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610e8b919061222e565b600060405180830381855afa9150503d8060008114610ec6576040519150601f19603f3d011682016040523d82523d6000602084013e610ecb565b606091505b50915050600081806020019051810190610ee59190612048565b9050630a85bd0160e11b6001600160e01b0319821614610f3d5760405162461bcd60e51b81526020600482015260136024820152722727aa2fa2a9219b9918afa922a1a2a4ab22a960691b6044820152606401610725565b50505b50505050565b60015460609080610fd2576007546040516302fa6c9b60e11b8152600260048201526001600160a01b03909116906305f4d936906024015b60006040518083038186803b158015610f9657600080fd5b505afa158015610faa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261099c9190810190612065565b6007546001600160a01b0316630c3501be84610fee84826117c3565b610ff887866118f9565b6040518463ffffffff1660e01b8152600401610f7e9392919061230b565b600061069f8260015461192f565b600080516020612512833981519152546001600160a01b0316336001600160a01b0316146110645760405162461bcd60e51b8152600401610725906122e3565b7f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e380546001600160a01b03199081166001600160a01b03988916179091557fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc780548216968816969096179095557fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2ba880548616948716949094179093557fa856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa3975980548516928616929092179091557f825eb4cda6b8b44578c55770496c59e6dc3cf2235f690bcdaf51a61898ceb28480548416918516919091179055600780549092169216919091179055600b6020526103e87f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf556103847fa50eece07c7db1631545c0069bd8f5f54d5935e215d59097edf258a44ba91634556103207f64c15cc42be7899b001f818cf4433057002112c418d1d3a67cd5cb453051d33e556102bc7f12d0c11577e2f0950f57c455c117796550b79f444811db8ba2f69c57b646c784556102587febae6141bae5521e99e0a8d610356b0f501fea54980b59c84841db43ba7204f4556101f47f0387e9d1203691d8e3362a7e4c6723de358a4010d7f31ecbec3fbfc61d1c75fc556101907ff5559028dc9ba50d75343c779b2f75e13a84a14662932fc67a486f263ca31a965561012c7f71f482bdabd1ea844d62c952b094e632959690d7448ca2aab34034ec9856935855600960005260c87fe12d5ff10640a555479d85b7ab5f83b5dbd3cf6ac615eec77e24e0984b75a03855565b6112cc611ccc565b61069f600154836117c3565b6000828152600460205260409020546001600160a01b03161561132e5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610725565b60008054908061133d83612474565b90915550506001600160a01b038316600090815260036020526040902080546fffffffffffffffffffffffffffffffff19811660016001600160801b0392831681019092161790915581146113d7576001600160a01b038316600090815260036020526040902080546001600160c01b038116600160c01b918290046001600160401b039081166001810190911690920217909155611423565b6001600160a01b0383166000908152600360205260409020805467ffffffffffffffff60801b198116600160801b918290046001600160401b0390811660018101909116909202179091555b5060008281526004602052604080822080546001600160a01b0319166001600160a01b03871690811790915590518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b6000818152600460205260409020546001600160a01b038481169116146114d35760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b6044820152606401610725565b6001600160a01b038316600090815260036020526040812080546001600160801b03169161150083612413565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b0384166000908152600360205260408120805490921692506115488361244d565b82546001600160801b039182166101009390930a928302919092021990911617905550600081815260056020908152604080832080546001600160a01b0319908116909155600490925280832080546001600160a01b038781169190941681179091559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600081600114156115ec57506127105b81600214156115fa5750612af85b81600314156116085750612e7c5b8160041415611616575061319c5b816005141561162457506134585b816006141561163257506136b05b816007141561164057506138a45b816008141561164e5750613a345b816009141561165c5750613b605b919050565b6000818152600460205260409020546001600160a01b0390811690831681146116b85760405162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b6044820152606401610725565b6000828152600460205260409020546001600160a01b03166117095760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610725565b60008054908061171883612436565b90915550506001600160a01b038116600090815260036020526040812080546001600160801b03169161174a83612413565b82546001600160801b039182166101009390930a92830291909202199091161790555060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4505050565b6117cb611ccc565b826118075760405162461bcd60e51b815260206004820152600c60248201526b1cd95959081b9bdd081cd95d60a21b6044820152606401610725565b611811828461192f565b156118265761181f82611989565b905061069f565b6040518060c00160405280611844848664131155915360da1b6119fc565b815260200161185b84866312d2539160e21b6119fc565b8152602001611876848667135055115492505360c21b6119fc565b815260200161188f84866552415249545960d01b6119fc565b81526020016118a98486665155414c49545960c81b6119fc565b81526020016118c38486661153115351539560ca1b611ac0565b9052905060006118d283611b77565b905080156118f2576118e581600a612385565b6020830152600060808301525b5092915050565b600061271083111561190d5750600461069f565b611917838361192f565b156119265761181f8383611c23565b50600292915050565b60008061193b83611c67565b905060005b600981101561198157611955816104e26123b1565b61195f9083612385565b85141561196f5760019250611981565b8061197981612474565b915050611940565b505092915050565b611991611ccc565b600061199f6104e28461239d565b6119aa906001612385565b90506000816119ba81600a6123b1565b6119c49190612385565b90506040518060c001604052808281526020018281526020018281526020018281526020018281526020018281525092505050919050565b6040805160208101859052908101839052606081018290526000908190620f4240906080016040516020818303038152906040528051906020012060001c611a44919061248f565b611a4f906001612385565b905062046a358111611a6557600191505061099c565b6208118d8111611a7957600291505061099c565b620af6088111611a8d57600391505061099c565b620d17a68111611aa157600491505061099c565b620e76678111611ab557600591505061099c565b506006949350505050565b6000611acd60048561248f565b60031415611af157611aea848466504f54454e435960c81b6119fc565b905061099c565b604080516020810186905290810184905260608101839052600090620f4240906080016040516020818303038152906040528051906020012060001c611b37919061248f565b611b42906001612385565b90506207a1208111611b5857600191505061099c565b611b6360058261248f565b611b6e906002612385565b95945050505050565b60006127108211611b8a57506000919050565b612af88211611b9b57506001919050565b612e7c8211611bac57506002919050565b61319c8211611bbd57506003919050565b6134588211611bce57506004919050565b6136b08211611bdf57506005919050565b6138a48211611bf057506006919050565b613a348211611c0157506007919050565b613b608211611c1257506008919050565b613c28821161165c57506009919050565b600080611c326104e28561239d565b611c3d906001612385565b9050611c4a6001826123d0565b611c55826005612385565b611c5f9190612385565b949350505050565b60006104e282604051602001611c9e9181526040602082018190526007908201526614d41150d2505360ca1b606082015260800190565b6040516020818303038152906040528051906020012060001c611cc1919061248f565b61069f906001612385565b6040518060c001604052806006906020820280368337509192915050565b80356001600160a01b038116811461165c57600080fd5b600060208284031215611d1357600080fd5b61099c82611cea565b60008060408385031215611d2f57600080fd5b611d3883611cea565b9150611d4660208401611cea565b90509250929050565b60008060008060008060c08789031215611d6857600080fd5b611d7187611cea565b9550611d7f60208801611cea565b9450611d8d60408801611cea565b9350611d9b60608801611cea565b9250611da960808801611cea565b9150611db760a08801611cea565b90509295509295509295565b600080600060608486031215611dd857600080fd5b611de184611cea565b9250611def60208501611cea565b9150604084013590509250925092565b60008060008060808587031215611e1557600080fd5b611e1e85611cea565b9350611e2c60208601611cea565b92506040850135915060608501356001600160401b03811115611e4e57600080fd5b8501601f81018713611e5f57600080fd5b8035611e72611e6d8261235e565b61232e565b818152886020838501011115611e8757600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215611ebc57600080fd5b611ec583611cea565b915060208301358015158114611eda57600080fd5b809150509250929050565b600080600060608486031215611efa57600080fd5b611f0384611cea565b92506020840135915060408401356001600160401b0381168114611f2657600080fd5b809150509250925092565b60008060408385031215611f4457600080fd5b611f4d83611cea565b946020939093013593505050565b600080600060608486031215611f7057600080fd5b611f7984611cea565b95602085013595506040909401359392505050565b600060c08284031215611fa057600080fd5b82601f830112611faf57600080fd5b60405160c081018181106001600160401b0382111715611fd157611fd16124e5565b604052808360c08101861015611fe657600080fd5b6000805b600681101561201f5782516001600160b01b03198116811461200a578283fd5b84526020938401939290920191600101611fea565b50929695505050505050565b60006020828403121561203d57600080fd5b813561099c816124fb565b60006020828403121561205a57600080fd5b815161099c816124fb565b60006020828403121561207757600080fd5b81516001600160401b0381111561208d57600080fd5b8201601f8101841361209e57600080fd5b80516120ac611e6d8261235e565b8181528560208385010111156120c157600080fd5b611b6e8260208301602086016123e7565b6000602082840312156120e457600080fd5b5035919050565b6000602082840312156120fd57600080fd5b5051919050565b6000806040838503121561211757600080fd5b82359150611d4660208401611cea565b6000806040838503121561213a57600080fd5b823591506020808401356001600160401b038082111561215957600080fd5b818601915086601f83011261216d57600080fd5b81358181111561217f5761217f6124e5565b8060051b915061219084830161232e565b8181528481019084860184860187018b10156121ab57600080fd5b600095505b838610156121ce5780358352600195909501949186019186016121b0565b508096505050505050509250929050565b8060005b6006811015610f405781518452602093840193909101906001016121e3565b6000815180845261221a8160208601602086016123e7565b601f01601f19169290920160200192915050565b600082516122408184602087016123e7565b9190910192915050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061227d90830184612202565b9695505050505050565b60c08101818360005b60068110156122b95781516001600160b01b031916835260209283019290910190600101612290565b50505092915050565b60c0810161069f82846121df565b60208152600061099c6020830184612202565b6020808252600e908201526d1b9bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b838152610100810161232060208301856121df565b8260e0830152949350505050565b604051601f8201601f191681016001600160401b0381118282101715612356576123566124e5565b604052919050565b60006001600160401b03821115612377576123776124e5565b50601f01601f191660200190565b60008219821115612398576123986124a3565b500190565b6000826123ac576123ac6124b9565b500490565b60008160001904831182151516156123cb576123cb6124a3565b500290565b6000828210156123e2576123e26124a3565b500390565b60005b838110156124025781810151838201526020016123ea565b83811115610f405750506000910152565b60006001600160801b0382168061242c5761242c6124a3565b6000190192915050565b600081612445576124456124a3565b506000190190565b60006001600160801b038083168181141561246a5761246a6124a3565b6001019392505050565b6000600019821415612488576124886124a3565b5060010190565b60008261249e5761249e6124b9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610e0a57600080fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a2646970667358221220c0cf5c0d8eea9d8463269e25dc4d40ddb746c3dec80f83c3bd6a5c521b7fa90b64736f6c63430008070033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021c5760003560e01c806370a0823111610125578063b88d4fde116100ad578063cd5d21181161007c578063cd5d2118146105b8578063d4d46e50146105db578063e1dc0761146105ee578063e985e9c51461060e578063eb1d28bb1461063c57600080fd5b8063b88d4fde1461056c578063c87b56dd1461057f578063cba57e3814610592578063cc2a9a5b146105a557600080fd5b80638da5cb5b116100f45780638da5cb5b1461051257806395d89b411461051a578063a22cb4651461053e578063a9059cbb14610551578063b13038a11461056457600080fd5b806370a082311461049a57806379cc6790146104cc5780637b303965146104df5780638ada6b0f146104ff57600080fd5b80631fe543e3116101a857806342842e0e1161017757806342842e0e146103d8578063468f9b14146103eb5780636352211e146103f457806368a6cdf21461041d57806369ebe78e1461049157600080fd5b80631fe543e31461038c57806323b872dd1461039f57806332ed5391146103b257806335599310146103c557600080fd5b80630b44a218116101ef5780630b44a218146102dd5780631015805b146102f0578063156e29f61461033757806318160ddd1461034a5780631d02f7b81461035357600080fd5b806301ffc9a71461022157806306fdde0314610249578063081812fc14610287578063095ea7b3146102c8575b600080fd5b61023461022f36600461202b565b61066e565b60405190151581526020015b60405180910390f35b61027a604051806040016040528060128152602001714d6574612026204d61676963204974656d7360701b81525081565b60405161024091906122d0565b6102b06102953660046120d2565b6005602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610240565b6102db6102d6366004611f31565b6106a5565b005b6102db6102eb366004611ea9565b61078a565b6103296102fe366004611d01565b6001600160a01b0316600090815260036020526040902054600160c01b90046001600160401b031690565b604051908152602001610240565b610329610345366004611f5b565b6107f2565b61032960005481565b610329610361366004611d01565b6001600160a01b0316600090815260036020526040902054600160801b90046001600160401b031690565b6102db61039a366004612127565b610861565b6102346103ad366004611dc3565b6108db565b6102db6103c0366004611ee5565b6109a3565b6103296103d3366004612104565b610a0b565b6102db6103e6366004611dc3565b610a79565b61032960015481565b6102b06104023660046120d2565b6004602052600090815260409020546001600160a01b031681565b61046261042b366004611d01565b6003602052600090815260409020546001600160801b038116906001600160401b03600160801b8204811691600160c01b90041683565b604080516001600160801b0390941684526001600160401b039283166020850152911690820152606001610240565b61032960095481565b6103296104a8366004611d01565b6001600160a01b03166000908152600360205260409020546001600160801b031690565b6102346104da366004611f31565b610a99565b6104f26104ed3660046120d2565b610adb565b6040516102409190612287565b6007546102b0906001600160a01b031681565b6102b0610bd7565b61027a604051806040016040528060058152602001644954454d5360d81b81525081565b6102db61054c366004611ea9565b610bf4565b61023461055f366004611f31565b610c60565b6102db610cbd565b6102db61057a366004611dff565b610e0d565b61027a61058d3660046120d2565b610f46565b6102346105a03660046120d2565b611016565b6102db6105b3366004611d4f565b611024565b6102346105c6366004611d01565b60026020526000908152604090205460ff1681565b6008546102b0906001600160a01b031681565b6106016105fc3660046120d2565b6112c4565b60405161024091906122c2565b61023461061c366004611d1c565b600660209081526000928352604080842090915290825290205460ff1681565b60085461065690600160a01b90046001600160401b031681565b6040516001600160401b039091168152602001610240565b60006380ac58cd60e01b6001600160e01b03198316148061069f5750635b5e139f60e01b6001600160e01b03198316145b92915050565b6000818152600460205260409020546001600160a01b0316338114806106ee57506001600160a01b038116600090815260066020908152604080832033845290915290205460ff165b61072e5760405162461bcd60e51b815260206004820152600c60248201526b1393d517d054141493d5915160a21b60448201526064015b60405180910390fd5b60008281526005602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b336107a16000805160206125128339815191525490565b6001600160a01b0316146107c75760405162461bcd60e51b8152600401610725906122e3565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b3360009081526002602052604081205460ff166108215760405162461bcd60e51b8152600401610725906122e3565b60005b838110156108595760005461083a906001612385565b91506108478583856112d8565b8061085181612474565b915050610824565b509392505050565b6008546001600160a01b031633146108a95760405162461bcd60e51b815260206004820152600b60248201526a1b9bdd08185b1b1bddd95960aa1b6044820152606401610725565b600154156108b657600080fd5b806000815181106108c9576108c96124cf565b60200260200101516001819055505050565b6000336001600160a01b038516148061090a57506000828152600560205260409020546001600160a01b031633145b8061093857506001600160a01b038416600090815260066020908152604080832033845290915290205460ff165b8061095257503360009081526002602052604090205460ff165b61098d5760405162461bcd60e51b815260206004820152600c60248201526b1393d517d054141493d5915160a21b6044820152606401610725565b61099884848461147e565b5060015b9392505050565b600080516020612512833981519152546001600160a01b0316336001600160a01b0316146109d057600080fd5b600880546009939093556001600160401b03909116600160a01b026001600160e01b03199092166001600160a01b0390931692909217179055565b3360009081526002602052604081205460ff16610a3a5760405162461bcd60e51b8152600401610725906122e3565b6000838152600b60205260408120805491610a5483612436565b91905055610a61846115dc565b610a6b9190612385565b905061069f828260026112d8565b610a9483838360405180602001604052806000815250610e0d565b505050565b3360009081526002602052604081205460ff16610ac85760405162461bcd60e51b8152600401610725906122e3565b610ad28383611661565b50600192915050565b610ae3611ccc565b60015480610b225760405162461bcd60e51b815260206004820152600c60248201526b139bdd081c995d99585b195960a21b6044820152606401610725565b600a60006127108511610b3f57610b3a60048661248f565b610b42565b60095b81526020810191909152604001600020546001600160a01b031663ecac6724610b6b83866117c3565b6040518263ffffffff1660e01b8152600401610b8791906122c2565b60c06040518083038186803b158015610b9f57600080fd5b505afa158015610bb3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c9190611f8e565b6000610bef6000805160206125128339815191525490565b905090565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6000818152600460205260408120546001600160a01b03163314610cb25760405162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b6044820152606401610725565b610ad233848461147e565b600080516020612512833981519152546001600160a01b0316336001600160a01b031614610d185760405162461bcd60e51b81526020600482015260086024820152670dcdee840c2eae8d60c31b6044820152606401610725565b60015415610d5c5760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e481c995c5d595cdd1959607a1b6044820152606401610725565b6008546009546040516305d3b1d360e41b81526004810191909152600160a01b82046001600160401b031660248201526003604482015262030d406064820152600160848201526001600160a01b0390911690635d3b1d309060a401602060405180830381600087803b158015610dd257600080fd5b505af1158015610de6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0a91906120eb565b50565b610e188484846108db565b506001600160a01b0383163b15610f40576000836001600160a01b031663150b7a023360008686604051602401610e52949392919061224a565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610e8b919061222e565b600060405180830381855afa9150503d8060008114610ec6576040519150601f19603f3d011682016040523d82523d6000602084013e610ecb565b606091505b50915050600081806020019051810190610ee59190612048565b9050630a85bd0160e11b6001600160e01b0319821614610f3d5760405162461bcd60e51b81526020600482015260136024820152722727aa2fa2a9219b9918afa922a1a2a4ab22a960691b6044820152606401610725565b50505b50505050565b60015460609080610fd2576007546040516302fa6c9b60e11b8152600260048201526001600160a01b03909116906305f4d936906024015b60006040518083038186803b158015610f9657600080fd5b505afa158015610faa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261099c9190810190612065565b6007546001600160a01b0316630c3501be84610fee84826117c3565b610ff887866118f9565b6040518463ffffffff1660e01b8152600401610f7e9392919061230b565b600061069f8260015461192f565b600080516020612512833981519152546001600160a01b0316336001600160a01b0316146110645760405162461bcd60e51b8152600401610725906122e3565b7f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e380546001600160a01b03199081166001600160a01b03988916179091557fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc780548216968816969096179095557fbff4442b8ed600beeb8e26b1279a0f0d14c6edfaec26d968ee13c86f7d4c2ba880548616948716949094179093557fa856840544dc26124927add067d799967eac11be13e14d82cc281ea46fa3975980548516928616929092179091557f825eb4cda6b8b44578c55770496c59e6dc3cf2235f690bcdaf51a61898ceb28480548416918516919091179055600780549092169216919091179055600b6020526103e87f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf556103847fa50eece07c7db1631545c0069bd8f5f54d5935e215d59097edf258a44ba91634556103207f64c15cc42be7899b001f818cf4433057002112c418d1d3a67cd5cb453051d33e556102bc7f12d0c11577e2f0950f57c455c117796550b79f444811db8ba2f69c57b646c784556102587febae6141bae5521e99e0a8d610356b0f501fea54980b59c84841db43ba7204f4556101f47f0387e9d1203691d8e3362a7e4c6723de358a4010d7f31ecbec3fbfc61d1c75fc556101907ff5559028dc9ba50d75343c779b2f75e13a84a14662932fc67a486f263ca31a965561012c7f71f482bdabd1ea844d62c952b094e632959690d7448ca2aab34034ec9856935855600960005260c87fe12d5ff10640a555479d85b7ab5f83b5dbd3cf6ac615eec77e24e0984b75a03855565b6112cc611ccc565b61069f600154836117c3565b6000828152600460205260409020546001600160a01b03161561132e5760405162461bcd60e51b815260206004820152600e60248201526d1053149150511657d3525395115160921b6044820152606401610725565b60008054908061133d83612474565b90915550506001600160a01b038316600090815260036020526040902080546fffffffffffffffffffffffffffffffff19811660016001600160801b0392831681019092161790915581146113d7576001600160a01b038316600090815260036020526040902080546001600160c01b038116600160c01b918290046001600160401b039081166001810190911690920217909155611423565b6001600160a01b0383166000908152600360205260409020805467ffffffffffffffff60801b198116600160801b918290046001600160401b0390811660018101909116909202179091555b5060008281526004602052604080822080546001600160a01b0319166001600160a01b03871690811790915590518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a4505050565b6000818152600460205260409020546001600160a01b038481169116146114d35760405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b6044820152606401610725565b6001600160a01b038316600090815260036020526040812080546001600160801b03169161150083612413565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b0384166000908152600360205260408120805490921692506115488361244d565b82546001600160801b039182166101009390930a928302919092021990911617905550600081815260056020908152604080832080546001600160a01b0319908116909155600490925280832080546001600160a01b038781169190941681179091559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600081600114156115ec57506127105b81600214156115fa5750612af85b81600314156116085750612e7c5b8160041415611616575061319c5b816005141561162457506134585b816006141561163257506136b05b816007141561164057506138a45b816008141561164e5750613a345b816009141561165c5750613b605b919050565b6000818152600460205260409020546001600160a01b0390811690831681146116b85760405162461bcd60e51b81526020600482015260096024820152682727aa2fa7aba722a960b91b6044820152606401610725565b6000828152600460205260409020546001600160a01b03166117095760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610725565b60008054908061171883612436565b90915550506001600160a01b038116600090815260036020526040812080546001600160801b03169161174a83612413565b82546001600160801b039182166101009390930a92830291909202199091161790555060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a4505050565b6117cb611ccc565b826118075760405162461bcd60e51b815260206004820152600c60248201526b1cd95959081b9bdd081cd95d60a21b6044820152606401610725565b611811828461192f565b156118265761181f82611989565b905061069f565b6040518060c00160405280611844848664131155915360da1b6119fc565b815260200161185b84866312d2539160e21b6119fc565b8152602001611876848667135055115492505360c21b6119fc565b815260200161188f84866552415249545960d01b6119fc565b81526020016118a98486665155414c49545960c81b6119fc565b81526020016118c38486661153115351539560ca1b611ac0565b9052905060006118d283611b77565b905080156118f2576118e581600a612385565b6020830152600060808301525b5092915050565b600061271083111561190d5750600461069f565b611917838361192f565b156119265761181f8383611c23565b50600292915050565b60008061193b83611c67565b905060005b600981101561198157611955816104e26123b1565b61195f9083612385565b85141561196f5760019250611981565b8061197981612474565b915050611940565b505092915050565b611991611ccc565b600061199f6104e28461239d565b6119aa906001612385565b90506000816119ba81600a6123b1565b6119c49190612385565b90506040518060c001604052808281526020018281526020018281526020018281526020018281526020018281525092505050919050565b6040805160208101859052908101839052606081018290526000908190620f4240906080016040516020818303038152906040528051906020012060001c611a44919061248f565b611a4f906001612385565b905062046a358111611a6557600191505061099c565b6208118d8111611a7957600291505061099c565b620af6088111611a8d57600391505061099c565b620d17a68111611aa157600491505061099c565b620e76678111611ab557600591505061099c565b506006949350505050565b6000611acd60048561248f565b60031415611af157611aea848466504f54454e435960c81b6119fc565b905061099c565b604080516020810186905290810184905260608101839052600090620f4240906080016040516020818303038152906040528051906020012060001c611b37919061248f565b611b42906001612385565b90506207a1208111611b5857600191505061099c565b611b6360058261248f565b611b6e906002612385565b95945050505050565b60006127108211611b8a57506000919050565b612af88211611b9b57506001919050565b612e7c8211611bac57506002919050565b61319c8211611bbd57506003919050565b6134588211611bce57506004919050565b6136b08211611bdf57506005919050565b6138a48211611bf057506006919050565b613a348211611c0157506007919050565b613b608211611c1257506008919050565b613c28821161165c57506009919050565b600080611c326104e28561239d565b611c3d906001612385565b9050611c4a6001826123d0565b611c55826005612385565b611c5f9190612385565b949350505050565b60006104e282604051602001611c9e9181526040602082018190526007908201526614d41150d2505360ca1b606082015260800190565b6040516020818303038152906040528051906020012060001c611cc1919061248f565b61069f906001612385565b6040518060c001604052806006906020820280368337509192915050565b80356001600160a01b038116811461165c57600080fd5b600060208284031215611d1357600080fd5b61099c82611cea565b60008060408385031215611d2f57600080fd5b611d3883611cea565b9150611d4660208401611cea565b90509250929050565b60008060008060008060c08789031215611d6857600080fd5b611d7187611cea565b9550611d7f60208801611cea565b9450611d8d60408801611cea565b9350611d9b60608801611cea565b9250611da960808801611cea565b9150611db760a08801611cea565b90509295509295509295565b600080600060608486031215611dd857600080fd5b611de184611cea565b9250611def60208501611cea565b9150604084013590509250925092565b60008060008060808587031215611e1557600080fd5b611e1e85611cea565b9350611e2c60208601611cea565b92506040850135915060608501356001600160401b03811115611e4e57600080fd5b8501601f81018713611e5f57600080fd5b8035611e72611e6d8261235e565b61232e565b818152886020838501011115611e8757600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215611ebc57600080fd5b611ec583611cea565b915060208301358015158114611eda57600080fd5b809150509250929050565b600080600060608486031215611efa57600080fd5b611f0384611cea565b92506020840135915060408401356001600160401b0381168114611f2657600080fd5b809150509250925092565b60008060408385031215611f4457600080fd5b611f4d83611cea565b946020939093013593505050565b600080600060608486031215611f7057600080fd5b611f7984611cea565b95602085013595506040909401359392505050565b600060c08284031215611fa057600080fd5b82601f830112611faf57600080fd5b60405160c081018181106001600160401b0382111715611fd157611fd16124e5565b604052808360c08101861015611fe657600080fd5b6000805b600681101561201f5782516001600160b01b03198116811461200a578283fd5b84526020938401939290920191600101611fea565b50929695505050505050565b60006020828403121561203d57600080fd5b813561099c816124fb565b60006020828403121561205a57600080fd5b815161099c816124fb565b60006020828403121561207757600080fd5b81516001600160401b0381111561208d57600080fd5b8201601f8101841361209e57600080fd5b80516120ac611e6d8261235e565b8181528560208385010111156120c157600080fd5b611b6e8260208301602086016123e7565b6000602082840312156120e457600080fd5b5035919050565b6000602082840312156120fd57600080fd5b5051919050565b6000806040838503121561211757600080fd5b82359150611d4660208401611cea565b6000806040838503121561213a57600080fd5b823591506020808401356001600160401b038082111561215957600080fd5b818601915086601f83011261216d57600080fd5b81358181111561217f5761217f6124e5565b8060051b915061219084830161232e565b8181528481019084860184860187018b10156121ab57600080fd5b600095505b838610156121ce5780358352600195909501949186019186016121b0565b508096505050505050509250929050565b8060005b6006811015610f405781518452602093840193909101906001016121e3565b6000815180845261221a8160208601602086016123e7565b601f01601f19169290920160200192915050565b600082516122408184602087016123e7565b9190910192915050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061227d90830184612202565b9695505050505050565b60c08101818360005b60068110156122b95781516001600160b01b031916835260209283019290910190600101612290565b50505092915050565b60c0810161069f82846121df565b60208152600061099c6020830184612202565b6020808252600e908201526d1b9bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b838152610100810161232060208301856121df565b8260e0830152949350505050565b604051601f8201601f191681016001600160401b0381118282101715612356576123566124e5565b604052919050565b60006001600160401b03821115612377576123776124e5565b50601f01601f191660200190565b60008219821115612398576123986124a3565b500190565b6000826123ac576123ac6124b9565b500490565b60008160001904831182151516156123cb576123cb6124a3565b500290565b6000828210156123e2576123e26124a3565b500390565b60005b838110156124025781810151838201526020016123ea565b83811115610f405750506000910152565b60006001600160801b0382168061242c5761242c6124a3565b6000190192915050565b600081612445576124456124a3565b506000190190565b60006001600160801b038083168181141561246a5761246a6124a3565b6001019392505050565b6000600019821415612488576124886124a3565b5060010190565b60008261249e5761249e6124b9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b031981168114610e0a57600080fdfeb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a2646970667358221220c0cf5c0d8eea9d8463269e25dc4d40ddb746c3dec80f83c3bd6a5c521b7fa90b64736f6c63430008070033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.