ETH Price: $3,291.62 (-1.88%)

Token

CryptoArt.Ai (CART)
 

Overview

Max Total Supply

100,000,000 CART

Holders

1,298

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
303.eth
Balance
10 CART

Value
$0.00
0xf5a4f9407ef5acce981a3212c29eb302ed5deb23
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Cart

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 6 : Cart.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.0;

import "./Address.sol";
import "./DelegateERC20.sol";

interface TokenRecipient {
  // must return ture
  function tokensReceived(
      address from,
      uint amount,
      bytes calldata exData
  ) external returns (bool);
}

contract Cart is DelegateERC20 {
  using Address for address;

  uint256 private constant preMineSupply = 100000000 * 1e18;

  constructor (address owner) DelegateERC20("CryptoArt.Ai", "CART")  {
    _mint(owner, preMineSupply);
  }

  function burn(uint amount) public {
    _burn(msg.sender, amount);
  }

  function burnFrom(address account, uint amount) public {
    _burnFrom(account, amount);
  }

  function send(address recipient, uint amount, bytes calldata exData) external returns (bool) {
    _transfer(msg.sender, recipient, amount);

    if (recipient.isContract()) {
      bool rv = TokenRecipient(recipient).tokensReceived(msg.sender, amount, exData);
      require(rv, "No TokenRecipient");
    }

    return true;
  }

}

File 2 of 6 : Address.sol
//SPDX-License-Identifier: UNLICENSED

pragma solidity >=0.7.0;

/**
 * @dev Collection of functions related to the address type,
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * This test is non-exhaustive, and there may be false-negatives: during the
     * execution of a contract's constructor, its address will be reported as
     * not containing a contract.
     *
     * > It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

File 3 of 6 : DelegateERC20.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.0;

import "./ERC20Permit.sol";

abstract contract DelegateERC20 is ERC20Permit {

  mapping (address => address) public delegates;
  
  struct Checkpoint {
    uint32 fromBlock;
    uint votes;
  }

  mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;
  mapping (address => uint32) public numCheckpoints;


  bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

  event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);
  event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);


  constructor(string memory name_, string memory symbol_) ERC20Permit(name_, symbol_) {
  }

  function _mint(address dst, uint wad) internal override {
    super._mint(dst, wad); 
    _moveDelegates(address(0), delegates[dst], wad);
  }

  function _transfer(address src, address dst, uint wad) internal override returns (bool) {
    super._transfer(src, dst, wad);
    _moveDelegates(delegates[src], delegates[dst], wad);
    return true;
  }

  function _burn(address src, uint wad) internal override {
    super._burn(src, wad);
    _moveDelegates(delegates[src], address(0), wad);
  }

  function delegate(address delegatee) public {
    return _delegate(msg.sender, delegatee);
  }

  function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
    bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
    
    bytes32 digest = keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR, structHash));
    address signatory = ecrecover(digest, v, r, s);
    require(signatory != address(0), "delegateBySig: invalid signature");
    require(nonce == nonces[signatory]++, "delegateBySig: invalid nonce");
    require(block.timestamp <= expiry, "delegateBySig: signature expired");
    return _delegate(signatory, delegatee);
  }

  function getCurrentVotes(address account) external view returns (uint256) {
    uint32 nCheckpoints = numCheckpoints[account];
    return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
  }

  function getPriorVotes(address account, uint blockNumber) public view returns (uint256) {
    require(blockNumber < block.number, "getPriorVotes: not yet determined");

    uint32 nCheckpoints = numCheckpoints[account];
    if (nCheckpoints == 0) {
        return 0;
    }

    // First check most recent balance
    if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
        return checkpoints[account][nCheckpoints - 1].votes;
    }

    // Next check implicit zero balance
    if (checkpoints[account][0].fromBlock > blockNumber) {
        return 0;
    }

    uint32 lower = 0;
    uint32 upper = nCheckpoints - 1;
    while (upper > lower) {
        uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
        Checkpoint memory cp = checkpoints[account][center];
        if (cp.fromBlock == blockNumber) {
            return cp.votes;
        } else if (cp.fromBlock < blockNumber) {
            lower = center;
        } else {
            upper = center - 1;
        }
    }
    return checkpoints[account][lower].votes;
  }

  function _delegate(address delegator, address delegatee) internal {
    address currentDelegate = delegates[delegator];
    uint delegatorBalance = balanceOf(delegator);
    delegates[delegator] = delegatee;

    emit DelegateChanged(delegator, currentDelegate, delegatee);
    _moveDelegates(currentDelegate, delegatee, delegatorBalance);
  }

  function _moveDelegates(address srcRep, address dstRep, uint amount) internal {
    if (srcRep != dstRep && amount > 0) {
      if (srcRep != address(0)) {
          uint32 srcRepNum = numCheckpoints[srcRep];
          uint srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
          uint srcRepNew = srcRepOld - amount;
          _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
      }

      if (dstRep != address(0)) {
          uint32 dstRepNum = numCheckpoints[dstRep];
          uint dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
          uint dstRepNew = dstRepOld + amount;
          _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
      }
    }
  }

  function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint oldVotes, uint newVotes) internal {
    uint32 blockNumber = safe32(block.number, "_writeCheckpoint: block number exceeds 32 bits");

    if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
        checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
    } else {
        checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
        numCheckpoints[delegatee] = nCheckpoints + 1;
    }

    emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
  }

  function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
    require(n < 2**32, errorMessage);
    return uint32(n);
  }

}

File 4 of 6 : ERC20.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity  0.8.0;


contract ERC20 {
    uint256                                           internal  _totalSupply;
    mapping (address => uint256)                      internal  _balanceOf;
    mapping (address => mapping (address => uint256)) internal  _allowance;
    string                                            public  symbol;
    uint256                                           public  immutable  decimals = 18;
    string                                            public  name;     // Optional token name

    constructor(string memory name_, string memory symbol_) {
        name = name_;
        symbol = symbol_;
    }

    event Approval(address indexed owner, address indexed spender, uint wad);
    event Transfer(address indexed src, address indexed dst, uint wad);

    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address guy) public view virtual returns (uint256) {
        return _balanceOf[guy];
    }

    function allowance(address owner, address spender) public view virtual returns (uint256) {
        return _allowance[owner][spender];
    }

    function approve(address spender, uint wad) public virtual returns (bool) {
        return _approve(msg.sender, spender, wad);
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowance[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowance[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(msg.sender, spender, currentAllowance - subtractedValue);

        return true;
    }

    function transfer(address dst, uint wad) public virtual returns (bool) {
        return _transfer(msg.sender, dst, wad);
    }

    function transferFrom(address src, address dst, uint wad) public virtual returns (bool) {
        uint256 allowed = _allowance[src][msg.sender];

        if (src != msg.sender && allowed != type(uint).max) {
            require(allowed >= wad, "ERC20: Insufficient approval");
            _approve(src, msg.sender, allowed - wad);
        }

        return _transfer(src, dst, wad);
    }


    function _transfer(address src, address dst, uint wad) internal virtual returns (bool) {
        require(dst != address(0), "ERC20:cannot transfer to the zero address");
        require(_balanceOf[src] >= wad, "ERC20: Insufficient balance");
        _balanceOf[src] = _balanceOf[src] - wad;
        _balanceOf[dst] = _balanceOf[dst] + wad;

        emit Transfer(src, dst, wad);

        return true;
    }

    function _approve(address owner, address spender, uint wad) internal virtual returns (bool) {
        _allowance[owner][spender] = wad;
        emit Approval(owner, spender, wad);
        return true;
    }

    function _mint(address dst, uint wad) internal virtual {
        require(dst != address(0), "ERC20: mint to the zero address");
        _balanceOf[dst] = _balanceOf[dst] + wad;
        _totalSupply = _totalSupply + wad;
        emit Transfer(address(0), dst, wad);
    }

    function _burn(address src, uint wad) internal virtual {
        require(_balanceOf[src] >= wad, "ERC20: Insufficient balance");
        _balanceOf[src] = _balanceOf[src] - wad;
        _totalSupply = _totalSupply - wad;
        emit Transfer(src, address(0), wad);
    }

    function _burnFrom(address src, uint wad) internal virtual {
      uint256 allowed = _allowance[src][msg.sender];
      if (src != msg.sender && allowed != type(uint).max) {
          require(allowed >= wad, "ERC20: Insufficient approval");
          _approve(src, msg.sender, allowed - wad);
      }

      _burn(src, wad);
    }

    
}

File 5 of 6 : ERC20Permit.sol
//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.0;

import "./ERC20.sol";
import "./interface/IERC2612.sol";


abstract contract ERC20Permit is ERC20, IERC2612 {
    mapping (address => uint256) public override nonces;

    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public immutable DOMAIN_SEPARATOR;

    constructor(string memory name_, string memory symbol_) ERC20(name_, symbol_) {
        uint256 chainId = block.chainid;

        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes(name_)),
                keccak256(bytes("1")),
                chainId,
                address(this)
            )
        );
    }

    /**
     * @dev See {IERC2612-permit}.
     *
     * In cases where the free option is not a concern, deadline can simply be
     * set to uint(-1), so it should be seen as an optional parameter
     */
    function permit(address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public virtual override {
        require(deadline >= block.timestamp, "ERC20Permit: expired deadline");

        bytes32 hashStruct = keccak256(
            abi.encode(
                PERMIT_TYPEHASH,
                owner,
                spender,
                amount,
                nonces[owner]++,
                deadline
            )
        );

        bytes32 hash = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                hashStruct
            )
        );

        address signer = ecrecover(hash, v, r, s);
        require(
            signer != address(0) && signer == owner,
            "ERC20Permit: invalid signature"
        );

        _approve(owner, spender, amount);
    }
}

File 6 of 6 : IERC2612.sol
pragma solidity 0.8.0;
/**
 * @dev Interface of the ERC2612 standard as defined in the EIP.
 *
 * Adds the {permit} method, which can be used to change one's
 * {IERC20-allowance} without having to send a transaction, by signing a
 * message. This allows users to spend tokens without having to hold Ether.
 *
 * See https://eips.ethereum.org/EIPS/eip-2612.
 */
interface IERC2612 {

    function permit(address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    function nonces(address owner) external view returns (uint256);
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"src","type":"address"},{"indexed":true,"internalType":"address","name":"dst","type":"address"},{"indexed":false,"internalType":"uint256","name":"wad","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"guy","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"exData","type":"bytes"}],"name":"send","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"wad","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60c060405260126080523480156200001657600080fd5b506040516200263738038062002637833981016040819052620000399162000681565b6040518060400160405280600c81526020016b43727970746f4172742e416960a01b8152506040518060400160405280600481526020016310d0549560e21b81525081818181816004908051906020019062000097929190620005db565b508051620000ad906003906020840190620005db565b5050825160208085019190912060408051808201825260018152603160f81b908401525146935062000129927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f92917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6918691309101620006b1565b60408051601f19818403018152919052805160209091012060a052506200016393508492506a52b7d2dcc80cd2e40000009150506200016a565b506200085c565b620001818282620001ac60201b62000d881760201c565b6001600160a01b03808316600090815260066020526040812054620001a89216836200027d565b5050565b6001600160a01b038216620001de5760405162461bcd60e51b8152600401620001d59062000733565b60405180910390fd5b6001600160a01b0382166000908152600160205260409020546200020490829062000781565b6001600160a01b038316600090815260016020526040812091909155546200022e90829062000781565b60009081556040516001600160a01b03841691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620002719085906200076a565b60405180910390a35050565b816001600160a01b0316836001600160a01b031614158015620002a05750600081115b15620003f4576001600160a01b038316156200034d576001600160a01b03831660009081526008602052604081205463ffffffff169081620002e457600062000329565b6001600160a01b0385166000908152600760205260408120906200030a600185620007e1565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000620003398483620007c7565b90506200034986848484620003f9565b5050505b6001600160a01b03821615620003f4576001600160a01b03821660009081526008602052604081205463ffffffff1690816200038b576000620003d0565b6001600160a01b038416600090815260076020526040812090620003b1600185620007e1565b63ffffffff1663ffffffff168152602001908152602001600020600101545b90506000620003e0848362000781565b9050620003f085848484620003f9565b5050505b505050565b600062000420436040518060600160405280602e815260200162002609602e9139620005a8565b905060008463ffffffff161180156200047d57506001600160a01b038516600090815260076020526040812063ffffffff83169162000461600188620007e1565b63ffffffff908116825260208201929092526040016000205416145b15620004ca576001600160a01b03851660009081526007602052604081208391620004aa600188620007e1565b63ffffffff1681526020810191909152604001600020600101556200055c565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600783528581208a851682529092529390209151825463ffffffff1916911617815590516001918201556200052b9085906200079c565b6001600160a01b0386166000908152600860205260409020805463ffffffff191663ffffffff929092169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516200059992919062000773565b60405180910390a25050505050565b6000816401000000008410620005d35760405162461bcd60e51b8152600401620001d59190620006dd565b509192915050565b828054620005e99062000809565b90600052602060002090601f0160209004810192826200060d576000855562000658565b82601f106200062857805160ff191683800117855562000658565b8280016001018555821562000658579182015b82811115620006585782518255916020019190600101906200063b565b50620006669291506200066a565b5090565b5b808211156200066657600081556001016200066b565b60006020828403121562000693578081fd5b81516001600160a01b0381168114620006aa578182fd5b9392505050565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6000602080835283518082850152825b818110156200070b57858101830151858201604001528201620006ed565b818111156200071d5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b918252602082015260400190565b6000821982111562000797576200079762000846565b500190565b600063ffffffff808316818516808303821115620007be57620007be62000846565b01949350505050565b600082821015620007dc57620007dc62000846565b500390565b600063ffffffff8381169083168181101562000801576200080162000846565b039392505050565b6002810460018216806200081e57607f821691505b602082108114156200084057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160a051611d79620008906000396000818161051001528181610a300152610c12015260006104ec0152611d796000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063782d6fe1116100de578063a9059cbb11610097578063d505accf11610071578063d505accf1461033f578063dd62ed3e14610352578063e7a324dc14610365578063f1127ed81461036d5761018e565b8063a9059cbb14610306578063b4b5ea5714610319578063c3cda5201461032c5761018e565b8063782d6fe11461029f57806379cc6790146102b25780637ecebe00146102c557806395d89b41146102d85780639bd9bbc6146102e0578063a457c2d7146102f35761018e565b80633644e5151161014b578063587cde1e11610125578063587cde1e146102395780635c19a95c146102595780636fcfff451461026c57806370a082311461028c5761018e565b80633644e51514610209578063395093511461021157806342966c68146102245761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d157806323b872dd146101e657806330adf81f146101f9578063313ce56714610201575b600080fd5b61019b61038e565b6040516101a891906118c8565b60405180910390f35b6101c46101bf36600461164f565b61041c565b6040516101a8919061183e565b6101d9610432565b6040516101a89190611849565b6101c46101f43660046115ab565b610438565b6101d96104c6565b6101d96104ea565b6101d961050e565b6101c461021f36600461164f565b610532565b6102376102323660046117af565b610573565b005b61024c61024736600461155f565b610580565b6040516101a891906117e2565b61023761026736600461155f565b61059b565b61027f61027a36600461155f565b6105a5565b6040516101a89190611bd7565b6101d961029a36600461155f565b6105bd565b6101d96102ad36600461164f565b6105dc565b6102376102c036600461164f565b610801565b6101d96102d336600461155f565b61080f565b61019b610821565b6101c46102ee366004611678565b61082e565b6101c461030136600461164f565b610906565b6101c461031436600461164f565b610959565b6101d961032736600461155f565b610966565b61023761033a3660046116fa565b6109db565b61023761034d3660046115e6565b610b6f565b6101d9610360366004611579565b610d0c565b6101d9610d37565b61038061037b366004611751565b610d5b565b6040516101a8929190611be8565b6004805461039b90611ca9565b80601f01602080910402602001604051908101604052809291908181526020018280546103c790611ca9565b80156104145780601f106103e957610100808354040283529160200191610414565b820191906000526020600020905b8154815290600101906020018083116103f757829003601f168201915b505050505081565b6000610429338484610e47565b90505b92915050565b60005490565b6001600160a01b038316600081815260026020908152604080832033808552925282205491921480159061046e57506000198114155b156104b2578281101561049c5760405162461bcd60e51b815260040161049390611a3c565b60405180910390fd5b6104b085336104ab8685611c6d565b610e47565b505b6104bd858585610eb7565b95945050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105699185906104ab908690611bfe565b5060019392505050565b61057d3382610ef7565b50565b6006602052600090815260409020546001600160a01b031681565b61057d3382610f27565b60086020526000908152604090205463ffffffff1681565b6001600160a01b0381166000908152600160205260409020545b919050565b60004382106105fd5760405162461bcd60e51b81526004016104939061191b565b6001600160a01b03831660009081526008602052604090205463ffffffff168061062b57600091505061042c565b6001600160a01b03841660009081526007602052604081208491610650600185611c84565b63ffffffff908116825260208201929092526040016000205416116106b9576001600160a01b038416600090815260076020526040812090610693600184611c84565b63ffffffff1663ffffffff1681526020019081526020016000206001015491505061042c565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff168310156106f457600091505061042c565b600080610702600184611c84565b90505b8163ffffffff168163ffffffff1611156107ca57600060026107278484611c84565b6107319190611c3e565b61073b9083611c84565b6001600160a01b038816600090815260076020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915291925087141561079e5760200151945061042c9350505050565b805163ffffffff168711156107b5578193506107c3565b6107c0600183611c84565b92505b5050610705565b506001600160a01b038516600090815260076020908152604080832063ffffffff9094168352929052206001015491505092915050565b61080b8282610fbc565b5050565b60056020526000908152604090205481565b6003805461039b90611ca9565b600061083b338686610eb7565b5061084e856001600160a01b0316611037565b156108fb5760405163d031426360e01b81526000906001600160a01b0387169063d0314263906108889033908990899089906004016117f6565b602060405180830381600087803b1580156108a257600080fd5b505af11580156108b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108da919061178f565b9050806108f95760405162461bcd60e51b81526004016104939061195c565b505b506001949350505050565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561094a5760405162461bcd60e51b815260040161049390611b4d565b6108fb33856104ab8685611c6d565b6000610429338484610eb7565b6001600160a01b03811660009081526008602052604081205463ffffffff16806109915760006109d4565b6001600160a01b0383166000908152600760205260408120906109b5600184611c84565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf878787604051602001610a149493929190611886565b60405160208183030381529060405280519060200120905060007f000000000000000000000000000000000000000000000000000000000000000082604051602001610a619291906117c7565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610a9e94939291906118aa565b6020604051602081039080840390855afa158015610ac0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610af35760405162461bcd60e51b815260040161049390611987565b6001600160a01b0381166000908152600560205260408120805491610b1783611ce4565b919050558814610b395760405162461bcd60e51b815260040161049390611b16565b86421115610b595760405162461bcd60e51b815260040161049390611aaa565b610b63818a610f27565b5050505b505050505050565b42841015610b8f5760405162461bcd60e51b815260040161049390611a05565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086610bdc83611ce4565b9190505589604051602001610bf696959493929190611852565b60405160208183030381529060405280519060200120905060007f000000000000000000000000000000000000000000000000000000000000000082604051602001610c439291906117c7565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610c8094939291906118aa565b6020604051602081039080840390855afa158015610ca2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610cd85750896001600160a01b0316816001600160a01b0316145b610cf45760405162461bcd60e51b815260040161049390611adf565b610cff8a8a8a610e47565b5050505050505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60076020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6001600160a01b038216610dae5760405162461bcd60e51b815260040161049390611b92565b6001600160a01b038216600090815260016020526040902054610dd2908290611bfe565b6001600160a01b03831660009081526001602052604081209190915554610dfa908290611bfe565b60009081556040516001600160a01b03841691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e3b908590611849565b60405180910390a35050565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915280822085905551909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ea5908690611849565b60405180910390a35060019392505050565b6000610ec484848461103d565b506001600160a01b0380851660009081526006602052604080822054868416835291205461056992918216911684611143565b610f0182826112a2565b6001600160a01b0380831660009081526006602052604081205461080b92169083611143565b6001600160a01b0380831660009081526006602052604081205490911690610f4e846105bd565b6001600160a01b0385811660008181526006602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610fb6828483611143565b50505050565b6001600160a01b0382166000818152600260209081526040808320338085529252909120549114801590610ff257506000198114155b1561102857818110156110175760405162461bcd60e51b815260040161049390611a3c565b61102683336104ab8585611c6d565b505b6110328383610ef7565b505050565b3b151590565b60006001600160a01b0383166110655760405162461bcd60e51b8152600401610493906119bc565b6001600160a01b03841660009081526001602052604090205482111561109d5760405162461bcd60e51b815260040161049390611a73565b6001600160a01b0384166000908152600160205260409020546110c1908390611c6d565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546110f1908390611bfe565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ea5908690611849565b816001600160a01b0316836001600160a01b0316141580156111655750600081115b15611032576001600160a01b03831615611208576001600160a01b03831660009081526008602052604081205463ffffffff1690816111a55760006111e8565b6001600160a01b0385166000908152600760205260408120906111c9600185611c84565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006111f68483611c6d565b905061120486848484611366565b5050505b6001600160a01b03821615611032576001600160a01b03821660009081526008602052604081205463ffffffff169081611243576000611286565b6001600160a01b038416600090815260076020526040812090611267600185611c84565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006112948483611bfe565b9050610b6785848484611366565b6001600160a01b0382166000908152600160205260409020548111156112da5760405162461bcd60e51b815260040161049390611a73565b6001600160a01b0382166000908152600160205260409020546112fe908290611c6d565b6001600160a01b03831660009081526001602052604081209190915554611326908290611c6d565b60009081556040516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e3b908590611849565b600061138a436040518060600160405280602e8152602001611d16602e9139611507565b905060008463ffffffff161180156113e457506001600160a01b038516600090815260076020526040812063ffffffff8316916113c8600188611c84565b63ffffffff908116825260208201929092526040016000205416145b1561142d576001600160a01b0385166000908152600760205260408120839161140e600188611c84565b63ffffffff1681526020810191909152604001600020600101556114bd565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600783528581208a851682529092529390209151825463ffffffff19169116178155905160019182015561148c908590611c16565b6001600160a01b0386166000908152600860205260409020805463ffffffff191663ffffffff929092169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516114f8929190611bc9565b60405180910390a25050505050565b600081640100000000841061152f5760405162461bcd60e51b815260040161049391906118c8565b509192915050565b80356001600160a01b03811681146105d757600080fd5b803560ff811681146105d757600080fd5b600060208284031215611570578081fd5b61042982611537565b6000806040838503121561158b578081fd5b61159483611537565b91506115a260208401611537565b90509250929050565b6000806000606084860312156115bf578081fd5b6115c884611537565b92506115d660208501611537565b9150604084013590509250925092565b600080600080600080600060e0888a031215611600578283fd5b61160988611537565b965061161760208901611537565b955060408801359450606088013593506116336080890161154e565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611661578182fd5b61166a83611537565b946020939093013593505050565b6000806000806060858703121561168d578384fd5b61169685611537565b935060208501359250604085013567ffffffffffffffff808211156116b9578384fd5b818701915087601f8301126116cc578384fd5b8135818111156116da578485fd5b8860208285010111156116eb578485fd5b95989497505060200194505050565b60008060008060008060c08789031215611712578182fd5b61171b87611537565b955060208701359450604087013593506117376060880161154e565b92506080870135915060a087013590509295509295509295565b60008060408385031215611763578182fd5b61176c83611537565b9150602083013563ffffffff81168114611784578182fd5b809150509250929050565b6000602082840312156117a0578081fd5b815180151581146109d4578182fd5b6000602082840312156117c0578081fd5b5035919050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b818110156118f4578581018301518582016040015282016118d8565b818111156119055783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f6765745072696f72566f7465733a206e6f74207965742064657465726d696e656040820152601960fa1b606082015260800190565b602080825260119082015270139bc8151bdad95b949958da5c1a595b9d607a1b604082015260600190565b6020808252818101527f64656c656761746542795369673a20696e76616c6964207369676e6174757265604082015260600190565b60208082526029908201527f45524332303a63616e6e6f74207472616e7366657220746f20746865207a65726040820152686f206164647265737360b81b606082015260800190565b6020808252601d908201527f45524332305065726d69743a206578706972656420646561646c696e65000000604082015260600190565b6020808252601c908201527f45524332303a20496e73756666696369656e7420617070726f76616c00000000604082015260600190565b6020808252601b908201527f45524332303a20496e73756666696369656e742062616c616e63650000000000604082015260600190565b6020808252818101527f64656c656761746542795369673a207369676e61747572652065787069726564604082015260600190565b6020808252601e908201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604082015260600190565b6020808252601c908201527f64656c656761746542795369673a20696e76616c6964206e6f6e636500000000604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b918252602082015260400190565b63ffffffff91909116815260200190565b63ffffffff929092168252602082015260400190565b60008219821115611c1157611c11611cff565b500190565b600063ffffffff808316818516808303821115611c3557611c35611cff565b01949350505050565b600063ffffffff80841680611c6157634e487b7160e01b83526012600452602483fd5b92169190910492915050565b600082821015611c7f57611c7f611cff565b500390565b600063ffffffff83811690831681811015611ca157611ca1611cff565b039392505050565b600281046001821680611cbd57607f821691505b60208210811415611cde57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611cf857611cf8611cff565b5060010190565b634e487b7160e01b600052601160045260246000fdfe5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a2646970667358221220cc742ef8a5e5cd3937ca5088d8cc1843c945191df74faa39949c5eb474febec264736f6c634300080000335f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473000000000000000000000000199aa9e922aa2d2af79de99ac4c9b5727acde2c4

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063782d6fe1116100de578063a9059cbb11610097578063d505accf11610071578063d505accf1461033f578063dd62ed3e14610352578063e7a324dc14610365578063f1127ed81461036d5761018e565b8063a9059cbb14610306578063b4b5ea5714610319578063c3cda5201461032c5761018e565b8063782d6fe11461029f57806379cc6790146102b25780637ecebe00146102c557806395d89b41146102d85780639bd9bbc6146102e0578063a457c2d7146102f35761018e565b80633644e5151161014b578063587cde1e11610125578063587cde1e146102395780635c19a95c146102595780636fcfff451461026c57806370a082311461028c5761018e565b80633644e51514610209578063395093511461021157806342966c68146102245761018e565b806306fdde0314610193578063095ea7b3146101b157806318160ddd146101d157806323b872dd146101e657806330adf81f146101f9578063313ce56714610201575b600080fd5b61019b61038e565b6040516101a891906118c8565b60405180910390f35b6101c46101bf36600461164f565b61041c565b6040516101a8919061183e565b6101d9610432565b6040516101a89190611849565b6101c46101f43660046115ab565b610438565b6101d96104c6565b6101d96104ea565b6101d961050e565b6101c461021f36600461164f565b610532565b6102376102323660046117af565b610573565b005b61024c61024736600461155f565b610580565b6040516101a891906117e2565b61023761026736600461155f565b61059b565b61027f61027a36600461155f565b6105a5565b6040516101a89190611bd7565b6101d961029a36600461155f565b6105bd565b6101d96102ad36600461164f565b6105dc565b6102376102c036600461164f565b610801565b6101d96102d336600461155f565b61080f565b61019b610821565b6101c46102ee366004611678565b61082e565b6101c461030136600461164f565b610906565b6101c461031436600461164f565b610959565b6101d961032736600461155f565b610966565b61023761033a3660046116fa565b6109db565b61023761034d3660046115e6565b610b6f565b6101d9610360366004611579565b610d0c565b6101d9610d37565b61038061037b366004611751565b610d5b565b6040516101a8929190611be8565b6004805461039b90611ca9565b80601f01602080910402602001604051908101604052809291908181526020018280546103c790611ca9565b80156104145780601f106103e957610100808354040283529160200191610414565b820191906000526020600020905b8154815290600101906020018083116103f757829003601f168201915b505050505081565b6000610429338484610e47565b90505b92915050565b60005490565b6001600160a01b038316600081815260026020908152604080832033808552925282205491921480159061046e57506000198114155b156104b2578281101561049c5760405162461bcd60e51b815260040161049390611a3c565b60405180910390fd5b6104b085336104ab8685611c6d565b610e47565b505b6104bd858585610eb7565b95945050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b7f000000000000000000000000000000000000000000000000000000000000001281565b7f74ab96aa97c24c914146377076ae1baf54bfc7d1e32d8dc8458cfa9366c9bbc881565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105699185906104ab908690611bfe565b5060019392505050565b61057d3382610ef7565b50565b6006602052600090815260409020546001600160a01b031681565b61057d3382610f27565b60086020526000908152604090205463ffffffff1681565b6001600160a01b0381166000908152600160205260409020545b919050565b60004382106105fd5760405162461bcd60e51b81526004016104939061191b565b6001600160a01b03831660009081526008602052604090205463ffffffff168061062b57600091505061042c565b6001600160a01b03841660009081526007602052604081208491610650600185611c84565b63ffffffff908116825260208201929092526040016000205416116106b9576001600160a01b038416600090815260076020526040812090610693600184611c84565b63ffffffff1663ffffffff1681526020019081526020016000206001015491505061042c565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff168310156106f457600091505061042c565b600080610702600184611c84565b90505b8163ffffffff168163ffffffff1611156107ca57600060026107278484611c84565b6107319190611c3e565b61073b9083611c84565b6001600160a01b038816600090815260076020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915291925087141561079e5760200151945061042c9350505050565b805163ffffffff168711156107b5578193506107c3565b6107c0600183611c84565b92505b5050610705565b506001600160a01b038516600090815260076020908152604080832063ffffffff9094168352929052206001015491505092915050565b61080b8282610fbc565b5050565b60056020526000908152604090205481565b6003805461039b90611ca9565b600061083b338686610eb7565b5061084e856001600160a01b0316611037565b156108fb5760405163d031426360e01b81526000906001600160a01b0387169063d0314263906108889033908990899089906004016117f6565b602060405180830381600087803b1580156108a257600080fd5b505af11580156108b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108da919061178f565b9050806108f95760405162461bcd60e51b81526004016104939061195c565b505b506001949350505050565b3360009081526002602090815260408083206001600160a01b03861684529091528120548281101561094a5760405162461bcd60e51b815260040161049390611b4d565b6108fb33856104ab8685611c6d565b6000610429338484610eb7565b6001600160a01b03811660009081526008602052604081205463ffffffff16806109915760006109d4565b6001600160a01b0383166000908152600760205260408120906109b5600184611c84565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9392505050565b60007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf878787604051602001610a149493929190611886565b60405160208183030381529060405280519060200120905060007f74ab96aa97c24c914146377076ae1baf54bfc7d1e32d8dc8458cfa9366c9bbc882604051602001610a619291906117c7565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610a9e94939291906118aa565b6020604051602081039080840390855afa158015610ac0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610af35760405162461bcd60e51b815260040161049390611987565b6001600160a01b0381166000908152600560205260408120805491610b1783611ce4565b919050558814610b395760405162461bcd60e51b815260040161049390611b16565b86421115610b595760405162461bcd60e51b815260040161049390611aaa565b610b63818a610f27565b5050505b505050505050565b42841015610b8f5760405162461bcd60e51b815260040161049390611a05565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086610bdc83611ce4565b9190505589604051602001610bf696959493929190611852565b60405160208183030381529060405280519060200120905060007f74ab96aa97c24c914146377076ae1baf54bfc7d1e32d8dc8458cfa9366c9bbc882604051602001610c439291906117c7565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051610c8094939291906118aa565b6020604051602081039080840390855afa158015610ca2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610cd85750896001600160a01b0316816001600160a01b0316145b610cf45760405162461bcd60e51b815260040161049390611adf565b610cff8a8a8a610e47565b5050505050505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60076020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b6001600160a01b038216610dae5760405162461bcd60e51b815260040161049390611b92565b6001600160a01b038216600090815260016020526040902054610dd2908290611bfe565b6001600160a01b03831660009081526001602052604081209190915554610dfa908290611bfe565b60009081556040516001600160a01b03841691907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e3b908590611849565b60405180910390a35050565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915280822085905551909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ea5908690611849565b60405180910390a35060019392505050565b6000610ec484848461103d565b506001600160a01b0380851660009081526006602052604080822054868416835291205461056992918216911684611143565b610f0182826112a2565b6001600160a01b0380831660009081526006602052604081205461080b92169083611143565b6001600160a01b0380831660009081526006602052604081205490911690610f4e846105bd565b6001600160a01b0385811660008181526006602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610fb6828483611143565b50505050565b6001600160a01b0382166000818152600260209081526040808320338085529252909120549114801590610ff257506000198114155b1561102857818110156110175760405162461bcd60e51b815260040161049390611a3c565b61102683336104ab8585611c6d565b505b6110328383610ef7565b505050565b3b151590565b60006001600160a01b0383166110655760405162461bcd60e51b8152600401610493906119bc565b6001600160a01b03841660009081526001602052604090205482111561109d5760405162461bcd60e51b815260040161049390611a73565b6001600160a01b0384166000908152600160205260409020546110c1908390611c6d565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546110f1908390611bfe565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ea5908690611849565b816001600160a01b0316836001600160a01b0316141580156111655750600081115b15611032576001600160a01b03831615611208576001600160a01b03831660009081526008602052604081205463ffffffff1690816111a55760006111e8565b6001600160a01b0385166000908152600760205260408120906111c9600185611c84565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006111f68483611c6d565b905061120486848484611366565b5050505b6001600160a01b03821615611032576001600160a01b03821660009081526008602052604081205463ffffffff169081611243576000611286565b6001600160a01b038416600090815260076020526040812090611267600185611c84565b63ffffffff1663ffffffff168152602001908152602001600020600101545b905060006112948483611bfe565b9050610b6785848484611366565b6001600160a01b0382166000908152600160205260409020548111156112da5760405162461bcd60e51b815260040161049390611a73565b6001600160a01b0382166000908152600160205260409020546112fe908290611c6d565b6001600160a01b03831660009081526001602052604081209190915554611326908290611c6d565b60009081556040516001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e3b908590611849565b600061138a436040518060600160405280602e8152602001611d16602e9139611507565b905060008463ffffffff161180156113e457506001600160a01b038516600090815260076020526040812063ffffffff8316916113c8600188611c84565b63ffffffff908116825260208201929092526040016000205416145b1561142d576001600160a01b0385166000908152600760205260408120839161140e600188611c84565b63ffffffff1681526020810191909152604001600020600101556114bd565b60408051808201825263ffffffff838116825260208083018681526001600160a01b038a166000908152600783528581208a851682529092529390209151825463ffffffff19169116178155905160019182015561148c908590611c16565b6001600160a01b0386166000908152600860205260409020805463ffffffff191663ffffffff929092169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72484846040516114f8929190611bc9565b60405180910390a25050505050565b600081640100000000841061152f5760405162461bcd60e51b815260040161049391906118c8565b509192915050565b80356001600160a01b03811681146105d757600080fd5b803560ff811681146105d757600080fd5b600060208284031215611570578081fd5b61042982611537565b6000806040838503121561158b578081fd5b61159483611537565b91506115a260208401611537565b90509250929050565b6000806000606084860312156115bf578081fd5b6115c884611537565b92506115d660208501611537565b9150604084013590509250925092565b600080600080600080600060e0888a031215611600578283fd5b61160988611537565b965061161760208901611537565b955060408801359450606088013593506116336080890161154e565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611661578182fd5b61166a83611537565b946020939093013593505050565b6000806000806060858703121561168d578384fd5b61169685611537565b935060208501359250604085013567ffffffffffffffff808211156116b9578384fd5b818701915087601f8301126116cc578384fd5b8135818111156116da578485fd5b8860208285010111156116eb578485fd5b95989497505060200194505050565b60008060008060008060c08789031215611712578182fd5b61171b87611537565b955060208701359450604087013593506117376060880161154e565b92506080870135915060a087013590509295509295509295565b60008060408385031215611763578182fd5b61176c83611537565b9150602083013563ffffffff81168114611784578182fd5b809150509250929050565b6000602082840312156117a0578081fd5b815180151581146109d4578182fd5b6000602082840312156117c0578081fd5b5035919050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b818110156118f4578581018301518582016040015282016118d8565b818111156119055783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f6765745072696f72566f7465733a206e6f74207965742064657465726d696e656040820152601960fa1b606082015260800190565b602080825260119082015270139bc8151bdad95b949958da5c1a595b9d607a1b604082015260600190565b6020808252818101527f64656c656761746542795369673a20696e76616c6964207369676e6174757265604082015260600190565b60208082526029908201527f45524332303a63616e6e6f74207472616e7366657220746f20746865207a65726040820152686f206164647265737360b81b606082015260800190565b6020808252601d908201527f45524332305065726d69743a206578706972656420646561646c696e65000000604082015260600190565b6020808252601c908201527f45524332303a20496e73756666696369656e7420617070726f76616c00000000604082015260600190565b6020808252601b908201527f45524332303a20496e73756666696369656e742062616c616e63650000000000604082015260600190565b6020808252818101527f64656c656761746542795369673a207369676e61747572652065787069726564604082015260600190565b6020808252601e908201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604082015260600190565b6020808252601c908201527f64656c656761746542795369673a20696e76616c6964206e6f6e636500000000604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b918252602082015260400190565b63ffffffff91909116815260200190565b63ffffffff929092168252602082015260400190565b60008219821115611c1157611c11611cff565b500190565b600063ffffffff808316818516808303821115611c3557611c35611cff565b01949350505050565b600063ffffffff80841680611c6157634e487b7160e01b83526012600452602483fd5b92169190910492915050565b600082821015611c7f57611c7f611cff565b500390565b600063ffffffff83811690831681811015611ca157611ca1611cff565b039392505050565b600281046001821680611cbd57607f821691505b60208210811415611cde57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611cf857611cf8611cff565b5060010190565b634e487b7160e01b600052601160045260246000fdfe5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a2646970667358221220cc742ef8a5e5cd3937ca5088d8cc1843c945191df74faa39949c5eb474febec264736f6c63430008000033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000199aa9e922aa2d2af79de99ac4c9b5727acde2c4

-----Decoded View---------------
Arg [0] : owner (address): 0x199Aa9E922aA2d2aF79De99aC4c9b5727ACDE2c4

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000199aa9e922aa2d2af79de99ac4c9b5727acde2c4


Loading...
Loading
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.