ETH Price: $3,902.51 (-0.46%)

Token

Ping ($PING)
 

Overview

Max Total Supply

1,000,000 $PING

Holders

1,062 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
47.157842384 $PING

Value
$0.00
0x89850bffe4b3ff3f55bccabdd58625d469b24b06
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

PING using an AI-powered algorithm, it scans the market for potential opportunities, assesses tokens, and provides a customized safety score. Additionally, Ping offers built-in purchase features to streamline the process and enhance profitability.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Ping

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/**  
$PING Revolutionizing and simplyifing the search for on chain alpha.
TG: https://t.me/PingErc
Twitter: https://x.com/pingerc20
Web: https://pingerc.com 
**/

pragma solidity ^0.8.19;

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

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

interface IERC20 {
    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);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    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 Ping is Context, IERC20, Ownable {

    using Address for address payable;

    IRouter public router;
    address public pair;
    
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxBalance;

    uint8 private constant _decimals = 9; 
    uint256 private _tTotal = 1_000_000 * (10**_decimals);
    uint256 public swapThreshold = 5_000 * (10**_decimals);
    uint256 public maxWallet =  10_000 * (10**_decimals);
    
    uint8 public buyTax = 5;
    uint8 public sellTax = 5;

    string private constant _name = "Ping"; 
    string private constant _symbol = "$PING";

    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public marketingWallet = 0x1A148e9bEb025f93e5677FCE43E0F5959847d44c;
    address public treasuryWallet = 0x5D07993D3c1921550A83E4bEee33560D11882398;
    address public autoLPWallet = 0x9f04848b341A705D5dC572Bf746980fCabA67529;

    bool private swapping;
    bool private _triggerMax = false;
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    uint256 private _genesisBlock;
    
    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        _approve(owner(), address(router), ~uint256(0));

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[treasuryWallet] = true;
        _isExcludedFromFee[DEAD] = true;

        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[pair] = true;
        _isExcludedFromMaxBalance[marketingWallet] = true;
        _isExcludedFromMaxBalance[treasuryWallet] = true;
        _isExcludedFromMaxBalance[DEAD] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

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

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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()] - amount);
        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);
    }
    
    function _preTransferCheck(address from,address to,uint256 amount) internal {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(balanceOf(to) + amount <= maxWallet || _isExcludedFromMaxBalance[to], "Transfer amount exceeds the maxWallet.");
        if(from == owner() && to == pair && balanceOf(pair) == 0)
            _genesisBlock = block.number;
        if (balanceOf(address(this)) >= swapThreshold && !swapping && from != pair && from != owner() && to != owner())
            swapAndLiquify();
        if(_genesisBlock + 6 <= block.number && !_triggerMax){
            _triggerMax = true;
            maxWallet = 20_000 * (10**_decimals);
        }
    }

    function _getValues(address from,address to, uint256 amount) private returns(uint256){
        uint256 taxedTokens = amount * buyTax / 100;
        if(to == pair)
            taxedTokens = amount * sellTax / 100;
        if (taxedTokens > 0){
            _tOwned[address(this)] += taxedTokens;
            emit Transfer (from, address(this), taxedTokens);
        }
        return (amount - taxedTokens);
    }
    
    function _transfer(address from,address to,uint256 amount) private {
        _preTransferCheck(from, to, amount);
        _tOwned[from] -= amount;
        uint256 transferAmount = amount;
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to])
            transferAmount = _getValues(from, to, amount);
        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function swapAndLiquify() private lockTheSwap{

        uint256 tokensForMarketing = swapThreshold * 40 / 100;
        uint256 tokensForTreasury = swapThreshold * 40 / 100;
        uint256 tokensForLiquidity = swapThreshold * 20 / 100;
        
        if(tokensForMarketing > 0){
            uint256 ethSwapped = swapTokensForETH(tokensForMarketing);
            if(ethSwapped > 0)
                payable(marketingWallet).transfer(ethSwapped);
        }

        if(tokensForTreasury > 0){
            uint256 ethSwapped = swapTokensForETH(tokensForTreasury);
            if(ethSwapped > 0)
                payable(treasuryWallet).transfer(ethSwapped);
        }

        if(tokensForLiquidity > 0){
            uint half = tokensForLiquidity / 2;
            uint otherHalf = tokensForLiquidity - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
        }

        if (address(this).balance > 0)
            payable(marketingWallet).sendValue(address(this).balance);

    }

    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        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
        );
        return (address(this).balance - initialBalance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            autoLPWallet,
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(marketingWallet).sendValue (ethAmount - ethFromLiquidity);
    }

    receive() external payable {}
    
    function getBalances(address[] memory holders) public view returns(uint[] memory){
        uint length = holders.length;
        uint[] memory accountBalances = new uint[](length);
        for (uint i = 0; i < length; i++) {
            accountBalances[i] = balanceOf(holders[i]);
        }
        return accountBalances;
    }

    function setContractLimits(uint256 maxWalletEXACT_) external onlyOwner{
        uint256 minimumAmount = 5_000 * (10**_decimals);
        require(maxWalletEXACT_ * (10**_decimals) >= minimumAmount, "Invalid Settings!");
        maxWallet = maxWalletEXACT_ * (10**_decimals);
    }

    function setContractSettings(uint8 buyTax_ , uint8 sellTax_) external onlyOwner{
        require(buyTax_ <= 20 && sellTax_ <= 50, "Invalid Settings!");
        buyTax = buyTax_; 
        sellTax = sellTax_;
    }

    function setSwapThreshold(uint256 swapThresholdEXACT_) external onlyOwner{
        swapThreshold = swapThresholdEXACT_ * (10**_decimals);
    }

    function manualSwap() external lockTheSwap{
        require(msg.sender == marketingWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0){
            uint256 ethSwapped = swapTokensForETH(tokenBalance);
            if(ethSwapped > 0)
                payable(marketingWallet).transfer(ethSwapped);
        }
        if (address(this).balance > 0)
            payable(marketingWallet).sendValue(address(this).balance);
    }


}

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":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"autoLPWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"}],"name":"getBalances","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletEXACT_","type":"uint256"}],"name":"setContractLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyTax_","type":"uint8"},{"internalType":"uint8","name":"sellTax_","type":"uint8"}],"name":"setContractSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapThresholdEXACT_","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000725565b6200002190620f42406200073d565b600755620000326009600a62000725565b62000040906113886200073d565b600855620000516009600a62000725565b6200005f906127106200073d565b600955600a8054751a148e9beb025f93e5677fce43e0f5959847d44c05056001600160b01b0319909116179055600b80546001600160a01b031916735d07993d3c1921550a83e4beee33560d11882398179055600c8054600161ff0160a01b031916739f04848b341a705d5dc572bf746980fcaba67529179055348015620000e657600080fd5b50620000f23362000494565b60075433600090815260036020908152604080832093909355825163c45a015560e01b81529251737a250d5630b4cf539739df2c5dacb4c659f2488d93849263c45a0155926004808401938290030181865afa15801562000157573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017d919062000757565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001cb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f1919062000757565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200023f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000265919062000757565b600180546001600160a01b038581166001600160a01b031992831617909255600280548484169216919091179055600054919250620002b491166001546001600160a01b0316600019620004e4565b600160056000620002cd6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155600a54620100009004821684528284208054861682179055600b549091168352908220805484168217905561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600690620003836000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526006909352818320805485166001908117909155600254821684528284208054861682179055600a54620100009004821684528284208054861682179055600b549091168352908220805484168217905561dead9091527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e2280549092161790556200043c3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040516200048491815260200190565b60405180910390a3505062000782565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166200054c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005af5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000543565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006675781600019048211156200064b576200064b62000610565b808516156200065957918102915b93841c93908002906200062b565b509250929050565b60008262000680575060016200071f565b816200068f575060006200071f565b8160018114620006a85760028114620006b357620006d3565b60019150506200071f565b60ff841115620006c757620006c762000610565b50506001821b6200071f565b5060208310610133831016604e8410600b8410161715620006f8575081810a6200071f565b62000704838362000626565b80600019048211156200071b576200071b62000610565b0290505b92915050565b60006200073660ff8416836200066f565b9392505050565b80820281158282048414176200071f576200071f62000610565b6000602082840312156200076a57600080fd5b81516001600160a01b03811681146200073657600080fd5b611b6e80620007926000396000f3fe6080604052600436106101bb5760003560e01c8063715018a6116100ec578063a8aa1b311161008a578063dd62ed3e11610064578063dd62ed3e1461053f578063f2fde38b14610585578063f887ea40146105a5578063f8b45b05146105c557600080fd5b8063a8aa1b31146104e0578063a9059cbb14610500578063cc1776d31461052057600080fd5b80637fe74a13116100c65780637fe74a13146104545780638da5cb5b1461047457806395d89b41146104925780639d0014b1146104c057600080fd5b8063715018a6146103e957806375f0a874146103fe578063768dc7101461042457600080fd5b8063313ce567116101595780635025587b116101335780635025587b1461035c57806351bc3c851461037e57806356d3b98f1461039357806370a08231146103b357600080fd5b8063313ce567146102e85780634626402b1461030a5780634f7041a51461034257600080fd5b806318160ddd1161019557806318160ddd1461025657806323b872dd1461026b57806328c61f411461028b5780632d2ae1c1146102bb57600080fd5b80630445b667146101c757806306fdde03146101f0578063095ea7b31461022657600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dd60085481565b6040519081526020015b60405180910390f35b3480156101fc57600080fd5b5060408051808201909152600481526350696e6760e01b60208201525b6040516101e791906115f7565b34801561023257600080fd5b5061024661024136600461166a565b6105db565b60405190151581526020016101e7565b34801561026257600080fd5b506007546101dd565b34801561027757600080fd5b50610246610286366004611696565b6105f2565b34801561029757600080fd5b506102466102a63660046116d7565b60066020526000908152604090205460ff1681565b3480156102c757600080fd5b506102db6102d6366004611711565b610644565b6040516101e791906117d6565b3480156102f457600080fd5b5060095b60405160ff90911681526020016101e7565b34801561031657600080fd5b50600b5461032a906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b34801561034e57600080fd5b50600a546102f89060ff1681565b34801561036857600080fd5b5061037c61037736600461181a565b61070a565b005b34801561038a57600080fd5b5061037c6107cf565b34801561039f57600080fd5b50600c5461032a906001600160a01b031681565b3480156103bf57600080fd5b506101dd6103ce3660046116d7565b6001600160a01b031660009081526003602052604090205490565b3480156103f557600080fd5b5061037c61089f565b34801561040a57600080fd5b50600a5461032a906201000090046001600160a01b031681565b34801561043057600080fd5b5061024661043f3660046116d7565b60056020526000908152604090205460ff1681565b34801561046057600080fd5b5061037c61046f366004611844565b6108d5565b34801561048057600080fd5b506000546001600160a01b031661032a565b34801561049e57600080fd5b506040805180820190915260058152642450494e4760d81b6020820152610219565b3480156104cc57600080fd5b5061037c6104db36600461181a565b61097b565b3480156104ec57600080fd5b5060025461032a906001600160a01b031681565b34801561050c57600080fd5b5061024661051b36600461166a565b6109c1565b34801561052c57600080fd5b50600a546102f890610100900460ff1681565b34801561054b57600080fd5b506101dd61055a366004611877565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561059157600080fd5b5061037c6105a03660046116d7565b6109ce565b3480156105b157600080fd5b5060015461032a906001600160a01b031681565b3480156105d157600080fd5b506101dd60095481565b60006105e8338484610a69565b5060015b92915050565b60006105ff848484610b8d565b6001600160a01b03841660009081526004602090815260408083203380855292529091205461063a9186916106359086906118c6565b610a69565b5060019392505050565b805160609060008167ffffffffffffffff811115610664576106646116fb565b60405190808252806020026020018201604052801561068d578160200160208202803683370190505b50905060005b82811015610702576106d38582815181106106b0576106b06118d9565b60200260200101516001600160a01b031660009081526003602052604090205490565b8282815181106106e5576106e56118d9565b6020908102919091010152806106fa816118ef565b915050610693565b509392505050565b6000546001600160a01b0316331461073d5760405162461bcd60e51b815260040161073490611908565b60405180910390fd5b600061074b6009600a611a21565b61075790611388611a30565b9050806107666009600a611a21565b6107709084611a30565b10156107b25760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642053657474696e67732160781b6044820152606401610734565b6107be6009600a611a21565b6107c89083611a30565b6009555050565b600c8054600160a01b60ff60a01b19909116179055600a546201000090046001600160a01b0316331461080157600080fd5b30600090815260036020526040902054801561086d57600061082282610c9e565b9050801561086b57600a54604051620100009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015610869573d6000803e3d6000fd5b505b505b471561088f57600a5461088f906201000090046001600160a01b031647610e0e565b50600c805460ff60a01b19169055565b6000546001600160a01b031633146108c95760405162461bcd60e51b815260040161073490611908565b6108d36000610f2c565b565b6000546001600160a01b031633146108ff5760405162461bcd60e51b815260040161073490611908565b60148260ff1611158015610917575060328160ff1611155b6109575760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642053657474696e67732160781b6044820152606401610734565b600a805460ff9283166101000261ffff199091169290931691909117919091179055565b6000546001600160a01b031633146109a55760405162461bcd60e51b815260040161073490611908565b6109b16009600a611a21565b6109bb9082611a30565b60085550565b60006105e8338484610b8d565b6000546001600160a01b031633146109f85760405162461bcd60e51b815260040161073490611908565b6001600160a01b038116610a5d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610734565b610a6681610f2c565b50565b6001600160a01b038316610acb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610734565b6001600160a01b038216610b2c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610734565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610b98838383610f7c565b6001600160a01b03831660009081526003602052604081208054839290610bc09084906118c6565b90915550506001600160a01b038316600090815260056020526040902054819060ff16158015610c0957506001600160a01b03831660009081526005602052604090205460ff16155b15610c1c57610c1984848461128f565b90505b6001600160a01b03831660009081526003602052604081208054839290610c44908490611a47565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c9091815260200190565b60405180910390a350505050565b6040805160028082526060820183526000924792849290916020830190803683370190505090503081600081518110610cd957610cd96118d9565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d569190611a5a565b81600181518110610d6957610d696118d9565b6001600160a01b039283166020918202929092010152600154610d8f9130911686610a69565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790610dc8908790600090869030904290600401611a77565b600060405180830381600087803b158015610de257600080fd5b505af1158015610df6573d6000803e3d6000fd5b505050508147610e0691906118c6565b949350505050565b80471015610e5e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610734565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610eab576040519150601f19603f3d011682016040523d82523d6000602084013e610eb0565b606091505b5050905080610f275760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610734565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316610fe05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610734565b6001600160a01b0382166110425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610734565b600081116110a45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610734565b600954816110c7846001600160a01b031660009081526003602052604090205490565b6110d19190611a47565b1115806110f657506001600160a01b03821660009081526006602052604090205460ff165b6111515760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526530b63632ba1760d11b6064820152608401610734565b6000546001600160a01b03848116911614801561117b57506002546001600160a01b038381169116145b801561119f57506002546001600160a01b0316600090815260036020526040902054155b156111a95743600d555b60085430600090815260036020526040902054101580156111d45750600c54600160a01b900460ff16155b80156111ee57506002546001600160a01b03848116911614155b801561120857506000546001600160a01b03848116911614155b801561122257506000546001600160a01b03838116911614155b1561122f5761122f61136d565b43600d54600661123f9190611a47565b111580156112575750600c54600160a81b900460ff16155b15610f2757600c805460ff60a81b1916600160a81b17905561127b6009600a611a21565b61128790614e20611a30565b600955505050565b600a5460009081906064906112a79060ff1685611a30565b6112b19190611ae8565b6002549091506001600160a01b03908116908516036112ef57600a546064906112e290610100900460ff1685611a30565b6112ec9190611ae8565b90505b801561135a573060009081526003602052604081208054839290611314908490611a47565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61136481846118c6565b95945050505050565b600c805460ff60a01b1916600160a01b179055600854600090606490611394906028611a30565b61139e9190611ae8565b90506000606460085460286113b39190611a30565b6113bd9190611ae8565b90506000606460085460146113d29190611a30565b6113dc9190611ae8565b9050821561143a5760006113ef84610c9e565b9050801561143857600a54604051620100009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611436573d6000803e3d6000fd5b505b505b811561149157600061144b83610c9e565b9050801561148f57600b546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561148d573d6000803e3d6000fd5b505b505b80156114d55760006114a4600283611ae8565b905060006114b282846118c6565b905060006114bf83610c9e565b905080156114d1576114d18282611509565b5050505b47156114f757600a546114f7906201000090046001600160a01b031647610e0e565b5050600c805460ff60a01b1916905550565b6001546115219030906001600160a01b031684610a69565b600154600c5460405163f305d71960e01b815230600482015260248101859052600060448201819052606482018190526001600160a01b0392831660848301524260a483015292919091169063f305d71990849060c40160606040518083038185885af1158015611596573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115bb9190611b0a565b509150600090506115cc82846118c6565b1115610f2757610f276115df82846118c6565b600a546201000090046001600160a01b031690610e0e565b600060208083528351808285015260005b8181101561162457858101830151858201604001528201611608565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a6657600080fd5b803561166581611645565b919050565b6000806040838503121561167d57600080fd5b823561168881611645565b946020939093013593505050565b6000806000606084860312156116ab57600080fd5b83356116b681611645565b925060208401356116c681611645565b929592945050506040919091013590565b6000602082840312156116e957600080fd5b81356116f481611645565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561172457600080fd5b823567ffffffffffffffff8082111561173c57600080fd5b818501915085601f83011261175057600080fd5b813581811115611762576117626116fb565b8060051b604051601f19603f83011681018181108582111715611787576117876116fb565b6040529182528482019250838101850191888311156117a557600080fd5b938501935b828510156117ca576117bb8561165a565b845293850193928501926117aa565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561180e578351835292840192918401916001016117f2565b50909695505050505050565b60006020828403121561182c57600080fd5b5035919050565b803560ff8116811461166557600080fd5b6000806040838503121561185757600080fd5b61186083611833565b915061186e60208401611833565b90509250929050565b6000806040838503121561188a57600080fd5b823561189581611645565b915060208301356118a581611645565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105ec576105ec6118b0565b634e487b7160e01b600052603260045260246000fd5b600060018201611901576119016118b0565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181815b8085111561197857816000190482111561195e5761195e6118b0565b8085161561196b57918102915b93841c9390800290611942565b509250929050565b60008261198f575060016105ec565b8161199c575060006105ec565b81600181146119b257600281146119bc576119d8565b60019150506105ec565b60ff8411156119cd576119cd6118b0565b50506001821b6105ec565b5060208310610133831016604e8410600b84101617156119fb575081810a6105ec565b611a05838361193d565b8060001904821115611a1957611a196118b0565b029392505050565b60006116f460ff841683611980565b80820281158282048414176105ec576105ec6118b0565b808201808211156105ec576105ec6118b0565b600060208284031215611a6c57600080fd5b81516116f481611645565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ac75784516001600160a01b031683529383019391830191600101611aa2565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b0557634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215611b1f57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208d7eb86fe356fcb8c460f8ea6da34d5bbff1a8187a25c3153315b3a541527d0564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c8063715018a6116100ec578063a8aa1b311161008a578063dd62ed3e11610064578063dd62ed3e1461053f578063f2fde38b14610585578063f887ea40146105a5578063f8b45b05146105c557600080fd5b8063a8aa1b31146104e0578063a9059cbb14610500578063cc1776d31461052057600080fd5b80637fe74a13116100c65780637fe74a13146104545780638da5cb5b1461047457806395d89b41146104925780639d0014b1146104c057600080fd5b8063715018a6146103e957806375f0a874146103fe578063768dc7101461042457600080fd5b8063313ce567116101595780635025587b116101335780635025587b1461035c57806351bc3c851461037e57806356d3b98f1461039357806370a08231146103b357600080fd5b8063313ce567146102e85780634626402b1461030a5780634f7041a51461034257600080fd5b806318160ddd1161019557806318160ddd1461025657806323b872dd1461026b57806328c61f411461028b5780632d2ae1c1146102bb57600080fd5b80630445b667146101c757806306fdde03146101f0578063095ea7b31461022657600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dd60085481565b6040519081526020015b60405180910390f35b3480156101fc57600080fd5b5060408051808201909152600481526350696e6760e01b60208201525b6040516101e791906115f7565b34801561023257600080fd5b5061024661024136600461166a565b6105db565b60405190151581526020016101e7565b34801561026257600080fd5b506007546101dd565b34801561027757600080fd5b50610246610286366004611696565b6105f2565b34801561029757600080fd5b506102466102a63660046116d7565b60066020526000908152604090205460ff1681565b3480156102c757600080fd5b506102db6102d6366004611711565b610644565b6040516101e791906117d6565b3480156102f457600080fd5b5060095b60405160ff90911681526020016101e7565b34801561031657600080fd5b50600b5461032a906001600160a01b031681565b6040516001600160a01b0390911681526020016101e7565b34801561034e57600080fd5b50600a546102f89060ff1681565b34801561036857600080fd5b5061037c61037736600461181a565b61070a565b005b34801561038a57600080fd5b5061037c6107cf565b34801561039f57600080fd5b50600c5461032a906001600160a01b031681565b3480156103bf57600080fd5b506101dd6103ce3660046116d7565b6001600160a01b031660009081526003602052604090205490565b3480156103f557600080fd5b5061037c61089f565b34801561040a57600080fd5b50600a5461032a906201000090046001600160a01b031681565b34801561043057600080fd5b5061024661043f3660046116d7565b60056020526000908152604090205460ff1681565b34801561046057600080fd5b5061037c61046f366004611844565b6108d5565b34801561048057600080fd5b506000546001600160a01b031661032a565b34801561049e57600080fd5b506040805180820190915260058152642450494e4760d81b6020820152610219565b3480156104cc57600080fd5b5061037c6104db36600461181a565b61097b565b3480156104ec57600080fd5b5060025461032a906001600160a01b031681565b34801561050c57600080fd5b5061024661051b36600461166a565b6109c1565b34801561052c57600080fd5b50600a546102f890610100900460ff1681565b34801561054b57600080fd5b506101dd61055a366004611877565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561059157600080fd5b5061037c6105a03660046116d7565b6109ce565b3480156105b157600080fd5b5060015461032a906001600160a01b031681565b3480156105d157600080fd5b506101dd60095481565b60006105e8338484610a69565b5060015b92915050565b60006105ff848484610b8d565b6001600160a01b03841660009081526004602090815260408083203380855292529091205461063a9186916106359086906118c6565b610a69565b5060019392505050565b805160609060008167ffffffffffffffff811115610664576106646116fb565b60405190808252806020026020018201604052801561068d578160200160208202803683370190505b50905060005b82811015610702576106d38582815181106106b0576106b06118d9565b60200260200101516001600160a01b031660009081526003602052604090205490565b8282815181106106e5576106e56118d9565b6020908102919091010152806106fa816118ef565b915050610693565b509392505050565b6000546001600160a01b0316331461073d5760405162461bcd60e51b815260040161073490611908565b60405180910390fd5b600061074b6009600a611a21565b61075790611388611a30565b9050806107666009600a611a21565b6107709084611a30565b10156107b25760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642053657474696e67732160781b6044820152606401610734565b6107be6009600a611a21565b6107c89083611a30565b6009555050565b600c8054600160a01b60ff60a01b19909116179055600a546201000090046001600160a01b0316331461080157600080fd5b30600090815260036020526040902054801561086d57600061082282610c9e565b9050801561086b57600a54604051620100009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015610869573d6000803e3d6000fd5b505b505b471561088f57600a5461088f906201000090046001600160a01b031647610e0e565b50600c805460ff60a01b19169055565b6000546001600160a01b031633146108c95760405162461bcd60e51b815260040161073490611908565b6108d36000610f2c565b565b6000546001600160a01b031633146108ff5760405162461bcd60e51b815260040161073490611908565b60148260ff1611158015610917575060328160ff1611155b6109575760405162461bcd60e51b8152602060048201526011602482015270496e76616c69642053657474696e67732160781b6044820152606401610734565b600a805460ff9283166101000261ffff199091169290931691909117919091179055565b6000546001600160a01b031633146109a55760405162461bcd60e51b815260040161073490611908565b6109b16009600a611a21565b6109bb9082611a30565b60085550565b60006105e8338484610b8d565b6000546001600160a01b031633146109f85760405162461bcd60e51b815260040161073490611908565b6001600160a01b038116610a5d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610734565b610a6681610f2c565b50565b6001600160a01b038316610acb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610734565b6001600160a01b038216610b2c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610734565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610b98838383610f7c565b6001600160a01b03831660009081526003602052604081208054839290610bc09084906118c6565b90915550506001600160a01b038316600090815260056020526040902054819060ff16158015610c0957506001600160a01b03831660009081526005602052604090205460ff16155b15610c1c57610c1984848461128f565b90505b6001600160a01b03831660009081526003602052604081208054839290610c44908490611a47565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610c9091815260200190565b60405180910390a350505050565b6040805160028082526060820183526000924792849290916020830190803683370190505090503081600081518110610cd957610cd96118d9565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610d32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d569190611a5a565b81600181518110610d6957610d696118d9565b6001600160a01b039283166020918202929092010152600154610d8f9130911686610a69565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790610dc8908790600090869030904290600401611a77565b600060405180830381600087803b158015610de257600080fd5b505af1158015610df6573d6000803e3d6000fd5b505050508147610e0691906118c6565b949350505050565b80471015610e5e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610734565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610eab576040519150601f19603f3d011682016040523d82523d6000602084013e610eb0565b606091505b5050905080610f275760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610734565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316610fe05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610734565b6001600160a01b0382166110425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610734565b600081116110a45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610734565b600954816110c7846001600160a01b031660009081526003602052604090205490565b6110d19190611a47565b1115806110f657506001600160a01b03821660009081526006602052604090205460ff165b6111515760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526530b63632ba1760d11b6064820152608401610734565b6000546001600160a01b03848116911614801561117b57506002546001600160a01b038381169116145b801561119f57506002546001600160a01b0316600090815260036020526040902054155b156111a95743600d555b60085430600090815260036020526040902054101580156111d45750600c54600160a01b900460ff16155b80156111ee57506002546001600160a01b03848116911614155b801561120857506000546001600160a01b03848116911614155b801561122257506000546001600160a01b03838116911614155b1561122f5761122f61136d565b43600d54600661123f9190611a47565b111580156112575750600c54600160a81b900460ff16155b15610f2757600c805460ff60a81b1916600160a81b17905561127b6009600a611a21565b61128790614e20611a30565b600955505050565b600a5460009081906064906112a79060ff1685611a30565b6112b19190611ae8565b6002549091506001600160a01b03908116908516036112ef57600a546064906112e290610100900460ff1685611a30565b6112ec9190611ae8565b90505b801561135a573060009081526003602052604081208054839290611314908490611a47565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61136481846118c6565b95945050505050565b600c805460ff60a01b1916600160a01b179055600854600090606490611394906028611a30565b61139e9190611ae8565b90506000606460085460286113b39190611a30565b6113bd9190611ae8565b90506000606460085460146113d29190611a30565b6113dc9190611ae8565b9050821561143a5760006113ef84610c9e565b9050801561143857600a54604051620100009091046001600160a01b0316906108fc8315029083906000818181858888f19350505050158015611436573d6000803e3d6000fd5b505b505b811561149157600061144b83610c9e565b9050801561148f57600b546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561148d573d6000803e3d6000fd5b505b505b80156114d55760006114a4600283611ae8565b905060006114b282846118c6565b905060006114bf83610c9e565b905080156114d1576114d18282611509565b5050505b47156114f757600a546114f7906201000090046001600160a01b031647610e0e565b5050600c805460ff60a01b1916905550565b6001546115219030906001600160a01b031684610a69565b600154600c5460405163f305d71960e01b815230600482015260248101859052600060448201819052606482018190526001600160a01b0392831660848301524260a483015292919091169063f305d71990849060c40160606040518083038185885af1158015611596573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115bb9190611b0a565b509150600090506115cc82846118c6565b1115610f2757610f276115df82846118c6565b600a546201000090046001600160a01b031690610e0e565b600060208083528351808285015260005b8181101561162457858101830151858201604001528201611608565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610a6657600080fd5b803561166581611645565b919050565b6000806040838503121561167d57600080fd5b823561168881611645565b946020939093013593505050565b6000806000606084860312156116ab57600080fd5b83356116b681611645565b925060208401356116c681611645565b929592945050506040919091013590565b6000602082840312156116e957600080fd5b81356116f481611645565b9392505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561172457600080fd5b823567ffffffffffffffff8082111561173c57600080fd5b818501915085601f83011261175057600080fd5b813581811115611762576117626116fb565b8060051b604051601f19603f83011681018181108582111715611787576117876116fb565b6040529182528482019250838101850191888311156117a557600080fd5b938501935b828510156117ca576117bb8561165a565b845293850193928501926117aa565b98975050505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561180e578351835292840192918401916001016117f2565b50909695505050505050565b60006020828403121561182c57600080fd5b5035919050565b803560ff8116811461166557600080fd5b6000806040838503121561185757600080fd5b61186083611833565b915061186e60208401611833565b90509250929050565b6000806040838503121561188a57600080fd5b823561189581611645565b915060208301356118a581611645565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105ec576105ec6118b0565b634e487b7160e01b600052603260045260246000fd5b600060018201611901576119016118b0565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181815b8085111561197857816000190482111561195e5761195e6118b0565b8085161561196b57918102915b93841c9390800290611942565b509250929050565b60008261198f575060016105ec565b8161199c575060006105ec565b81600181146119b257600281146119bc576119d8565b60019150506105ec565b60ff8411156119cd576119cd6118b0565b50506001821b6105ec565b5060208310610133831016604e8410600b84101617156119fb575081810a6105ec565b611a05838361193d565b8060001904821115611a1957611a196118b0565b029392505050565b60006116f460ff841683611980565b80820281158282048414176105ec576105ec6118b0565b808201808211156105ec576105ec6118b0565b600060208284031215611a6c57600080fd5b81516116f481611645565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ac75784516001600160a01b031683529383019391830191600101611aa2565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b0557634e487b7160e01b600052601260045260246000fd5b500490565b600080600060608486031215611b1f57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208d7eb86fe356fcb8c460f8ea6da34d5bbff1a8187a25c3153315b3a541527d0564736f6c63430008130033

Deployed Bytecode Sourcemap

3318:9429:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3827:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;3827:54:0;;;;;;;;5648:83;;;;;;;;;;-1:-1:-1;5718:5:0;;;;;;;;;;;;-1:-1:-1;;;5718:5:0;;;;5648:83;;;;;;;:::i;6479:161::-;;;;;;;;;;-1:-1:-1;6479:161:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;6479:161:0;1344:187:1;5925:95:0;;;;;;;;;;-1:-1:-1;6005:7:0;;5925:95;;6648:266;;;;;;;;;;-1:-1:-1;6648:266:0;;;;;:::i;:::-;;:::i;3656:58::-;;;;;;;;;;-1:-1:-1;3656:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11256:335;;;;;;;;;;-1:-1:-1;11256:335:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5834:83::-;;;;;;;;;;-1:-1:-1;3758:1:0;5834:83;;;4316:4:1;4304:17;;;4286:36;;4274:2;4259:18;5834:83:0;4144:184:1;4275:74:0;;;;;;;;;;-1:-1:-1;4275:74:0;;;;-1:-1:-1;;;;;4275:74:0;;;;;;-1:-1:-1;;;;;4497:32:1;;;4479:51;;4467:2;4452:18;4275:74:0;4333:203:1;3953:23:0;;;;;;;;;;-1:-1:-1;3953:23:0;;;;;;;;11599:283;;;;;;;;;;-1:-1:-1;11599:283:0;;;;;:::i;:::-;;:::i;:::-;;12267:473;;;;;;;;;;;;;:::i;4356:72::-;;;;;;;;;;-1:-1:-1;4356:72:0;;;;-1:-1:-1;;;;;4356:72:0;;;6028:117;;;;;;;;;;-1:-1:-1;6028:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;6121:16:0;6094:7;6121:16;;;:7;:16;;;;;;;6028:117;1309:94;;;;;;;;;;;;;:::i;4193:75::-;;;;;;;;;;-1:-1:-1;4193:75:0;;;;;;;-1:-1:-1;;;;;4193:75:0;;;3598:51;;;;;;;;;;-1:-1:-1;3598:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11890:216;;;;;;;;;;-1:-1:-1;11890:216:0;;;;;:::i;:::-;;:::i;1086:87::-;;;;;;;;;;-1:-1:-1;1132:7:0;1159:6;-1:-1:-1;;;;;1159:6:0;1086:87;;5739;;;;;;;;;;-1:-1:-1;5811:7:0;;;;;;;;;;;;-1:-1:-1;;;5811:7:0;;;;5739:87;;12114:145;;;;;;;;;;-1:-1:-1;12114:145:0;;;;;:::i;:::-;;:::i;3439:19::-;;;;;;;;;;-1:-1:-1;3439:19:0;;;;-1:-1:-1;;;;;3439:19:0;;;6153:167;;;;;;;;;;-1:-1:-1;6153:167:0;;;;;:::i;:::-;;:::i;3983:24::-;;;;;;;;;;-1:-1:-1;3983:24:0;;;;;;;;;;;6328:143;;;;;;;;;;-1:-1:-1;6328:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6436:18:0;;;6409:7;6436:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6328:143;1411:192;;;;;;;;;;-1:-1:-1;1411:192:0;;;;;:::i;:::-;;:::i;3411:21::-;;;;;;;;;;-1:-1:-1;3411:21:0;;;;-1:-1:-1;;;;;3411:21:0;;;3888:52;;;;;;;;;;;;;;;;6479:161;6554:4;6571:39;707:10;6594:7;6603:6;6571:8;:39::i;:::-;-1:-1:-1;6628:4:0;6479:161;;;;;:::o;6648:266::-;6746:4;6763:36;6773:6;6781:9;6792:6;6763:9;:36::i;:::-;-1:-1:-1;;;;;6841:19:0;;;;;;:11;:19;;;;;;;;707:10;6841:33;;;;;;;;;6810:74;;6819:6;;6841:42;;6877:6;;6841:42;:::i;:::-;6810:8;:74::i;:::-;-1:-1:-1;6902:4:0;6648:266;;;;;:::o;11256:335::-;11362:14;;11323:13;;11348:11;11362:14;11419:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11419:18:0;;11387:50;;11453:6;11448:103;11469:6;11465:1;:10;11448:103;;;11518:21;11528:7;11536:1;11528:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;6121:16:0;6094:7;6121:16;;;:7;:16;;;;;;;6028:117;11518:21;11497:15;11513:1;11497:18;;;;;;;;:::i;:::-;;;;;;;;;;:42;11477:3;;;;:::i;:::-;;;;11448:103;;;-1:-1:-1;11568:15:0;11256:335;-1:-1:-1;;;11256:335:0:o;11599:283::-;1132:7;1159:6;-1:-1:-1;;;;;1159:6:0;707:10;1221:23;1213:68;;;;-1:-1:-1;;;1213:68:0;;;;;;;:::i;:::-;;;;;;;;;11680:21:::1;11713:13;3758:1;11713:2;:13;:::i;:::-;11704:23;::::0;:5:::1;:23;:::i;:::-;11680:47:::0;-1:-1:-1;11680:47:0;11765:13:::1;3758:1;11765:2;:13;:::i;:::-;11746:33;::::0;:15;:33:::1;:::i;:::-;:50;;11738:80;;;::::0;-1:-1:-1;;;11738:80:0;;8416:2:1;11738:80:0::1;::::0;::::1;8398:21:1::0;8455:2;8435:18;;;8428:30;-1:-1:-1;;;8474:18:1;;;8467:47;8531:18;;11738:80:0::1;8214:341:1::0;11738:80:0::1;11860:13;3758:1;11860:2;:13;:::i;:::-;11841:33;::::0;:15;:33:::1;:::i;:::-;11829:9;:45:::0;-1:-1:-1;;11599:283:0:o;12267:473::-;4536:8;:15;;-1:-1:-1;;;;;;;4536:15:0;;;;;;12342::::1;::::0;;;::::1;-1:-1:-1::0;;;;;12342:15:0::1;12328:10;:29;12320:38;;;::::0;::::1;;12410:4;12369:20;6121:16:::0;;;:7;:16;;;;;;12430;;12427:194:::1;;12462:18;12483:30;12500:12;12483:16;:30::i;:::-;12462:51:::0;-1:-1:-1;12531:14:0;;12528:81:::1;;12572:15;::::0;12564:45:::1;::::0;12572:15;;;::::1;-1:-1:-1::0;;;;;12572:15:0::1;::::0;12564:45:::1;::::0;::::1;;::::0;;;::::1;::::0;;;;12572:15;12564:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12528:81;12447:174;12427:194;12635:21;:25:::0;12631:101:::1;;12683:15;::::0;12675:57:::1;::::0;12683:15;;::::1;-1:-1:-1::0;;;;;12683:15:0::1;12710:21;12675:34;:57::i;:::-;-1:-1:-1::0;4574:8:0;:16;;-1:-1:-1;;;;4574:16:0;;;12267:473::o;1309:94::-;1132:7;1159:6;-1:-1:-1;;;;;1159:6:0;707:10;1221:23;1213:68;;;;-1:-1:-1;;;1213:68:0;;;;;;;:::i;:::-;1374:21:::1;1392:1;1374:9;:21::i;:::-;1309:94::o:0;11890:216::-;1132:7;1159:6;-1:-1:-1;;;;;1159:6:0;707:10;1221:23;1213:68;;;;-1:-1:-1;;;1213:68:0;;;;;;;:::i;:::-;11999:2:::1;11988:7;:13;;;;:31;;;;;12017:2;12005:8;:14;;;;11988:31;11980:61;;;::::0;-1:-1:-1;;;11980:61:0;;8416:2:1;11980:61:0::1;::::0;::::1;8398:21:1::0;8455:2;8435:18;;;8428:30;-1:-1:-1;;;8474:18:1;;;8467:47;8531:18;;11980:61:0::1;8214:341:1::0;11980:61:0::1;12052:6;:16:::0;;::::1;12080:18:::0;;::::1;12052:16;12080:18;-1:-1:-1::0;;12080:18:0;;;12052:16;;;::::1;12080:18:::0;;;;;;;::::1;::::0;;11890:216::o;12114:145::-;1132:7;1159:6;-1:-1:-1;;;;;1159:6:0;707:10;1221:23;1213:68;;;;-1:-1:-1;;;1213:68:0;;;;;;;:::i;:::-;12237:13:::1;3758:1;12237:2;:13;:::i;:::-;12214:37;::::0;:19;:37:::1;:::i;:::-;12198:13;:53:::0;-1:-1:-1;12114:145:0:o;6153:167::-;6231:4;6248:42;707:10;6272:9;6283:6;6248:9;:42::i;1411:192::-;1132:7;1159:6;-1:-1:-1;;;;;1159:6:0;707:10;1221:23;1213:68;;;;-1:-1:-1;;;1213:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1500:22:0;::::1;1492:73;;;::::0;-1:-1:-1;;;1492:73:0;;8762:2:1;1492:73:0::1;::::0;::::1;8744:21:1::0;8801:2;8781:18;;;8774:30;8840:34;8820:18;;;8813:62;-1:-1:-1;;;8891:18:1;;;8884:36;8937:19;;1492:73:0::1;8560:402:1::0;1492:73:0::1;1576:19;1586:8;1576:9;:19::i;:::-;1411:192:::0;:::o;6922:335::-;-1:-1:-1;;;;;7015:19:0;;7007:68;;;;-1:-1:-1;;;7007:68:0;;9169:2:1;7007:68:0;;;9151:21:1;9208:2;9188:18;;;9181:30;9247:34;9227:18;;;9220:62;-1:-1:-1;;;9298:18:1;;;9291:34;9342:19;;7007:68:0;8967:400:1;7007:68:0;-1:-1:-1;;;;;7094:21:0;;7086:68;;;;-1:-1:-1;;;7086:68:0;;9574:2:1;7086:68:0;;;9556:21:1;9613:2;9593:18;;;9586:30;9652:34;9632:18;;;9625:62;-1:-1:-1;;;9703:18:1;;;9696:32;9745:19;;7086:68:0;9372:398:1;7086:68:0;-1:-1:-1;;;;;7165:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7217:32;;160:25:1;;;7217:32:0;;133:18:1;7217:32:0;;;;;;;6922:335;;;:::o;8572:413::-;8650:35;8668:4;8674:2;8678:6;8650:17;:35::i;:::-;-1:-1:-1;;;;;8696:13:0;;;;;;:7;:13;;;;;:23;;8713:6;;8696:13;:23;;8713:6;;8696:23;:::i;:::-;;;;-1:-1:-1;;;;;;;8776:24:0;;8730:22;8776:24;;;:18;:24;;;;;;8755:6;;8776:24;;8775:25;:52;;;;-1:-1:-1;;;;;;8805:22:0;;;;;;:18;:22;;;;;;;;8804:23;8775:52;8772:115;;;8859:28;8870:4;8876:2;8880:6;8859:10;:28::i;:::-;8842:45;;8772:115;-1:-1:-1;;;;;8898:11:0;;;;;;:7;:11;;;;;:29;;8913:14;;8898:11;:29;;8913:14;;8898:29;:::i;:::-;;;;;;;;8958:2;-1:-1:-1;;;;;8943:34:0;8952:4;-1:-1:-1;;;;;8943:34:0;;8962:14;8943:34;;;;160:25:1;;148:2;133:18;;14:177;8943:34:0;;;;;;;;8639:346;8572:413;;;:::o;10099:581::-;10264:16;;;10278:1;10264:16;;;;;;;;10163:7;;10208:21;;10163:7;;10264:16;;;;;;;;;;;;-1:-1:-1;10264:16:0;10240:40;;10309:4;10291;10296:1;10291:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10291:23:0;;;:7;;;;;;;;;;:23;;;;10335:6;;:13;;;-1:-1:-1;;;10335:13:0;;;;:6;;;;;:11;;:13;;;;;10291:7;;10335:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10325:4;10330:1;10325:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10325:23:0;;;:7;;;;;;;;;:23;10393:6;;10361:53;;10378:4;;10393:6;10402:11;10361:8;:53::i;:::-;10427:6;;:187;;-1:-1:-1;;;10427:187:0;;-1:-1:-1;;;;;10427:6:0;;;;:57;;:187;;10499:11;;10427:6;;10541:4;;10568;;10588:15;;10427:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10657:14;10633:21;:38;;;;:::i;:::-;10625:47;10099:581;-1:-1:-1;;;;10099:581:0:o;254:317::-;369:6;344:21;:31;;336:73;;;;-1:-1:-1;;;336:73:0;;11348:2:1;336:73:0;;;11330:21:1;11387:2;11367:18;;;11360:30;11426:31;11406:18;;;11399:59;11475:18;;336:73:0;11146:353:1;336:73:0;423:12;441:9;-1:-1:-1;;;;;441:14:0;463:6;441:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;422:52;;;493:7;485:78;;;;-1:-1:-1;;;485:78:0;;11916:2:1;485:78:0;;;11898:21:1;11955:2;11935:18;;;11928:30;11994:34;11974:18;;;11967:62;12065:28;12045:18;;;12038:56;12111:19;;485:78:0;11714:422:1;485:78:0;325:246;254:317;;:::o;1611:173::-;1667:16;1686:6;;-1:-1:-1;;;;;1703:17:0;;;-1:-1:-1;;;;;;1703:17:0;;;;;;1736:40;;1686:6;;;;;;;1736:40;;1667:16;1736:40;1656:128;1611:173;:::o;7269:864::-;-1:-1:-1;;;;;7364:18:0;;7356:68;;;;-1:-1:-1;;;7356:68:0;;12343:2:1;7356:68:0;;;12325:21:1;12382:2;12362:18;;;12355:30;12421:34;12401:18;;;12394:62;-1:-1:-1;;;12472:18:1;;;12465:35;12517:19;;7356:68:0;12141:401:1;7356:68:0;-1:-1:-1;;;;;7443:16:0;;7435:64;;;;-1:-1:-1;;;7435:64:0;;12749:2:1;7435:64:0;;;12731:21:1;12788:2;12768:18;;;12761:30;12827:34;12807:18;;;12800:62;-1:-1:-1;;;12878:18:1;;;12871:33;12921:19;;7435:64:0;12547:399:1;7435:64:0;7527:1;7518:6;:10;7510:64;;;;-1:-1:-1;;;7510:64:0;;13153:2:1;7510:64:0;;;13135:21:1;13192:2;13172:18;;;13165:30;13231:34;13211:18;;;13204:62;-1:-1:-1;;;13282:18:1;;;13275:39;13331:19;;7510:64:0;12951:405:1;7510:64:0;7619:9;;7609:6;7593:13;7603:2;-1:-1:-1;;;;;6121:16:0;6094:7;6121:16;;;:7;:16;;;;;;;6028:117;7593:13;:22;;;;:::i;:::-;:35;;:68;;;-1:-1:-1;;;;;;7632:29:0;;;;;;:25;:29;;;;;;;;7593:68;7585:119;;;;-1:-1:-1;;;7585:119:0;;13563:2:1;7585:119:0;;;13545:21:1;13602:2;13582:18;;;13575:30;13641:34;13621:18;;;13614:62;-1:-1:-1;;;13692:18:1;;;13685:36;13738:19;;7585:119:0;13361:402:1;7585:119:0;1132:7;1159:6;-1:-1:-1;;;;;7718:15:0;;;1159:6;;7718:15;:29;;;;-1:-1:-1;7743:4:0;;-1:-1:-1;;;;;7737:10:0;;;7743:4;;7737:10;7718:29;:53;;;;-1:-1:-1;7761:4:0;;-1:-1:-1;;;;;7761:4:0;6094:7;6121:16;;;:7;:16;;;;;;7751:20;7718:53;7715:99;;;7802:12;7786:13;:28;7715:99;7857:13;;7847:4;6094:7;6121:16;;;:7;:16;;;;;;7829:41;;:54;;;;-1:-1:-1;7875:8:0;;-1:-1:-1;;;7875:8:0;;;;7874:9;7829:54;:70;;;;-1:-1:-1;7895:4:0;;-1:-1:-1;;;;;7887:12:0;;;7895:4;;7887:12;;7829:70;:89;;;;-1:-1:-1;1132:7:0;1159:6;-1:-1:-1;;;;;7903:15:0;;;1159:6;;7903:15;;7829:89;:106;;;;-1:-1:-1;1132:7:0;1159:6;-1:-1:-1;;;;;7922:13:0;;;1159:6;;7922:13;;7829:106;7825:141;;;7950:16;:14;:16::i;:::-;8001:12;7980:13;;7996:1;7980:17;;;;:::i;:::-;:33;;:49;;;;-1:-1:-1;8018:11:0;;-1:-1:-1;;;8018:11:0;;;;8017:12;7980:49;7977:149;;;8045:11;:18;;-1:-1:-1;;;;8045:18:0;-1:-1:-1;;;8045:18:0;;;8100:13;3758:1;8100:2;:13;:::i;:::-;8090:24;;:6;:24;:::i;:::-;8078:9;:36;7269:864;;;:::o;8141:419::-;8268:6;;8218:7;;;;8277:3;;8259:15;;8268:6;;8259;:15;:::i;:::-;:21;;;;:::i;:::-;8300:4;;8237:43;;-1:-1:-1;;;;;;8300:4:0;;;8294:10;;;;8291:64;;8342:7;;8352:3;;8333:16;;8342:7;;;;;8333:6;:16;:::i;:::-;:22;;;;:::i;:::-;8319:36;;8291:64;8370:15;;8366:147;;8417:4;8401:22;;;;:7;:22;;;;;:37;;8427:11;;8401:22;:37;;8427:11;;8401:37;:::i;:::-;;;;-1:-1:-1;;8458:43:0;;160:25:1;;;8482:4:0;;-1:-1:-1;;;;;8458:43:0;;;;;148:2:1;133:18;8458:43:0;;;;;;;8366:147;8531:20;8540:11;8531:6;:20;:::i;:::-;8523:29;8141:419;-1:-1:-1;;;;;8141:419:0:o;8993:1098::-;4536:8;:15;;-1:-1:-1;;;;4536:15:0;-1:-1:-1;;;4536:15:0;;;9080:13:::1;::::0;4536:15;;9101:3:::1;::::0;9080:18:::1;::::0;9096:2:::1;9080:18;:::i;:::-;:24;;;;:::i;:::-;9051:53;;9115:25;9164:3;9143:13;;9159:2;9143:18;;;;:::i;:::-;:24;;;;:::i;:::-;9115:52;;9178:26;9228:3;9207:13;;9223:2;9207:18;;;;:::i;:::-;:24;;;;:::i;:::-;9178:53:::0;-1:-1:-1;9255:22:0;;9252:206:::1;;9293:18;9314:36;9331:18;9314:16;:36::i;:::-;9293:57:::0;-1:-1:-1;9368:14:0;;9365:81:::1;;9409:15;::::0;9401:45:::1;::::0;9409:15;;;::::1;-1:-1:-1::0;;;;;9409:15:0::1;::::0;9401:45:::1;::::0;::::1;;::::0;;;::::1;::::0;;;;9409:15;9401:45;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9365:81;9278:180;9252:206;9473:21:::0;;9470:203:::1;;9510:18;9531:35;9548:17;9531:16;:35::i;:::-;9510:56:::0;-1:-1:-1;9584:14:0;;9581:80:::1;;9625:14;::::0;9617:44:::1;::::0;-1:-1:-1;;;;;9625:14:0;;::::1;::::0;9617:44;::::1;;;::::0;9650:10;;9625:14:::1;9617:44:::0;9625:14;9617:44;9650:10;9625:14;9617:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;9581:80;9495:178;9470:203;9688:22:::0;;9685:283:::1;;9726:9;9738:22;9759:1;9738:18:::0;:22:::1;:::i;:::-;9726:34:::0;-1:-1:-1;9775:14:0::1;9792:25;9726:34:::0;9792:18;:25:::1;:::i;:::-;9775:42;;9832:14;9849:22;9866:4;9849:16;:22::i;:::-;9832:39:::0;-1:-1:-1;9890:13:0;;9886:70:::1;;9922:34;9935:9;9946;9922:12;:34::i;:::-;9711:257;;;9685:283;9984:21;:25:::0;9980:101:::1;;10032:15;::::0;10024:57:::1;::::0;10032:15;;::::1;-1:-1:-1::0;;;;;10032:15:0::1;10059:21;10024:34;:57::i;:::-;-1:-1:-1::0;;4574:8:0;:16;;-1:-1:-1;;;;4574:16:0;;;-1:-1:-1;8993:1098:0:o;10688:519::-;10801:6;;10769:53;;10786:4;;-1:-1:-1;;;;;10801:6:0;10810:11;10769:8;:53::i;:::-;10866:6;;11009:12;;10866:196;;-1:-1:-1;;;10866:196:0;;10931:4;10866:196;;;14331:34:1;14381:18;;;14374:34;;;10837:24:0;14424:18:1;;;14417:34;;;14467:18;;;14460:34;;;-1:-1:-1;;;;;11009:12:0;;;14510:19:1;;;14503:44;11036:15:0;14563:19:1;;;14556:35;10837:24:0;10866:6;;;;;:22;;10897:9;;14265:19:1;;10866:196:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;10835:227:0;-1:-1:-1;11118:1:0;;-1:-1:-1;11087:28:0;10835:227;11087:9;:28;:::i;:::-;:32;11083:116;;;11134:65;11170:28;11182:16;11170:9;:28;:::i;:::-;11142:15;;;;;-1:-1:-1;;;;;11142:15:0;;11134:34;:65::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:134;953:20;;982:31;953:20;982:31;:::i;:::-;885:134;;;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;1997:247::-;2056:6;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;2164:9;2151:23;2183:31;2208:5;2183:31;:::i;:::-;2233:5;1997:247;-1:-1:-1;;;1997:247:1:o;2249:127::-;2310:10;2305:3;2301:20;2298:1;2291:31;2341:4;2338:1;2331:15;2365:4;2362:1;2355:15;2381:1121;2465:6;2496:2;2539;2527:9;2518:7;2514:23;2510:32;2507:52;;;2555:1;2552;2545:12;2507:52;2595:9;2582:23;2624:18;2665:2;2657:6;2654:14;2651:34;;;2681:1;2678;2671:12;2651:34;2719:6;2708:9;2704:22;2694:32;;2764:7;2757:4;2753:2;2749:13;2745:27;2735:55;;2786:1;2783;2776:12;2735:55;2822:2;2809:16;2844:2;2840;2837:10;2834:36;;;2850:18;;:::i;:::-;2896:2;2893:1;2889:10;2928:2;2922:9;2991:2;2987:7;2982:2;2978;2974:11;2970:25;2962:6;2958:38;3046:6;3034:10;3031:22;3026:2;3014:10;3011:18;3008:46;3005:72;;;3057:18;;:::i;:::-;3093:2;3086:22;3143:18;;;3177:15;;;;-1:-1:-1;3219:11:1;;;3215:20;;;3247:19;;;3244:39;;;3279:1;3276;3269:12;3244:39;3303:11;;;;3323:148;3339:6;3334:3;3331:15;3323:148;;;3405:23;3424:3;3405:23;:::i;:::-;3393:36;;3356:12;;;;3449;;;;3323:148;;;3490:6;2381:1121;-1:-1:-1;;;;;;;;2381:1121:1:o;3507:632::-;3678:2;3730:21;;;3800:13;;3703:18;;;3822:22;;;3649:4;;3678:2;3901:15;;;;3875:2;3860:18;;;3649:4;3944:169;3958:6;3955:1;3952:13;3944:169;;;4019:13;;4007:26;;4088:15;;;;4053:12;;;;3980:1;3973:9;3944:169;;;-1:-1:-1;4130:3:1;;3507:632;-1:-1:-1;;;;;;3507:632:1:o;4541:180::-;4600:6;4653:2;4641:9;4632:7;4628:23;4624:32;4621:52;;;4669:1;4666;4659:12;4621:52;-1:-1:-1;4692:23:1;;4541:180;-1:-1:-1;4541:180:1:o;4726:156::-;4792:20;;4852:4;4841:16;;4831:27;;4821:55;;4872:1;4869;4862:12;4887:252;4951:6;4959;5012:2;5000:9;4991:7;4987:23;4983:32;4980:52;;;5028:1;5025;5018:12;4980:52;5051:27;5068:9;5051:27;:::i;:::-;5041:37;;5097:36;5129:2;5118:9;5114:18;5097:36;:::i;:::-;5087:46;;4887:252;;;;;:::o;5144:388::-;5212:6;5220;5273:2;5261:9;5252:7;5248:23;5244:32;5241:52;;;5289:1;5286;5279:12;5241:52;5328:9;5315:23;5347:31;5372:5;5347:31;:::i;:::-;5397:5;-1:-1:-1;5454:2:1;5439:18;;5426:32;5467:33;5426:32;5467:33;:::i;:::-;5519:7;5509:17;;;5144:388;;;;;:::o;5760:127::-;5821:10;5816:3;5812:20;5809:1;5802:31;5852:4;5849:1;5842:15;5876:4;5873:1;5866:15;5892:128;5959:9;;;5980:11;;;5977:37;;;5994:18;;:::i;6025:127::-;6086:10;6081:3;6077:20;6074:1;6067:31;6117:4;6114:1;6107:15;6141:4;6138:1;6131:15;6157:135;6196:3;6217:17;;;6214:43;;6237:18;;:::i;:::-;-1:-1:-1;6284:1:1;6273:13;;6157:135::o;6297:356::-;6499:2;6481:21;;;6518:18;;;6511:30;6577:34;6572:2;6557:18;;6550:62;6644:2;6629:18;;6297:356::o;6658:422::-;6747:1;6790:5;6747:1;6804:270;6825:7;6815:8;6812:21;6804:270;;;6884:4;6880:1;6876:6;6872:17;6866:4;6863:27;6860:53;;;6893:18;;:::i;:::-;6943:7;6933:8;6929:22;6926:55;;;6963:16;;;;6926:55;7042:22;;;;7002:15;;;;6804:270;;;6808:3;6658:422;;;;;:::o;7085:806::-;7134:5;7164:8;7154:80;;-1:-1:-1;7205:1:1;7219:5;;7154:80;7253:4;7243:76;;-1:-1:-1;7290:1:1;7304:5;;7243:76;7335:4;7353:1;7348:59;;;;7421:1;7416:130;;;;7328:218;;7348:59;7378:1;7369:10;;7392:5;;;7416:130;7453:3;7443:8;7440:17;7437:43;;;7460:18;;:::i;:::-;-1:-1:-1;;7516:1:1;7502:16;;7531:5;;7328:218;;7630:2;7620:8;7617:16;7611:3;7605:4;7602:13;7598:36;7592:2;7582:8;7579:16;7574:2;7568:4;7565:12;7561:35;7558:77;7555:159;;;-1:-1:-1;7667:19:1;;;7699:5;;7555:159;7746:34;7771:8;7765:4;7746:34;:::i;:::-;7816:6;7812:1;7808:6;7804:19;7795:7;7792:32;7789:58;;;7827:18;;:::i;:::-;7865:20;;7085:806;-1:-1:-1;;;7085:806:1:o;7896:140::-;7954:5;7983:47;8024:4;8014:8;8010:19;8004:4;7983:47;:::i;8041:168::-;8114:9;;;8145;;8162:15;;;8156:22;;8142:37;8132:71;;8183:18;;:::i;9775:125::-;9840:9;;;9861:10;;;9858:36;;;9874:18;;:::i;9905:251::-;9975:6;10028:2;10016:9;10007:7;10003:23;9999:32;9996:52;;;10044:1;10041;10034:12;9996:52;10076:9;10070:16;10095:31;10120:5;10095:31;:::i;10161:980::-;10423:4;10471:3;10460:9;10456:19;10502:6;10491:9;10484:25;10528:2;10566:6;10561:2;10550:9;10546:18;10539:34;10609:3;10604:2;10593:9;10589:18;10582:31;10633:6;10668;10662:13;10699:6;10691;10684:22;10737:3;10726:9;10722:19;10715:26;;10776:2;10768:6;10764:15;10750:29;;10797:1;10807:195;10821:6;10818:1;10815:13;10807:195;;;10886:13;;-1:-1:-1;;;;;10882:39:1;10870:52;;10977:15;;;;10942:12;;;;10918:1;10836:9;10807:195;;;-1:-1:-1;;;;;;;11058:32:1;;;;11053:2;11038:18;;11031:60;-1:-1:-1;;;11122:3:1;11107:19;11100:35;11019:3;10161:980;-1:-1:-1;;;10161:980:1:o;13768:217::-;13808:1;13834;13824:132;;13878:10;13873:3;13869:20;13866:1;13859:31;13913:4;13910:1;13903:15;13941:4;13938:1;13931:15;13824:132;-1:-1:-1;13970:9:1;;13768:217::o;14602:306::-;14690:6;14698;14706;14759:2;14747:9;14738:7;14734:23;14730:32;14727:52;;;14775:1;14772;14765:12;14727:52;14804:9;14798:16;14788:26;;14854:2;14843:9;14839:18;14833:25;14823:35;;14898:2;14887:9;14883:18;14877:25;14867:35;;14602:306;;;;;:::o

Swarm Source

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