ETH Price: $2,385.06 (+1.41%)

Token

My Little Pony (PONYS)
 

Overview

Max Total Supply

1,000,000,000 PONYS

Holders

82

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
24,113,661.68016262 PONYS

Value
$0.00
0x350463c9ff85f33fe85ee13342b16012161103ff
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:
PONYS

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-22
*/

// SPDX-License-Identifier: Unlicensed

/**
Welcome to the magical world of My Little Pony on the Ethereum blockchain, where $PONYS takes us on a thrilling journey on Equestria, from Ponyville to moonshot Canterlot!

Web: https://ponys.fun
Tg: https://t.me/MyLittlePonyPortal
X: https://twitter.com/MyLittlePonyETH
*/

pragma solidity 0.8.21;

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20Template {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMathLibs {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMathLibs: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMathLibs: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMathLibs: division by 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;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMathLibs: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IUniswapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapRouter {
    
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract OwnerLib is Context {
    address private _owner;
    address private _previousOwner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "OwnerLib: caller is not the owner");
        _;
    }
    
    function waiveOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "OwnerLib: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract PONYS is Context, IERC20Template, OwnerLib {
    
    using SafeMathLibs for uint256;
    
    string private _name = "My Little Pony";
    string private _symbol = "PONYS";
    uint8 private _decimals = 9;
    uint256 private _totalSupply = 1_000_000_000 * 10**9;
    uint256 public maxTxSize = _totalSupply;
    uint256 public maxWalletAmount = _totalSupply*20/1000;
    uint256 private minimumFeeSwap = _totalSupply/100000; 

    uint256 public totalBuyFee = 15;
    uint256 public totalSellFee = 15;
    
    bool swapping;
    bool public feeSwapEnabled = false;
    bool public swapLimitInEffec = false;
    bool public maxWalletInEffect = true;

    uint256 public buyLp = 0;
    uint256 public buyMarketing = 15;
    uint256 public buyDev = 0;
    uint256 public sellLp = 0;
    uint256 public sellMarketing = 15;
    uint256 public sellDev = 0;
    

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isMaxwalletExempt;
    mapping (address => bool) public isMaxTxExempt;
    mapping (address => bool) public checkMarketPair;

    address payable private feeReceipient;
    address public immutable DEAD = 0x000000000000000000000000000000000000dEaD;

    IUniswapRouter public uniswapV2Router;
    address public uniswapPair;
    
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }
    
    constructor () {
        IUniswapRouter _uniswapV2Router = IUniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        feeReceipient = payable(0xde2253924b10EC0052f8ed7d3Ce3f5dA71eeEC72);
        uniswapPair = IUniswapFactory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isFeeExempt[owner()] = true;
        isFeeExempt[feeReceipient] = true;

        isMaxwalletExempt[owner()] = true;
        isMaxwalletExempt[feeReceipient] = true;
        isMaxwalletExempt[address(uniswapPair)] = true;
        isMaxwalletExempt[address(this)] = true;
        
        isMaxTxExempt[owner()] = true;
        isMaxTxExempt[feeReceipient] = true;
        isMaxTxExempt[address(this)] = true;

        checkMarketPair[address(uniswapPair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
        
    function _approve(address owner, address spender, uint256 amount) private {
        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 approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        feeSwapEnabled = _enabled;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(swapping)
        { 
            return _transferStandard(sender, recipient, amount); 
        }
        else
        {
            if(!isMaxTxExempt[sender] && !isMaxTxExempt[recipient]) {
                require(amount <= maxTxSize, "Transfer amount exceeds the maxTxSize.");
            }            

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumFeeSwap;
            
            if (overMinimumTokenBalance && !swapping && !isFeeExempt[sender] && checkMarketPair[recipient] && feeSwapEnabled && amount > minimumFeeSwap) 
            {
                if(swapLimitInEffec)
                    contractTokenBalance = minimumFeeSwap;
                swapTokens(contractTokenBalance);    
            }

            (uint256 finalAmount, uint256 feeAmount) = getFee(sender, recipient, amount);

            address feeAddre = feeAmount == amount ? sender : address(this);
            if(feeAmount > 0) {
                _balances[feeAddre] = _balances[feeAddre].add(feeAmount);
                emit Transfer(sender, feeAddre, feeAmount);
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            if(maxWalletInEffect && !isMaxwalletExempt[recipient])
                require(balanceOf(recipient).add(finalAmount) <= maxWalletAmount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }    
    
    function swapTokensToEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }

    function getFee(address sender, address recipient, uint256 amount) internal view returns (uint256, uint256) {
        
        uint256 feeAmount = amount;

        if (isFeeExempt[sender] && feeSwapEnabled) return (amount, feeAmount);

        if(checkMarketPair[sender]) {
            feeAmount = amount.mul(totalBuyFee).div(100);
        }
        else if(checkMarketPair[recipient]) {
            feeAmount = amount.mul(totalSellFee).div(100);
        }
        if (isFeeExempt[sender]) {
            return (amount, 0);
        }

        return (amount.sub(feeAmount), feeAmount);
    }
    
    function adjustMaxTxAmount(uint256 maxTxAmount_) external onlyOwner() {
        require(maxTxAmount_ >= _totalSupply/100, "Max wallet should be more or equal to 1%");
        maxTxSize = maxTxAmount_;
    }
    
    function swapTokens(uint256 tAmount) private lockTheSwap {
        swapTokensToEth(tAmount);
        uint256 amountETHMarketing = address(this).balance;
        sendFee(feeReceipient, amountETHMarketing);
    }

    function sendFee(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function _transferStandard(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    receive() external payable {}
    
    function setBuyFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
        buyLp = newLiquidityTax;
        buyMarketing = newMarketingTax;
        buyDev = newDevelopmentTax;

        totalBuyFee = buyLp.add(buyMarketing).add(buyDev);
        require (totalBuyFee <= 10);
    }

    function setSellFee(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newDevelopmentTax) external onlyOwner() {
        sellLp = newLiquidityTax;
        sellMarketing = newMarketingTax;
        sellDev = newDevelopmentTax;

        totalSellFee = sellLp.add(sellMarketing).add(sellDev);
        require (totalSellFee <= 20);
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        maxWalletAmount  = newLimit;
    }
}

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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"adjustMaxTxAmount","outputs":[],"stateMutability":"nonpayable","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":"buyDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"checkMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxTxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxwalletExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newDevelopmentTax","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapLimitInEffec","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"waiveOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600e60a09081526d4d79204c6974746c6520506f6e7960901b60c0526002906200002f908262000590565b50604080518082019091526005815264504f4e595360d81b60208201526003906200005b908262000590565b506004805460ff19166009179055670de0b6b3a7640000600581905560068190556103e8906200008d90601462000658565b62000099919062000682565b600755620186a0600554620000af919062000682565b600855600f6009819055600a819055600b805463ffffff00191663010000001790555f600c819055600d829055600e81905580825560109190915560115561dead608052348015620000ff575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601880546001600160a01b03191673de2253924b10ec0052f8ed7d3ce3f5da71eeec721790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa158015620001b8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001de9190620006a2565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002509190620006a2565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200029b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c19190620006a2565b601a80546001600160a01b039283166001600160a01b031991821617909155601980549284169290911682179055600554305f90815260136020908152604080832094835293905291822055600190601490620003255f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560185490911681526014909252812080549092166001908117909255601590620003835f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055601854821681526015909352818320805485166001908117909155601a549091168352818320805485168217905530835290822080549093168117909255601690620004035f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff1996871617905560185482168152601684528281208054861660019081179091553082528382208054871682179055601a549092168152601790935290822080549093161790915560055490601290620004803390565b6001600160a01b0316815260208101919091526040015f2055336001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620004e191815260200190565b60405180910390a350620006d1565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200051957607f821691505b6020821081036200053857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200058b575f81815260208120601f850160051c81016020861015620005665750805b601f850160051c820191505b81811015620005875782815560010162000572565b5050505b505050565b81516001600160401b03811115620005ac57620005ac620004f0565b620005c481620005bd845462000504565b846200053e565b602080601f831160018114620005fa575f8415620005e25750858301515b5f19600386901b1c1916600185901b17855562000587565b5f85815260208120601f198616915b828110156200062a5788860151825594840194600190910190840162000609565b50858210156200064857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b80820281158282048414176200067c57634e487b7160e01b5f52601160045260245ffd5b92915050565b5f826200069d57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620006b3575f80fd5b81516001600160a01b0381168114620006ca575f80fd5b9392505050565b608051611961620006ea5f395f61023101526119615ff3fe608060405260043610610215575f3560e01c8063758c48d41161011e578063a9059cbb116100a8578063d64fea9c1161006d578063d64fea9c1461062e578063dd62ed3e14610643578063e57ef7b814610687578063f1d5f5171461069c578063f2fde38b146106bb575f80fd5b8063a9059cbb1461058e578063aa4bde28146105ad578063c1ec8d4b146105c2578063c49b9a80146105f0578063c816841b1461060f575f80fd5b80638f03aad5116100ee5780638f03aad51461051d578063914eb66a1461053c57806395d89b41146105505780639d9241ec14610564578063a8b9f94d14610579575f80fd5b8063758c48d4146104b85780637bd9cef0146104d75780637e150d66146104ec5780638da5cb5b14610501575f80fd5b806323b872dd1161019f57806355324fa91161016f57806355324fa91461041757806359b107b91461044557806365e3941c1461045a5780636b41ae0c1461046f57806370a0823114610484575f80fd5b806323b872dd1461038a57806325519cf2146103a9578063313ce567146103c85780633f4218e0146103e9575f80fd5b80631694505e116101e55780631694505e146102de57806318160ddd146102fd5780631af961e11461031b5780631b968fad146103495780631d865c3014610369575f80fd5b806303fd2a451461022057806304866b801461027057806306fdde031461029e578063095ea7b3146102bf575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027b575f80fd5b50600b5461028e90610100900460ff1681565b6040519015158152602001610267565b3480156102a9575f80fd5b506102b26106da565b60405161026791906115df565b3480156102ca575f80fd5b5061028e6102d9366004611641565b61076a565b3480156102e9575f80fd5b50601954610253906001600160a01b031681565b348015610308575f80fd5b506005545b604051908152602001610267565b348015610326575f80fd5b5061028e61033536600461166b565b60156020525f908152604090205460ff1681565b348015610354575f80fd5b50600b5461028e906301000000900460ff1681565b348015610374575f80fd5b50610388610383366004611686565b610780565b005b348015610395575f80fd5b5061028e6103a43660046116af565b6107eb565b3480156103b4575f80fd5b506103886103c3366004611686565b610854565b3480156103d3575f80fd5b5060045460405160ff9091168152602001610267565b3480156103f4575f80fd5b5061028e61040336600461166b565b60146020525f908152604090205460ff1681565b348015610422575f80fd5b5061028e61043136600461166b565b60176020525f908152604090205460ff1681565b348015610450575f80fd5b5061030d60095481565b348015610465575f80fd5b5061030d600f5481565b34801561047a575f80fd5b5061030d60105481565b34801561048f575f80fd5b5061030d61049e36600461166b565b6001600160a01b03165f9081526012602052604090205490565b3480156104c3575f80fd5b50600b5461028e9062010000900460ff1681565b3480156104e2575f80fd5b5061030d600e5481565b3480156104f7575f80fd5b5061030d60065481565b34801561050c575f80fd5b505f546001600160a01b0316610253565b348015610528575f80fd5b506103886105373660046116ed565b6108ab565b348015610547575f80fd5b50610388610948565b34801561055b575f80fd5b506102b26109b9565b34801561056f575f80fd5b5061030d600a5481565b348015610584575f80fd5b5061030d600d5481565b348015610599575f80fd5b5061028e6105a8366004611641565b6109c8565b3480156105b8575f80fd5b5061030d60075481565b3480156105cd575f80fd5b5061028e6105dc36600461166b565b60166020525f908152604090205460ff1681565b3480156105fb575f80fd5b5061038861060a366004611704565b6109d4565b34801561061a575f80fd5b50601a54610253906001600160a01b031681565b348015610639575f80fd5b5061030d600c5481565b34801561064e575f80fd5b5061030d61065d366004611723565b6001600160a01b039182165f90815260136020908152604080832093909416825291909152205490565b348015610692575f80fd5b5061030d60115481565b3480156106a7575f80fd5b506103886106b63660046116ed565b610a17565b3480156106c6575f80fd5b506103886106d536600461166b565b610a45565b6060600280546106e99061175a565b80601f01602080910402602001604051908101604052809291908181526020018280546107159061175a565b80156107605780601f1061073757610100808354040283529160200191610760565b820191905f5260205f20905b81548152906001019060200180831161074357829003601f168201915b5050505050905090565b5f610776338484610b2d565b5060015b92915050565b5f546001600160a01b031633146107b25760405162461bcd60e51b81526004016107a990611792565b60405180910390fd5b600f839055601082905560118190556107d5816107cf8585610c50565b90610c50565b600a819055601410156107e6575f80fd5b505050565b5f6107f7848484610cae565b506108498433610844856040518060600160405280602881526020016118e2602891396001600160a01b038a165f90815260136020908152604080832033845290915290205491906110ea565b610b2d565b5060015b9392505050565b5f546001600160a01b0316331461087d5760405162461bcd60e51b81526004016107a990611792565b600c839055600d829055600e81905561089a816107cf8585610c50565b6009819055600a10156107e6575f80fd5b5f546001600160a01b031633146108d45760405162461bcd60e51b81526004016107a990611792565b60646005546108e391906117e7565b8110156109435760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b60648201526084016107a9565b600655565b5f546001600160a01b031633146109715760405162461bcd60e51b81526004016107a990611792565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6060600380546106e99061175a565b5f610849338484610cae565b5f546001600160a01b031633146109fd5760405162461bcd60e51b81526004016107a990611792565b600b80549115156101000261ff0019909216919091179055565b5f546001600160a01b03163314610a405760405162461bcd60e51b81526004016107a990611792565b600755565b5f546001600160a01b03163314610a6e5760405162461bcd60e51b81526004016107a990611792565b6001600160a01b038116610ad45760405162461bcd60e51b815260206004820152602760248201527f4f776e65724c69623a206e6577206f776e657220697320746865207a65726f206044820152666164647265737360c81b60648201526084016107a9565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b8f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a9565b6001600160a01b038216610bf05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a9565b6001600160a01b038381165f8181526013602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f80610c5c8385611806565b90508381101561084d5760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174684c6962733a206164646974696f6e206f766572666c6f770060448201526064016107a9565b5f6001600160a01b038416610d135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a9565b6001600160a01b038316610d755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a9565b600b5460ff1615610d9257610d8b848484611122565b905061084d565b6001600160a01b0384165f9081526016602052604090205460ff16158015610dd257506001600160a01b0383165f9081526016602052604090205460ff16155b15610e3857600654821115610e385760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152653c29b4bd329760d11b60648201526084016107a9565b305f9081526012602052604090205460085481108015908190610e5e5750600b5460ff16155b8015610e8257506001600160a01b0386165f9081526014602052604090205460ff16155b8015610ea557506001600160a01b0385165f9081526017602052604090205460ff165b8015610eb85750600b54610100900460ff165b8015610ec5575060085484115b15610eea57600b5462010000900460ff1615610ee15760085491505b610eea82611205565b5f80610ef7888888611241565b915091505f868214610f095730610f0b565b885b90508115610f91576001600160a01b0381165f90815260126020526040902054610f359083610c50565b6001600160a01b038083165f8181526012602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f889086815260200190565b60405180910390a35b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038c165f90815260129091529190912054610fe29189906110ea565b6001600160a01b038a165f90815260126020526040902055600b546301000000900460ff16801561102b57506001600160a01b0388165f9081526015602052604090205460ff16155b1561105f57600754611055846107cf8b6001600160a01b03165f9081526012602052604090205490565b111561105f575f80fd5b6001600160a01b0388165f908152601260205260409020546110819084610c50565b6001600160a01b03808a165f8181526012602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d49087815260200190565b60405180910390a360019550505050505061084d565b5f818484111561110d5760405162461bcd60e51b81526004016107a991906115df565b505f6111198486611819565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526012909152918220546111729184906110ea565b6001600160a01b038086165f9081526012602052604080822093909355908516815220546111a09083610c50565b6001600160a01b038085165f8181526012602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111f39086815260200190565b60405180910390a35060019392505050565b600b805460ff1916600117905561121b81611349565b6018544790611233906001600160a01b031682611499565b5050600b805460ff19169055565b6001600160a01b0383165f908152601460205260408120548190839060ff1680156112735750600b54610100900460ff165b15611282578392509050611341565b6001600160a01b0386165f9081526017602052604090205460ff16156112c9576112c260646112bc600954876114cc90919063ffffffff16565b9061154e565b9050611306565b6001600160a01b0385165f9081526017602052604090205460ff16156113065761130360646112bc600a54876114cc90919063ffffffff16565b90505b6001600160a01b0386165f9081526014602052604090205460ff161561133257835f9250925050611341565b61133c848261158f565b925090505b935093915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061137c5761137c61182c565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f79190611840565b8160018151811061140a5761140a61182c565b6001600160a01b0392831660209182029290920101526019546114309130911684610b2d565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac947906114689085905f9086903090429060040161185b565b5f604051808303815f87803b15801561147f575f80fd5b505af1158015611491573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156107e6573d5f803e3d5ffd5b5f825f036114db57505f61077a565b5f6114e683856118ca565b9050826114f385836117e7565b1461084d5760405162461bcd60e51b815260206004820152602560248201527f536166654d6174684c6962733a206d756c7469706c69636174696f6e206f766560448201526472666c6f7760d81b60648201526084016107a9565b5f61084d83836040518060400160405280601e81526020017f536166654d6174684c6962733a206469766973696f6e206279207a65726f00008152506115b3565b5f61084d838360405180606001604052806022815260200161190a602291396110ea565b5f81836115d35760405162461bcd60e51b81526004016107a991906115df565b505f61111984866117e7565b5f6020808352835180828501525f5b8181101561160a578581018301518582016040015282016115ee565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461163e575f80fd5b50565b5f8060408385031215611652575f80fd5b823561165d8161162a565b946020939093013593505050565b5f6020828403121561167b575f80fd5b813561084d8161162a565b5f805f60608486031215611698575f80fd5b505081359360208301359350604090920135919050565b5f805f606084860312156116c1575f80fd5b83356116cc8161162a565b925060208401356116dc8161162a565b929592945050506040919091013590565b5f602082840312156116fd575f80fd5b5035919050565b5f60208284031215611714575f80fd5b8135801515811461084d575f80fd5b5f8060408385031215611734575f80fd5b823561173f8161162a565b9150602083013561174f8161162a565b809150509250929050565b600181811c9082168061176e57607f821691505b60208210810361178c57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526021908201527f4f776e65724c69623a2063616c6c6572206973206e6f7420746865206f776e656040820152603960f91b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b5f8261180157634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561077a5761077a6117d3565b8181038181111561077a5761077a6117d3565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611850575f80fd5b815161084d8161162a565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118a95784516001600160a01b031683529383019391830191600101611884565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761077a5761077a6117d356fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174684c6962733a207375627472616374696f6e206f766572666c6f77a26469706673582212205f3b2e3736d00731efcd4cf8cffdbfbe0e64fd3ea6018f2e974e24b6a0bcee1f64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610215575f3560e01c8063758c48d41161011e578063a9059cbb116100a8578063d64fea9c1161006d578063d64fea9c1461062e578063dd62ed3e14610643578063e57ef7b814610687578063f1d5f5171461069c578063f2fde38b146106bb575f80fd5b8063a9059cbb1461058e578063aa4bde28146105ad578063c1ec8d4b146105c2578063c49b9a80146105f0578063c816841b1461060f575f80fd5b80638f03aad5116100ee5780638f03aad51461051d578063914eb66a1461053c57806395d89b41146105505780639d9241ec14610564578063a8b9f94d14610579575f80fd5b8063758c48d4146104b85780637bd9cef0146104d75780637e150d66146104ec5780638da5cb5b14610501575f80fd5b806323b872dd1161019f57806355324fa91161016f57806355324fa91461041757806359b107b91461044557806365e3941c1461045a5780636b41ae0c1461046f57806370a0823114610484575f80fd5b806323b872dd1461038a57806325519cf2146103a9578063313ce567146103c85780633f4218e0146103e9575f80fd5b80631694505e116101e55780631694505e146102de57806318160ddd146102fd5780631af961e11461031b5780631b968fad146103495780631d865c3014610369575f80fd5b806303fd2a451461022057806304866b801461027057806306fdde031461029e578063095ea7b3146102bf575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b506102537f000000000000000000000000000000000000000000000000000000000000dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561027b575f80fd5b50600b5461028e90610100900460ff1681565b6040519015158152602001610267565b3480156102a9575f80fd5b506102b26106da565b60405161026791906115df565b3480156102ca575f80fd5b5061028e6102d9366004611641565b61076a565b3480156102e9575f80fd5b50601954610253906001600160a01b031681565b348015610308575f80fd5b506005545b604051908152602001610267565b348015610326575f80fd5b5061028e61033536600461166b565b60156020525f908152604090205460ff1681565b348015610354575f80fd5b50600b5461028e906301000000900460ff1681565b348015610374575f80fd5b50610388610383366004611686565b610780565b005b348015610395575f80fd5b5061028e6103a43660046116af565b6107eb565b3480156103b4575f80fd5b506103886103c3366004611686565b610854565b3480156103d3575f80fd5b5060045460405160ff9091168152602001610267565b3480156103f4575f80fd5b5061028e61040336600461166b565b60146020525f908152604090205460ff1681565b348015610422575f80fd5b5061028e61043136600461166b565b60176020525f908152604090205460ff1681565b348015610450575f80fd5b5061030d60095481565b348015610465575f80fd5b5061030d600f5481565b34801561047a575f80fd5b5061030d60105481565b34801561048f575f80fd5b5061030d61049e36600461166b565b6001600160a01b03165f9081526012602052604090205490565b3480156104c3575f80fd5b50600b5461028e9062010000900460ff1681565b3480156104e2575f80fd5b5061030d600e5481565b3480156104f7575f80fd5b5061030d60065481565b34801561050c575f80fd5b505f546001600160a01b0316610253565b348015610528575f80fd5b506103886105373660046116ed565b6108ab565b348015610547575f80fd5b50610388610948565b34801561055b575f80fd5b506102b26109b9565b34801561056f575f80fd5b5061030d600a5481565b348015610584575f80fd5b5061030d600d5481565b348015610599575f80fd5b5061028e6105a8366004611641565b6109c8565b3480156105b8575f80fd5b5061030d60075481565b3480156105cd575f80fd5b5061028e6105dc36600461166b565b60166020525f908152604090205460ff1681565b3480156105fb575f80fd5b5061038861060a366004611704565b6109d4565b34801561061a575f80fd5b50601a54610253906001600160a01b031681565b348015610639575f80fd5b5061030d600c5481565b34801561064e575f80fd5b5061030d61065d366004611723565b6001600160a01b039182165f90815260136020908152604080832093909416825291909152205490565b348015610692575f80fd5b5061030d60115481565b3480156106a7575f80fd5b506103886106b63660046116ed565b610a17565b3480156106c6575f80fd5b506103886106d536600461166b565b610a45565b6060600280546106e99061175a565b80601f01602080910402602001604051908101604052809291908181526020018280546107159061175a565b80156107605780601f1061073757610100808354040283529160200191610760565b820191905f5260205f20905b81548152906001019060200180831161074357829003601f168201915b5050505050905090565b5f610776338484610b2d565b5060015b92915050565b5f546001600160a01b031633146107b25760405162461bcd60e51b81526004016107a990611792565b60405180910390fd5b600f839055601082905560118190556107d5816107cf8585610c50565b90610c50565b600a819055601410156107e6575f80fd5b505050565b5f6107f7848484610cae565b506108498433610844856040518060600160405280602881526020016118e2602891396001600160a01b038a165f90815260136020908152604080832033845290915290205491906110ea565b610b2d565b5060015b9392505050565b5f546001600160a01b0316331461087d5760405162461bcd60e51b81526004016107a990611792565b600c839055600d829055600e81905561089a816107cf8585610c50565b6009819055600a10156107e6575f80fd5b5f546001600160a01b031633146108d45760405162461bcd60e51b81526004016107a990611792565b60646005546108e391906117e7565b8110156109435760405162461bcd60e51b815260206004820152602860248201527f4d61782077616c6c65742073686f756c64206265206d6f7265206f7220657175604482015267616c20746f20312560c01b60648201526084016107a9565b600655565b5f546001600160a01b031633146109715760405162461bcd60e51b81526004016107a990611792565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6060600380546106e99061175a565b5f610849338484610cae565b5f546001600160a01b031633146109fd5760405162461bcd60e51b81526004016107a990611792565b600b80549115156101000261ff0019909216919091179055565b5f546001600160a01b03163314610a405760405162461bcd60e51b81526004016107a990611792565b600755565b5f546001600160a01b03163314610a6e5760405162461bcd60e51b81526004016107a990611792565b6001600160a01b038116610ad45760405162461bcd60e51b815260206004820152602760248201527f4f776e65724c69623a206e6577206f776e657220697320746865207a65726f206044820152666164647265737360c81b60648201526084016107a9565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610b8f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a9565b6001600160a01b038216610bf05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a9565b6001600160a01b038381165f8181526013602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f80610c5c8385611806565b90508381101561084d5760405162461bcd60e51b815260206004820152601f60248201527f536166654d6174684c6962733a206164646974696f6e206f766572666c6f770060448201526064016107a9565b5f6001600160a01b038416610d135760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a9565b6001600160a01b038316610d755760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a9565b600b5460ff1615610d9257610d8b848484611122565b905061084d565b6001600160a01b0384165f9081526016602052604090205460ff16158015610dd257506001600160a01b0383165f9081526016602052604090205460ff16155b15610e3857600654821115610e385760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152653c29b4bd329760d11b60648201526084016107a9565b305f9081526012602052604090205460085481108015908190610e5e5750600b5460ff16155b8015610e8257506001600160a01b0386165f9081526014602052604090205460ff16155b8015610ea557506001600160a01b0385165f9081526017602052604090205460ff165b8015610eb85750600b54610100900460ff165b8015610ec5575060085484115b15610eea57600b5462010000900460ff1615610ee15760085491505b610eea82611205565b5f80610ef7888888611241565b915091505f868214610f095730610f0b565b885b90508115610f91576001600160a01b0381165f90815260126020526040902054610f359083610c50565b6001600160a01b038083165f8181526012602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f889086815260200190565b60405180910390a35b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038c165f90815260129091529190912054610fe29189906110ea565b6001600160a01b038a165f90815260126020526040902055600b546301000000900460ff16801561102b57506001600160a01b0388165f9081526015602052604090205460ff16155b1561105f57600754611055846107cf8b6001600160a01b03165f9081526012602052604090205490565b111561105f575f80fd5b6001600160a01b0388165f908152601260205260409020546110819084610c50565b6001600160a01b03808a165f8181526012602052604090819020939093559151908b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110d49087815260200190565b60405180910390a360019550505050505061084d565b5f818484111561110d5760405162461bcd60e51b81526004016107a991906115df565b505f6111198486611819565b95945050505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526012909152918220546111729184906110ea565b6001600160a01b038086165f9081526012602052604080822093909355908516815220546111a09083610c50565b6001600160a01b038085165f8181526012602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111f39086815260200190565b60405180910390a35060019392505050565b600b805460ff1916600117905561121b81611349565b6018544790611233906001600160a01b031682611499565b5050600b805460ff19169055565b6001600160a01b0383165f908152601460205260408120548190839060ff1680156112735750600b54610100900460ff165b15611282578392509050611341565b6001600160a01b0386165f9081526017602052604090205460ff16156112c9576112c260646112bc600954876114cc90919063ffffffff16565b9061154e565b9050611306565b6001600160a01b0385165f9081526017602052604090205460ff16156113065761130360646112bc600a54876114cc90919063ffffffff16565b90505b6001600160a01b0386165f9081526014602052604090205460ff161561133257835f9250925050611341565b61133c848261158f565b925090505b935093915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061137c5761137c61182c565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f79190611840565b8160018151811061140a5761140a61182c565b6001600160a01b0392831660209182029290920101526019546114309130911684610b2d565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac947906114689085905f9086903090429060040161185b565b5f604051808303815f87803b15801561147f575f80fd5b505af1158015611491573d5f803e3d5ffd5b505050505050565b6040516001600160a01b0383169082156108fc029083905f818181858888f193505050501580156107e6573d5f803e3d5ffd5b5f825f036114db57505f61077a565b5f6114e683856118ca565b9050826114f385836117e7565b1461084d5760405162461bcd60e51b815260206004820152602560248201527f536166654d6174684c6962733a206d756c7469706c69636174696f6e206f766560448201526472666c6f7760d81b60648201526084016107a9565b5f61084d83836040518060400160405280601e81526020017f536166654d6174684c6962733a206469766973696f6e206279207a65726f00008152506115b3565b5f61084d838360405180606001604052806022815260200161190a602291396110ea565b5f81836115d35760405162461bcd60e51b81526004016107a991906115df565b505f61111984866117e7565b5f6020808352835180828501525f5b8181101561160a578581018301518582016040015282016115ee565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461163e575f80fd5b50565b5f8060408385031215611652575f80fd5b823561165d8161162a565b946020939093013593505050565b5f6020828403121561167b575f80fd5b813561084d8161162a565b5f805f60608486031215611698575f80fd5b505081359360208301359350604090920135919050565b5f805f606084860312156116c1575f80fd5b83356116cc8161162a565b925060208401356116dc8161162a565b929592945050506040919091013590565b5f602082840312156116fd575f80fd5b5035919050565b5f60208284031215611714575f80fd5b8135801515811461084d575f80fd5b5f8060408385031215611734575f80fd5b823561173f8161162a565b9150602083013561174f8161162a565b809150509250929050565b600181811c9082168061176e57607f821691505b60208210810361178c57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526021908201527f4f776e65724c69623a2063616c6c6572206973206e6f7420746865206f776e656040820152603960f91b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b5f8261180157634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561077a5761077a6117d3565b8181038181111561077a5761077a6117d3565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611850575f80fd5b815161084d8161162a565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156118a95784516001600160a01b031683529383019391830191600101611884565b50506001600160a01b03969096166060850152505050608001529392505050565b808202811582820484141761077a5761077a6117d356fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174684c6962733a207375627472616374696f6e206f766572666c6f77a26469706673582212205f3b2e3736d00731efcd4cf8cffdbfbe0e64fd3ea6018f2e974e24b6a0bcee1f64736f6c63430008150033

Deployed Bytecode Sourcemap

6036:9259:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7320:74;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;7320:74:0;;;;;;;;6593:34;;;;;;;;;;-1:-1:-1;6593:34:0;;;;;;;;;;;;;;387:14:1;;380:22;362:41;;350:2;335:18;6593:34:0;222:187:1;8664:83:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;9688:161::-;;;;;;;;;;-1:-1:-1;9688:161:0;;;;;:::i;:::-;;:::i;7403:37::-;;;;;;;;;;-1:-1:-1;7403:37:0;;;;-1:-1:-1;;;;;7403:37:0;;;8941:100;;;;;;;;;;-1:-1:-1;9021:12:0;;8941:100;;;1799:25:1;;;1787:2;1772:18;8941:100:0;1653:177:1;7109:50:0;;;;;;;;;;-1:-1:-1;7109:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6677:36;;;;;;;;;;-1:-1:-1;6677:36:0;;;;;;;;;;;14831:346;;;;;;;;;;-1:-1:-1;14831:346:0;;;;;:::i;:::-;;:::i;:::-;;10150:313;;;;;;;;;;-1:-1:-1;10150:313:0;;;;;:::i;:::-;;:::i;14486:337::-;;;;;;;;;;-1:-1:-1;14486:337:0;;;;;:::i;:::-;;:::i;8850:83::-;;;;;;;;;;-1:-1:-1;8916:9:0;;8850:83;;8916:9;;;;3011:36:1;;2999:2;2984:18;8850:83:0;2869:184:1;7058:44:0;;;;;;;;;;-1:-1:-1;7058:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7219:48;;;;;;;;;;-1:-1:-1;7219:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6490:31;;;;;;;;;;;;;;;;6824:25;;;;;;;;;;;;;;;;6856:33;;;;;;;;;;;;;;;;9049:119;;;;;;;;;;-1:-1:-1;9049:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9142:18:0;9115:7;9142:18;;;:9;:18;;;;;;;9049:119;6634:36;;;;;;;;;;-1:-1:-1;6634:36:0;;;;;;;;;;;6792:25;;;;;;;;;;;;;;;;6322:39;;;;;;;;;;;;;;;;5405:79;;;;;;;;;;-1:-1:-1;5443:7:0;5470:6;-1:-1:-1;;;;;5470:6:0;5405:79;;13536:209;;;;;;;;;;-1:-1:-1;13536:209:0;;;;;:::i;:::-;;:::i;5631:145::-;;;;;;;;;;;;;:::i;8755:87::-;;;;;;;;;;;;;:::i;6528:32::-;;;;;;;;;;;;;;;;6753;;;;;;;;;;;;;;;;9975:167;;;;;;;;;;-1:-1:-1;9975:167:0;;;;;:::i;:::-;;:::i;6368:53::-;;;;;;;;;;;;;;;;7166:46;;;;;;;;;;-1:-1:-1;7166:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9857:110;;;;;;;;;;-1:-1:-1;9857:110:0;;;;;:::i;:::-;;:::i;7447:26::-;;;;;;;;;;-1:-1:-1;7447:26:0;;;;-1:-1:-1;;;;;7447:26:0;;;6722:24;;;;;;;;;;;;;;;;9176:143;;;;;;;;;;-1:-1:-1;9176:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;9284:18:0;;;9257:7;9284:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9176:143;6896:26;;;;;;;;;;;;;;;;15185:107;;;;;;;;;;-1:-1:-1;15185:107:0;;;;;:::i;:::-;;:::i;5784:245::-;;;;;;;;;;-1:-1:-1;5784:245:0;;;;;:::i;:::-;;:::i;8664:83::-;8701:13;8734:5;8727:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8664:83;:::o;9688:161::-;9763:4;9780:39;485:10;9803:7;9812:6;9780:8;:39::i;:::-;-1:-1:-1;9837:4:0;9688:161;;;;;:::o;14831:346::-;5539:6;;-1:-1:-1;;;;;5539:6:0;485:10;5539:22;5531:68;;;;-1:-1:-1;;;5531:68:0;;;;;;;:::i;:::-;;;;;;;;;14960:6:::1;:24:::0;;;14995:13:::1;:31:::0;;;15037:7:::1;:27:::0;;;15092:38:::1;15047:17:::0;15092:25:::1;14969:15:::0;15011;15092:10:::1;:25::i;:::-;:29:::0;::::1;:38::i;:::-;15077:12;:53:::0;;;15166:2:::1;-1:-1:-1::0;15150:18:0::1;15141:28;;;::::0;::::1;;14831:346:::0;;;:::o;10150:313::-;10248:4;10265:36;10275:6;10283:9;10294:6;10265:9;:36::i;:::-;-1:-1:-1;10312:121:0;10321:6;485:10;10343:89;10381:6;10343:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10343:19:0;;;;;;:11;:19;;;;;;;;485:10;10343:33;;;;;;;;;;:37;:89::i;:::-;10312:8;:121::i;:::-;-1:-1:-1;10451:4:0;10150:313;;;;;;:::o;14486:337::-;5539:6;;-1:-1:-1;;;;;5539:6:0;485:10;5539:22;5531:68;;;;-1:-1:-1;;;5531:68:0;;;;;;;:::i;:::-;14614:5:::1;:23:::0;;;14648:12:::1;:30:::0;;;14689:6:::1;:26:::0;;;14742:35:::1;14698:17:::0;14742:23:::1;14622:15:::0;14663;14742:9:::1;:23::i;:35::-;14728:11;:49:::0;;;14812:2:::1;-1:-1:-1::0;14797:17:0::1;14788:27;;;::::0;::::1;13536:209:::0;5539:6;;-1:-1:-1;;;;;5539:6:0;485:10;5539:22;5531:68;;;;-1:-1:-1;;;5531:68:0;;;;;;;:::i;:::-;13654:3:::1;13641:12;;:16;;;;:::i;:::-;13625:12;:32;;13617:85;;;::::0;-1:-1:-1;;;13617:85:0;;5257:2:1;13617:85:0::1;::::0;::::1;5239:21:1::0;5296:2;5276:18;;;5269:30;5335:34;5315:18;;;5308:62;-1:-1:-1;;;5386:18:1;;;5379:38;5434:19;;13617:85:0::1;5055:404:1::0;13617:85:0::1;13713:9;:24:::0;13536:209::o;5631:145::-;5539:6;;-1:-1:-1;;;;;5539:6:0;485:10;5539:22;5531:68;;;;-1:-1:-1;;;5531:68:0;;;;;;;:::i;:::-;5735:1:::1;5719:6:::0;;5698:40:::1;::::0;-1:-1:-1;;;;;5719:6:0;;::::1;::::0;5698:40:::1;::::0;5735:1;;5698:40:::1;5766:1;5749:19:::0;;-1:-1:-1;;;;;;5749:19:0::1;::::0;;5631:145::o;8755:87::-;8794:13;8827:7;8820:14;;;;;:::i;9975:167::-;10053:4;10070:42;485:10;10094:9;10105:6;10070:9;:42::i;9857:110::-;5539:6;;-1:-1:-1;;;;;5539:6:0;485:10;5539:22;5531:68;;;;-1:-1:-1;;;5531:68:0;;;;;;;:::i;:::-;9934:14:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;9934:25:0;;::::1;::::0;;;::::1;::::0;;9857:110::o;15185:107::-;5539:6;;-1:-1:-1;;;;;5539:6:0;485:10;5539:22;5531:68;;;;-1:-1:-1;;;5531:68:0;;;;;;;:::i;:::-;15257:15:::1;:27:::0;15185:107::o;5784:245::-;5539:6;;-1:-1:-1;;;;;5539:6:0;485:10;5539:22;5531:68;;;;-1:-1:-1;;;5531:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5873:22:0;::::1;5865:74;;;::::0;-1:-1:-1;;;5865:74:0;;5666:2:1;5865:74:0::1;::::0;::::1;5648:21:1::0;5705:2;5685:18;;;5678:30;5744:34;5724:18;;;5717:62;-1:-1:-1;;;5795:18:1;;;5788:37;5842:19;;5865:74:0::1;5464:403:1::0;5865:74:0::1;5976:6;::::0;;5955:38:::1;::::0;-1:-1:-1;;;;;5955:38:0;;::::1;::::0;5976:6;::::1;::::0;5955:38:::1;::::0;::::1;6004:6;:17:::0;;-1:-1:-1;;;;;;6004:17:0::1;-1:-1:-1::0;;;;;6004:17:0;;;::::1;::::0;;;::::1;::::0;;5784:245::o;9335:337::-;-1:-1:-1;;;;;9428:19:0;;9420:68;;;;-1:-1:-1;;;9420:68:0;;6074:2:1;9420:68:0;;;6056:21:1;6113:2;6093:18;;;6086:30;6152:34;6132:18;;;6125:62;-1:-1:-1;;;6203:18:1;;;6196:34;6247:19;;9420:68:0;5872:400:1;9420:68:0;-1:-1:-1;;;;;9507:21:0;;9499:68;;;;-1:-1:-1;;;9499:68:0;;6479:2:1;9499:68:0;;;6461:21:1;6518:2;6498:18;;;6491:30;6557:34;6537:18;;;6530:62;-1:-1:-1;;;6608:18:1;;;6601:32;6650:19;;9499:68:0;6277:398:1;9499:68:0;-1:-1:-1;;;;;9580:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9632:32;;1799:25:1;;;9632:32:0;;1772:18:1;9632:32:0;;;;;;;9335:337;;;:::o;1467:185::-;1525:7;;1557:5;1561:1;1557;:5;:::i;:::-;1545:17;;1586:1;1581;:6;;1573:50;;;;-1:-1:-1;;;1573:50:0;;7012:2:1;1573:50:0;;;6994:21:1;7051:2;7031:18;;;7024:30;7090:33;7070:18;;;7063:61;7141:18;;1573:50:0;6810:355:1;10471:1877:0;10558:4;-1:-1:-1;;;;;10585:20:0;;10577:70;;;;-1:-1:-1;;;10577:70:0;;7372:2:1;10577:70:0;;;7354:21:1;7411:2;7391:18;;;7384:30;7450:34;7430:18;;;7423:62;-1:-1:-1;;;7501:18:1;;;7494:35;7546:19;;10577:70:0;7170:401:1;10577:70:0;-1:-1:-1;;;;;10666:23:0;;10658:71;;;;-1:-1:-1;;;10658:71:0;;7778:2:1;10658:71:0;;;7760:21:1;7817:2;7797:18;;;7790:30;7856:34;7836:18;;;7829:62;-1:-1:-1;;;7907:18:1;;;7900:33;7950:19;;10658:71:0;7576:399:1;10658:71:0;10745:8;;;;10742:1599;;;10787:44;10805:6;10813:9;10824:6;10787:17;:44::i;:::-;10780:51;;;;10742:1599;-1:-1:-1;;;;;10887:21:0;;;;;;:13;:21;;;;;;;;10886:22;:51;;;;-1:-1:-1;;;;;;10913:24:0;;;;;;:13;:24;;;;;;;;10912:25;10886:51;10883:161;;;10976:9;;10966:6;:19;;10958:70;;;;-1:-1:-1;;;10958:70:0;;8182:2:1;10958:70:0;;;8164:21:1;8221:2;8201:18;;;8194:30;8260:34;8240:18;;;8233:62;-1:-1:-1;;;8311:18:1;;;8304:36;8357:19;;10958:70:0;7980:402:1;10958:70:0;11121:4;11072:28;9142:18;;;:9;:18;;;;;;11197:14;;11173:38;;;;;;;11244:36;;-1:-1:-1;11272:8:0;;;;11271:9;11244:36;:60;;;;-1:-1:-1;;;;;;11285:19:0;;;;;;:11;:19;;;;;;;;11284:20;11244:60;:90;;;;-1:-1:-1;;;;;;11308:26:0;;;;;;:15;:26;;;;;;;;11244:90;:108;;;;-1:-1:-1;11338:14:0;;;;;;;11244:108;:135;;;;;11365:14;;11356:6;:23;11244:135;11240:324;;;11417:16;;;;;;;11414:79;;;11479:14;;11456:37;;11414:79;11512:32;11523:20;11512:10;:32::i;:::-;11581:19;11602:17;11623:33;11630:6;11638:9;11649:6;11623;:33::i;:::-;11580:76;;;;11673:16;11705:6;11692:9;:19;:44;;11731:4;11692:44;;;11714:6;11692:44;11673:63;-1:-1:-1;11754:13:0;;11751:170;;-1:-1:-1;;;;;11810:19:0;;;;;;:9;:19;;;;;;:34;;11834:9;11810:23;:34::i;:::-;-1:-1:-1;;;;;11788:19:0;;;;;;;:9;:19;;;;;;;:56;;;;11868:37;;;;;;;;;;11895:9;1799:25:1;;1787:2;1772:18;;1653:177;11868:37:0;;;;;;;;11751:170;11957:53;;;;;;;;;;;-1:-1:-1;;;11957:53:0;;;;;;;;-1:-1:-1;;;;;11957:17:0;;-1:-1:-1;11957:17:0;;;:9;:17;;;;;;;;:53;;11979:6;;11957:21;:53::i;:::-;-1:-1:-1;;;;;11937:17:0;;;;;;:9;:17;;;;;:73;12030:17;;;;;;;:50;;;;-1:-1:-1;;;;;;12052:28:0;;;;;;:17;:28;;;;;;;;12051:29;12030:50;12027:137;;;12148:15;;12107:37;12132:11;12107:20;12117:9;-1:-1:-1;;;;;9142:18:0;9115:7;9142:18;;;:9;:18;;;;;;;9049:119;12107:37;:56;;12099:65;;;;;;-1:-1:-1;;;;;12204:20:0;;;;;;:9;:20;;;;;;:37;;12229:11;12204:24;:37::i;:::-;-1:-1:-1;;;;;12181:20:0;;;;;;;:9;:20;;;;;;;:60;;;;12263:40;;;;;;;;;;12291:11;1799:25:1;;1787:2;1772:18;;1653:177;12263:40:0;;;;;;;;12325:4;12318:11;;;;;;;;;1808:192;1894:7;1930:12;1922:6;;;;1914:29;;;;-1:-1:-1;;;1914:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1954:9:0;1966:5;1970:1;1966;:5;:::i;:::-;1954:17;1808:192;-1:-1:-1;;;;;1808:192:0:o;14100:333::-;14233:53;;;;;;;;;;;-1:-1:-1;;;14233:53:0;;;;;;;;-1:-1:-1;;;;;14233:17:0;;14196:4;14233:17;;;:9;:17;;;;;;;:53;;14255:6;;14233:21;:53::i;:::-;-1:-1:-1;;;;;14213:17:0;;;;;;;:9;:17;;;;;;:73;;;;14320:20;;;;;;;:32;;14345:6;14320:24;:32::i;:::-;-1:-1:-1;;;;;14297:20:0;;;;;;;:9;:20;;;;;;;:55;;;;14368:35;;;;;;;;;;14396:6;1799:25:1;;1787:2;1772:18;;1653:177;14368:35:0;;;;;;;;-1:-1:-1;14421:4:0;14100:333;;;;;:::o;13757:214::-;7518:8;:15;;-1:-1:-1;;7518:15:0;7529:4;7518:15;;;13825:24:::1;13841:7:::0;13825:15:::1;:24::i;:::-;13929:13;::::0;13889:21:::1;::::0;13921:42:::1;::::0;-1:-1:-1;;;;;13929:13:0::1;13889:21:::0;13921:7:::1;:42::i;:::-;-1:-1:-1::0;;7556:8:0;:16;;-1:-1:-1;;7556:16:0;;;13757:214::o;12916:608::-;-1:-1:-1;;;;;13088:19:0;;13006:7;13088:19;;;:11;:19;;;;;;13006:7;;13065:6;;13088:19;;:37;;;;-1:-1:-1;13111:14:0;;;;;;;13088:37;13084:69;;;13135:6;;-1:-1:-1;13143:9:0;-1:-1:-1;13127:26:0;;13084:69;-1:-1:-1;;;;;13169:23:0;;;;;;:15;:23;;;;;;;;13166:217;;;13221:32;13249:3;13221:23;13232:11;;13221:6;:10;;:23;;;;:::i;:::-;:27;;:32::i;:::-;13209:44;;13166:217;;;-1:-1:-1;;;;;13283:26:0;;;;;;:15;:26;;;;;;;;13280:103;;;13338:33;13367:3;13338:24;13349:12;;13338:6;:10;;:24;;;;:::i;:33::-;13326:45;;13280:103;-1:-1:-1;;;;;13397:19:0;;;;;;:11;:19;;;;;;;;13393:70;;;13441:6;13449:1;13433:18;;;;;;;13393:70;13483:21;:6;13494:9;13483:10;:21::i;:::-;13475:41;-1:-1:-1;13506:9:0;-1:-1:-1;12916:608:0;;;;;;;:::o;12364:544::-;12453:16;;;12467:1;12453:16;;;;;;;;12429:21;;12453:16;;;;;;;;;;-1:-1:-1;12453:16:0;12429:40;;12498:4;12480;12485:1;12480:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12480:23:0;;;:7;;;;;;;;;;:23;;;;12524:15;;:22;;;-1:-1:-1;;;12524:22:0;;;;:15;;;;;:20;;:22;;;;;12480:7;;12524:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12514:4;12519:1;12514:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12514:32:0;;;:7;;;;;;;;;:32;12591:15;;12559:62;;12576:4;;12591:15;12609:11;12559:8;:62::i;:::-;12660:15;;:240;;-1:-1:-1;;;12660:240:0;;-1:-1:-1;;;;;12660:15:0;;;;:66;;:240;;12741:11;;12660:15;;12811:4;;12838;;12874:15;;12660:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12418:490;12364:544;:::o;13979:113::-;14058:26;;-1:-1:-1;;;;;14058:18:0;;;:26;;;;;14077:6;;14058:26;;;;14077:6;14058:18;:26;;;;;;;;;;;;;;;;;;;2008:254;2066:7;2090:1;2095;2090:6;2086:47;;-1:-1:-1;2120:1:0;2113:8;;2086:47;2145:9;2157:5;2161:1;2157;:5;:::i;:::-;2145:17;-1:-1:-1;2190:1:0;2181:5;2185:1;2145:17;2181:5;:::i;:::-;:10;2173:60;;;;-1:-1:-1;;;2173:60:0;;10400:2:1;2173:60:0;;;10382:21:1;10439:2;10419:18;;;10412:30;10478:34;10458:18;;;10451:62;-1:-1:-1;;;10529:18:1;;;10522:35;10574:19;;2173:60:0;10198:401:1;2270:136:0;2328:7;2355:43;2359:1;2362;2355:43;;;;;;;;;;;;;;;;;:3;:43::i;1660:140::-;1718:7;1745:47;1749:1;1752;1745:47;;;;;;;;;;;;;;;;;:3;:47::i;2414:278::-;2500:7;2535:12;2528:5;2520:28;;;;-1:-1:-1;;;2520:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2559:9:0;2571:5;2575:1;2571;:5;:::i;414:548:1:-;526:4;555:2;584;573:9;566:21;616:6;610:13;659:6;654:2;643:9;639:18;632:34;684:1;694:140;708:6;705:1;702:13;694:140;;;803:14;;;799:23;;793:30;769:17;;;788:2;765:26;758:66;723:10;;694:140;;;698:3;883:1;878:2;869:6;858:9;854:22;850:31;843:42;953:2;946;942:7;937:2;929:6;925:15;921:29;910:9;906:45;902:54;894:62;;;;414:548;;;;:::o;967:131::-;-1:-1:-1;;;;;1042:31:1;;1032:42;;1022:70;;1088:1;1085;1078:12;1022:70;967:131;:::o;1103:315::-;1171:6;1179;1232:2;1220:9;1211:7;1207:23;1203:32;1200:52;;;1248:1;1245;1238:12;1200:52;1287:9;1274:23;1306:31;1331:5;1306:31;:::i;:::-;1356:5;1408:2;1393:18;;;;1380:32;;-1:-1:-1;;;1103:315:1:o;1835:247::-;1894:6;1947:2;1935:9;1926:7;1922:23;1918:32;1915:52;;;1963:1;1960;1953:12;1915:52;2002:9;1989:23;2021:31;2046:5;2021:31;:::i;2087:316::-;2164:6;2172;2180;2233:2;2221:9;2212:7;2208:23;2204:32;2201:52;;;2249:1;2246;2239:12;2201:52;-1:-1:-1;;2272:23:1;;;2342:2;2327:18;;2314:32;;-1:-1:-1;2393:2:1;2378:18;;;2365:32;;2087:316;-1:-1:-1;2087:316:1:o;2408:456::-;2485:6;2493;2501;2554:2;2542:9;2533:7;2529:23;2525:32;2522:52;;;2570:1;2567;2560:12;2522:52;2609:9;2596:23;2628:31;2653:5;2628:31;:::i;:::-;2678:5;-1:-1:-1;2735:2:1;2720:18;;2707:32;2748:33;2707:32;2748:33;:::i;:::-;2408:456;;2800:7;;-1:-1:-1;;;2854:2:1;2839:18;;;;2826:32;;2408:456::o;3058:180::-;3117:6;3170:2;3158:9;3149:7;3145:23;3141:32;3138:52;;;3186:1;3183;3176:12;3138:52;-1:-1:-1;3209:23:1;;3058:180;-1:-1:-1;3058:180:1:o;3243:273::-;3299:6;3352:2;3340:9;3331:7;3327:23;3323:32;3320:52;;;3368:1;3365;3358:12;3320:52;3407:9;3394:23;3460:5;3453:13;3446:21;3439:5;3436:32;3426:60;;3482:1;3479;3472:12;3521:388;3589:6;3597;3650:2;3638:9;3629:7;3625:23;3621:32;3618:52;;;3666:1;3663;3656:12;3618:52;3705:9;3692:23;3724:31;3749:5;3724:31;:::i;:::-;3774:5;-1:-1:-1;3831:2:1;3816:18;;3803:32;3844:33;3803:32;3844:33;:::i;:::-;3896:7;3886:17;;;3521:388;;;;;:::o;3914:380::-;3993:1;3989:12;;;;4036;;;4057:61;;4111:4;4103:6;4099:17;4089:27;;4057:61;4164:2;4156:6;4153:14;4133:18;4130:38;4127:161;;4210:10;4205:3;4201:20;4198:1;4191:31;4245:4;4242:1;4235:15;4273:4;4270:1;4263:15;4127:161;;3914:380;;;:::o;4299:397::-;4501:2;4483:21;;;4540:2;4520:18;;;4513:30;4579:34;4574:2;4559:18;;4552:62;-1:-1:-1;;;4645:2:1;4630:18;;4623:31;4686:3;4671:19;;4299:397::o;4701:127::-;4762:10;4757:3;4753:20;4750:1;4743:31;4793:4;4790:1;4783:15;4817:4;4814:1;4807:15;4833:217;4873:1;4899;4889:132;;4943:10;4938:3;4934:20;4931:1;4924:31;4978:4;4975:1;4968:15;5006:4;5003:1;4996:15;4889:132;-1:-1:-1;5035:9:1;;4833:217::o;6680:125::-;6745:9;;;6766:10;;;6763:36;;;6779:18;;:::i;8387:128::-;8454:9;;;8475:11;;;8472:37;;;8489:18;;:::i;8652:127::-;8713:10;8708:3;8704:20;8701:1;8694:31;8744:4;8741:1;8734:15;8768:4;8765:1;8758:15;8784:251;8854:6;8907:2;8895:9;8886:7;8882:23;8878:32;8875:52;;;8923:1;8920;8913:12;8875:52;8955:9;8949:16;8974:31;8999:5;8974:31;:::i;9040:980::-;9302:4;9350:3;9339:9;9335:19;9381:6;9370:9;9363:25;9407:2;9445:6;9440:2;9429:9;9425:18;9418:34;9488:3;9483:2;9472:9;9468:18;9461:31;9512:6;9547;9541:13;9578:6;9570;9563:22;9616:3;9605:9;9601:19;9594:26;;9655:2;9647:6;9643:15;9629:29;;9676:1;9686:195;9700:6;9697:1;9694:13;9686:195;;;9765:13;;-1:-1:-1;;;;;9761:39:1;9749:52;;9856:15;;;;9821:12;;;;9797:1;9715:9;9686:195;;;-1:-1:-1;;;;;;;9937:32:1;;;;9932:2;9917:18;;9910:60;-1:-1:-1;;;10001:3:1;9986:19;9979:35;9898:3;9040:980;-1:-1:-1;;;9040:980:1:o;10025:168::-;10098:9;;;10129;;10146:15;;;10140:22;;10126:37;10116:71;;10167:18;;:::i

Swarm Source

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