ETH Price: $3,521.67 (+2.94%)
Gas: 5 Gwei

Token

Decentralized Nations (DENA)
 

Overview

Max Total Supply

1,000,000 DENA

Holders

427 (0.00%)

Total Transfers

-

Market

Price

$0.03 @ 0.000007 ETH (+0.03%)

Onchain Market Cap

$25,759.56

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Decentralized Nation by Smatoos offers a platform for users to collect and stake of NFTs from different cities in virtual world.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Dena

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-29
*/

/**
 *Submitted for verification at Etherscan.io on 2020-09-16
*/

/**
 *Submitted for verification at Etherscan.io on 2020-09-15
*/

pragma solidity ^0.5.16;
pragma experimental ABIEncoderV2;

// From https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/Math.sol
// Subject to the MIT license.

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting with custom message on overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, errorMessage);

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction underflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on underflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot underflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot 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-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b, string memory errorMessage) 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-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, errorMessage);

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers.
     * Reverts with custom message on division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Dena {
    /// @notice EIP-20 token name for this token
    string public constant name = "Decentralized Nations";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "DENA";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 1_000_000e18; // 1 million Dena

    /// @notice Address which may mint new tokens
    address public minter;

    /// @notice The timestamp after which minting may occur
    uint public mintingAllowedAfter;

    /// @notice Minimum time between mints
    uint32 public constant minimumTimeBetweenMints = 1 days * 365;

    /// @notice Cap on the percentage of totalSupply that can be minted at each mint
    uint8 public constant mintCap = 5;

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice The EIP-712 typehash for the permit struct used by the contract
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when the minter address is changed
    event MinterChanged(address minter, address newMinter);

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new Dena token
     * @param account The initial account to grant all the tokens
     * @param minter_ The account with minting ability
     * @param mintingAllowedAfter_ The timestamp after which minting may occur
     */
    constructor(address account, address minter_, uint mintingAllowedAfter_) public {
        require(mintingAllowedAfter_ >= block.timestamp, "Dena::constructor: minting can only begin after deployment");

        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
        minter = minter_;
        emit MinterChanged(address(0), minter);
        mintingAllowedAfter = mintingAllowedAfter_;
    }

    /**
     * @notice Change the minter address
     * @param minter_ The address of the new minter
     */
    function setMinter(address minter_) external {
        require(msg.sender == minter, "Dena::setMinter: only the minter can change the minter address");
        emit MinterChanged(minter, minter_);
        minter = minter_;
    }

    /**
     * @notice Mint new tokens
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to be minted
     */
    function mint(address dst, uint rawAmount) external {
        require(msg.sender == minter, "Dena::mint: only the minter can mint");
        require(block.timestamp >= mintingAllowedAfter, "Dena::mint: minting not allowed yet");
        require(dst != address(0), "Dena::mint: cannot transfer to the zero address");

        // record the mint
        mintingAllowedAfter = SafeMath.add(block.timestamp, minimumTimeBetweenMints);

        // mint the amount
        uint96 amount = safe96(rawAmount, "Dena::mint: amount exceeds 96 bits");
        require(amount <= SafeMath.div(SafeMath.mul(totalSupply, mintCap), 100), "Dena::mint: exceeded mint cap");
        totalSupply = safe96(SafeMath.add(totalSupply, amount), "Dena::mint: totalSupply exceeds 96 bits");

        // transfer the amount to the recipient
        balances[dst] = add96(balances[dst], amount, "Dena::mint: transfer amount overflows");
        emit Transfer(address(0), dst, amount);

        // move delegates
        _moveDelegates(address(0), delegates[dst], amount);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Dena::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Triggers an approval from owner to spends
     * @param owner The address to approve from
     * @param spender The address to be approved
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Dena::permit: amount exceeds 96 bits");
        }

        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Dena::permit: invalid signature");
        require(signatory == owner, "Dena::permit: unauthorized");
        require(now <= deadline, "Dena::permit: signature expired");

        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint96 amount = safe96(rawAmount, "Dena::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "Dena::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Dena::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Dena::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Dena::delegateBySig: invalid nonce");
        require(now <= expiry, "Dena::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "Dena::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];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "Dena::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Dena::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "Dena::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Dena::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

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

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "Dena::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
      uint32 blockNumber = safe32(block.number, "Dena::_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);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"minter_","type":"address"},{"internalType":"uint256","name":"mintingAllowedAfter_","type":"uint256"}],"payable":false,"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":"amount","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":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"address","name":"newMinter","type":"address"}],"name":"MinterChanged","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumTimeBetweenMints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"mint","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintCap","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minter","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingAllowedAfter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"minter_","type":"address"}],"name":"setMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405269d3c21bcecceda10000006000553480156200001f57600080fd5b506040516200457338038062004573833981810160405262000045919081019062000242565b428110156200008b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000829062000360565b60405180910390fd5b600054600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6000546040516200015d919062000382565b60405180910390a381600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f66000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051620001fc92919062000333565b60405180910390a1806002819055505050506200045e565b60008151905062000225816200042a565b92915050565b6000815190506200023c8162000444565b92915050565b6000806000606084860312156200025857600080fd5b6000620002688682870162000214565b93505060206200027b8682870162000214565b92505060406200028e868287016200022b565b9150509250925092565b620002a381620003ee565b82525050565b620002b481620003b0565b82525050565b6000620002c9603a836200039f565b91507f44656e613a3a636f6e7374727563746f723a206d696e74696e672063616e206f60008301527f6e6c7920626567696e206166746572206465706c6f796d656e740000000000006020830152604082019050919050565b6200032d81620003e4565b82525050565b60006040820190506200034a600083018562000298565b620003596020830184620002a9565b9392505050565b600060208201905081810360008301526200037b81620002ba565b9050919050565b600060208201905062000399600083018462000322565b92915050565b600082825260208201905092915050565b6000620003bd82620003c4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620003fb8262000402565b9050919050565b60006200040f8262000416565b9050919050565b60006200042382620003c4565b9050919050565b6200043581620003b0565b81146200044157600080fd5b50565b6200044f81620003e4565b81146200045b57600080fd5b50565b614105806200046e6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146104fa578063e7a324dc1461052a578063f1127ed814610548578063fca3b5aa14610579576101a9565b8063b4b5ea5714610492578063c3cda520146104c2578063d505accf146104de576101a9565b8063782d6fe1116100d3578063782d6fe1146103e45780637ecebe001461041457806395d89b4114610444578063a9059cbb14610462576101a9565b80636fcfff451461036657806370a082311461039657806376c71ca1146103c6576101a9565b806330adf81f1161016657806340c10f191161014057806340c10f19146102e0578063587cde1e146102fc5780635c11d62f1461032c5780635c19a95c1461034a576101a9565b806330adf81f1461028657806330b36cef146102a4578063313ce567146102c2576101a9565b806306fdde03146101ae57806307546172146101cc578063095ea7b3146101ea57806318160ddd1461021a57806320606b701461023857806323b872dd14610256575b600080fd5b6101b6610595565b6040516101c39190613a16565b60405180910390f35b6101d46105ce565b6040516101e1919061386c565b60405180910390f35b61020460048036036101ff9190810190612e94565b6105f4565b60405161021191906138b0565b60405180910390f35b610222610787565b60405161022f9190613c5a565b60405180910390f35b61024061078d565b60405161024d91906138cb565b60405180910390f35b610270600480360361026b9190810190612da7565b6107a4565b60405161027d91906138b0565b60405180910390f35b61028e610a38565b60405161029b91906138cb565b60405180910390f35b6102ac610a4f565b6040516102b99190613c5a565b60405180910390f35b6102ca610a55565b6040516102d79190613cb9565b60405180910390f35b6102fa60048036036102f59190810190612e94565b610a5a565b005b61031660048036036103119190810190612d42565b610e55565b604051610323919061386c565b60405180910390f35b610334610e88565b6040516103419190613c75565b60405180910390f35b610364600480360361035f9190810190612d42565b610e90565b005b610380600480360361037b9190810190612d42565b610e9d565b60405161038d9190613c75565b60405180910390f35b6103b060048036036103ab9190810190612d42565b610ec0565b6040516103bd9190613c5a565b60405180910390f35b6103ce610f2f565b6040516103db9190613cb9565b60405180910390f35b6103fe60048036036103f99190810190612e94565b610f34565b60405161040b9190613cef565b60405180910390f35b61042e60048036036104299190810190612d42565b611347565b60405161043b9190613c5a565b60405180910390f35b61044c61135f565b6040516104599190613a16565b60405180910390f35b61047c60048036036104779190810190612e94565b611398565b60405161048991906138b0565b60405180910390f35b6104ac60048036036104a79190810190612d42565b6113d5565b6040516104b99190613cef565b60405180910390f35b6104dc60048036036104d79190810190612ed0565b6114c3565b005b6104f860048036036104f39190810190612df6565b611766565b005b610514600480360361050f9190810190612d6b565b611bb8565b6040516105219190613c5a565b60405180910390f35b610532611c65565b60405161053f91906138cb565b60405180910390f35b610562600480360361055d9190810190612f59565b611c7c565b604051610570929190613c90565b60405180910390f35b610593600480360361058e9190810190612d42565b611cd5565b005b6040518060400160405280601581526020017f446563656e7472616c697a6564204e6174696f6e73000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610647577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061066c565b61066983604051806060016040528060258152602001613f9760259139611e04565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107749190613cd4565b60405180910390a3600191505092915050565b60005481565b60405161079990613842565b604051809103902081565b6000803390506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050600061086785604051806060016040528060258152602001613f9760259139611e04565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156108e157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610a1f57600061090b83836040518060600160405280603d8152602001614006603d9139611e62565b905080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a159190613cd4565b60405180910390a3505b610a2a878783611ed3565b600193505050509392505050565b604051610a449061382d565b604051809103902081565b60025481565b601281565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae190613a7a565b60405180910390fd5b600254421015610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690613aba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9690613a9a565b60405180910390fd5b610bb3426301e1338063ffffffff166122b4565b6002819055506000610bdd82604051806060016040528060228152602001613fe460229139611e04565b9050610bf9610bf2600054600560ff16612309565b6064612379565b816bffffffffffffffffffffffff161115610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090613b1a565b60405180910390fd5b610c84610c66600054836bffffffffffffffffffffffff166122b4565b604051806060016040528060278152602001613f4a60279139611e04565b6bffffffffffffffffffffffff16600081905550610d12600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806025815260200161409e602591396123c3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ddd9190613cd4565b60405180910390a3610e506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612439565b505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610e9a3382612734565b50565b60076020528060005260406000206000915054906101000a900463ffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b600581565b6000438210610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90613b7a565b60405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610fe5576000915050611341565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16116110e757600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050611341565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115611168576000915050611341565b600080905060006001830390505b8163ffffffff168163ffffffff1611156112c3576000600283830363ffffffff168161119e57fe5b04820390506111ab612cab565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff16141561129b57806020015195505050505050611341565b86816000015163ffffffff1610156112b5578193506112bc565b6001820392505b5050611176565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60086020528060005260406000206000915090505481565b6040518060400160405280600481526020017f44454e410000000000000000000000000000000000000000000000000000000081525081565b6000806113bd83604051806060016040528060268152602001613f7160269139611e04565b90506113ca338583611ed3565b600191505092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161143f5760006114bb565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60006040516114d190613842565b60405180910390206040518060400160405280601581526020017f446563656e7472616c697a6564204e6174696f6e7300000000000000000000008152508051906020012061151e6128f4565b30604051602001611532949392919061398c565b604051602081830303815290604052805190602001209050600060405161155890613857565b60405180910390208888886040516020016115769493929190613947565b604051602081830303815290604052805190602001209050600082826040516020016115a39291906137f6565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516115e094939291906139d1565b6020604051602081039080840390855afa158015611602573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167590613bfa565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055891461170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490613c1a565b60405180910390fd5b87421115611750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174790613b3a565b60405180910390fd5b61175a818b612734565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156117b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506117dd565b6117da86604051806060016040528060248152602001613f2660249139611e04565b90505b60006040516117eb90613842565b60405180910390206040518060400160405280601581526020017f446563656e7472616c697a6564204e6174696f6e730000000000000000000000815250805190602001206118386128f4565b3060405160200161184c949392919061398c565b60405160208183030381529060405280519060200120905060006040516118729061382d565b60405180910390208a8a8a600860008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016118e1969594939291906138e6565b6040516020818303038152906040528051906020012090506000828260405160200161190e9291906137f6565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161194b94939291906139d1565b6020604051602081039080840390855afa15801561196d573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090613ada565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90613bba565b60405180910390fd5b88421115611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190613afa565b60405180910390fd5b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611ba29190613cd4565b60405180910390a3505050505050505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b604051611c7190613857565b604051809103902081565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613b5a565b60405180910390fd5b7f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611db8929190613887565b60405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006c0100000000000000000000000083108290611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f9190613a38565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd9190613a38565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3a90613bda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90613c3a565b60405180910390fd5b61202d600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060368152602001613ec060369139611e62565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612114600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060308152602001613ef6603091396123c3565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121de9190613cd4565b60405180910390a36122af600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612439565b505050565b6000808284019050838110156122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f690613a5a565b60405180910390fd5b8091505092915050565b60008083141561231c5760009050612373565b600082840290508284828161232d57fe5b041461236e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236590613b9a565b60405180910390fd5b809150505b92915050565b60006123bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612901565b905092915050565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015839061242d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124249190613a38565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561248357506000816bffffffffffffffffffffffff16115b1561272f57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125db576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116125265760006125a2565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006125c98285604051806060016040528060288152602001613fbc60289139611e62565b90506125d786848484612962565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461272e576000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116126795760006126f5565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061271c8285604051806060016040528060278152602001614043602791396123c3565b905061272a85848484612962565b5050505b5b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46128ee828483612439565b50505050565b6000804690508091505090565b60008083118290612948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293f9190613a38565b60405180910390fd5b50600083858161295457fe5b049050809150509392505050565b60006129864360405180606001604052806034815260200161406a60349139612c55565b905060008463ffffffff16118015612a1b57508063ffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612ab65781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612bfe565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612c46929190613d0a565b60405180910390a25050505050565b600064010000000083108290612ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c989190613a38565b60405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff1681525090565b600081359050612ce881613e4c565b92915050565b600081359050612cfd81613e63565b92915050565b600081359050612d1281613e7a565b92915050565b600081359050612d2781613e91565b92915050565b600081359050612d3c81613ea8565b92915050565b600060208284031215612d5457600080fd5b6000612d6284828501612cd9565b91505092915050565b60008060408385031215612d7e57600080fd5b6000612d8c85828601612cd9565b9250506020612d9d85828601612cd9565b9150509250929050565b600080600060608486031215612dbc57600080fd5b6000612dca86828701612cd9565b9350506020612ddb86828701612cd9565b9250506040612dec86828701612d03565b9150509250925092565b600080600080600080600060e0888a031215612e1157600080fd5b6000612e1f8a828b01612cd9565b9750506020612e308a828b01612cd9565b9650506040612e418a828b01612d03565b9550506060612e528a828b01612d03565b9450506080612e638a828b01612d2d565b93505060a0612e748a828b01612cee565b92505060c0612e858a828b01612cee565b91505092959891949750929550565b60008060408385031215612ea757600080fd5b6000612eb585828601612cd9565b9250506020612ec685828601612d03565b9150509250929050565b60008060008060008060c08789031215612ee957600080fd5b6000612ef789828a01612cd9565b9650506020612f0889828a01612d03565b9550506040612f1989828a01612d03565b9450506060612f2a89828a01612d2d565b9350506080612f3b89828a01612cee565b92505060a0612f4c89828a01612cee565b9150509295509295509295565b60008060408385031215612f6c57600080fd5b6000612f7a85828601612cd9565b9250506020612f8b85828601612d18565b9150509250929050565b612f9e81613d65565b82525050565b612fad81613d77565b82525050565b612fbc81613d83565b82525050565b612fd3612fce82613d83565b613e31565b82525050565b6000612fe482613d3e565b612fee8185613d49565b9350612ffe818560208601613dfe565b61300781613e3b565b840191505092915050565b600061301d82613d33565b6130278185613d49565b9350613037818560208601613dfe565b61304081613e3b565b840191505092915050565b6000613058600283613d5a565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000613098601b83613d49565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006130d8602483613d49565b91507f44656e613a3a6d696e743a206f6e6c7920746865206d696e7465722063616e2060008301527f6d696e74000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061313e602f83613d49565b91507f44656e613a3a6d696e743a2063616e6e6f74207472616e7366657220746f207460008301527f6865207a65726f206164647265737300000000000000000000000000000000006020830152604082019050919050565b60006131a4602383613d49565b91507f44656e613a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642060008301527f79657400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061320a601f83613d49565b91507f44656e613a3a7065726d69743a20696e76616c6964207369676e6174757265006000830152602082019050919050565b600061324a601f83613d49565b91507f44656e613a3a7065726d69743a207369676e61747572652065787069726564006000830152602082019050919050565b600061328a601d83613d49565b91507f44656e613a3a6d696e743a206578636565646564206d696e74206361700000006000830152602082019050919050565b60006132ca602683613d49565b91507f44656e613a3a64656c656761746542795369673a207369676e6174757265206560008301527f78706972656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613330605283613d5a565b91507f5065726d69742861646472657373206f776e65722c616464726573732073706560008301527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208301527f2c75696e7432353620646561646c696e652900000000000000000000000000006040830152605282019050919050565b60006133bc603e83613d49565b91507f44656e613a3a7365744d696e7465723a206f6e6c7920746865206d696e74657260008301527f2063616e206368616e676520746865206d696e746572206164647265737300006020830152604082019050919050565b6000613422602783613d49565b91507f44656e613a3a6765745072696f72566f7465733a206e6f74207965742064657460008301527f65726d696e6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613488604383613d5a565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b6000613514602183613d49565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061357a601a83613d49565b91507f44656e613a3a7065726d69743a20756e617574686f72697a65640000000000006000830152602082019050919050565b60006135ba603c83613d49565b91507f44656e613a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e736665722066726f6d20746865207a65726f2061646472657373000000006020830152604082019050919050565b6000613620602683613d49565b91507f44656e613a3a64656c656761746542795369673a20696e76616c69642073696760008301527f6e617475726500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613686602283613d49565b91507f44656e613a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006136ec603a83613d49565b91507f44656e613a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e7366657220746f20746865207a65726f20616464726573730000000000006020830152604082019050919050565b6000613752603a83613d5a565b91507f44656c65676174696f6e28616464726573732064656c6567617465652c75696e60008301527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020830152603a82019050919050565b6137b481613dad565b82525050565b6137c381613db7565b82525050565b6137d281613dc7565b82525050565b6137e181613dec565b82525050565b6137f081613dd4565b82525050565b60006138018261304b565b915061380d8285612fc2565b60208201915061381d8284612fc2565b6020820191508190509392505050565b600061383882613323565b9150819050919050565b600061384d8261347b565b9150819050919050565b600061386282613745565b9150819050919050565b60006020820190506138816000830184612f95565b92915050565b600060408201905061389c6000830185612f95565b6138a96020830184612f95565b9392505050565b60006020820190506138c56000830184612fa4565b92915050565b60006020820190506138e06000830184612fb3565b92915050565b600060c0820190506138fb6000830189612fb3565b6139086020830188612f95565b6139156040830187612f95565b61392260608301866137ab565b61392f60808301856137ab565b61393c60a08301846137ab565b979650505050505050565b600060808201905061395c6000830187612fb3565b6139696020830186612f95565b61397660408301856137ab565b61398360608301846137ab565b95945050505050565b60006080820190506139a16000830187612fb3565b6139ae6020830186612fb3565b6139bb60408301856137ab565b6139c86060830184612f95565b95945050505050565b60006080820190506139e66000830187612fb3565b6139f360208301866137c9565b613a006040830185612fb3565b613a0d6060830184612fb3565b95945050505050565b60006020820190508181036000830152613a308184613012565b905092915050565b60006020820190508181036000830152613a528184612fd9565b905092915050565b60006020820190508181036000830152613a738161308b565b9050919050565b60006020820190508181036000830152613a93816130cb565b9050919050565b60006020820190508181036000830152613ab381613131565b9050919050565b60006020820190508181036000830152613ad381613197565b9050919050565b60006020820190508181036000830152613af3816131fd565b9050919050565b60006020820190508181036000830152613b138161323d565b9050919050565b60006020820190508181036000830152613b338161327d565b9050919050565b60006020820190508181036000830152613b53816132bd565b9050919050565b60006020820190508181036000830152613b73816133af565b9050919050565b60006020820190508181036000830152613b9381613415565b9050919050565b60006020820190508181036000830152613bb381613507565b9050919050565b60006020820190508181036000830152613bd38161356d565b9050919050565b60006020820190508181036000830152613bf3816135ad565b9050919050565b60006020820190508181036000830152613c1381613613565b9050919050565b60006020820190508181036000830152613c3381613679565b9050919050565b60006020820190508181036000830152613c53816136df565b9050919050565b6000602082019050613c6f60008301846137ab565b92915050565b6000602082019050613c8a60008301846137ba565b92915050565b6000604082019050613ca560008301856137ba565b613cb260208301846137e7565b9392505050565b6000602082019050613cce60008301846137c9565b92915050565b6000602082019050613ce960008301846137d8565b92915050565b6000602082019050613d0460008301846137e7565b92915050565b6000604082019050613d1f60008301856137d8565b613d2c60208301846137d8565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000613d7082613d8d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b6000613df782613dd4565b9050919050565b60005b83811015613e1c578082015181840152602081019050613e01565b83811115613e2b576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b613e5581613d65565b8114613e6057600080fd5b50565b613e6c81613d83565b8114613e7757600080fd5b50565b613e8381613dad565b8114613e8e57600080fd5b50565b613e9a81613db7565b8114613ea557600080fd5b50565b613eb181613dc7565b8114613ebc57600080fd5b5056fe44656e613a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636544656e613a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777344656e613a3a7065726d69743a20616d6f756e742065786365656473203936206269747344656e613a3a6d696e743a20746f74616c537570706c792065786365656473203936206269747344656e613a3a7472616e736665723a20616d6f756e742065786365656473203936206269747344656e613a3a617070726f76653a20616d6f756e742065786365656473203936206269747344656e613a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777344656e613a3a6d696e743a20616d6f756e742065786365656473203936206269747344656e613a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636544656e613a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777344656e613a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747344656e613a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773a365627a7a723158200f52526172a1d8e74cacc6879fd780f61294514a8a1d48b987aac9c3811752966c6578706572696d656e74616cf564736f6c6343000510004000000000000000000000000038b49b879562046412a62c02a88dc867b9afd9c100000000000000000000000038b49b879562046412a62c02a88dc867b9afd9c100000000000000000000000000000000000000000000000000000000673bd500

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80636fcfff45116100f9578063b4b5ea5711610097578063dd62ed3e11610071578063dd62ed3e146104fa578063e7a324dc1461052a578063f1127ed814610548578063fca3b5aa14610579576101a9565b8063b4b5ea5714610492578063c3cda520146104c2578063d505accf146104de576101a9565b8063782d6fe1116100d3578063782d6fe1146103e45780637ecebe001461041457806395d89b4114610444578063a9059cbb14610462576101a9565b80636fcfff451461036657806370a082311461039657806376c71ca1146103c6576101a9565b806330adf81f1161016657806340c10f191161014057806340c10f19146102e0578063587cde1e146102fc5780635c11d62f1461032c5780635c19a95c1461034a576101a9565b806330adf81f1461028657806330b36cef146102a4578063313ce567146102c2576101a9565b806306fdde03146101ae57806307546172146101cc578063095ea7b3146101ea57806318160ddd1461021a57806320606b701461023857806323b872dd14610256575b600080fd5b6101b6610595565b6040516101c39190613a16565b60405180910390f35b6101d46105ce565b6040516101e1919061386c565b60405180910390f35b61020460048036036101ff9190810190612e94565b6105f4565b60405161021191906138b0565b60405180910390f35b610222610787565b60405161022f9190613c5a565b60405180910390f35b61024061078d565b60405161024d91906138cb565b60405180910390f35b610270600480360361026b9190810190612da7565b6107a4565b60405161027d91906138b0565b60405180910390f35b61028e610a38565b60405161029b91906138cb565b60405180910390f35b6102ac610a4f565b6040516102b99190613c5a565b60405180910390f35b6102ca610a55565b6040516102d79190613cb9565b60405180910390f35b6102fa60048036036102f59190810190612e94565b610a5a565b005b61031660048036036103119190810190612d42565b610e55565b604051610323919061386c565b60405180910390f35b610334610e88565b6040516103419190613c75565b60405180910390f35b610364600480360361035f9190810190612d42565b610e90565b005b610380600480360361037b9190810190612d42565b610e9d565b60405161038d9190613c75565b60405180910390f35b6103b060048036036103ab9190810190612d42565b610ec0565b6040516103bd9190613c5a565b60405180910390f35b6103ce610f2f565b6040516103db9190613cb9565b60405180910390f35b6103fe60048036036103f99190810190612e94565b610f34565b60405161040b9190613cef565b60405180910390f35b61042e60048036036104299190810190612d42565b611347565b60405161043b9190613c5a565b60405180910390f35b61044c61135f565b6040516104599190613a16565b60405180910390f35b61047c60048036036104779190810190612e94565b611398565b60405161048991906138b0565b60405180910390f35b6104ac60048036036104a79190810190612d42565b6113d5565b6040516104b99190613cef565b60405180910390f35b6104dc60048036036104d79190810190612ed0565b6114c3565b005b6104f860048036036104f39190810190612df6565b611766565b005b610514600480360361050f9190810190612d6b565b611bb8565b6040516105219190613c5a565b60405180910390f35b610532611c65565b60405161053f91906138cb565b60405180910390f35b610562600480360361055d9190810190612f59565b611c7c565b604051610570929190613c90565b60405180910390f35b610593600480360361058e9190810190612d42565b611cd5565b005b6040518060400160405280601581526020017f446563656e7472616c697a6564204e6174696f6e73000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610647577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061066c565b61066983604051806060016040528060258152602001613f9760259139611e04565b90505b80600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107749190613cd4565b60405180910390a3600191505092915050565b60005481565b60405161079990613842565b604051809103902081565b6000803390506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050600061086785604051806060016040528060258152602001613f9760259139611e04565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156108e157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610a1f57600061090b83836040518060600160405280603d8152602001614006603d9139611e62565b905080600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a159190613cd4565b60405180910390a3505b610a2a878783611ed3565b600193505050509392505050565b604051610a449061382d565b604051809103902081565b60025481565b601281565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae190613a7a565b60405180910390fd5b600254421015610b2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2690613aba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9690613a9a565b60405180910390fd5b610bb3426301e1338063ffffffff166122b4565b6002819055506000610bdd82604051806060016040528060228152602001613fe460229139611e04565b9050610bf9610bf2600054600560ff16612309565b6064612379565b816bffffffffffffffffffffffff161115610c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4090613b1a565b60405180910390fd5b610c84610c66600054836bffffffffffffffffffffffff166122b4565b604051806060016040528060278152602001613f4a60279139611e04565b6bffffffffffffffffffffffff16600081905550610d12600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806025815260200161409e602591396123c3565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ddd9190613cd4565b60405180910390a3610e506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612439565b505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6301e1338081565b610e9a3382612734565b50565b60076020528060005260406000206000915054906101000a900463ffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b600581565b6000438210610f78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6f90613b7a565b60405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610fe5576000915050611341565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16116110e757600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff16915050611341565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115611168576000915050611341565b600080905060006001830390505b8163ffffffff168163ffffffff1611156112c3576000600283830363ffffffff168161119e57fe5b04820390506111ab612cab565b600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff16141561129b57806020015195505050505050611341565b86816000015163ffffffff1610156112b5578193506112bc565b6001820392505b5050611176565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60086020528060005260406000206000915090505481565b6040518060400160405280600481526020017f44454e410000000000000000000000000000000000000000000000000000000081525081565b6000806113bd83604051806060016040528060268152602001613f7160269139611e04565b90506113ca338583611ed3565b600191505092915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161143f5760006114bb565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60006040516114d190613842565b60405180910390206040518060400160405280601581526020017f446563656e7472616c697a6564204e6174696f6e7300000000000000000000008152508051906020012061151e6128f4565b30604051602001611532949392919061398c565b604051602081830303815290604052805190602001209050600060405161155890613857565b60405180910390208888886040516020016115769493929190613947565b604051602081830303815290604052805190602001209050600082826040516020016115a39291906137f6565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516115e094939291906139d1565b6020604051602081039080840390855afa158015611602573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167590613bfa565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055891461170d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170490613c1a565b60405180910390fd5b87421115611750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174790613b3a565b60405180910390fd5b61175a818b612734565b50505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8614156117b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506117dd565b6117da86604051806060016040528060248152602001613f2660249139611e04565b90505b60006040516117eb90613842565b60405180910390206040518060400160405280601581526020017f446563656e7472616c697a6564204e6174696f6e730000000000000000000000815250805190602001206118386128f4565b3060405160200161184c949392919061398c565b60405160208183030381529060405280519060200120905060006040516118729061382d565b60405180910390208a8a8a600860008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558b6040516020016118e1969594939291906138e6565b6040516020818303038152906040528051906020012090506000828260405160200161190e9291906137f6565b60405160208183030381529060405280519060200120905060006001828989896040516000815260200160405260405161194b94939291906139d1565b6020604051602081039080840390855afa15801561196d573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e090613ada565b60405180910390fd5b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4e90613bba565b60405180910390fd5b88421115611a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9190613afa565b60405180910390fd5b84600360008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92587604051611ba29190613cd4565b60405180910390a3505050505050505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b604051611c7190613857565b604051809103902081565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613b5a565b60405180910390fd5b7f3b0007eb941cf645526cbb3a4fdaecda9d28ce4843167d9263b536a1f1edc0f6600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051611db8929190613887565b60405180910390a180600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60006c0100000000000000000000000083108290611e58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4f9190613a38565b60405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd9190613a38565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3a90613bda565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611fb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faa90613c3a565b60405180910390fd5b61202d600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060368152602001613ec060369139611e62565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612114600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1682604051806060016040528060308152602001613ef6603091396123c3565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121de9190613cd4565b60405180910390a36122af600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612439565b505050565b6000808284019050838110156122ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f690613a5a565b60405180910390fd5b8091505092915050565b60008083141561231c5760009050612373565b600082840290508284828161232d57fe5b041461236e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236590613b9a565b60405180910390fd5b809150505b92915050565b60006123bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612901565b905092915050565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015839061242d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124249190613a38565b60405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561248357506000816bffffffffffffffffffffffff16115b1561272f57600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146125db576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116125265760006125a2565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006125c98285604051806060016040528060288152602001613fbc60289139611e62565b90506125d786848484612962565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461272e576000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116126795760006126f5565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061271c8285604051806060016040528060278152602001614043602791396123c3565b905061272a85848484612962565b5050505b5b505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a46128ee828483612439565b50505050565b6000804690508091505090565b60008083118290612948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293f9190613a38565b60405180910390fd5b50600083858161295457fe5b049050809150509392505050565b60006129864360405180606001604052806034815260200161406a60349139612c55565b905060008463ffffffff16118015612a1b57508063ffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15612ab65781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550612bfe565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051612c46929190613d0a565b60405180910390a25050505050565b600064010000000083108290612ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c989190613a38565b60405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff1681525090565b600081359050612ce881613e4c565b92915050565b600081359050612cfd81613e63565b92915050565b600081359050612d1281613e7a565b92915050565b600081359050612d2781613e91565b92915050565b600081359050612d3c81613ea8565b92915050565b600060208284031215612d5457600080fd5b6000612d6284828501612cd9565b91505092915050565b60008060408385031215612d7e57600080fd5b6000612d8c85828601612cd9565b9250506020612d9d85828601612cd9565b9150509250929050565b600080600060608486031215612dbc57600080fd5b6000612dca86828701612cd9565b9350506020612ddb86828701612cd9565b9250506040612dec86828701612d03565b9150509250925092565b600080600080600080600060e0888a031215612e1157600080fd5b6000612e1f8a828b01612cd9565b9750506020612e308a828b01612cd9565b9650506040612e418a828b01612d03565b9550506060612e528a828b01612d03565b9450506080612e638a828b01612d2d565b93505060a0612e748a828b01612cee565b92505060c0612e858a828b01612cee565b91505092959891949750929550565b60008060408385031215612ea757600080fd5b6000612eb585828601612cd9565b9250506020612ec685828601612d03565b9150509250929050565b60008060008060008060c08789031215612ee957600080fd5b6000612ef789828a01612cd9565b9650506020612f0889828a01612d03565b9550506040612f1989828a01612d03565b9450506060612f2a89828a01612d2d565b9350506080612f3b89828a01612cee565b92505060a0612f4c89828a01612cee565b9150509295509295509295565b60008060408385031215612f6c57600080fd5b6000612f7a85828601612cd9565b9250506020612f8b85828601612d18565b9150509250929050565b612f9e81613d65565b82525050565b612fad81613d77565b82525050565b612fbc81613d83565b82525050565b612fd3612fce82613d83565b613e31565b82525050565b6000612fe482613d3e565b612fee8185613d49565b9350612ffe818560208601613dfe565b61300781613e3b565b840191505092915050565b600061301d82613d33565b6130278185613d49565b9350613037818560208601613dfe565b61304081613e3b565b840191505092915050565b6000613058600283613d5a565b91507f19010000000000000000000000000000000000000000000000000000000000006000830152600282019050919050565b6000613098601b83613d49565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006130d8602483613d49565b91507f44656e613a3a6d696e743a206f6e6c7920746865206d696e7465722063616e2060008301527f6d696e74000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061313e602f83613d49565b91507f44656e613a3a6d696e743a2063616e6e6f74207472616e7366657220746f207460008301527f6865207a65726f206164647265737300000000000000000000000000000000006020830152604082019050919050565b60006131a4602383613d49565b91507f44656e613a3a6d696e743a206d696e74696e67206e6f7420616c6c6f7765642060008301527f79657400000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061320a601f83613d49565b91507f44656e613a3a7065726d69743a20696e76616c6964207369676e6174757265006000830152602082019050919050565b600061324a601f83613d49565b91507f44656e613a3a7065726d69743a207369676e61747572652065787069726564006000830152602082019050919050565b600061328a601d83613d49565b91507f44656e613a3a6d696e743a206578636565646564206d696e74206361700000006000830152602082019050919050565b60006132ca602683613d49565b91507f44656e613a3a64656c656761746542795369673a207369676e6174757265206560008301527f78706972656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613330605283613d5a565b91507f5065726d69742861646472657373206f776e65722c616464726573732073706560008301527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208301527f2c75696e7432353620646561646c696e652900000000000000000000000000006040830152605282019050919050565b60006133bc603e83613d49565b91507f44656e613a3a7365744d696e7465723a206f6e6c7920746865206d696e74657260008301527f2063616e206368616e676520746865206d696e746572206164647265737300006020830152604082019050919050565b6000613422602783613d49565b91507f44656e613a3a6765745072696f72566f7465733a206e6f74207965742064657460008301527f65726d696e6564000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613488604383613d5a565b91507f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353660008301527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208301527f63742900000000000000000000000000000000000000000000000000000000006040830152604382019050919050565b6000613514602183613d49565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061357a601a83613d49565b91507f44656e613a3a7065726d69743a20756e617574686f72697a65640000000000006000830152602082019050919050565b60006135ba603c83613d49565b91507f44656e613a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e736665722066726f6d20746865207a65726f2061646472657373000000006020830152604082019050919050565b6000613620602683613d49565b91507f44656e613a3a64656c656761746542795369673a20696e76616c69642073696760008301527f6e617475726500000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613686602283613d49565b91507f44656e613a3a64656c656761746542795369673a20696e76616c6964206e6f6e60008301527f63650000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006136ec603a83613d49565b91507f44656e613a3a5f7472616e73666572546f6b656e733a2063616e6e6f7420747260008301527f616e7366657220746f20746865207a65726f20616464726573730000000000006020830152604082019050919050565b6000613752603a83613d5a565b91507f44656c65676174696f6e28616464726573732064656c6567617465652c75696e60008301527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020830152603a82019050919050565b6137b481613dad565b82525050565b6137c381613db7565b82525050565b6137d281613dc7565b82525050565b6137e181613dec565b82525050565b6137f081613dd4565b82525050565b60006138018261304b565b915061380d8285612fc2565b60208201915061381d8284612fc2565b6020820191508190509392505050565b600061383882613323565b9150819050919050565b600061384d8261347b565b9150819050919050565b600061386282613745565b9150819050919050565b60006020820190506138816000830184612f95565b92915050565b600060408201905061389c6000830185612f95565b6138a96020830184612f95565b9392505050565b60006020820190506138c56000830184612fa4565b92915050565b60006020820190506138e06000830184612fb3565b92915050565b600060c0820190506138fb6000830189612fb3565b6139086020830188612f95565b6139156040830187612f95565b61392260608301866137ab565b61392f60808301856137ab565b61393c60a08301846137ab565b979650505050505050565b600060808201905061395c6000830187612fb3565b6139696020830186612f95565b61397660408301856137ab565b61398360608301846137ab565b95945050505050565b60006080820190506139a16000830187612fb3565b6139ae6020830186612fb3565b6139bb60408301856137ab565b6139c86060830184612f95565b95945050505050565b60006080820190506139e66000830187612fb3565b6139f360208301866137c9565b613a006040830185612fb3565b613a0d6060830184612fb3565b95945050505050565b60006020820190508181036000830152613a308184613012565b905092915050565b60006020820190508181036000830152613a528184612fd9565b905092915050565b60006020820190508181036000830152613a738161308b565b9050919050565b60006020820190508181036000830152613a93816130cb565b9050919050565b60006020820190508181036000830152613ab381613131565b9050919050565b60006020820190508181036000830152613ad381613197565b9050919050565b60006020820190508181036000830152613af3816131fd565b9050919050565b60006020820190508181036000830152613b138161323d565b9050919050565b60006020820190508181036000830152613b338161327d565b9050919050565b60006020820190508181036000830152613b53816132bd565b9050919050565b60006020820190508181036000830152613b73816133af565b9050919050565b60006020820190508181036000830152613b9381613415565b9050919050565b60006020820190508181036000830152613bb381613507565b9050919050565b60006020820190508181036000830152613bd38161356d565b9050919050565b60006020820190508181036000830152613bf3816135ad565b9050919050565b60006020820190508181036000830152613c1381613613565b9050919050565b60006020820190508181036000830152613c3381613679565b9050919050565b60006020820190508181036000830152613c53816136df565b9050919050565b6000602082019050613c6f60008301846137ab565b92915050565b6000602082019050613c8a60008301846137ba565b92915050565b6000604082019050613ca560008301856137ba565b613cb260208301846137e7565b9392505050565b6000602082019050613cce60008301846137c9565b92915050565b6000602082019050613ce960008301846137d8565b92915050565b6000602082019050613d0460008301846137e7565b92915050565b6000604082019050613d1f60008301856137d8565b613d2c60208301846137d8565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b6000613d7082613d8d565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006bffffffffffffffffffffffff82169050919050565b6000613df782613dd4565b9050919050565b60005b83811015613e1c578082015181840152602081019050613e01565b83811115613e2b576000848401525b50505050565b6000819050919050565b6000601f19601f8301169050919050565b613e5581613d65565b8114613e6057600080fd5b50565b613e6c81613d83565b8114613e7757600080fd5b50565b613e8381613dad565b8114613e8e57600080fd5b50565b613e9a81613db7565b8114613ea557600080fd5b50565b613eb181613dc7565b8114613ebc57600080fd5b5056fe44656e613a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e636544656e613a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f777344656e613a3a7065726d69743a20616d6f756e742065786365656473203936206269747344656e613a3a6d696e743a20746f74616c537570706c792065786365656473203936206269747344656e613a3a7472616e736665723a20616d6f756e742065786365656473203936206269747344656e613a3a617070726f76653a20616d6f756e742065786365656473203936206269747344656e613a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f777344656e613a3a6d696e743a20616d6f756e742065786365656473203936206269747344656e613a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e636544656e613a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777344656e613a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747344656e613a3a6d696e743a207472616e7366657220616d6f756e74206f766572666c6f7773a365627a7a723158200f52526172a1d8e74cacc6879fd780f61294514a8a1d48b987aac9c3811752966c6578706572696d656e74616cf564736f6c63430005100040

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

00000000000000000000000038b49b879562046412a62c02a88dc867b9afd9c100000000000000000000000038b49b879562046412a62c02a88dc867b9afd9c100000000000000000000000000000000000000000000000000000000673bd500

-----Decoded View---------------
Arg [0] : account (address): 0x38b49B879562046412A62c02A88DC867b9AFd9c1
Arg [1] : minter_ (address): 0x38b49B879562046412A62c02A88DC867b9AFd9c1
Arg [2] : mintingAllowedAfter_ (uint256): 1731974400

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000038b49b879562046412a62c02a88dc867b9afd9c1
Arg [1] : 00000000000000000000000038b49b879562046412a62c02a88dc867b9afd9c1
Arg [2] : 00000000000000000000000000000000000000000000000000000000673bd500


Deployed Bytecode Sourcemap

6777:17194:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6777:17194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6848:53;;;:::i;:::-;;;;;;;;;;;;;;;;7278:21;;;:::i;:::-;;;;;;;;;;;;;;;;13208:419;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7162:38;;;:::i;:::-;;;;;;;;;;;;;;;;8507:122;;;:::i;:::-;;;;;;;;;;;;;;;;16294:672;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8930:137;;;:::i;:::-;;;;;;;;;;;;;;;;7369:31;;;:::i;:::-;;;;;;;;;;;;;;;;7063:35;;;:::i;:::-;;;;;;;;;;;;;;;;11225:1065;;;;;;;;;;;;;;;;:::i;:::-;;7957:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7453:61;;;:::i;:::-;;;;;;;;;;;;;;;;17114:102;;;;;;;;;;;;;;;;:::i;:::-;;8385:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15374:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7609:33;;;:::i;:::-;;;;;;;;;;;;;;;;19293:1218;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;9148:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;6962:38;;;:::i;:::-;;;;;;;;;;;;;;;;15746:238;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;18640:222;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;17650:789;;;;;;;;;;;;;;;;:::i;:::-;;14117:1054;;;;;;;;;;;;;;;;:::i;:::-;;12594:136;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8723:117;;;:::i;:::-;;;;;;;;;;;;;;;;8246:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;10818:232;;;;;;;;;;;;;;;;:::i;:::-;;6848:53;;;;;;;;;;;;;;;;;;;:::o;7278:21::-;;;;;;;;;;;;;:::o;13208:419::-;13276:4;13293:13;13339:2;13321:9;:21;13317:173;;;13375:2;13359:19;;13317:173;;;13420:58;13427:9;13420:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;13411:67;;13317:173;13536:6;13502:10;:22;13513:10;13502:22;;;;;;;;;;;;;;;:31;13525:7;13502:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;13581:7;13560:37;;13569:10;13560:37;;;13590:6;13560:37;;;;;;;;;;;;;;;13615:4;13608:11;;;13208:419;;;;:::o;7162:38::-;;;;:::o;8507:122::-;8549:80;;;;;;;;;;;;;;8507:122;:::o;16294:672::-;16376:4;16393:15;16411:10;16393:28;;16432:23;16458:10;:15;16469:3;16458:15;;;;;;;;;;;;;;;:24;16474:7;16458:24;;;;;;;;;;;;;;;;;;;;;;;;;16432:50;;16493:13;16509:58;16516:9;16509:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;16493:74;;16595:3;16584:14;;:7;:14;;;;:48;;;;;16629:2;16602:30;;:16;:30;;;;16584:48;16580:311;;;16649:19;16671:96;16677:16;16695:6;16671:96;;;;;;;;;;;;;;;;;:5;:96::i;:::-;16649:118;;16809:12;16782:10;:15;16793:3;16782:15;;;;;;;;;;;;;;;:24;16798:7;16782:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;16857:7;16843:36;;16852:3;16843:36;;;16866:12;16843:36;;;;;;;;;;;;;;;16580:311;;16903:33;16919:3;16924;16929:6;16903:15;:33::i;:::-;16954:4;16947:11;;;;;16294:672;;;;;:::o;8930:137::-;8972:95;;;;;;;;;;;;;;8930:137;:::o;7369:31::-;;;;:::o;7063:35::-;7096:2;7063:35;:::o;11225:1065::-;11310:6;;;;;;;;;;;11296:20;;:10;:20;;;11288:69;;;;;;;;;;;;;;;;;;;;;;11395:19;;11376:15;:38;;11368:86;;;;;;;;;;;;;;;;;;;;;;11488:1;11473:17;;:3;:17;;;;11465:77;;;;;;;;;;;;;;;;;;;;;;11605:54;11618:15;7502:12;11605:54;;:12;:54::i;:::-;11583:19;:76;;;;11700:13;11716:55;11723:9;11716:55;;;;;;;;;;;;;;;;;:6;:55::i;:::-;11700:71;;11800:53;11813:34;11826:11;;7641:1;11813:34;;:12;:34::i;:::-;11849:3;11800:12;:53::i;:::-;11790:6;:63;;;;11782:105;;;;;;;;;;;;;;;;;;;;;;11912:84;11919:33;11932:11;;11945:6;11919:33;;:12;:33::i;:::-;11912:84;;;;;;;;;;;;;;;;;:6;:84::i;:::-;11898:98;;:11;:98;;;;12074:69;12080:8;:13;12089:3;12080:13;;;;;;;;;;;;;;;;;;;;;;;;;12095:6;12074:69;;;;;;;;;;;;;;;;;:5;:69::i;:::-;12058:8;:13;12067:3;12058:13;;;;;;;;;;;;;;;;:85;;;;;;;;;;;;;;;;;;12180:3;12159:33;;12176:1;12159:33;;;12185:6;12159:33;;;;;;;;;;;;;;;12232:50;12255:1;12259:9;:14;12269:3;12259:14;;;;;;;;;;;;;;;;;;;;;;;;;12275:6;12232:14;:50::i;:::-;11225:1065;;;:::o;7957:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;7453:61::-;7502:12;7453:61;:::o;17114:102::-;17176:32;17186:10;17198:9;17176;:32::i;:::-;17114:102;:::o;8385:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;15374:108::-;15433:4;15457:8;:17;15466:7;15457:17;;;;;;;;;;;;;;;;;;;;;;;;;15450:24;;;;15374:108;;;:::o;7609:33::-;7641:1;7609:33;:::o;19293:1218::-;19372:6;19413:12;19399:11;:26;19391:78;;;;;;;;;;;;;;;;;;;;;;19482:19;19504:14;:23;19519:7;19504:23;;;;;;;;;;;;;;;;;;;;;;;;;19482:45;;19558:1;19542:12;:17;;;19538:58;;;19583:1;19576:8;;;;;19538:58;19708:11;19656;:20;19668:7;19656:20;;;;;;;;;;;;;;;:38;19692:1;19677:12;:16;19656:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;19652:147;;19743:11;:20;19755:7;19743:20;;;;;;;;;;;;;;;:38;19779:1;19764:12;:16;19743:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;19736:51;;;;;19652:147;19896:11;19860;:20;19872:7;19860:20;;;;;;;;;;;;;;;:23;19881:1;19860:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;19856:88;;;19931:1;19924:8;;;;;19856:88;19956:12;19971:1;19956:16;;19983:12;20013:1;19998:12;:16;19983:31;;20025:428;20040:5;20032:13;;:5;:13;;;20025:428;;;20062:13;20104:1;20095:5;20087;:13;20086:19;;;;;;;;20078:5;:27;20062:43;;20147:20;;:::i;:::-;20170:11;:20;20182:7;20170:20;;;;;;;;;;;;;;;:28;20191:6;20170:28;;;;;;;;;;;;;;;20147:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20233:11;20217:2;:12;;;:27;;;20213:229;;;20272:2;:8;;;20265:15;;;;;;;;;20213:229;20321:11;20306:2;:12;;;:26;;;20302:140;;;20361:6;20353:14;;20302:140;;;20425:1;20416:6;:10;20408:18;;20302:140;20025:428;;;;;20470:11;:20;20482:7;20470:20;;;;;;;;;;;;;;;:27;20491:5;20470:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;20463:40;;;;;19293:1218;;;;;:::o;9148:39::-;;;;;;;;;;;;;;;;;:::o;6962:38::-;;;;;;;;;;;;;;;;;;;:::o;15746:238::-;15811:4;15828:13;15844:59;15851:9;15844:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;15828:75;;15914:40;15930:10;15942:3;15947:6;15914:15;:40::i;:::-;15972:4;15965:11;;;15746:238;;;;:::o;18640:222::-;18705:6;18724:19;18746:14;:23;18761:7;18746:23;;;;;;;;;;;;;;;;;;;;;;;;;18724:45;;18802:1;18787:12;:16;;;:67;;18853:1;18787:67;;;18806:11;:20;18818:7;18806:20;;;;;;;;;;;;;;;:38;18842:1;18827:12;:16;18806:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;18787:67;18780:74;;;18640:222;;;:::o;17650:789::-;17766:23;8549:80;;;;;;;;;;;;;;17846:4;;;;;;;;;;;;;;;;;17830:22;;;;;;17854:12;:10;:12::i;:::-;17876:4;17802:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17802:80:0;;;17792:91;;;;;;17766:117;;17894:18;8769:71;;;;;;;;;;;;;;17957:9;17968:5;17975:6;17925:57;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17925:57:0;;;17915:68;;;;;;17894:89;;17994:14;18050:15;18067:10;18021:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;18021:57:0;;;18011:68;;;;;;17994:85;;18090:17;18110:26;18120:6;18128:1;18131;18134;18110:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18110:26:0;;;;;;;;18090:46;;18176:1;18155:23;;:9;:23;;;;18147:74;;;;;;;;;;;;;;;;;;;;;;18249:6;:17;18256:9;18249:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;18240:5;:28;18232:75;;;;;;;;;;;;;;;;;;;;;;18333:6;18326:3;:13;;18318:64;;;;;;;;;;;;;;;;;;;;;;18400:31;18410:9;18421;18400;:31::i;:::-;18393:38;;;;17650:789;;;;;;:::o;14117:1054::-;14247:13;14293:2;14275:9;:21;14271:172;;;14329:2;14313:19;;14271:172;;;14374:57;14381:9;14374:57;;;;;;;;;;;;;;;;;:6;:57::i;:::-;14365:66;;14271:172;14455:23;8549:80;;;;;;;;;;;;;;14535:4;;;;;;;;;;;;;;;;;14519:22;;;;;;14543:12;:10;:12::i;:::-;14565:4;14491:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14491:80:0;;;14481:91;;;;;;14455:117;;14583:18;8972:95;;;;;;;;;;;;;;14642:5;14649:7;14658:9;14669:6;:13;14676:5;14669:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;14686:8;14614:81;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14614:81:0;;;14604:92;;;;;;14583:113;;14707:14;14763:15;14780:10;14734:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14734:57:0;;;14724:68;;;;;;14707:85;;14803:17;14823:26;14833:6;14841:1;14844;14847;14823:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14823:26:0;;;;;;;;14803:46;;14889:1;14868:23;;:9;:23;;;;14860:67;;;;;;;;;;;;;;;;;;;;;;14959:5;14946:18;;:9;:18;;;14938:57;;;;;;;;;;;;;;;;;;;;;;15021:8;15014:3;:15;;15006:59;;;;;;;;;;;;;;;;;;;;;;15107:6;15078:10;:17;15089:5;15078:17;;;;;;;;;;;;;;;:26;15096:7;15078:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;15147:7;15131:32;;15140:5;15131:32;;;15156:6;15131:32;;;;;;;;;;;;;;;14117:1054;;;;;;;;;;;;:::o;12594:136::-;12670:4;12694:10;:19;12705:7;12694:19;;;;;;;;;;;;;;;:28;12714:7;12694:28;;;;;;;;;;;;;;;;;;;;;;;;;12687:35;;;;12594:136;;;;:::o;8723:117::-;8769:71;;;;;;;;;;;;;;8723:117;:::o;8246:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10818:232::-;10896:6;;;;;;;;;;;10882:20;;:10;:20;;;10874:95;;;;;;;;;;;;;;;;;;;;;;10985:30;10999:6;;;;;;;;;;;11007:7;10985:30;;;;;;;;;;;;;;;;11035:7;11026:6;;:16;;;;;;;;;;;;;;;;;;10818:232;:::o;23277:161::-;23352:6;23383:5;23379:1;:9;23390:12;23371:32;;;;;;;;;;;;;;;;;;;;;;;;;23428:1;23414:16;;23277:161;;;;:::o;23642:165::-;23728:6;23760:1;23755:6;;:1;:6;;;;23763:12;23747:29;;;;;;;;;;;;;;;;;;;;;;;;;23798:1;23794;:5;23787:12;;23642:165;;;;;:::o;20902:614::-;21011:1;20996:17;;:3;:17;;;;20988:90;;;;;;;;;;;;;;;;;;;;;;21112:1;21097:17;;:3;:17;;;;21089:88;;;;;;;;;;;;;;;;;;;;;;21206:86;21212:8;:13;21221:3;21212:13;;;;;;;;;;;;;;;;;;;;;;;;;21227:6;21206:86;;;;;;;;;;;;;;;;;:5;:86::i;:::-;21190:8;:13;21199:3;21190:13;;;;;;;;;;;;;;;;:102;;;;;;;;;;;;;;;;;;21319:80;21325:8;:13;21334:3;21325:13;;;;;;;;;;;;;;;;;;;;;;;;;21340:6;21319:80;;;;;;;;;;;;;;;;;:5;:80::i;:::-;21303:8;:13;21312:3;21303:13;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;21429:3;21415:26;;21424:3;21415:26;;;21434:6;21415:26;;;;;;;;;;;;;;;21454:54;21469:9;:14;21479:3;21469:14;;;;;;;;;;;;;;;;;;;;;;;;;21485:9;:14;21495:3;21485:14;;;;;;;;;;;;;;;;;;;;;;;;;21501:6;21454:14;:54::i;:::-;20902:614;;;:::o;1163:181::-;1221:7;1241:9;1257:1;1253;:5;1241:17;;1282:1;1277;:6;;1269:46;;;;;;;;;;;;;;;;;;;;;;1335:1;1328:8;;;1163:181;;;;:::o;2917:471::-;2975:7;3225:1;3220;:6;3216:47;;;3250:1;3243:8;;;;3216:47;3275:9;3291:1;3287;:5;3275:17;;3320:1;3315;3311;:5;;;;;;:10;3303:56;;;;;;;;;;;;;;;;;;;;;;3379:1;3372:8;;;2917:471;;;;;:::o;4575:132::-;4633:7;4660:39;4664:1;4667;4660:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;4653:46;;4575:132;;;;:::o;23446:188::-;23532:6;23551:8;23566:1;23562;:5;23551:16;;23591:1;23586:6;;:1;:6;;;;23594:12;23578:29;;;;;;;;;;;;;;;;;;;;;;;;;23625:1;23618:8;;;23446:188;;;;;:::o;21524:939::-;21629:6;21619:16;;:6;:16;;;;:30;;;;;21648:1;21639:6;:10;;;21619:30;21615:841;;;21688:1;21670:20;;:6;:20;;;21666:382;;21711:16;21730:14;:22;21745:6;21730:22;;;;;;;;;;;;;;;;;;;;;;;;;21711:41;;21771:16;21802:1;21790:9;:13;;;:60;;21849:1;21790:60;;;21806:11;:19;21818:6;21806:19;;;;;;;;;;;;;;;:34;21838:1;21826:9;:13;21806:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;21790:60;21771:79;;21869:16;21888:68;21894:9;21905:6;21888:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;21869:87;;21975:57;21992:6;22000:9;22011;22022;21975:16;:57::i;:::-;21666:382;;;;22086:1;22068:20;;:6;:20;;;22064:381;;22109:16;22128:14;:22;22143:6;22128:22;;;;;;;;;;;;;;;;;;;;;;;;;22109:41;;22169:16;22200:1;22188:9;:13;;;:60;;22247:1;22188:60;;;22204:11;:19;22216:6;22204:19;;;;;;;;;;;;;;;:34;22236:1;22224:9;:13;22204:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;22188:60;22169:79;;22267:16;22286:67;22292:9;22303:6;22286:67;;;;;;;;;;;;;;;;;:5;:67::i;:::-;22267:86;;22372:57;22389:6;22397:9;22408;22419;22372:16;:57::i;:::-;22064:381;;;;21615:841;21524:939;;;:::o;20519:375::-;20596:23;20622:9;:20;20632:9;20622:20;;;;;;;;;;;;;;;;;;;;;;;;;20596:46;;20653:23;20679:8;:19;20688:9;20679:19;;;;;;;;;;;;;;;;;;;;;;;;;20653:45;;20732:9;20709;:20;20719:9;20709:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;20803:9;20759:54;;20786:15;20759:54;;20775:9;20759:54;;;;;;;;;;;;20826:60;20841:15;20858:9;20869:16;20826:14;:60::i;:::-;20519:375;;;;:::o;23815:153::-;23860:4;23877:15;23925:9;23914:20;;23953:7;23946:14;;;23815:153;:::o;5195:345::-;5281:7;5380:1;5376;:5;5383:12;5368:28;;;;;;;;;;;;;;;;;;;;;;;;;5407:9;5423:1;5419;:5;;;;;;5407:17;;5531:1;5524:8;;;5195:345;;;;;:::o;22471:629::-;22589:18;22610:76;22617:12;22610:76;;;;;;;;;;;;;;;;;:6;:76::i;:::-;22589:97;;22716:1;22701:12;:16;;;:85;;;;;22775:11;22721:65;;:11;:22;22733:9;22721:22;;;;;;;;;;;;;;;:40;22759:1;22744:12;:16;22721:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;22701:85;22697:329;;;22850:8;22801:11;:22;22813:9;22801:22;;;;;;;;;;;;;;;:40;22839:1;22824:12;:16;22801:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;22697:329;;;22926:33;;;;;;;;22937:11;22926:33;;;;;;22950:8;22926:33;;;;;22887:11;:22;22899:9;22887:22;;;;;;;;;;;;;;;:36;22910:12;22887:36;;;;;;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23015:1;23000:12;:16;22972:14;:25;22987:9;22972:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;22697:329;23062:9;23041:51;;;23073:8;23083;23041:51;;;;;;;;;;;;;;;;22471:629;;;;;:::o;23108:161::-;23183:6;23214:5;23210:1;:9;23221:12;23202:32;;;;;;;;;;;;;;;;;;;;;;;;;23259:1;23245:16;;23108:161;;;;:::o;6777:17194::-;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;;85:6;72:20;63:29;;97:33;124:5;97:33;;;57:78;;;;;142:130;;222:6;209:20;200:29;;234:33;261:5;234:33;;;194:78;;;;;279:130;;359:6;346:20;337:29;;371:33;398:5;371:33;;;331:78;;;;;416:128;;495:6;482:20;473:29;;507:32;533:5;507:32;;;467:77;;;;;551:126;;629:6;616:20;607:29;;641:31;666:5;641:31;;;601:76;;;;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;892:6;881:9;877:22;856:53;;;846:63;;818:97;750:175;;;;;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1157:6;1146:9;1142:22;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1547:6;1536:9;1532:22;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2112:6;2101:9;2097:22;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3026:6;3015:9;3011:22;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;;3088:63;;3059:98;2884:283;;;;;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3466:6;3455:9;3451:22;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4270:6;4259:9;4255:22;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;;4332:62;;4303:97;4128:282;;;;;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;;4609:3;4602:34;4596:45;;;4648:113;4731:24;4749:5;4731:24;;;4726:3;4719:37;4713:48;;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;;4864:3;4857:58;4851:69;;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5234:3;5230:39;5223:46;;5019:255;;;;;;5281:339;;5389:35;5418:5;5389:35;;;5436:71;5500:6;5495:3;5436:71;;;5429:78;;5512:52;5557:6;5552:3;5545:4;5538:5;5534:16;5512:52;;;5585:29;5607:6;5585:29;;;5580:3;5576:39;5569:46;;5369:251;;;;;;5628:398;;5806:84;5888:1;5883:3;5806:84;;;5799:91;;5923:66;5919:1;5914:3;5910:11;5903:87;6018:1;6013:3;6009:11;6002:18;;5792:234;;;;6035:327;;6195:67;6259:2;6254:3;6195:67;;;6188:74;;6295:29;6291:1;6286:3;6282:11;6275:50;6353:2;6348:3;6344:12;6337:19;;6181:181;;;;6371:373;;6531:67;6595:2;6590:3;6531:67;;;6524:74;;6631:34;6627:1;6622:3;6618:11;6611:55;6700:6;6695:2;6690:3;6686:12;6679:28;6735:2;6730:3;6726:12;6719:19;;6517:227;;;;6753:384;;6913:67;6977:2;6972:3;6913:67;;;6906:74;;7013:34;7009:1;7004:3;7000:11;6993:55;7082:17;7077:2;7072:3;7068:12;7061:39;7128:2;7123:3;7119:12;7112:19;;6899:238;;;;7146:372;;7306:67;7370:2;7365:3;7306:67;;;7299:74;;7406:34;7402:1;7397:3;7393:11;7386:55;7475:5;7470:2;7465:3;7461:12;7454:27;7509:2;7504:3;7500:12;7493:19;;7292:226;;;;7527:331;;7687:67;7751:2;7746:3;7687:67;;;7680:74;;7787:33;7783:1;7778:3;7774:11;7767:54;7849:2;7844:3;7840:12;7833:19;;7673:185;;;;7867:331;;8027:67;8091:2;8086:3;8027:67;;;8020:74;;8127:33;8123:1;8118:3;8114:11;8107:54;8189:2;8184:3;8180:12;8173:19;;8013:185;;;;8207:329;;8367:67;8431:2;8426:3;8367:67;;;8360:74;;8467:31;8463:1;8458:3;8454:11;8447:52;8527:2;8522:3;8518:12;8511:19;;8353:183;;;;8545:375;;8705:67;8769:2;8764:3;8705:67;;;8698:74;;8805:34;8801:1;8796:3;8792:11;8785:55;8874:8;8869:2;8864:3;8860:12;8853:30;8911:2;8906:3;8902:12;8895:19;;8691:229;;;;8929:492;;9107:85;9189:2;9184:3;9107:85;;;9100:92;;9225:34;9221:1;9216:3;9212:11;9205:55;9294:34;9289:2;9284:3;9280:12;9273:56;9363:20;9358:2;9353:3;9349:12;9342:42;9412:2;9407:3;9403:12;9396:19;;9093:328;;;;9430:399;;9590:67;9654:2;9649:3;9590:67;;;9583:74;;9690:34;9686:1;9681:3;9677:11;9670:55;9759:32;9754:2;9749:3;9745:12;9738:54;9820:2;9815:3;9811:12;9804:19;;9576:253;;;;9838:376;;9998:67;10062:2;10057:3;9998:67;;;9991:74;;10098:34;10094:1;10089:3;10085:11;10078:55;10167:9;10162:2;10157:3;10153:12;10146:31;10205:2;10200:3;10196:12;10189:19;;9984:230;;;;10223:477;;10401:85;10483:2;10478:3;10401:85;;;10394:92;;10519:34;10515:1;10510:3;10506:11;10499:55;10588:34;10583:2;10578:3;10574:12;10567:56;10657:5;10652:2;10647:3;10643:12;10636:27;10691:2;10686:3;10682:12;10675:19;;10387:313;;;;10709:370;;10869:67;10933:2;10928:3;10869:67;;;10862:74;;10969:34;10965:1;10960:3;10956:11;10949:55;11038:3;11033:2;11028:3;11024:12;11017:25;11070:2;11065:3;11061:12;11054:19;;10855:224;;;;11088:326;;11248:67;11312:2;11307:3;11248:67;;;11241:74;;11348:28;11344:1;11339:3;11335:11;11328:49;11405:2;11400:3;11396:12;11389:19;;11234:180;;;;11423:397;;11583:67;11647:2;11642:3;11583:67;;;11576:74;;11683:34;11679:1;11674:3;11670:11;11663:55;11752:30;11747:2;11742:3;11738:12;11731:52;11811:2;11806:3;11802:12;11795:19;;11569:251;;;;11829:375;;11989:67;12053:2;12048:3;11989:67;;;11982:74;;12089:34;12085:1;12080:3;12076:11;12069:55;12158:8;12153:2;12148:3;12144:12;12137:30;12195:2;12190:3;12186:12;12179:19;;11975:229;;;;12213:371;;12373:67;12437:2;12432:3;12373:67;;;12366:74;;12473:34;12469:1;12464:3;12460:11;12453:55;12542:4;12537:2;12532:3;12528:12;12521:26;12575:2;12570:3;12566:12;12559:19;;12359:225;;;;12593:395;;12753:67;12817:2;12812:3;12753:67;;;12746:74;;12853:34;12849:1;12844:3;12840:11;12833:55;12922:28;12917:2;12912:3;12908:12;12901:50;12979:2;12974:3;12970:12;12963:19;;12739:249;;;;12997:431;;13175:85;13257:2;13252:3;13175:85;;;13168:92;;13293:34;13289:1;13284:3;13280:11;13273:55;13362:28;13357:2;13352:3;13348:12;13341:50;13419:2;13414:3;13410:12;13403:19;;13161:267;;;;13436:113;13519:24;13537:5;13519:24;;;13514:3;13507:37;13501:48;;;13556:110;13637:23;13654:5;13637:23;;;13632:3;13625:36;13619:47;;;13673:107;13752:22;13768:5;13752:22;;;13747:3;13740:35;13734:46;;;13787:124;13869:36;13899:5;13869:36;;;13864:3;13857:49;13851:60;;;13918:110;13999:23;14016:5;13999:23;;;13994:3;13987:36;13981:47;;;14035:650;;14290:148;14434:3;14290:148;;;14283:155;;14449:75;14520:3;14511:6;14449:75;;;14546:2;14541:3;14537:12;14530:19;;14560:75;14631:3;14622:6;14560:75;;;14657:2;14652:3;14648:12;14641:19;;14677:3;14670:10;;14271:414;;;;;;14692:372;;14891:148;15035:3;14891:148;;;14884:155;;15056:3;15049:10;;14872:192;;;;15071:372;;15270:148;15414:3;15270:148;;;15263:155;;15435:3;15428:10;;15251:192;;;;15450:372;;15649:148;15793:3;15649:148;;;15642:155;;15814:3;15807:10;;15630:192;;;;15829:213;;15947:2;15936:9;15932:18;15924:26;;15961:71;16029:1;16018:9;16014:17;16005:6;15961:71;;;15918:124;;;;;16049:324;;16195:2;16184:9;16180:18;16172:26;;16209:71;16277:1;16266:9;16262:17;16253:6;16209:71;;;16291:72;16359:2;16348:9;16344:18;16335:6;16291:72;;;16166:207;;;;;;16380:201;;16492:2;16481:9;16477:18;16469:26;;16506:65;16568:1;16557:9;16553:17;16544:6;16506:65;;;16463:118;;;;;16588:213;;16706:2;16695:9;16691:18;16683:26;;16720:71;16788:1;16777:9;16773:17;16764:6;16720:71;;;16677:124;;;;;16808:771;;17066:3;17055:9;17051:19;17043:27;;17081:71;17149:1;17138:9;17134:17;17125:6;17081:71;;;17163:72;17231:2;17220:9;17216:18;17207:6;17163:72;;;17246;17314:2;17303:9;17299:18;17290:6;17246:72;;;17329;17397:2;17386:9;17382:18;17373:6;17329:72;;;17412:73;17480:3;17469:9;17465:19;17456:6;17412:73;;;17496;17564:3;17553:9;17549:19;17540:6;17496:73;;;17037:542;;;;;;;;;;17586:547;;17788:3;17777:9;17773:19;17765:27;;17803:71;17871:1;17860:9;17856:17;17847:6;17803:71;;;17885:72;17953:2;17942:9;17938:18;17929:6;17885:72;;;17968;18036:2;18025:9;18021:18;18012:6;17968:72;;;18051;18119:2;18108:9;18104:18;18095:6;18051:72;;;17759:374;;;;;;;;18140:547;;18342:3;18331:9;18327:19;18319:27;;18357:71;18425:1;18414:9;18410:17;18401:6;18357:71;;;18439:72;18507:2;18496:9;18492:18;18483:6;18439:72;;;18522;18590:2;18579:9;18575:18;18566:6;18522:72;;;18605;18673:2;18662:9;18658:18;18649:6;18605:72;;;18313:374;;;;;;;;18694:539;;18892:3;18881:9;18877:19;18869:27;;18907:71;18975:1;18964:9;18960:17;18951:6;18907:71;;;18989:68;19053:2;19042:9;19038:18;19029:6;18989:68;;;19068:72;19136:2;19125:9;19121:18;19112:6;19068:72;;;19151;19219:2;19208:9;19204:18;19195:6;19151:72;;;18863:370;;;;;;;;19240:293;;19374:2;19363:9;19359:18;19351:26;;19424:9;19418:4;19414:20;19410:1;19399:9;19395:17;19388:47;19449:74;19518:4;19509:6;19449:74;;;19441:82;;19345:188;;;;;19540:301;;19678:2;19667:9;19663:18;19655:26;;19728:9;19722:4;19718:20;19714:1;19703:9;19699:17;19692:47;19753:78;19826:4;19817:6;19753:78;;;19745:86;;19649:192;;;;;19848:407;;20039:2;20028:9;20024:18;20016:26;;20089:9;20083:4;20079:20;20075:1;20064:9;20060:17;20053:47;20114:131;20240:4;20114:131;;;20106:139;;20010:245;;;;20262:407;;20453:2;20442:9;20438:18;20430:26;;20503:9;20497:4;20493:20;20489:1;20478:9;20474:17;20467:47;20528:131;20654:4;20528:131;;;20520:139;;20424:245;;;;20676:407;;20867:2;20856:9;20852:18;20844:26;;20917:9;20911:4;20907:20;20903:1;20892:9;20888:17;20881:47;20942:131;21068:4;20942:131;;;20934:139;;20838:245;;;;21090:407;;21281:2;21270:9;21266:18;21258:26;;21331:9;21325:4;21321:20;21317:1;21306:9;21302:17;21295:47;21356:131;21482:4;21356:131;;;21348:139;;21252:245;;;;21504:407;;21695:2;21684:9;21680:18;21672:26;;21745:9;21739:4;21735:20;21731:1;21720:9;21716:17;21709:47;21770:131;21896:4;21770:131;;;21762:139;;21666:245;;;;21918:407;;22109:2;22098:9;22094:18;22086:26;;22159:9;22153:4;22149:20;22145:1;22134:9;22130:17;22123:47;22184:131;22310:4;22184:131;;;22176:139;;22080:245;;;;22332:407;;22523:2;22512:9;22508:18;22500:26;;22573:9;22567:4;22563:20;22559:1;22548:9;22544:17;22537:47;22598:131;22724:4;22598:131;;;22590:139;;22494:245;;;;22746:407;;22937:2;22926:9;22922:18;22914:26;;22987:9;22981:4;22977:20;22973:1;22962:9;22958:17;22951:47;23012:131;23138:4;23012:131;;;23004:139;;22908:245;;;;23160:407;;23351:2;23340:9;23336:18;23328:26;;23401:9;23395:4;23391:20;23387:1;23376:9;23372:17;23365:47;23426:131;23552:4;23426:131;;;23418:139;;23322:245;;;;23574:407;;23765:2;23754:9;23750:18;23742:26;;23815:9;23809:4;23805:20;23801:1;23790:9;23786:17;23779:47;23840:131;23966:4;23840:131;;;23832:139;;23736:245;;;;23988:407;;24179:2;24168:9;24164:18;24156:26;;24229:9;24223:4;24219:20;24215:1;24204:9;24200:17;24193:47;24254:131;24380:4;24254:131;;;24246:139;;24150:245;;;;24402:407;;24593:2;24582:9;24578:18;24570:26;;24643:9;24637:4;24633:20;24629:1;24618:9;24614:17;24607:47;24668:131;24794:4;24668:131;;;24660:139;;24564:245;;;;24816:407;;25007:2;24996:9;24992:18;24984:26;;25057:9;25051:4;25047:20;25043:1;25032:9;25028:17;25021:47;25082:131;25208:4;25082:131;;;25074:139;;24978:245;;;;25230:407;;25421:2;25410:9;25406:18;25398:26;;25471:9;25465:4;25461:20;25457:1;25446:9;25442:17;25435:47;25496:131;25622:4;25496:131;;;25488:139;;25392:245;;;;25644:407;;25835:2;25824:9;25820:18;25812:26;;25885:9;25879:4;25875:20;25871:1;25860:9;25856:17;25849:47;25910:131;26036:4;25910:131;;;25902:139;;25806:245;;;;26058:407;;26249:2;26238:9;26234:18;26226:26;;26299:9;26293:4;26289:20;26285:1;26274:9;26270:17;26263:47;26324:131;26450:4;26324:131;;;26316:139;;26220:245;;;;26472:213;;26590:2;26579:9;26575:18;26567:26;;26604:71;26672:1;26661:9;26657:17;26648:6;26604:71;;;26561:124;;;;;26692:209;;26808:2;26797:9;26793:18;26785:26;;26822:69;26888:1;26877:9;26873:17;26864:6;26822:69;;;26779:122;;;;;26908:316;;27050:2;27039:9;27035:18;27027:26;;27064:69;27130:1;27119:9;27115:17;27106:6;27064:69;;;27144:70;27210:2;27199:9;27195:18;27186:6;27144:70;;;27021:203;;;;;;27231:205;;27345:2;27334:9;27330:18;27322:26;;27359:67;27423:1;27412:9;27408:17;27399:6;27359:67;;;27316:120;;;;;27443:211;;27560:2;27549:9;27545:18;27537:26;;27574:70;27641:1;27630:9;27626:17;27617:6;27574:70;;;27531:123;;;;;27661:209;;27777:2;27766:9;27762:18;27754:26;;27791:69;27857:1;27846:9;27842:17;27833:6;27791:69;;;27748:122;;;;;27877:320;;28021:2;28010:9;28006:18;27998:26;;28035:70;28102:1;28091:9;28087:17;28078:6;28035:70;;;28116:71;28183:2;28172:9;28168:18;28159:6;28116:71;;;27992:205;;;;;;28204:118;;28294:5;28288:12;28278:22;;28259:63;;;;28329:122;;28423:5;28417:12;28407:22;;28388:63;;;;28459:163;;28574:6;28569:3;28562:19;28611:4;28606:3;28602:14;28587:29;;28555:67;;;;;28631:145;;28767:3;28752:18;;28745:31;;;;;28784:91;;28846:24;28864:5;28846:24;;;28835:35;;28829:46;;;;28882:85;;28955:5;28948:13;28941:21;28930:32;;28924:43;;;;28974:72;;29036:5;29025:16;;29019:27;;;;29053:121;;29126:42;29119:5;29115:54;29104:65;;29098:76;;;;29181:72;;29243:5;29232:16;;29226:27;;;;29260:88;;29332:10;29325:5;29321:22;29310:33;;29304:44;;;;29355:81;;29426:4;29419:5;29415:16;29404:27;;29398:38;;;;29443:104;;29515:26;29508:5;29504:38;29493:49;;29487:60;;;;29554:106;;29632:23;29649:5;29632:23;;;29619:36;;29613:47;;;;29668:268;29733:1;29740:101;29754:6;29751:1;29748:13;29740:101;;;29830:1;29825:3;29821:11;29815:18;29811:1;29806:3;29802:11;29795:39;29776:2;29773:1;29769:10;29764:15;;29740:101;;;29856:6;29853:1;29850:13;29847:2;;;29921:1;29912:6;29907:3;29903:16;29896:27;29847:2;29717:219;;;;;29944:74;;30008:5;29997:16;;29991:27;;;;30025:97;;30113:2;30109:7;30104:2;30097:5;30093:14;30089:28;30079:38;;30073:49;;;;30130:117;30199:24;30217:5;30199:24;;;30192:5;30189:35;30179:2;;30238:1;30235;30228:12;30179:2;30173:74;;30254:117;30323:24;30341:5;30323:24;;;30316:5;30313:35;30303:2;;30362:1;30359;30352:12;30303:2;30297:74;;30378:117;30447:24;30465:5;30447:24;;;30440:5;30437:35;30427:2;;30486:1;30483;30476:12;30427:2;30421:74;;30502:115;30570:23;30587:5;30570:23;;;30563:5;30560:34;30550:2;;30608:1;30605;30598:12;30550:2;30544:73;;30624:113;30691:22;30707:5;30691:22;;;30684:5;30681:33;30671:2;;30728:1;30725;30718:12;30671:2;30665:72;

Swarm Source

bzzr://0f52526172a1d8e74cacc6879fd780f61294514a8a1d48b987aac9c381175296
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.