Overview
Max Total Supply
10,000,000,000 POL
Holders
100,587 ( 0.002%)
Total Transfers
-
Market
Price
$0.6015 @ 1.002339 POL (-3.91%)
Onchain Market Cap
$6,014,780,000.00
Circulating Supply Market Cap
$1,176,814,161.00
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Name:
MRC20
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity 0.5.17; import "./BaseERC20NoSig.sol"; /** * @title Polygon Ecosystem Token contract * @notice This contract is an ECR20 like wrapper over native gas token transfers on the Polygon PoS chain * @dev ERC20 methods have been made payable while keeping their method signature same as other ChildERC20s on PoS */ contract MRC20 is BaseERC20NoSig { event Transfer(address indexed from, address indexed to, uint256 value); uint256 public currentSupply = 0; uint8 private constant DECIMALS = 18; bool isInitialized; uint256 locked = 0; // append to storage layout modifier nonReentrant() { require(locked == 0, "reentrancy"); locked = 1; _; locked = 0; } constructor() public {} function initialize(address _childChain, address _token) public { require(!isInitialized, "The contract is already initialized"); isInitialized = true; token = _token; _transferOwnership(_childChain); } function setParent(address) public { revert("Disabled feature"); } function deposit(address user, uint256 amount) public onlyOwner { // check for amount and user require( amount > 0 && user != address(0x0), "Insufficient amount or invalid user" ); // input balance uint256 input1 = balanceOf(user); currentSupply = currentSupply.add(amount); // transfer amount to user // not reenterant since this method is only called by commitState on StateReceiver which is onlySystem _nativeTransfer(user, amount); // deposit events emit Deposit(token, user, amount, input1, balanceOf(user)); } function withdraw(uint256 amount) public payable { address user = msg.sender; // input balance uint256 input = balanceOf(user); currentSupply = currentSupply.sub(amount); // check for amount require( amount > 0 && msg.value == amount, "Insufficient amount" ); // withdraw event emit Withdraw(token, user, amount, input, balanceOf(user)); } function name() public pure returns (string memory) { return "Polygon Ecosystem Token"; } function symbol() public pure returns (string memory) { return "POL"; } function decimals() public pure returns (uint8) { return DECIMALS; } function totalSupply() public pure returns (uint256) { return 10000000000 * 10**uint256(DECIMALS); } function balanceOf(address account) public view returns (uint256) { return account.balance; } /// @dev Function that is called when a user or another contract wants to transfer funds. /// @param to Address of token receiver. /// @param value Number of tokens to transfer. /// @return Returns success of function call. function transfer(address to, uint256 value) public payable returns (bool) { if (msg.value != value) { return false; } return _transferFrom(msg.sender, to, value); } /** * @dev _transfer is invoked by _transferFrom method that is inherited from BaseERC20. * This enables us to transfer Polygon ETH between users while keeping the interface same as that of an ERC20 Token. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(recipient != address(this), "can't send to MRC20"); _nativeTransfer(recipient, amount); emit Transfer(sender, recipient, amount); } // @notice method to transfer native asset to receiver (nonReentrant) // @dev 5000 gas is forwarded in the call to receiver // @dev msg.value checks (if req), emitting logs are handled seperately // @param receiver address to transfer native token to // @param amount amount of native token to transfer function _nativeTransfer(address receiver, uint256 amount) internal nonReentrant { uint256 txGasLimit = 5000; (bool success, bytes memory ret) = receiver.call.value(amount).gas(txGasLimit)(""); if (!success) { assembly { revert(add(ret, 0x20), mload(ret)) // bubble up revert } } } }
pragma solidity ^0.5.2; import "./ChildToken.sol"; contract BaseERC20NoSig is ChildToken { event Deposit( address indexed token, address indexed from, uint256 amount, uint256 input1, uint256 output1 ); event Withdraw( address indexed token, address indexed from, uint256 amount, uint256 input1, uint256 output1 ); event LogTransfer( address indexed token, address indexed from, address indexed to, uint256 amount, uint256 input1, uint256 input2, uint256 output1, uint256 output2 ); constructor() public {} function transferWithSig( bytes calldata sig, uint256 amount, bytes32 data, uint256 expiration, address to ) external returns (address from) { revert("Disabled feature"); } function balanceOf(address account) external view returns (uint256); function _transfer(address sender, address recipient, uint256 amount) internal; /// @param from Address from where tokens are withdrawn. /// @param to Address to where tokens are sent. /// @param value Number of tokens to transfer. /// @return Returns success of function call. function _transferFrom(address from, address to, uint256 value) internal returns (bool) { uint256 input1 = this.balanceOf(from); uint256 input2 = this.balanceOf(to); _transfer(from, to, value); emit LogTransfer( token, from, to, value, input1, input2, this.balanceOf(from), this.balanceOf(to) ); return true; } }
pragma solidity ^0.5.2; import "openzeppelin-solidity/contracts/math/SafeMath.sol"; import "openzeppelin-solidity/contracts/ownership/Ownable.sol"; import "./misc/LibTokenTransferOrder.sol"; contract ChildToken is Ownable, LibTokenTransferOrder { using SafeMath for uint256; // ERC721/ERC20 contract token address on root chain address public token; address public childChain; address public parent; mapping(bytes32 => bool) public disabledHashes; modifier onlyChildChain() { require( msg.sender == childChain, "Child token: caller is not the child chain contract" ); _; } event LogFeeTransfer( address indexed token, address indexed from, address indexed to, uint256 amount, uint256 input1, uint256 input2, uint256 output1, uint256 output2 ); event ChildChainChanged( address indexed previousAddress, address indexed newAddress ); event ParentChanged( address indexed previousAddress, address indexed newAddress ); function deposit(address user, uint256 amountOrTokenId) public; function withdraw(uint256 amountOrTokenId) public payable; function ecrecovery(bytes32 hash, bytes memory sig) public pure returns (address result) { bytes32 r; bytes32 s; uint8 v; if (sig.length != 65) { return address(0x0); } assembly { r := mload(add(sig, 32)) s := mload(add(sig, 64)) v := and(mload(add(sig, 65)), 255) } // https://github.com/ethereum/go-ethereum/issues/2053 if (v < 27) { v += 27; } if (v != 27 && v != 28) { return address(0x0); } // get address out of hash and signature result = ecrecover(hash, v, r, s); // ecrecover returns zero on error require(result != address(0x0), "Error in ecrecover"); } // change child chain address function changeChildChain(address newAddress) public onlyOwner { require( newAddress != address(0), "Child token: new child address is the zero address" ); emit ChildChainChanged(childChain, newAddress); childChain = newAddress; } // change parent address function setParent(address newAddress) public onlyOwner { require( newAddress != address(0), "Child token: new parent address is the zero address" ); emit ParentChanged(parent, newAddress); parent = newAddress; } }
pragma solidity ^0.5.2; /** * @title SafeMath * @dev Unsigned math operations with safety checks that revert on error */ library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } }
pragma solidity ^0.5.2; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ contract Ownable { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev The Ownable constructor sets the original `owner` of the contract to the sender * account. */ constructor () internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner()); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. * @notice Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Allows the current owner to transfer control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
pragma solidity ^0.5.2; import {LibEIP712Domain} from "./EIP712.sol"; contract LibTokenTransferOrder is LibEIP712Domain { string internal constant EIP712_TOKEN_TRANSFER_ORDER_SCHEMA = "TokenTransferOrder(address spender,uint256 tokenIdOrAmount,bytes32 data,uint256 expiration)"; bytes32 public constant EIP712_TOKEN_TRANSFER_ORDER_SCHEMA_HASH = keccak256( abi.encodePacked(EIP712_TOKEN_TRANSFER_ORDER_SCHEMA) ); struct TokenTransferOrder { address spender; uint256 tokenIdOrAmount; bytes32 data; uint256 expiration; } function getTokenTransferOrderHash( address spender, uint256 tokenIdOrAmount, bytes32 data, uint256 expiration ) public view returns (bytes32 orderHash) { orderHash = hashEIP712Message( hashTokenTransferOrder(spender, tokenIdOrAmount, data, expiration) ); } function hashTokenTransferOrder( address spender, uint256 tokenIdOrAmount, bytes32 data, uint256 expiration ) internal pure returns (bytes32 result) { bytes32 schemaHash = EIP712_TOKEN_TRANSFER_ORDER_SCHEMA_HASH; // Assembly for more efficiently computing: // return keccak256(abi.encode( // schemaHash, // spender, // tokenIdOrAmount, // data, // expiration // )); assembly { // Load free memory pointer let memPtr := mload(64) mstore(memPtr, schemaHash) // hash of schema mstore( add(memPtr, 32), and(spender, 0xffffffffffffffffffffffffffffffffffffffff) ) // spender mstore(add(memPtr, 64), tokenIdOrAmount) // tokenIdOrAmount mstore(add(memPtr, 96), data) // hash of data mstore(add(memPtr, 128), expiration) // expiration // Compute hash result := keccak256(memPtr, 160) } return result; } }
pragma solidity ^0.5.2; import {ChainIdMixin} from "../../common/mixin/ChainIdMixin.sol"; contract LibEIP712Domain is ChainIdMixin { string internal constant EIP712_DOMAIN_SCHEMA = "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"; bytes32 public constant EIP712_DOMAIN_SCHEMA_HASH = keccak256( abi.encodePacked(EIP712_DOMAIN_SCHEMA) ); string internal constant EIP712_DOMAIN_NAME = "Polygon Ecosystem Token"; string internal constant EIP712_DOMAIN_VERSION = "2"; uint256 internal constant EIP712_DOMAIN_CHAINID = CHAINID; bytes32 public EIP712_DOMAIN_HASH; constructor() public { EIP712_DOMAIN_HASH = keccak256( abi.encode( EIP712_DOMAIN_SCHEMA_HASH, keccak256(bytes(EIP712_DOMAIN_NAME)), keccak256(bytes(EIP712_DOMAIN_VERSION)), EIP712_DOMAIN_CHAINID, address(this) ) ); } function hashEIP712Message(bytes32 hashStruct) internal view returns (bytes32 result) { return _hashEIP712Message(hashStruct, EIP712_DOMAIN_HASH); } function hashEIP712MessageWithAddress(bytes32 hashStruct, address add) internal view returns (bytes32 result) { bytes32 domainHash = keccak256( abi.encode( EIP712_DOMAIN_SCHEMA_HASH, keccak256(bytes(EIP712_DOMAIN_NAME)), keccak256(bytes(EIP712_DOMAIN_VERSION)), EIP712_DOMAIN_CHAINID, add ) ); return _hashEIP712Message(hashStruct, domainHash); } function _hashEIP712Message(bytes32 hashStruct, bytes32 domainHash) internal pure returns (bytes32 result) { assembly { // Load free memory pointer let memPtr := mload(64) mstore( memPtr, 0x1901000000000000000000000000000000000000000000000000000000000000 ) // EIP191 header mstore(add(memPtr, 2), domainHash) // EIP712 domain hash mstore(add(memPtr, 34), hashStruct) // Hash of struct // Compute hash result := keccak256(memPtr, 66) } } }
pragma solidity ^0.5.2; contract ChainIdMixin { bytes constant public networkId = hex"3A99"; uint256 constant public CHAINID = 15001; }
{ "remappings": [ "openzeppelin-solidity/=node_modules/openzeppelin-solidity/", "solidity-rlp/=node_modules/solidity-rlp/", "@ensdomains/=node_modules/@ensdomains/", "eth-gas-reporter/=node_modules/eth-gas-reporter/", "forge-std/=lib/forge-std/src/", "hardhat/=node_modules/hardhat/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "evmVersion": "istanbul", "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"ChildChainChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"input1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"output1","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"input1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"input2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"output1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"output2","type":"uint256"}],"name":"LogFeeTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"input1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"input2","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"output1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"output2","type":"uint256"}],"name":"LogTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousAddress","type":"address"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"ParentChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"input1","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"output1","type":"uint256"}],"name":"Withdraw","type":"event"},{"constant":true,"inputs":[],"name":"CHAINID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EIP712_DOMAIN_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EIP712_DOMAIN_SCHEMA_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EIP712_TOKEN_TRANSFER_ORDER_SCHEMA_HASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changeChildChain","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"childChain","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"disabledHashes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"sig","type":"bytes"}],"name":"ecrecovery","outputs":[{"internalType":"address","name":"result","type":"address"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenIdOrAmount","type":"uint256"},{"internalType":"bytes32","name":"data","type":"bytes32"},{"internalType":"uint256","name":"expiration","type":"uint256"}],"name":"getTokenTransferOrderHash","outputs":[{"internalType":"bytes32","name":"orderHash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_childChain","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"initialize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"networkId","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"parent","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"setParent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"sig","type":"bytes"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32","name":"data","type":"bytes32"},{"internalType":"uint256","name":"expiration","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"transferWithSig","outputs":[{"internalType":"address","name":"from","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":true,"stateMutability":"payable","type":"function"}]
Contract Creation Code
60806040526000600655600060085534801561001a57600080fd5b50600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3604051806080016040528060528152602001611686605291396040516020018082805190602001908083835b602083106100af5780518252601f199092019160209182019101610090565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528085528251928201929092208285018552601783527f506f6c79676f6e2045636f73797374656d20546f6b656e00000000000000000092820192909252835180850185526001808252601960f91b918301919091528451808301939093527fafdc6b3596f2bc7878c706fa55d5aabb82790c51a37e088a158406cea4025910838601527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060840152613a9960808401523060a0808501919091528551808503909101815260c09093019094528151910120909155506114c391508190506101c36000396000f3fe0x6080604052600436106101b75760003560e01c80638da5cb5b116100ec578063b789543c1161008a578063e614d0d611610064578063e614d0d614610695578063ed9ef524146106aa578063f2fde38b146106dd578063fc0c546a14610710576101b7565b8063b789543c14610626578063cc79f97b1461066b578063e306f77914610680576101b7565b806395d89b41116100c657806395d89b41146105a6578063a9059cbb146105bb578063abceeba2146105e7578063acd06cb3146105fc576101b7565b80638da5cb5b146105535780638f32d59b146105685780639025e64c14610591576101b7565b806347e7ef241161015957806370a082311161013357806370a082311461043c578063715018a61461046f578063771282f61461048457806377d32e9414610499576101b7565b806347e7ef24146103b3578063485cc955146103ec57806360f96a8f14610427576101b7565b806319d27d9c1161019557806319d27d9c146102a25780632e1a7d4d14610356578063313ce5671461037357806342fc47fb1461039e576101b7565b806306fdde03146101bc5780631499c5921461024657806318160ddd1461027b575b600080fd5b3480156101c857600080fd5b506101d1610725565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020b5781810151838201526020016101f3565b50505050905090810190601f1680156102385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025257600080fd5b506102796004803603602081101561026957600080fd5b50356001600160a01b031661075c565b005b34801561028757600080fd5b5061029061079c565b60408051918252519081900360200190f35b3480156102ae57600080fd5b5061033a600480360360a08110156102c557600080fd5b8101906020810181356401000000008111156102e057600080fd5b8201836020820111156102f257600080fd5b8035906020019184600183028401116401000000008311171561031457600080fd5b9193509150803590602081013590604081013590606001356001600160a01b03166107ac565b604080516001600160a01b039092168252519081900360200190f35b6102796004803603602081101561036c57600080fd5b50356107ee565b34801561037f57600080fd5b506103886108c6565b6040805160ff9092168252519081900360200190f35b3480156103aa57600080fd5b5061033a6108cb565b3480156103bf57600080fd5b50610279600480360360408110156103d657600080fd5b506001600160a01b0381351690602001356108da565b3480156103f857600080fd5b506102796004803603604081101561040f57600080fd5b506001600160a01b03813581169160200135166109a8565b34801561043357600080fd5b5061033a610a21565b34801561044857600080fd5b506102906004803603602081101561045f57600080fd5b50356001600160a01b0316610a30565b34801561047b57600080fd5b50610279610a3d565b34801561049057600080fd5b50610290610a98565b3480156104a557600080fd5b5061033a600480360360408110156104bc57600080fd5b813591908101906040810160208201356401000000008111156104de57600080fd5b8201836020820111156104f057600080fd5b8035906020019184600183028401116401000000008311171561051257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a9e945050505050565b34801561055f57600080fd5b5061033a610bc2565b34801561057457600080fd5b5061057d610bd1565b604080519115158252519081900360200190f35b34801561059d57600080fd5b506101d1610be2565b3480156105b257600080fd5b506101d1610c00565b61057d600480360360408110156105d157600080fd5b506001600160a01b038135169060200135610c1d565b3480156105f357600080fd5b50610290610c40565b34801561060857600080fd5b5061057d6004803603602081101561061f57600080fd5b5035610cc9565b34801561063257600080fd5b506102906004803603608081101561064957600080fd5b506001600160a01b038135169060208101359060408101359060600135610cde565b34801561067757600080fd5b50610290610cfd565b34801561068c57600080fd5b50610290610d03565b3480156106a157600080fd5b50610290610d09565b3480156106b657600080fd5b50610279600480360360208110156106cd57600080fd5b50356001600160a01b0316610d53565b3480156106e957600080fd5b506102796004803603602081101561070057600080fd5b50356001600160a01b0316610e05565b34801561071c57600080fd5b5061033a610e22565b60408051808201909152601781527f506f6c79676f6e2045636f73797374656d20546f6b656e000000000000000000602082015290565b6040805162461bcd60e51b815260206004820152601060248201526f44697361626c6564206665617475726560801b604482015290519081900360640190fd5b6b204fce5e3e2502611000000090565b6040805162461bcd60e51b815260206004820152601060248201526f44697361626c6564206665617475726560801b6044820152905160009181900360640190fd5b3360006107fa82610a30565b600654909150610810908463ffffffff610e3116565b600655821580159061082157508234145b610868576040805162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604482015290519081900360640190fd5b6002546001600160a01b0380841691167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f85846108a487610a30565b60408051938452602084019290925282820152519081900360600190a3505050565b601290565b6003546001600160a01b031681565b6108e2610bd1565b6108eb57600080fd5b60008111801561090357506001600160a01b03821615155b61093e5760405162461bcd60e51b815260040180806020018281038252602381526020018061138d6023913960400191505060405180910390fd5b600061094983610a30565b60065490915061095f908363ffffffff610e4616565b60065561096c8383610e58565b6002546001600160a01b0380851691167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f684846108a488610a30565b60075460ff16156109ea5760405162461bcd60e51b815260040180806020018281038252602381526020018061136a6023913960400191505060405180910390fd5b6007805460ff19166001179055600280546001600160a01b0383166001600160a01b0319909116179055610a1d82610f17565b5050565b6004546001600160a01b031681565b6001600160a01b03163190565b610a45610bd1565b610a4e57600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60065481565b6000806000808451604114610ab95760009350505050610bbc565b50505060208201516040830151604184015160ff16601b811015610adb57601b015b8060ff16601b14158015610af357508060ff16601c14155b15610b045760009350505050610bbc565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015610b5b573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b038416610bb8576040805162461bcd60e51b815260206004820152601260248201527122b93937b91034b71032b1b932b1b7bb32b960711b604482015290519081900360640190fd5b5050505b92915050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b604051806040016040528060028152602001613a9960f01b81525081565b6040805180820190915260038152621413d360ea1b602082015290565b6000813414610c2e57506000610bbc565b610c39338484610f85565b9392505050565b6040518060800160405280605b8152602001611434605b91396040516020018082805190602001908083835b60208310610c8b5780518252601f199092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020526000908152604090205460ff1681565b6000610cf4610cef868686866111d2565b61128b565b95945050505050565b613a9981565b60015481565b6040518060800160405280605281526020016113b06052913960405160200180828051906020019080838360208310610c8b5780518252601f199092019160209182019101610c6c565b610d5b610bd1565b610d6457600080fd5b6001600160a01b038116610da95760405162461bcd60e51b81526004018080602001828103825260328152602001806114026032913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f1f9f3556dd336016cdf20adaead7d5c73665dba664b60e8c17e9a4eb91ce1d3990600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b610e0d610bd1565b610e1657600080fd5b610e1f81610f17565b50565b6002546001600160a01b031681565b600082821115610e4057600080fd5b50900390565b600082820183811015610c3957600080fd5b60085415610e9a576040805162461bcd60e51b815260206004820152600a6024820152697265656e7472616e637960b01b604482015290519081900360640190fd5b6001600855604051611388906000906060906001600160a01b038616908490869085818181858888f193505050503d8060008114610ef4576040519150601f19603f3d011682016040523d82523d6000602084013e610ef9565b606091505b509150915081610f0b57805160208201fd5b50506000600855505050565b6001600160a01b038116610f2a57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516370a0823160e01b81526001600160a01b03851660048201529051600091829130916370a08231916024808301926020929190829003018186803b158015610fd057600080fd5b505afa158015610fe4573d6000803e3d6000fd5b505050506040513d6020811015610ffa57600080fd5b5051604080516370a0823160e01b81526001600160a01b0387166004820152905191925060009130916370a08231916024808301926020929190829003018186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b50519050611081868686611299565b600254604080516370a0823160e01b81526001600160a01b03898116600483018190529251818a1694909116917fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c49189918891889130916370a0823191602480820192602092909190829003018186803b1580156110fe57600080fd5b505afa158015611112573d6000803e3d6000fd5b505050506040513d602081101561112857600080fd5b5051604080516370a0823160e01b81526001600160a01b038f166004820152905130916370a08231916024808301926020929190829003018186803b15801561117057600080fd5b505afa158015611184573d6000803e3d6000fd5b505050506040513d602081101561119a57600080fd5b50516040805195865260208601949094528484019290925260608401526080830152519081900360a00190a450600195945050505050565b6000806040518060800160405280605b8152602001611434605b91396040516020018082805190602001908083835b602083106112205780518252601f199092019160209182019101611201565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f1901835280855282519282019290922082526001600160a01b039b909b169a81019a909a5250880196909652505050606084019190915260808301525060a0902090565b6000610bbc82600154611347565b6001600160a01b0382163014156112ed576040805162461bcd60e51b8152602060048201526013602482015272063616e27742073656e6420746f204d5243323606c1b604482015290519081900360640190fd5b6112f78282610e58565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60405161190160f01b815260028101919091526022810191909152604290209056fe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294368696c6420746f6b656e3a206e6577206368696c64206164647265737320697320746865207a65726f2061646472657373546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a723158205f23be7574e70cfc01d0cfd6803b871f92465e9ae4a10fe95ed31ccb810bda3e64736f6c63430005110032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429
Deployed Bytecode
0x6080604052600436106101b75760003560e01c80638da5cb5b116100ec578063b789543c1161008a578063e614d0d611610064578063e614d0d614610695578063ed9ef524146106aa578063f2fde38b146106dd578063fc0c546a14610710576101b7565b8063b789543c14610626578063cc79f97b1461066b578063e306f77914610680576101b7565b806395d89b41116100c657806395d89b41146105a6578063a9059cbb146105bb578063abceeba2146105e7578063acd06cb3146105fc576101b7565b80638da5cb5b146105535780638f32d59b146105685780639025e64c14610591576101b7565b806347e7ef241161015957806370a082311161013357806370a082311461043c578063715018a61461046f578063771282f61461048457806377d32e9414610499576101b7565b806347e7ef24146103b3578063485cc955146103ec57806360f96a8f14610427576101b7565b806319d27d9c1161019557806319d27d9c146102a25780632e1a7d4d14610356578063313ce5671461037357806342fc47fb1461039e576101b7565b806306fdde03146101bc5780631499c5921461024657806318160ddd1461027b575b600080fd5b3480156101c857600080fd5b506101d1610725565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020b5781810151838201526020016101f3565b50505050905090810190601f1680156102385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025257600080fd5b506102796004803603602081101561026957600080fd5b50356001600160a01b031661075c565b005b34801561028757600080fd5b5061029061079c565b60408051918252519081900360200190f35b3480156102ae57600080fd5b5061033a600480360360a08110156102c557600080fd5b8101906020810181356401000000008111156102e057600080fd5b8201836020820111156102f257600080fd5b8035906020019184600183028401116401000000008311171561031457600080fd5b9193509150803590602081013590604081013590606001356001600160a01b03166107ac565b604080516001600160a01b039092168252519081900360200190f35b6102796004803603602081101561036c57600080fd5b50356107ee565b34801561037f57600080fd5b506103886108c6565b6040805160ff9092168252519081900360200190f35b3480156103aa57600080fd5b5061033a6108cb565b3480156103bf57600080fd5b50610279600480360360408110156103d657600080fd5b506001600160a01b0381351690602001356108da565b3480156103f857600080fd5b506102796004803603604081101561040f57600080fd5b506001600160a01b03813581169160200135166109a8565b34801561043357600080fd5b5061033a610a21565b34801561044857600080fd5b506102906004803603602081101561045f57600080fd5b50356001600160a01b0316610a30565b34801561047b57600080fd5b50610279610a3d565b34801561049057600080fd5b50610290610a98565b3480156104a557600080fd5b5061033a600480360360408110156104bc57600080fd5b813591908101906040810160208201356401000000008111156104de57600080fd5b8201836020820111156104f057600080fd5b8035906020019184600183028401116401000000008311171561051257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a9e945050505050565b34801561055f57600080fd5b5061033a610bc2565b34801561057457600080fd5b5061057d610bd1565b604080519115158252519081900360200190f35b34801561059d57600080fd5b506101d1610be2565b3480156105b257600080fd5b506101d1610c00565b61057d600480360360408110156105d157600080fd5b506001600160a01b038135169060200135610c1d565b3480156105f357600080fd5b50610290610c40565b34801561060857600080fd5b5061057d6004803603602081101561061f57600080fd5b5035610cc9565b34801561063257600080fd5b506102906004803603608081101561064957600080fd5b506001600160a01b038135169060208101359060408101359060600135610cde565b34801561067757600080fd5b50610290610cfd565b34801561068c57600080fd5b50610290610d03565b3480156106a157600080fd5b50610290610d09565b3480156106b657600080fd5b50610279600480360360208110156106cd57600080fd5b50356001600160a01b0316610d53565b3480156106e957600080fd5b506102796004803603602081101561070057600080fd5b50356001600160a01b0316610e05565b34801561071c57600080fd5b5061033a610e22565b60408051808201909152601781527f506f6c79676f6e2045636f73797374656d20546f6b656e000000000000000000602082015290565b6040805162461bcd60e51b815260206004820152601060248201526f44697361626c6564206665617475726560801b604482015290519081900360640190fd5b6b204fce5e3e2502611000000090565b6040805162461bcd60e51b815260206004820152601060248201526f44697361626c6564206665617475726560801b6044820152905160009181900360640190fd5b3360006107fa82610a30565b600654909150610810908463ffffffff610e3116565b600655821580159061082157508234145b610868576040805162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08185b5bdd5b9d606a1b604482015290519081900360640190fd5b6002546001600160a01b0380841691167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f85846108a487610a30565b60408051938452602084019290925282820152519081900360600190a3505050565b601290565b6003546001600160a01b031681565b6108e2610bd1565b6108eb57600080fd5b60008111801561090357506001600160a01b03821615155b61093e5760405162461bcd60e51b815260040180806020018281038252602381526020018061138d6023913960400191505060405180910390fd5b600061094983610a30565b60065490915061095f908363ffffffff610e4616565b60065561096c8383610e58565b6002546001600160a01b0380851691167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f684846108a488610a30565b60075460ff16156109ea5760405162461bcd60e51b815260040180806020018281038252602381526020018061136a6023913960400191505060405180910390fd5b6007805460ff19166001179055600280546001600160a01b0383166001600160a01b0319909116179055610a1d82610f17565b5050565b6004546001600160a01b031681565b6001600160a01b03163190565b610a45610bd1565b610a4e57600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60065481565b6000806000808451604114610ab95760009350505050610bbc565b50505060208201516040830151604184015160ff16601b811015610adb57601b015b8060ff16601b14158015610af357508060ff16601c14155b15610b045760009350505050610bbc565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015610b5b573d6000803e3d6000fd5b5050604051601f1901519450506001600160a01b038416610bb8576040805162461bcd60e51b815260206004820152601260248201527122b93937b91034b71032b1b932b1b7bb32b960711b604482015290519081900360640190fd5b5050505b92915050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b604051806040016040528060028152602001613a9960f01b81525081565b6040805180820190915260038152621413d360ea1b602082015290565b6000813414610c2e57506000610bbc565b610c39338484610f85565b9392505050565b6040518060800160405280605b8152602001611434605b91396040516020018082805190602001908083835b60208310610c8b5780518252601f199092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012081565b60056020526000908152604090205460ff1681565b6000610cf4610cef868686866111d2565b61128b565b95945050505050565b613a9981565b60015481565b6040518060800160405280605281526020016113b06052913960405160200180828051906020019080838360208310610c8b5780518252601f199092019160209182019101610c6c565b610d5b610bd1565b610d6457600080fd5b6001600160a01b038116610da95760405162461bcd60e51b81526004018080602001828103825260328152602001806114026032913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f1f9f3556dd336016cdf20adaead7d5c73665dba664b60e8c17e9a4eb91ce1d3990600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b610e0d610bd1565b610e1657600080fd5b610e1f81610f17565b50565b6002546001600160a01b031681565b600082821115610e4057600080fd5b50900390565b600082820183811015610c3957600080fd5b60085415610e9a576040805162461bcd60e51b815260206004820152600a6024820152697265656e7472616e637960b01b604482015290519081900360640190fd5b6001600855604051611388906000906060906001600160a01b038616908490869085818181858888f193505050503d8060008114610ef4576040519150601f19603f3d011682016040523d82523d6000602084013e610ef9565b606091505b509150915081610f0b57805160208201fd5b50506000600855505050565b6001600160a01b038116610f2a57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b604080516370a0823160e01b81526001600160a01b03851660048201529051600091829130916370a08231916024808301926020929190829003018186803b158015610fd057600080fd5b505afa158015610fe4573d6000803e3d6000fd5b505050506040513d6020811015610ffa57600080fd5b5051604080516370a0823160e01b81526001600160a01b0387166004820152905191925060009130916370a08231916024808301926020929190829003018186803b15801561104857600080fd5b505afa15801561105c573d6000803e3d6000fd5b505050506040513d602081101561107257600080fd5b50519050611081868686611299565b600254604080516370a0823160e01b81526001600160a01b03898116600483018190529251818a1694909116917fe6497e3ee548a3372136af2fcb0696db31fc6cf20260707645068bd3fe97f3c49189918891889130916370a0823191602480820192602092909190829003018186803b1580156110fe57600080fd5b505afa158015611112573d6000803e3d6000fd5b505050506040513d602081101561112857600080fd5b5051604080516370a0823160e01b81526001600160a01b038f166004820152905130916370a08231916024808301926020929190829003018186803b15801561117057600080fd5b505afa158015611184573d6000803e3d6000fd5b505050506040513d602081101561119a57600080fd5b50516040805195865260208601949094528484019290925260608401526080830152519081900360a00190a450600195945050505050565b6000806040518060800160405280605b8152602001611434605b91396040516020018082805190602001908083835b602083106112205780518252601f199092019160209182019101611201565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f1901835280855282519282019290922082526001600160a01b039b909b169a81019a909a5250880196909652505050606084019190915260808301525060a0902090565b6000610bbc82600154611347565b6001600160a01b0382163014156112ed576040805162461bcd60e51b8152602060048201526013602482015272063616e27742073656e6420746f204d5243323606c1b604482015290519081900360640190fd5b6112f78282610e58565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b60405161190160f01b815260028101919091526022810191909152604290209056fe54686520636f6e747261637420697320616c726561647920696e697469616c697a6564496e73756666696369656e7420616d6f756e74206f7220696e76616c69642075736572454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e7472616374294368696c6420746f6b656e3a206e6577206368696c64206164647265737320697320746865207a65726f2061646472657373546f6b656e5472616e736665724f726465722861646472657373207370656e6465722c75696e7432353620746f6b656e49644f72416d6f756e742c6279746573333220646174612c75696e743235362065787069726174696f6e29a265627a7a723158205f23be7574e70cfc01d0cfd6803b871f92465e9ae4a10fe95ed31ccb810bda3e64736f6c63430005110032
Deployed Bytecode Sourcemap
330:3982:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2180:101:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2180:101:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1009:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1009:78:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1009:78:2;-1:-1:-1;;;;;1009:78:2;;:::i;:::-;;2462:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2462:112:2;;;:::i;:::-;;;;;;;;;;;;;;;;688:228:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;688:228:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;688:228:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;688:228:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;688:228:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;688:228:0;;-1:-1:-1;688:228:0;-1:-1:-1;688:228:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;688:228:0;;:::i;:::-;;;;-1:-1:-1;;;;;688:228:0;;;;;;;;;;;;;;1733:441:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1733:441:2;;:::i;2376:80::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2376:80:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;370:25:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;370:25:1;;;:::i;1093:634:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1093:634:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1093:634:2;;;;;;;;:::i;765:238::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;765:238:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;765:238:2;;;;;;;;;;:::i;401:21:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:21:1;;;:::i;2580:105:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2580:105:2;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2580:105:2;-1:-1:-1;;;;;2580:105:2;;:::i;1423:137:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1423:137:7;;;:::i;447:32:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;447:32:2;;;:::i;1262:795:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:795:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1262:795:1;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1262:795:1;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1262:795:1;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1262:795:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1262:795:1;;-1:-1:-1;1262:795:1;;-1:-1:-1;;;;;1262:795:1:i;659:77:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;659:77:7;;;:::i;979:90::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;979:90:7;;;:::i;:::-;;;;;;;;;;;;;;;;;;51:43:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:43:5;;;:::i;2287:83:2:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2287:83:2;;;:::i;2931:205::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2931:205:2;;;;;;;;:::i;289:143:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:143:4;;;:::i;429:46:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;429:46:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;429:46:1;;:::i;586:325:4:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:325:4;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;586:325:4;;;;;;;;;;;;;;;;;;:::i;98:39:5:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;98:39:5;;;:::i;598:33:3:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;598:33:3;;;:::i;277:115::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;277:115:3;;;:::i;2097:290:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2097:290:1;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2097:290:1;-1:-1:-1;;;;;2097:290:1;;:::i;1731:107:7:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1731:107:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:107:7;-1:-1:-1;;;;;1731:107:7;;:::i;344:20:1:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;344:20:1;;;:::i;2180:101:2:-;2242:32;;;;;;;;;;;;;;;;;2180:101;:::o;1009:78::-;1054:26;;;-1:-1:-1;;;1054:26:2;;;;;;;;;;;;-1:-1:-1;;;1054:26:2;;;;;;;;;;;;;;2462:112;2532:35;2462:112;:::o;688:228:0:-;883:26;;;-1:-1:-1;;;883:26:0;;;;;;;;;;;;-1:-1:-1;;;883:26:0;;;;;;859:12;;883:26;;;;;;;1733:441:2;1807:10;1792:12;1868:15;1807:10;1868:9;:15::i;:::-;1910:13;;1852:31;;-1:-1:-1;1910:25:2;;1928:6;1910:25;:17;:25;:::i;:::-;1894:13;:41;1994:10;;;;;:33;;;2021:6;2008:9;:19;1994:33;1973:99;;;;;-1:-1:-1;;;1973:99:2;;;;;;;;;;;;-1:-1:-1;;;1973:99:2;;;;;;;;;;;;;;;2123:5;;-1:-1:-1;;;;;2114:53:2;;;;2123:5;2114:53;2136:6;2144:5;2151:15;2130:4;2151:9;:15::i;:::-;2114:53;;;;;;;;;;;;;;;;;;;;;;;;;;1733:441;;;:::o;2376:80::-;519:2;2376:80;:::o;370:25:1:-;;;-1:-1:-1;;;;;370:25:1;;:::o;1093:634:2:-;863:9:7;:7;:9::i;:::-;855:18;;;;;;1234:1:2;1225:6;:10;:34;;;;-1:-1:-1;;;;;;1239:20:2;;;;1225:34;1204:116;;;;-1:-1:-1;;;1204:116:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1356:14;1373:15;1383:4;1373:9;:15::i;:::-;1414:13;;1356:32;;-1:-1:-1;1414:25:2;;1432:6;1414:25;:17;:25;:::i;:::-;1398:13;:41;1596:29;1612:4;1618:6;1596:15;:29::i;:::-;1675:5;;-1:-1:-1;;;;;1667:53:2;;;;1675:5;1667:53;1688:6;1696;1704:15;1682:4;1704:9;:15::i;765:238::-;848:13;;;;847:14;839:62;;;;-1:-1:-1;;;839:62:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;911:13;:20;;-1:-1:-1;;911:20:2;927:4;911:20;;;941:5;:14;;-1:-1:-1;;;;;941:14:2;;-1:-1:-1;;;;;;941:14:2;;;;;;965:31;984:11;965:18;:31::i;:::-;765:238;;:::o;401:21:1:-;;;-1:-1:-1;;;;;401:21:1;;:::o;2580:105:2:-;-1:-1:-1;;;;;2663:15:2;;;2580:105::o;1423:137:7:-;863:9;:7;:9::i;:::-;855:18;;;;;;1521:1;1505:6;;1484:40;;-1:-1:-1;;;;;1505:6:7;;;;1484:40;;1521:1;;1484:40;1551:1;1534:19;;-1:-1:-1;;;;;;1534:19:7;;;1423:137::o;447:32:2:-;;;;:::o;1262:795:1:-;1359:14;1389:9;1408;1427:7;1448:3;:10;1462:2;1448:16;1444:66;;1495:3;1480:19;;;;;;;1444:66;-1:-1:-1;;;1562:2:1;1553:12;;1547:19;1599:2;1590:12;;1584:19;1640:2;1631:12;;1625:19;1646:3;1621:29;1740:2;1736:6;;1732:44;;;1763:2;1758:7;1732:44;1789:1;:7;;1794:2;1789:7;;:18;;;;;1800:1;:7;;1805:2;1800:7;;1789:18;1785:68;;;1838:3;1823:19;;;;;;;1785:68;1920:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1920:24:1;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;1920:24:1;;-1:-1:-1;;1920:24:1;;;-1:-1:-1;;;;;;;2005:22:1;;1997:53;;;;;-1:-1:-1;;;1997:53:1;;;;;;;;;;;;-1:-1:-1;;;1997:53:1;;;;;;;;;;;;;;;1262:795;;;;;;;;:::o;659:77:7:-;697:7;723:6;-1:-1:-1;;;;;723:6:7;659:77;:::o;979:90::-;1019:4;1056:6;-1:-1:-1;;;;;1056:6:7;1042:10;:20;;979:90::o;51:43:5:-;;;;;;;;;;;;;;-1:-1:-1;;;51:43:5;;;;:::o;2287:83:2:-;2351:12;;;;;;;;;;;;-1:-1:-1;;;2351:12:2;;;;2287:83;:::o;2931:205::-;3000:4;3033:5;3020:9;:18;3016:61;;-1:-1:-1;3061:5:2;3054:12;;3016:61;3093:36;3107:10;3119:2;3123:5;3093:13;:36::i;:::-;3086:43;2931:205;-1:-1:-1;;;2931:205:2:o;289:143:4:-;391:34;;;;;;;;;;;;;;;;;374:52;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;374:52:4;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;374:52:4;;;355:77;;;;;;289:143;:::o;429:46:1:-;;;;;; ;;;;;;;;;:::o;586:325:4:-;756:17;797:107;828:66;851:7;860:15;877:4;883:10;828:22;:66::i;:::-;797:17;:107::i;:::-;785:119;586:325;-1:-1:-1;;;;;586:325:4:o;98:39:5:-;132:5;98:39;:::o;598:33:3:-;;;;:::o;277:115::-;365:20;;;;;;;;;;;;;;;;;348:38;;;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;2097:290:1;863:9:7;:7;:9::i;:::-;855:18;;;;;;-1:-1:-1;;;;;2191:24:1;;2170:121;;;;-1:-1:-1;;;2170:121:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2324:10;;2306:41;;-1:-1:-1;;;;;2306:41:1;;;;2324:10;;2306:41;;2324:10;;2306:41;2357:10;:23;;-1:-1:-1;;;;;;2357:23:1;-1:-1:-1;;;;;2357:23:1;;;;;;;;;;2097:290::o;1731:107:7:-;863:9;:7;:9::i;:::-;855:18;;;;;;1803:28;1822:8;1803:18;:28::i;:::-;1731:107;:::o;344:20:1:-;;;-1:-1:-1;;;;;344:20:1;;:::o;1211:145:6:-;1269:7;1301:1;1296;:6;;1288:15;;;;;;-1:-1:-1;1325:5:6;;;1211:145::o;1439:::-;1497:7;1528:5;;;1551:6;;;;1543:15;;;;;3953:357:2;646:6;;:11;638:34;;;;;-1:-1:-1;;;638:34:2;;;;;;;;;;;;-1:-1:-1;;;638:34:2;;;;;;;;;;;;;;;691:1;682:6;:10;4114:47;;4065:4;;4044:18;;4094:16;;-1:-1:-1;;;;;4114:13:2;;;4065:4;;4134:6;;4044:18;4114:47;4044:18;4114:47;4134:6;4114:13;4065:4;4114:47;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4079:82:2;;;;4176:7;4171:133;;4255:3;4249:10;4242:4;4237:3;4233:14;4226:34;4208:86;-1:-1:-1;;722:1:2;713:6;:10;-1:-1:-1;;;3953:357:2:o;1982:183:7:-;-1:-1:-1;;;;;2055:22:7;;2047:31;;;;;;2114:6;;;2093:38;;-1:-1:-1;;;;;2093:38:7;;;;2114:6;;;2093:38;;;2141:6;:17;;-1:-1:-1;;;;;;2141:17:7;-1:-1:-1;;;;;2141:17:7;;;;;;;;;;1982:183::o;1302:478:0:-;1437:20;;;-1:-1:-1;;;1437:20:0;;-1:-1:-1;;;;;1437:20:0;;;;;;;;1400:4;;;;1437;;:14;;:20;;;;;;;;;;;;;;:4;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;1437:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1437:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1437:20:0;1484:18;;;-1:-1:-1;;;1484:18:0;;-1:-1:-1;;;;;1484:18:0;;;;;;;;1437:20;;-1:-1:-1;1467:14:0;;1484:4;;:14;;:18;;;;;1437:20;;1484:18;;;;;;;:4;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;1484:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1484:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1484:18:0;;-1:-1:-1;1512:26:0;1522:4;1528:2;1532:5;1512:9;:26::i;:::-;1578:5;;1690:20;;;-1:-1:-1;;;1690:20:0;;-1:-1:-1;;;;;1553:199:0;;;1690:20;;;;;;;;1553:199;;;;1578:5;;;;1553:199;;1631:5;;1650:6;;1670;;1690:4;;:14;;:20;;;;;;;;;;;;;;;:4;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;1690:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1690:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1690:20:0;1724:18;;;-1:-1:-1;;;1724:18:0;;-1:-1:-1;;;;;1724:18:0;;;;;;;;:4;;:14;;:18;;;;;1690:20;;1724:18;;;;;;;:4;:18;;;5:2:-1;;;;30:1;27;20:12;5:2;1724:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1724:18:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1724:18:0;1553:199;;;;;;1724:18;1553:199;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1769:4:0;;1302:478;-1:-1:-1;;;;;1302:478:0:o;917:1095:4:-;1086:14;1112:18;391:34;;;;;;;;;;;;;;;;;374:52;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;374:52:4;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;374:52:4;;;355:77;;;;;;;;;1511:26;;-1:-1:-1;;;;;1625:56:4;;;;1592:15;;;1568:127;;;;-1:-1:-1;1726:15:4;;1719:40;;;;-1:-1:-1;;;1810:2:4;1798:15;;1791:29;;;;1868:3;1856:16;;1849:36;-1:-1:-1;1969:3:4;1951:22;;;917:1095::o;984:188:3:-;1078:14;1115:50;1134:10;1146:18;;1115;:50::i;3364:260:2:-;-1:-1:-1;;;;;3473:26:2;;3494:4;3473:26;;3465:58;;;;;-1:-1:-1;;;3465:58:2;;;;;;;;;;;;-1:-1:-1;;;3465:58:2;;;;;;;;;;;;;;;3533:34;3549:9;3560:6;3533:15;:34::i;:::-;3599:9;-1:-1:-1;;;;;3582:35:2;3591:6;-1:-1:-1;;;;;3582:35:2;;3610:6;3582:35;;;;;;;;;;;;;;;;;;3364:260;;;:::o;1690:614:3:-;1918:2;1912:9;-1:-1:-1;;;1935:128:3;;2112:1;2100:14;;2093:34;;;;2181:2;2169:15;;2162:35;;;;2285:2;2267:21;;;1844:454::o
Swarm Source
bzzr://5f23be7574e70cfc01d0cfd6803b871f92465e9ae4a10fe95ed31ccb810bda3e
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.