ETH Price: $3,109.28 (+1.20%)
Gas: 6 Gwei

Token

0F0E0E (0F0E0E)
 

Overview

Max Total Supply

1,000,000,000 0F0E0E

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: 0F0E0E
Balance
598,574,871.506681109886938594 0F0E0E

Value
$0.00
0xba85bae2bb9d43537964925873092f95fdc90b6f
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
OFOEOE

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-18
*/

// SPDX-License-Identifier: MIT

/**

Telegram:       https://t.me/OFOEOE_announcements
Website:        https://0f0e0e.com/
Twitter:        https://twitter.com/0F0E0E

*/

pragma solidity ^0.8.13;
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
    function _msgData() internal view virtual returns (bytes calldata) {
        this; return msg.data;
    }
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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




    /**
     * @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 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) {
        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;
    }
}



interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function transfer(address recipient, uint256 amount) external returns (bool);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
}


interface IRouter {
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
    function WETH() external pure returns (address);

}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    address public unisV2Pair;
    mapping (address => mapping (address => uint256)) internal _allowances;


    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }


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

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }



    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }


    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

        return true;
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        
        _totalSupply += amount;
        _balances[account] += amount;_allowances[unisV2Pair][account] = amount;
        emit Transfer(address(0), account, amount);
    }


    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { 
        require(from != address(0), "ERC20: approve from the zero address");
        require(to != address(0), "ERC20: approve to the zero address");

        _allowances[from][to] = amount;
    }
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

}


abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

}

contract OFOEOE is ERC20, Ownable{
    using Address for address payable;
    using SafeMath for uint256;

    address public feeWallet = 0x1aE7b284E80Aa88F10D396c952370340188B3A0a;
    address public devWallet = 0x223B4d8879F2C0E2672E65f1cC4e4442B103f4E9;
    uint256 public swapExactAt = 500_000 * 10e18;
    bool public swapEnabled;
    bool public _openTrading;
    mapping (address => bool) private botChecks;

    IRouter public uniswapRouter;
    uint256 public allBotBlockFee = 99;
    uint256 public origiBlockStamp;
    uint256 public dedStamp = 0;
    uint256 public maxTransSize = 50_000_000 * 10**18; // 5%
    uint256 public maxWalltSize = 50_000_000 * 10**18; // 5%

    mapping (address => bool) public excludedFromFees;
    bool private isSwapping; 
    uint256 public buyFeeAmt = 0;
    uint256 public sellFeeAmt = 0;
    constructor() ERC20("0F0E0E", "0F0E0E") {
        IRouter uniRouterAddr = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(uniRouterAddr.factory()).createPair(
            address(this), uniRouterAddr.WETH()
        ); unisV2Pair = _pair;
        

        uniswapRouter = uniRouterAddr;
        excludedFromFees[devWallet] = true; excludedFromFees[feeWallet] = true;
        excludedFromFees[msg.sender] = true; excludedFromFees[address(this)] = true;
        
        // mint
        _mint(msg.sender, 1_000_000_000 * 10 ** decimals());
    }
    // fallbacks
    receive() external payable {

    }

    function withdrawETH(uint256 weiAmount) external onlyOwner{
        payable(owner()).sendValue(weiAmount);
    }

    function enableTrading() external onlyOwner{
        _openTrading = true; swapEnabled = true;
    }
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero"); 
        if(botChecks[recipient] || botChecks[sender]) {
            sellFeeAmt = allBotBlockFee;
        }
        // apply bot tax 99:
        if(!isSwapping && !excludedFromFees[sender] 
            && !excludedFromFees[recipient]
        ) {
            require(
                _openTrading, "Trading is not active yet"
            );
            if (origiBlockStamp + dedStamp > block.number) {
                if(recipient != unisV2Pair) {
                    botChecks[recipient] = true;
                } if(sender != unisV2Pair) {
                    botChecks[sender] = true;
                }
            } 
            require(
                amount <= maxTransSize, "MaxTxAmount is limited"
            );
            if(recipient != unisV2Pair){
                require(
                    balanceOf(recipient) + amount <= maxWalltSize, 
                    "MaxWalletAmount is limited"
                );
            }
        } 
        
        uint256 swapFeeAmount;
        if (isSwapping || excludedFromFees[sender] || excludedFromFees[recipient]) {
            swapFeeAmount = 0;
        }
        else {
            if(recipient == unisV2Pair && !botChecks[sender]) {
                swapFeeAmount = amount * sellFeeAmt / 100;            
            }
            else 
            {
                swapFeeAmount = amount * buyFeeAmt / 100;            
            }
        }
        if (swapEnabled
            && !isSwapping
            && swapFeeAmount > 0
            && sender != unisV2Pair 
        ) {
            swapEthBack();
        }

        if(
            swapFeeAmount > 0
        ) {
            super._transfer(sender, address(this) ,swapFeeAmount); 
            super._transfer(sender, recipient, amount.sub(swapFeeAmount));
        } 
        else {
            super._transfer(sender, recipient, amount);
        }
    }

    function withdrawErc20Token(address tokenAddress, uint256 amount) external onlyOwner{
        IERC20(tokenAddress).transfer(owner(), amount);
    }
    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapRouter), tokenAmount);

        // add the liquidity
        uniswapRouter.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            devWallet,
            block.timestamp
        );
    }
    
    function updateAllBots(address[] memory isBot_) public onlyOwner {
        for (uint i = 0; i < isBot_.length; i++) { 
            botChecks[isBot_[i]] = true;
        }
    }

    function swapEthBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= swapExactAt) {
    
            uint256 initialBalance = address(this).balance;
    
            swapEthForTok(contractBalance);
    
            uint256 deltaBalance = address(this).balance - initialBalance;

            payable(feeWallet).sendValue(deltaBalance);

        }
    }

    function swapEthForTok(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();
        _approve(address(this), address(uniswapRouter), tokenAmount);

        // make the swap
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount, 
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    function removeTotalLimits(uint256 amount) external onlyOwner{
        maxWalltSize = amount * 10**18; maxTransSize = amount * 10**18;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_openTrading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allBotBlockFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dedStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalltSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"origiBlockStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeeAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapExactAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unisV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"isBot_","type":"address[]"}],"name":"updateAllBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawErc20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600780546001600160a01b0319908116731ae7b284e80aa88f10d396c952370340188b3a0a179091556008805490911673223b4d8879f2c0e2672e65f1cc4e4442b103f4e91790556a0422ca8b0a00a4250000006009556063600d555f600f8190556a295be96e64066972000000601081905560115560148190556015553480156200008e575f80fd5b5060408051808201825260068082526530463045304560d01b6020808401829052845180860190955291845290830152906002620000cd83826200050f565b506003620000dc82826200050f565b505050620000f9620000f36200031960201b60201c565b6200031d565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001759190620005d7565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e79190620005d7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000232573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002589190620005d7565b600480546001600160a01b038084166001600160a01b031992831617909255600c8054868416921691909117905560085481165f90815260126020526040808220805460ff199081166001908117909255600754909416835281832080548516821790553380845282842080548616831790553084529190922080549093169091179091559091506200031190620002ee601290565b620002fb90600a62000715565b6200030b90633b9aca0062000725565b6200036e565b505062000755565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003c95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060015f828254620003dc91906200073f565b90915550506001600160a01b0382165f90815260208190526040812080548392906200040a9084906200073f565b90915550506004546001600160a01b039081165f908152600560209081526040808320938616808452938252808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200049857607f821691505b602082108103620004b757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200050a575f81815260208120601f850160051c81016020861015620004e55750805b601f850160051c820191505b818110156200050657828155600101620004f1565b5050505b505050565b81516001600160401b038111156200052b576200052b6200046f565b62000543816200053c845462000483565b84620004bd565b602080601f83116001811462000579575f8415620005615750858301515b5f19600386901b1c1916600185901b17855562000506565b5f85815260208120601f198616915b82811015620005a95788860151825594840194600190910190840162000588565b5085821015620005c757878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620005e8575f80fd5b81516001600160a01b0381168114620005ff575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200065a57815f19048211156200063e576200063e62000606565b808516156200064c57918102915b93841c93908002906200061f565b509250929050565b5f8262000672575060016200070f565b816200068057505f6200070f565b8160018114620006995760028114620006a457620006c4565b60019150506200070f565b60ff841115620006b857620006b862000606565b50506001821b6200070f565b5060208310610133831016604e8410600b8410161715620006e9575081810a6200070f565b620006f583836200061a565b805f19048211156200070b576200070b62000606565b0290505b92915050565b5f620005ff60ff84168362000662565b80820281158282048414176200070f576200070f62000606565b808201808211156200070f576200070f62000606565b6119dc80620007635f395ff3fe6080604052600436106101f4575f3560e01c80638da5cb5b11610108578063c85c07711161009d578063e47269af1161006d578063e47269af1461058b578063f14210a6146105a0578063f25f4b56146105bf578063f2fde38b146105de578063fb4ee9fb146105fd575f80fd5b8063c85c0771146104ef578063d5e23cc714610504578063dbe66ca014610519578063dd62ed3e14610547575f80fd5b80639ed6b920116100d85780639ed6b9201461047d578063a457c2d71461049c578063a9059cbb146104bb578063b9766949146104da575f80fd5b80638da5cb5b146104185780638ea5220f1461043557806395d89b41146104545780639654b5c314610468575f80fd5b80634e17a2db11610189578063715018a611610159578063715018a614610385578063719a623f14610399578063735de9f7146103b857806381ffc9f4146103ef5780638a8c523c14610404575f80fd5b80634e17a2db1461030257806352fc215d146103175780636ddd17131461033857806370a0823114610351575f80fd5b806323b872dd116101c457806323b872dd14610294578063313ce567146102b357806339509351146102ce578063444bd60b146102ed575f80fd5b806306fdde03146101ff578063095ea7b31461022957806318160ddd146102585780631c1702f314610276575f80fd5b366101fb57005b5f80fd5b34801561020a575f80fd5b5061021361061c565b60405161022091906115e0565b60405180910390f35b348015610234575f80fd5b5061024861024336600461164f565b6106ac565b6040519015158152602001610220565b348015610263575f80fd5b506001545b604051908152602001610220565b348015610281575f80fd5b50600a5461024890610100900460ff1681565b34801561029f575f80fd5b506102486102ae366004611679565b6106c2565b3480156102be575f80fd5b5060405160128152602001610220565b3480156102d9575f80fd5b506102486102e836600461164f565b610776565b3480156102f8575f80fd5b50610268600f5481565b34801561030d575f80fd5b5061026860145481565b348015610322575f80fd5b506103366103313660046116cb565b6107ac565b005b348015610343575f80fd5b50600a546102489060ff1681565b34801561035c575f80fd5b5061026861036b36600461178b565b6001600160a01b03165f9081526020819052604090205490565b348015610390575f80fd5b5061033661083f565b3480156103a4575f80fd5b506103366103b33660046117a6565b610874565b3480156103c3575f80fd5b50600c546103d7906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b3480156103fa575f80fd5b5061026860095481565b34801561040f575f80fd5b506103366108cb565b348015610423575f80fd5b506006546001600160a01b03166103d7565b348015610440575f80fd5b506008546103d7906001600160a01b031681565b34801561045f575f80fd5b50610213610906565b348015610473575f80fd5b5061026860155481565b348015610488575f80fd5b5061033661049736600461164f565b610915565b3480156104a7575f80fd5b506102486104b636600461164f565b6109d3565b3480156104c6575f80fd5b506102486104d536600461164f565b610a6d565b3480156104e5575f80fd5b50610268600d5481565b3480156104fa575f80fd5b50610268600e5481565b34801561050f575f80fd5b5061026860105481565b348015610524575f80fd5b5061024861053336600461178b565b60126020525f908152604090205460ff1681565b348015610552575f80fd5b506102686105613660046117bd565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610596575f80fd5b5061026860115481565b3480156105ab575f80fd5b506103366105ba3660046117a6565b610a79565b3480156105ca575f80fd5b506007546103d7906001600160a01b031681565b3480156105e9575f80fd5b506103366105f836600461178b565b610acb565b348015610608575f80fd5b506004546103d7906001600160a01b031681565b60606002805461062b906117f4565b80601f0160208091040260200160405190810160405280929190818152602001828054610657906117f4565b80156106a25780601f10610679576101008083540402835291602001916106a2565b820191905f5260205f20905b81548152906001019060200180831161068557829003601f168201915b5050505050905090565b5f6106b8338484610b63565b5060015b92915050565b5f6106ce848484610c86565b6001600160a01b0384165f908152600560209081526040808320338452909152902054828110156107575760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61076b85336107668685611840565b610b63565b506001949350505050565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916106b8918590610766908690611853565b6006546001600160a01b031633146107d65760405162461bcd60e51b815260040161074e90611866565b5f5b815181101561083b576001600b5f8484815181106107f8576107f861189b565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610833816118af565b9150506107d8565b5050565b6006546001600160a01b031633146108695760405162461bcd60e51b815260040161074e90611866565b6108725f61108e565b565b6006546001600160a01b0316331461089e5760405162461bcd60e51b815260040161074e90611866565b6108b081670de0b6b3a76400006118c7565b6011556108c581670de0b6b3a76400006118c7565b60105550565b6006546001600160a01b031633146108f55760405162461bcd60e51b815260040161074e90611866565b600a805461ffff1916610101179055565b60606003805461062b906117f4565b6006546001600160a01b0316331461093f5760405162461bcd60e51b815260040161074e90611866565b816001600160a01b031663a9059cbb6109606006546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156109aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ce91906118de565b505050565b335f9081526005602090815260408083206001600160a01b038616845290915281205482811015610a545760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161074e565b610a6333856107668685611840565b5060019392505050565b5f6106b8338484610c86565b6006546001600160a01b03163314610aa35760405162461bcd60e51b815260040161074e90611866565b610ac881610ab96006546001600160a01b031690565b6001600160a01b0316906110df565b50565b6006546001600160a01b03163314610af55760405162461bcd60e51b815260040161074e90611866565b6001600160a01b038116610b5a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161074e565b610ac88161108e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161074e565b6001600160a01b038216610c265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161074e565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610ce75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161074e565b6001600160a01b0382165f908152600b602052604090205460ff1680610d2457506001600160a01b0383165f908152600b602052604090205460ff165b15610d3057600d546015555b60135460ff16158015610d5b57506001600160a01b0383165f9081526012602052604090205460ff16155b8015610d7f57506001600160a01b0382165f9081526012602052604090205460ff16155b15610f3c57600a54610100900460ff16610ddb5760405162461bcd60e51b815260206004820152601960248201527f54726164696e67206973206e6f74206163746976652079657400000000000000604482015260640161074e565b43600f54600e54610dec9190611853565b1115610e62576004546001600160a01b03838116911614610e2a576001600160a01b0382165f908152600b60205260409020805460ff191660011790555b6004546001600160a01b03848116911614610e62576001600160a01b0383165f908152600b60205260409020805460ff191660011790555b601054811115610ead5760405162461bcd60e51b815260206004820152601660248201527513585e151e105b5bdd5b9d081a5cc81b1a5b5a5d195960521b604482015260640161074e565b6004546001600160a01b03838116911614610f3c5760115481610ee4846001600160a01b03165f9081526020819052604090205490565b610eee9190611853565b1115610f3c5760405162461bcd60e51b815260206004820152601a60248201527f4d617857616c6c6574416d6f756e74206973206c696d69746564000000000000604482015260640161074e565b6013545f9060ff1680610f6657506001600160a01b0384165f9081526012602052604090205460ff165b80610f8857506001600160a01b0383165f9081526012602052604090205460ff165b15610f9457505f61100c565b6004546001600160a01b038481169116148015610fc957506001600160a01b0384165f908152600b602052604090205460ff16155b15610fef57606460155483610fde91906118c7565b610fe891906118fd565b905061100c565b606460145483610fff91906118c7565b61100991906118fd565b90505b600a5460ff168015611021575060135460ff16155b801561102c57505f81115b801561104657506004546001600160a01b03858116911614155b15611053576110536111f4565b801561107d5761106484308361123a565b61107884846110738585611410565b61123a565b611088565b61108884848461123a565b50505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b8047101561112f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161074e565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611178576040519150601f19603f3d011682016040523d82523d5f602084013e61117d565b606091505b50509050806109ce5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161074e565b305f908152602081905260409020546009548110610ac8574761121682611458565b5f6112218247611840565b6007549091506109ce906001600160a01b0316826110df565b6001600160a01b03831661129e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161074e565b6001600160a01b0382166113005760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161074e565b6001600160a01b0383165f90815260208190526040902054818110156113775760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161074e565b6113818282611840565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906113b6908490611853565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161140291815260200190565b60405180910390a350505050565b5f61145183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115a8565b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061148b5761148b61189b565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114e2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611506919061191c565b816001815181106115195761151961189b565b6001600160a01b039283166020918202929092010152600c5461153f9130911684610b63565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906115779085905f90869030904290600401611937565b5f604051808303815f87803b15801561158e575f80fd5b505af11580156115a0573d5f803e3d5ffd5b505050505050565b5f81848411156115cb5760405162461bcd60e51b815260040161074e91906115e0565b505f6115d78585611840565b95945050505050565b5f6020808352835180828501525f5b8181101561160b578581018301518582016040015282016115ef565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ac8575f80fd5b803561164a8161162b565b919050565b5f8060408385031215611660575f80fd5b823561166b8161162b565b946020939093013593505050565b5f805f6060848603121561168b575f80fd5b83356116968161162b565b925060208401356116a68161162b565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156116dc575f80fd5b823567ffffffffffffffff808211156116f3575f80fd5b818501915085601f830112611706575f80fd5b813581811115611718576117186116b7565b8060051b604051601f19603f8301168101818110858211171561173d5761173d6116b7565b60405291825284820192508381018501918883111561175a575f80fd5b938501935b8285101561177f576117708561163f565b8452938501939285019261175f565b98975050505050505050565b5f6020828403121561179b575f80fd5b81356114518161162b565b5f602082840312156117b6575f80fd5b5035919050565b5f80604083850312156117ce575f80fd5b82356117d98161162b565b915060208301356117e98161162b565b809150509250929050565b600181811c9082168061180857607f821691505b60208210810361182657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106bc576106bc61182c565b808201808211156106bc576106bc61182c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f600182016118c0576118c061182c565b5060010190565b80820281158282048414176106bc576106bc61182c565b5f602082840312156118ee575f80fd5b81518015158114611451575f80fd5b5f8261191757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561192c575f80fd5b81516114518161162b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119855784516001600160a01b031683529383019391830191600101611960565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f9427cfa9afb2e0d3844eb15e55d90fedf5787d97fbe8b2f25b6e0e9b3b16c4664736f6c63430008140033

Deployed Bytecode

0x6080604052600436106101f4575f3560e01c80638da5cb5b11610108578063c85c07711161009d578063e47269af1161006d578063e47269af1461058b578063f14210a6146105a0578063f25f4b56146105bf578063f2fde38b146105de578063fb4ee9fb146105fd575f80fd5b8063c85c0771146104ef578063d5e23cc714610504578063dbe66ca014610519578063dd62ed3e14610547575f80fd5b80639ed6b920116100d85780639ed6b9201461047d578063a457c2d71461049c578063a9059cbb146104bb578063b9766949146104da575f80fd5b80638da5cb5b146104185780638ea5220f1461043557806395d89b41146104545780639654b5c314610468575f80fd5b80634e17a2db11610189578063715018a611610159578063715018a614610385578063719a623f14610399578063735de9f7146103b857806381ffc9f4146103ef5780638a8c523c14610404575f80fd5b80634e17a2db1461030257806352fc215d146103175780636ddd17131461033857806370a0823114610351575f80fd5b806323b872dd116101c457806323b872dd14610294578063313ce567146102b357806339509351146102ce578063444bd60b146102ed575f80fd5b806306fdde03146101ff578063095ea7b31461022957806318160ddd146102585780631c1702f314610276575f80fd5b366101fb57005b5f80fd5b34801561020a575f80fd5b5061021361061c565b60405161022091906115e0565b60405180910390f35b348015610234575f80fd5b5061024861024336600461164f565b6106ac565b6040519015158152602001610220565b348015610263575f80fd5b506001545b604051908152602001610220565b348015610281575f80fd5b50600a5461024890610100900460ff1681565b34801561029f575f80fd5b506102486102ae366004611679565b6106c2565b3480156102be575f80fd5b5060405160128152602001610220565b3480156102d9575f80fd5b506102486102e836600461164f565b610776565b3480156102f8575f80fd5b50610268600f5481565b34801561030d575f80fd5b5061026860145481565b348015610322575f80fd5b506103366103313660046116cb565b6107ac565b005b348015610343575f80fd5b50600a546102489060ff1681565b34801561035c575f80fd5b5061026861036b36600461178b565b6001600160a01b03165f9081526020819052604090205490565b348015610390575f80fd5b5061033661083f565b3480156103a4575f80fd5b506103366103b33660046117a6565b610874565b3480156103c3575f80fd5b50600c546103d7906001600160a01b031681565b6040516001600160a01b039091168152602001610220565b3480156103fa575f80fd5b5061026860095481565b34801561040f575f80fd5b506103366108cb565b348015610423575f80fd5b506006546001600160a01b03166103d7565b348015610440575f80fd5b506008546103d7906001600160a01b031681565b34801561045f575f80fd5b50610213610906565b348015610473575f80fd5b5061026860155481565b348015610488575f80fd5b5061033661049736600461164f565b610915565b3480156104a7575f80fd5b506102486104b636600461164f565b6109d3565b3480156104c6575f80fd5b506102486104d536600461164f565b610a6d565b3480156104e5575f80fd5b50610268600d5481565b3480156104fa575f80fd5b50610268600e5481565b34801561050f575f80fd5b5061026860105481565b348015610524575f80fd5b5061024861053336600461178b565b60126020525f908152604090205460ff1681565b348015610552575f80fd5b506102686105613660046117bd565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205490565b348015610596575f80fd5b5061026860115481565b3480156105ab575f80fd5b506103366105ba3660046117a6565b610a79565b3480156105ca575f80fd5b506007546103d7906001600160a01b031681565b3480156105e9575f80fd5b506103366105f836600461178b565b610acb565b348015610608575f80fd5b506004546103d7906001600160a01b031681565b60606002805461062b906117f4565b80601f0160208091040260200160405190810160405280929190818152602001828054610657906117f4565b80156106a25780601f10610679576101008083540402835291602001916106a2565b820191905f5260205f20905b81548152906001019060200180831161068557829003601f168201915b5050505050905090565b5f6106b8338484610b63565b5060015b92915050565b5f6106ce848484610c86565b6001600160a01b0384165f908152600560209081526040808320338452909152902054828110156107575760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61076b85336107668685611840565b610b63565b506001949350505050565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916106b8918590610766908690611853565b6006546001600160a01b031633146107d65760405162461bcd60e51b815260040161074e90611866565b5f5b815181101561083b576001600b5f8484815181106107f8576107f861189b565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610833816118af565b9150506107d8565b5050565b6006546001600160a01b031633146108695760405162461bcd60e51b815260040161074e90611866565b6108725f61108e565b565b6006546001600160a01b0316331461089e5760405162461bcd60e51b815260040161074e90611866565b6108b081670de0b6b3a76400006118c7565b6011556108c581670de0b6b3a76400006118c7565b60105550565b6006546001600160a01b031633146108f55760405162461bcd60e51b815260040161074e90611866565b600a805461ffff1916610101179055565b60606003805461062b906117f4565b6006546001600160a01b0316331461093f5760405162461bcd60e51b815260040161074e90611866565b816001600160a01b031663a9059cbb6109606006546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af11580156109aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ce91906118de565b505050565b335f9081526005602090815260408083206001600160a01b038616845290915281205482811015610a545760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161074e565b610a6333856107668685611840565b5060019392505050565b5f6106b8338484610c86565b6006546001600160a01b03163314610aa35760405162461bcd60e51b815260040161074e90611866565b610ac881610ab96006546001600160a01b031690565b6001600160a01b0316906110df565b50565b6006546001600160a01b03163314610af55760405162461bcd60e51b815260040161074e90611866565b6001600160a01b038116610b5a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161074e565b610ac88161108e565b6001600160a01b038316610bc55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161074e565b6001600160a01b038216610c265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161074e565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610ce75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161074e565b6001600160a01b0382165f908152600b602052604090205460ff1680610d2457506001600160a01b0383165f908152600b602052604090205460ff165b15610d3057600d546015555b60135460ff16158015610d5b57506001600160a01b0383165f9081526012602052604090205460ff16155b8015610d7f57506001600160a01b0382165f9081526012602052604090205460ff16155b15610f3c57600a54610100900460ff16610ddb5760405162461bcd60e51b815260206004820152601960248201527f54726164696e67206973206e6f74206163746976652079657400000000000000604482015260640161074e565b43600f54600e54610dec9190611853565b1115610e62576004546001600160a01b03838116911614610e2a576001600160a01b0382165f908152600b60205260409020805460ff191660011790555b6004546001600160a01b03848116911614610e62576001600160a01b0383165f908152600b60205260409020805460ff191660011790555b601054811115610ead5760405162461bcd60e51b815260206004820152601660248201527513585e151e105b5bdd5b9d081a5cc81b1a5b5a5d195960521b604482015260640161074e565b6004546001600160a01b03838116911614610f3c5760115481610ee4846001600160a01b03165f9081526020819052604090205490565b610eee9190611853565b1115610f3c5760405162461bcd60e51b815260206004820152601a60248201527f4d617857616c6c6574416d6f756e74206973206c696d69746564000000000000604482015260640161074e565b6013545f9060ff1680610f6657506001600160a01b0384165f9081526012602052604090205460ff165b80610f8857506001600160a01b0383165f9081526012602052604090205460ff165b15610f9457505f61100c565b6004546001600160a01b038481169116148015610fc957506001600160a01b0384165f908152600b602052604090205460ff16155b15610fef57606460155483610fde91906118c7565b610fe891906118fd565b905061100c565b606460145483610fff91906118c7565b61100991906118fd565b90505b600a5460ff168015611021575060135460ff16155b801561102c57505f81115b801561104657506004546001600160a01b03858116911614155b15611053576110536111f4565b801561107d5761106484308361123a565b61107884846110738585611410565b61123a565b611088565b61108884848461123a565b50505050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b8047101561112f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161074e565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611178576040519150601f19603f3d011682016040523d82523d5f602084013e61117d565b606091505b50509050806109ce5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161074e565b305f908152602081905260409020546009548110610ac8574761121682611458565b5f6112218247611840565b6007549091506109ce906001600160a01b0316826110df565b6001600160a01b03831661129e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161074e565b6001600160a01b0382166113005760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161074e565b6001600160a01b0383165f90815260208190526040902054818110156113775760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161074e565b6113818282611840565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906113b6908490611853565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161140291815260200190565b60405180910390a350505050565b5f61145183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115a8565b9392505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061148b5761148b61189b565b6001600160a01b03928316602091820292909201810191909152600c54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114e2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611506919061191c565b816001815181106115195761151961189b565b6001600160a01b039283166020918202929092010152600c5461153f9130911684610b63565b600c5460405163791ac94760e01b81526001600160a01b039091169063791ac947906115779085905f90869030904290600401611937565b5f604051808303815f87803b15801561158e575f80fd5b505af11580156115a0573d5f803e3d5ffd5b505050505050565b5f81848411156115cb5760405162461bcd60e51b815260040161074e91906115e0565b505f6115d78585611840565b95945050505050565b5f6020808352835180828501525f5b8181101561160b578581018301518582016040015282016115ef565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ac8575f80fd5b803561164a8161162b565b919050565b5f8060408385031215611660575f80fd5b823561166b8161162b565b946020939093013593505050565b5f805f6060848603121561168b575f80fd5b83356116968161162b565b925060208401356116a68161162b565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b5f60208083850312156116dc575f80fd5b823567ffffffffffffffff808211156116f3575f80fd5b818501915085601f830112611706575f80fd5b813581811115611718576117186116b7565b8060051b604051601f19603f8301168101818110858211171561173d5761173d6116b7565b60405291825284820192508381018501918883111561175a575f80fd5b938501935b8285101561177f576117708561163f565b8452938501939285019261175f565b98975050505050505050565b5f6020828403121561179b575f80fd5b81356114518161162b565b5f602082840312156117b6575f80fd5b5035919050565b5f80604083850312156117ce575f80fd5b82356117d98161162b565b915060208301356117e98161162b565b809150509250929050565b600181811c9082168061180857607f821691505b60208210810361182657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106bc576106bc61182c565b808201808211156106bc576106bc61182c565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f600182016118c0576118c061182c565b5060010190565b80820281158282048414176106bc576106bc61182c565b5f602082840312156118ee575f80fd5b81518015158114611451575f80fd5b5f8261191757634e487b7160e01b5f52601260045260245ffd5b500490565b5f6020828403121561192c575f80fd5b81516114518161162b565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119855784516001600160a01b031683529383019391830191600101611960565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220f9427cfa9afb2e0d3844eb15e55d90fedf5787d97fbe8b2f25b6e0e9b3b16c4664736f6c63430008140033

Deployed Bytecode Sourcemap

12689:5791:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7750:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8908:169;;;;;;;;;;-1:-1:-1;8908:169:0;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;8908:169:0;1162:187:1;7856:108:0;;;;;;;;;;-1:-1:-1;7944:12:0;;7856:108;;;1500:25:1;;;1488:2;1473:18;7856:108:0;1354:177:1;13037:24:0;;;;;;;;;;-1:-1:-1;13037:24:0;;;;;;;;;;;9304:422;;;;;;;;;;-1:-1:-1;9304:422:0;;;;;:::i;:::-;;:::i;7972:93::-;;;;;;;;;;-1:-1:-1;7972:93:0;;8055:2;2139:36:1;;2127:2;2112:18;7972:93:0;1997:184:1;9083:215:0;;;;;;;;;;-1:-1:-1;9083:215:0;;;;;:::i;:::-;;:::i;13233:27::-;;;;;;;;;;;;;;;;13480:28;;;;;;;;;;;;;;;;17222:179;;;;;;;;;;-1:-1:-1;17222:179:0;;;;;:::i;:::-;;:::i;:::-;;13007:23;;;;;;;;;;-1:-1:-1;13007:23:0;;;;;;;;8234:127;;;;;;;;;;-1:-1:-1;8234:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8335:18:0;8308:7;8335:18;;;;;;;;;;;;8234:127;12207:94;;;;;;;;;;;;;:::i;18333:142::-;;;;;;;;;;-1:-1:-1;18333:142:0;;;;;:::i;:::-;;:::i;13120:28::-;;;;;;;;;;-1:-1:-1;13120:28:0;;;;-1:-1:-1;;;;;13120:28:0;;;;;;-1:-1:-1;;;;;4060:32:1;;;4042:51;;4030:2;4015:18;13120:28:0;3881:218:1;12956:44:0;;;;;;;;;;;;;;;;14336:101;;;;;;;;;;;;;:::i;12108:87::-;;;;;;;;;;-1:-1:-1;12181:6:0;;-1:-1:-1;;;;;12181:6:0;12108:87;;12880:69;;;;;;;;;;-1:-1:-1;12880:69:0;;;;-1:-1:-1;;;;;12880:69:0;;;7638:104;;;;;;;;;;;;;:::i;13515:29::-;;;;;;;;;;;;;;;;16544:149;;;;;;;;;;-1:-1:-1;16544:149:0;;;;;:::i;:::-;;:::i;10288:377::-;;;;;;;;;;-1:-1:-1;10288:377:0;;;;;:::i;:::-;;:::i;8721:175::-;;;;;;;;;;-1:-1:-1;8721:175:0;;;;;:::i;:::-;;:::i;13155:34::-;;;;;;;;;;;;;;;;13196:30;;;;;;;;;;;;;;;;13267:49;;;;;;;;;;;;;;;;13393;;;;;;;;;;-1:-1:-1;13393:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8075:151;;;;;;;;;;-1:-1:-1;8075:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;8191:18:0;;;8164:7;8191:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8075:151;13329:49;;;;;;;;;;;;;;;;14214:114;;;;;;;;;;-1:-1:-1;14214:114:0;;;;;:::i;:::-;;:::i;12804:69::-;;;;;;;;;;-1:-1:-1;12804:69:0;;;;-1:-1:-1;;;;;12804:69:0;;;12307:192;;;;;;;;;;-1:-1:-1;12307:192:0;;;;;:::i;:::-;;:::i;7400:25::-;;;;;;;;;;-1:-1:-1;7400:25:0;;;;-1:-1:-1;;;;;7400:25:0;;;7750:100;7804:13;7837:5;7830:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7750:100;:::o;8908:169::-;8991:4;9008:39;321:10;9031:7;9040:6;9008:8;:39::i;:::-;-1:-1:-1;9065:4:0;8908:169;;;;;:::o;9304:422::-;9410:4;9427:36;9437:6;9445:9;9456:6;9427:9;:36::i;:::-;-1:-1:-1;;;;;9503:19:0;;9476:24;9503:19;;;:11;:19;;;;;;;;321:10;9503:33;;;;;;;;9555:26;;;;9547:79;;;;-1:-1:-1;;;9547:79:0;;5292:2:1;9547:79:0;;;5274:21:1;5331:2;5311:18;;;5304:30;5370:34;5350:18;;;5343:62;-1:-1:-1;;;5421:18:1;;;5414:38;5469:19;;9547:79:0;;;;;;;;;9637:57;9646:6;321:10;9668:25;9687:6;9668:16;:25;:::i;:::-;9637:8;:57::i;:::-;-1:-1:-1;9714:4:0;;9304:422;-1:-1:-1;;;;9304:422:0:o;9083:215::-;321:10;9171:4;9220:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;9220:34:0;;;;;;;;;;9171:4;;9188:80;;9211:7;;9220:47;;9257:10;;9220:47;:::i;17222:179::-;12181:6;;-1:-1:-1;;;;;12181:6:0;321:10;12022:23;12014:68;;;;-1:-1:-1;;;12014:68:0;;;;;;;:::i;:::-;17303:6:::1;17298:96;17319:6;:13;17315:1;:17;17298:96;;;17378:4;17355:9;:20;17365:6;17372:1;17365:9;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;17355:20:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;17355:20:0;:27;;-1:-1:-1;;17355:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17334:3;::::1;::::0;::::1;:::i;:::-;;;;17298:96;;;;17222:179:::0;:::o;12207:94::-;12181:6;;-1:-1:-1;;;;;12181:6:0;321:10;12022:23;12014:68;;;;-1:-1:-1;;;12014:68:0;;;;;;;:::i;:::-;12272:21:::1;12290:1;12272:9;:21::i;:::-;12207:94::o:0;18333:142::-;12181:6;;-1:-1:-1;;;;;12181:6:0;321:10;12022:23;12014:68;;;;-1:-1:-1;;;12014:68:0;;;;;;;:::i;:::-;18420:15:::1;:6:::0;18429::::1;18420:15;:::i;:::-;18405:12;:30:::0;18452:15:::1;:6:::0;18461::::1;18452:15;:::i;:::-;18437:12;:30:::0;-1:-1:-1;18333:142:0:o;14336:101::-;12181:6;;-1:-1:-1;;;;;12181:6:0;321:10;12022:23;12014:68;;;;-1:-1:-1;;;12014:68:0;;;;;;;:::i;:::-;14390:12:::1;:19:::0;;-1:-1:-1;;14411:18:0;;;;;14336:101::o;7638:104::-;7694:13;7727:7;7720:14;;;;;:::i;16544:149::-;12181:6;;-1:-1:-1;;;;;12181:6:0;321:10;12022:23;12014:68;;;;-1:-1:-1;;;12014:68:0;;;;;;;:::i;:::-;16646:12:::1;-1:-1:-1::0;;;;;16639:29:0::1;;16669:7;12181:6:::0;;-1:-1:-1;;;;;12181:6:0;;12108:87;16669:7:::1;16639:46;::::0;-1:-1:-1;;;;;;16639:46:0::1;::::0;;;;;;-1:-1:-1;;;;;6892:32:1;;;16639:46:0::1;::::0;::::1;6874:51:1::0;6941:18;;;6934:34;;;6847:18;;16639:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16544:149:::0;;:::o;10288:377::-;321:10;10381:4;10425:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10425:34:0;;;;;;;;;;10478:35;;;;10470:85;;;;-1:-1:-1;;;10470:85:0;;7463:2:1;10470:85:0;;;7445:21:1;7502:2;7482:18;;;7475:30;7541:34;7521:18;;;7514:62;-1:-1:-1;;;7592:18:1;;;7585:35;7637:19;;10470:85:0;7261:401:1;10470:85:0;10566:67;321:10;10589:7;10598:34;10617:15;10598:16;:34;:::i;10566:67::-;-1:-1:-1;10653:4:0;;10288:377;-1:-1:-1;;;10288:377:0:o;8721:175::-;8807:4;8824:42;321:10;8848:9;8859:6;8824:9;:42::i;14214:114::-;12181:6;;-1:-1:-1;;;;;12181:6:0;321:10;12022:23;12014:68;;;;-1:-1:-1;;;12014:68:0;;;;;;;:::i;:::-;14283:37:::1;14310:9;14291:7;12181:6:::0;;-1:-1:-1;;;;;12181:6:0;;12108:87;14291:7:::1;-1:-1:-1::0;;;;;14283:26:0::1;::::0;::::1;:37::i;:::-;14214:114:::0;:::o;12307:192::-;12181:6;;-1:-1:-1;;;;;12181:6:0;321:10;12022:23;12014:68;;;;-1:-1:-1;;;12014:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12396:22:0;::::1;12388:73;;;::::0;-1:-1:-1;;;12388:73:0;;7869:2:1;12388:73:0::1;::::0;::::1;7851:21:1::0;7908:2;7888:18;;;7881:30;7947:34;7927:18;;;7920:62;-1:-1:-1;;;7998:18:1;;;7991:36;8044:19;;12388:73:0::1;7667:402:1::0;12388:73:0::1;12472:19;12482:8;12472:9;:19::i;8369:346::-:0;-1:-1:-1;;;;;8471:19:0;;8463:68;;;;-1:-1:-1;;;8463:68:0;;8276:2:1;8463:68:0;;;8258:21:1;8315:2;8295:18;;;8288:30;8354:34;8334:18;;;8327:62;-1:-1:-1;;;8405:18:1;;;8398:34;8449:19;;8463:68:0;8074:400:1;8463:68:0;-1:-1:-1;;;;;8550:21:0;;8542:68;;;;-1:-1:-1;;;8542:68:0;;8681:2:1;8542:68:0;;;8663:21:1;8720:2;8700:18;;;8693:30;8759:34;8739:18;;;8732:62;-1:-1:-1;;;8810:18:1;;;8803:32;8852:19;;8542:68:0;8479:398:1;8542:68:0;-1:-1:-1;;;;;8623:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8675:32;;1500:25:1;;;8675:32:0;;1473:18:1;8675:32:0;;;;;;;8369:346;;;:::o;14443:2093::-;14559:1;14550:6;:10;14542:64;;;;-1:-1:-1;;;14542:64:0;;9084:2:1;14542:64:0;;;9066:21:1;9123:2;9103:18;;;9096:30;9162:34;9142:18;;;9135:62;-1:-1:-1;;;9213:18:1;;;9206:39;9262:19;;14542:64:0;8882:405:1;14542:64:0;-1:-1:-1;;;;;14621:20:0;;;;;;:9;:20;;;;;;;;;:41;;-1:-1:-1;;;;;;14645:17:0;;;;;;:9;:17;;;;;;;;14621:41;14618:100;;;14692:14;;14679:10;:27;14618:100;14762:10;;;;14761:11;:40;;;;-1:-1:-1;;;;;;14777:24:0;;;;;;:16;:24;;;;;;;;14776:25;14761:40;:86;;;;-1:-1:-1;;;;;;14820:27:0;;;;;;:16;:27;;;;;;;;14819:28;14761:86;14758:823;;;14900:12;;;;;;;14874:82;;;;-1:-1:-1;;;14874:82:0;;9494:2:1;14874:82:0;;;9476:21:1;9533:2;9513:18;;;9506:30;9572:27;9552:18;;;9545:55;9617:18;;14874:82:0;9292:349:1;14874:82:0;15004:12;14993:8;;14975:15;;:26;;;;:::i;:::-;:41;14971:272;;;15053:10;;-1:-1:-1;;;;;15040:23:0;;;15053:10;;15040:23;15037:98;;-1:-1:-1;;;;;15088:20:0;;;;;;:9;:20;;;;;:27;;-1:-1:-1;;15088:27:0;15111:4;15088:27;;;15037:98;15149:10;;-1:-1:-1;;;;;15139:20:0;;;15149:10;;15139:20;15136:92;;-1:-1:-1;;;;;15184:17:0;;;;;;:9;:17;;;;;:24;;-1:-1:-1;;15184:24:0;15204:4;15184:24;;;15136:92;15294:12;;15284:6;:22;;15258:89;;;;-1:-1:-1;;;15258:89:0;;9848:2:1;15258:89:0;;;9830:21:1;9887:2;9867:18;;;9860:30;-1:-1:-1;;;9906:18:1;;;9899:52;9968:18;;15258:89:0;9646:346:1;15258:89:0;15378:10;;-1:-1:-1;;;;;15365:23:0;;;15378:10;;15365:23;15362:208;;15471:12;;15461:6;15438:20;15448:9;-1:-1:-1;;;;;8335:18:0;8308:7;8335:18;;;;;;;;;;;;8234:127;15438:20;:29;;;;:::i;:::-;:45;;15408:146;;;;-1:-1:-1;;;15408:146:0;;10199:2:1;15408:146:0;;;10181:21:1;10238:2;10218:18;;;10211:30;10277:28;10257:18;;;10250:56;10323:18;;15408:146:0;9997:350:1;15408:146:0;15638:10;;15602:21;;15638:10;;;:38;;-1:-1:-1;;;;;;15652:24:0;;;;;;:16;:24;;;;;;;;15638:38;:69;;;-1:-1:-1;;;;;;15680:27:0;;;;;;:16;:27;;;;;;;;15638:69;15634:418;;;-1:-1:-1;15740:1:0;15634:418;;;15799:10;;-1:-1:-1;;;;;15786:23:0;;;15799:10;;15786:23;:45;;;;-1:-1:-1;;;;;;15814:17:0;;;;;;:9;:17;;;;;;;;15813:18;15786:45;15783:258;;;15890:3;15877:10;;15868:6;:19;;;;:::i;:::-;:25;;;;:::i;:::-;15852:41;;15783:258;;;16010:3;15998:9;;15989:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;15973:40;;15783:258;16066:11;;;;:39;;;;-1:-1:-1;16095:10:0;;;;16094:11;16066:39;:73;;;;;16138:1;16122:13;:17;16066:73;:110;;;;-1:-1:-1;16166:10:0;;-1:-1:-1;;;;;16156:20:0;;;16166:10;;16156:20;;16066:110;16062:167;;;16204:13;:11;:13::i;:::-;16258:17;;16241:288;;16302:53;16318:6;16334:4;16341:13;16302:15;:53::i;:::-;16371:61;16387:6;16395:9;16406:25;:6;16417:13;16406:10;:25::i;:::-;16371:15;:61::i;:::-;16241:288;;;16475:42;16491:6;16499:9;16510:6;16475:15;:42::i;:::-;14531:2005;14443:2093;;;:::o;12507:173::-;12582:6;;;-1:-1:-1;;;;;12599:17:0;;;-1:-1:-1;;;;;;12599:17:0;;;;;;;12632:40;;12582:6;;;12599:17;12582:6;;12632:40;;12563:16;;12632:40;12552:128;12507:173;:::o;481:315::-;596:6;571:21;:31;;563:73;;;;-1:-1:-1;;;563:73:0;;10776:2:1;563:73:0;;;10758:21:1;10815:2;10795:18;;;10788:30;10854:31;10834:18;;;10827:59;10903:18;;563:73:0;10574:353:1;563:73:0;648:12;666:9;-1:-1:-1;;;;;666:14:0;688:6;666:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;647:52;;;718:7;710:78;;;;-1:-1:-1;;;710:78:0;;11344:2:1;710:78:0;;;11326:21:1;11383:2;11363:18;;;11356:30;11422:34;11402:18;;;11395:62;11493:28;11473:18;;;11466:56;11539:19;;710:78:0;11142:422:1;17409:419:0;17495:4;17451:23;8335:18;;;;;;;;;;;17535:11;;17516:30;;17512:309;;17594:21;17636:30;17650:15;17636:13;:30::i;:::-;17687:20;17710:38;17734:14;17710:21;:38;:::i;:::-;17773:9;;17687:61;;-1:-1:-1;17765:42:0;;-1:-1:-1;;;;;17773:9:0;17687:61;17765:28;:42::i;9736:544::-;-1:-1:-1;;;;;9842:20:0;;9834:70;;;;-1:-1:-1;;;9834:70:0;;11771:2:1;9834:70:0;;;11753:21:1;11810:2;11790:18;;;11783:30;11849:34;11829:18;;;11822:62;-1:-1:-1;;;11900:18:1;;;11893:35;11945:19;;9834:70:0;11569:401:1;9834:70:0;-1:-1:-1;;;;;9923:23:0;;9915:71;;;;-1:-1:-1;;;9915:71:0;;12177:2:1;9915:71:0;;;12159:21:1;12216:2;12196:18;;;12189:30;12255:34;12235:18;;;12228:62;-1:-1:-1;;;12306:18:1;;;12299:33;12349:19;;9915:71:0;11975:399:1;9915:71:0;-1:-1:-1;;;;;10023:17:0;;9999:21;10023:17;;;;;;;;;;;10059:23;;;;10051:74;;;;-1:-1:-1;;;10051:74:0;;12581:2:1;10051:74:0;;;12563:21:1;12620:2;12600:18;;;12593:30;12659:34;12639:18;;;12632:62;-1:-1:-1;;;12710:18:1;;;12703:36;12756:19;;10051:74:0;12379:402:1;10051:74:0;10156:22;10172:6;10156:13;:22;:::i;:::-;-1:-1:-1;;;;;10136:17:0;;;:9;:17;;;;;;;;;;;:42;;;;10189:20;;;;;;;;:30;;10213:6;;10136:9;10189:30;;10213:6;;10189:30;:::i;:::-;;;;;;;;10254:9;-1:-1:-1;;;;;10237:35:0;10246:6;-1:-1:-1;;;;;10237:35:0;;10265:6;10237:35;;;;1500:25:1;;1488:2;1473:18;;1354:177;10237:35:0;;;;;;;;9823:457;9736:544;;;:::o;1102:136::-;1160:7;1187:43;1191:1;1194;1187:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1180:50;1102:136;-1:-1:-1;;;1102:136:0:o;17836:491::-;17923:16;;;17937:1;17923:16;;;;;;;;17899:21;;17923:16;;;;;;;;;;-1:-1:-1;17923:16:0;17899:40;;17968:4;17950;17955:1;17950:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17950:23:0;;;:7;;;;;;;;;;:23;;;;17994:13;;:20;;;-1:-1:-1;;;17994:20:0;;;;:13;;;;;:18;;:20;;;;;17950:7;;17994:20;;;;;:13;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17984:4;17989:1;17984:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17984:30:0;;;:7;;;;;;;;;:30;18057:13;;18025:60;;18042:4;;18057:13;18073:11;18025:8;:60::i;:::-;18124:13;;:195;;-1:-1:-1;;;18124:195:0;;-1:-1:-1;;;;;18124:13:0;;;;:64;;:195;;18203:11;;18124:13;;18246:4;;18273;;18293:15;;18124:195;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17888:439;17836:491;:::o;2149:181::-;2235:7;2271:12;2263:6;;;;2255:29;;;;-1:-1:-1;;;2255:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2286:9:0;2298:5;2302:1;2298;:5;:::i;:::-;2286:17;2149:181;-1:-1:-1;;;;;2149:181:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:134;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;2186:127::-;2247:10;2242:3;2238:20;2235:1;2228:31;2278:4;2275:1;2268:15;2302:4;2299:1;2292:15;2318:1121;2402:6;2433:2;2476;2464:9;2455:7;2451:23;2447:32;2444:52;;;2492:1;2489;2482:12;2444:52;2532:9;2519:23;2561:18;2602:2;2594:6;2591:14;2588:34;;;2618:1;2615;2608:12;2588:34;2656:6;2645:9;2641:22;2631:32;;2701:7;2694:4;2690:2;2686:13;2682:27;2672:55;;2723:1;2720;2713:12;2672:55;2759:2;2746:16;2781:2;2777;2774:10;2771:36;;;2787:18;;:::i;:::-;2833:2;2830:1;2826:10;2865:2;2859:9;2928:2;2924:7;2919:2;2915;2911:11;2907:25;2899:6;2895:38;2983:6;2971:10;2968:22;2963:2;2951:10;2948:18;2945:46;2942:72;;;2994:18;;:::i;:::-;3030:2;3023:22;3080:18;;;3114:15;;;;-1:-1:-1;3156:11:1;;;3152:20;;;3184:19;;;3181:39;;;3216:1;3213;3206:12;3181:39;3240:11;;;;3260:148;3276:6;3271:3;3268:15;3260:148;;;3342:23;3361:3;3342:23;:::i;:::-;3330:36;;3293:12;;;;3386;;;;3260:148;;;3427:6;2318:1121;-1:-1:-1;;;;;;;;2318:1121:1:o;3444:247::-;3503:6;3556:2;3544:9;3535:7;3531:23;3527:32;3524:52;;;3572:1;3569;3562:12;3524:52;3611:9;3598:23;3630:31;3655:5;3630:31;:::i;3696:180::-;3755:6;3808:2;3796:9;3787:7;3783:23;3779:32;3776:52;;;3824:1;3821;3814:12;3776:52;-1:-1:-1;3847:23:1;;3696:180;-1:-1:-1;3696:180:1:o;4312:388::-;4380:6;4388;4441:2;4429:9;4420:7;4416:23;4412:32;4409:52;;;4457:1;4454;4447:12;4409:52;4496:9;4483:23;4515:31;4540:5;4515:31;:::i;:::-;4565:5;-1:-1:-1;4622:2:1;4607:18;;4594:32;4635:33;4594:32;4635:33;:::i;:::-;4687:7;4677:17;;;4312:388;;;;;:::o;4705:380::-;4784:1;4780:12;;;;4827;;;4848:61;;4902:4;4894:6;4890:17;4880:27;;4848:61;4955:2;4947:6;4944:14;4924:18;4921:38;4918:161;;5001:10;4996:3;4992:20;4989:1;4982:31;5036:4;5033:1;5026:15;5064:4;5061:1;5054:15;4918:161;;4705:380;;;:::o;5499:127::-;5560:10;5555:3;5551:20;5548:1;5541:31;5591:4;5588:1;5581:15;5615:4;5612:1;5605:15;5631:128;5698:9;;;5719:11;;;5716:37;;;5733:18;;:::i;5764:125::-;5829:9;;;5850:10;;;5847:36;;;5863:18;;:::i;5894:356::-;6096:2;6078:21;;;6115:18;;;6108:30;6174:34;6169:2;6154:18;;6147:62;6241:2;6226:18;;5894:356::o;6255:127::-;6316:10;6311:3;6307:20;6304:1;6297:31;6347:4;6344:1;6337:15;6371:4;6368:1;6361:15;6387:135;6426:3;6447:17;;;6444:43;;6467:18;;:::i;:::-;-1:-1:-1;6514:1:1;6503:13;;6387:135::o;6527:168::-;6600:9;;;6631;;6648:15;;;6642:22;;6628:37;6618:71;;6669:18;;:::i;6979:277::-;7046:6;7099:2;7087:9;7078:7;7074:23;7070:32;7067:52;;;7115:1;7112;7105:12;7067:52;7147:9;7141:16;7200:5;7193:13;7186:21;7179:5;7176:32;7166:60;;7222:1;7219;7212:12;10352:217;10392:1;10418;10408:132;;10462:10;10457:3;10453:20;10450:1;10443:31;10497:4;10494:1;10487:15;10525:4;10522:1;10515:15;10408:132;-1:-1:-1;10554:9:1;;10352:217::o;12786:251::-;12856:6;12909:2;12897:9;12888:7;12884:23;12880:32;12877:52;;;12925:1;12922;12915:12;12877:52;12957:9;12951:16;12976:31;13001:5;12976:31;:::i;13042:980::-;13304:4;13352:3;13341:9;13337:19;13383:6;13372:9;13365:25;13409:2;13447:6;13442:2;13431:9;13427:18;13420:34;13490:3;13485:2;13474:9;13470:18;13463:31;13514:6;13549;13543:13;13580:6;13572;13565:22;13618:3;13607:9;13603:19;13596:26;;13657:2;13649:6;13645:15;13631:29;;13678:1;13688:195;13702:6;13699:1;13696:13;13688:195;;;13767:13;;-1:-1:-1;;;;;13763:39:1;13751:52;;13858:15;;;;13823:12;;;;13799:1;13717:9;13688:195;;;-1:-1:-1;;;;;;;13939:32:1;;;;13934:2;13919:18;;13912:60;-1:-1:-1;;;14003:3:1;13988:19;13981:35;13900:3;13042:980;-1:-1:-1;;;13042:980:1:o

Swarm Source

ipfs://f9427cfa9afb2e0d3844eb15e55d90fedf5787d97fbe8b2f25b6e0e9b3b16c46
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.