ETH Price: $2,300.82 (-2.88%)

Token

PEPY (PEPY)
 

Overview

Max Total Supply

420,000,000,000 PEPY

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,000,000.0000000001 PEPY

Value
$0.00
0xE7BA76319a5840EC25D8C838116AB71bF746fFF3
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:
PEPY

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-10
*/

/*

 Telegram: https://t.me/pepycoin
 Website: https://pepycoin.com
 Twitter: https://twitter.com/Pepycoin

*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.0;

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

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract PEPY is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = unicode"PEPY";
    string private constant _symbol = unicode"PEPY";
    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _reflectionTokenOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 public constant MAX = ~uint256(0);
    uint256 private constant _tokenTotal = 420_000_000_000 * 10**_decimals;
    uint256 public _reflectionTotal = (MAX - (MAX % _tokenTotal));
    uint256 private _taxFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 public _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 public _taxFeeOnSell = 0;

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _stateSyncRedisFee = _redisFee;
    uint256 private _stateSyncTaxFee = _taxFee;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = (_tokenTotal * 10) / 100;
    uint256 public _maxWalletSize = (_tokenTotal * 10) / 100;
    uint256 public _swapTokensAtAmount = (_tokenTotal * 10) / 100;

    address public insuranceFundAccounts;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    receive() external payable {}

    constructor() {
        insuranceFundAccounts = _msgSender();
        _reflectionTokenOwned[_msgSender()] = _reflectionTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[insuranceFundAccounts] = true;

        emit Transfer(address(0), _msgSender(), _tokenTotal);
    }

    function openTrading() public onlyOwner {
        require(!tradingOpen, "Cannot reenable trading");
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        tradingOpen = true;
    }

    function removeLimits() public onlyOwner {
        _maxTxAmount = _tokenTotal;
        _maxWalletSize = _tokenTotal;
    }

    function deduceTaxConfigurator(
        uint256 redisFeeOnBuy,
        uint256 redisFeeOnSell,
        uint256 taxFeeOnBuy,
        uint256 taxFeeOnSell
    ) public onlyOwner {
        require(
            redisFeeOnBuy >= 0 && redisFeeOnBuy <= 0,
            "Buy redis must be between 0% and 0%"
        );
        require(
            taxFeeOnBuy >= 0 && taxFeeOnBuy <= 50,
            "Tax fee must be between 0% and 49%"
        );
        require(
            redisFeeOnSell >= 0 && redisFeeOnSell <= 0,
            "Sell redis must be between 0% and 0%"
        );
        require(
            taxFeeOnSell >= 0 && taxFeeOnSell <= 50,
            "Tax fee must be between 0% and 49%"
        );
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy << 1;
        _taxFeeOnSell = taxFeeOnSell << 1;
    }

    //Set minimum tokens required to swap.
    function setEnableSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function setExcludeFromFees(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedFromFee[account] = excluded;
    }

    // BEGIN: CONFIGURATORS FOR TOKENS
    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount)
        public
        onlyOwner
    {
        _swapTokensAtAmount = swapTokensAtAmount * 10**decimals();
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount * 10**decimals();
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize * 10**decimals();
    }

    // END: CONFIGURATORS FOR TOKENS

    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 pure override returns (uint256) {
        return _tokenTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _tokenConverter(_reflectionTokenOwned[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()].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);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        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");

        if (from != owner() && to != owner()) {
            //Trade start check
            if (!tradingOpen) {
                require(
                    from == owner(),
                    "TOKEN: This account cannot send tokens until trading is enabled"
                );
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if (to != uniswapV2Pair) {
                require(
                    balanceOf(to) + amount < _maxWalletSize,
                    "TOKEN: Balance exceeds wallet size!"
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if (contractTokenBalance >= _maxTxAmount) {
                contractTokenBalance = _maxTxAmount;
            }

            if (
                canSwap &&
                !inSwap &&
                from != uniswapV2Pair &&
                swapEnabled &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                _swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    payable(insuranceFundAccounts).transfer(
                        address(this).balance
                    );
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if (
            (_isExcludedFromFee[from] || _isExcludedFromFee[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        } else {
            //Set Fee for Buys
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }
        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function _tokenConverter(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _reflectionTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) _beforeRemoveFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) _afterRemoveFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTax
        ) = _getValues(tAmount);
        _reflectionTokenOwned[sender] = _reflectionTokenOwned[sender].sub(
            rAmount
        );
        _reflectionTokenOwned[recipient] = _reflectionTokenOwned[recipient].add(
            rTransferAmount
        );
        _takeTaxFee(tTax); // add teamFee to address(this) (teamFee is calculated from taxFee)
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTaxFee(uint256 tTax) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTax.mul(currentRate);
        _reflectionTokenOwned[address(this)] = _reflectionTokenOwned[
            address(this)
        ].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _reflectionTotal = _reflectionTotal.sub(rFee);
        _taxFeeTotal = _taxFeeTotal.add(tFee);
    }

    function _beforeRemoveFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _stateSyncRedisFee = _redisFee;
        _stateSyncTaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function _afterRemoveFee() private {
        _redisFee = _stateSyncRedisFee;
        _taxFee = _stateSyncTaxFee;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTax
        ) = _getTokenValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee
        ) = _getReflectionTokenValues(tAmount, tFee, tTax, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTax);
    }

    function _getTokenValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTax = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTax);
        return (tTransferAmount, tFee, tTax);
    }

    function _getReflectionTokenValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTax,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTax.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply); // _reflectionTotal / _tokenTotal
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _reflectionTotal;
        uint256 tSupply = _tokenTotal;
        if (rSupply < _reflectionTotal.div(_tokenTotal))
            return (_reflectionTotal, _tokenTotal);
        return (rSupply, tSupply); // _reflectionTotal / _tokenTotal
    }
}

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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"MAX","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFeeOnSell","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":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"deduceTaxConfigurator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"insuranceFundAccounts","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"setEnableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","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":"pure","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000391565b62000023906461c9f36800620003a8565b62000030905f19620003d6565b6200003d905f19620003ec565b6005555f600781905560088190556009819055600a818155600b829055600c829055600d829055600e919091556010805461ffff60a81b1916600160b01b1790556064906200008f9060129062000391565b620000a0906461c9f36800620003a8565b620000ad90600a620003a8565b620000b9919062000402565b6011556064620000cc6012600a62000391565b620000dd906461c9f36800620003a8565b620000ea90600a620003a8565b620000f6919062000402565b60125560646012600a6200010b919062000391565b6200011c906461c9f36800620003a8565b6200012990600a620003a8565b62000135919062000402565b60135534801562000144575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601480546001600160a01b031916339081179091556005545f91825260026020526040822055600190600490620001c35f546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790553081526004909352818320805485166001908117909155601454909116835291208054909216179055620002213390565b6001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200025a6012600a62000391565b6200026b906461c9f36800620003a8565b60405190815260200160405180910390a362000418565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620002d657815f1904821115620002ba57620002ba62000282565b80851615620002c857918102915b93841c93908002906200029b565b509250929050565b5f82620002ee575060016200038b565b81620002fc57505f6200038b565b8160018114620003155760028114620003205762000340565b60019150506200038b565b60ff84111562000334576200033462000282565b50506001821b6200038b565b5060208310610133831016604e8410600b841016171562000365575081810a6200038b565b62000371838362000296565b805f190482111562000387576200038762000282565b0290505b92915050565b5f620003a160ff841683620002de565b9392505050565b80820281158282048414176200038b576200038b62000282565b634e487b7160e01b5f52601260045260245ffd5b5f82620003e757620003e7620003c2565b500690565b818103818111156200038b576200038b62000282565b5f82620004135762000413620003c2565b500490565b611e2280620004265f395ff3fe6080604052600436106101c8575f3560e01c80638199040e116100f2578063a9059cbb11610092578063d63cad2211610062578063d63cad22146104b4578063dd62ed3e146104d3578063ea1644d514610517578063f2fde38b14610536575f80fd5b8063a9059cbb14610458578063bf5976d314610477578063c9567bf91461048c578063d49d5181146104a0575f80fd5b80638f9a55c0116100cd5780638f9a55c01461040557806395d89b41146101d357806398a5c3151461041a578063a60ba16d14610439575f80fd5b80638199040e146103b557806384c150c1146103ca5780638da5cb5b146103e9575f80fd5b8063354ea84c11610168578063715018a611610138578063715018a61461035957806374010ece1461036d578063751039fc1461038c5780637d1db4a5146103a0575f80fd5b8063354ea84c146102e557806349bd5a5e14610306578063540574631461032557806370a082311461033a575f80fd5b806318160ddd116101a357806318160ddd1461027457806323b872dd146102965780632fd689e3146102b5578063313ce567146102ca575f80fd5b806306fdde03146101d3578063095ea7b31461020e5780631694505e1461023d575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201825260048152635045505960e01b60208201529051610205919061198c565b60405180910390f35b348015610219575f80fd5b5061022d6102283660046119ef565b610555565b6040519015158152602001610205565b348015610248575f80fd5b50600f5461025c906001600160a01b031681565b6040516001600160a01b039091168152602001610205565b34801561027f575f80fd5b5061028861056b565b604051908152602001610205565b3480156102a1575f80fd5b5061022d6102b0366004611a19565b61058c565b3480156102c0575f80fd5b5061028860135481565b3480156102d5575f80fd5b5060405160128152602001610205565b3480156102f0575f80fd5b506103046102ff366004611a57565b6105f3565b005b348015610311575f80fd5b5060105461025c906001600160a01b031681565b348015610330575f80fd5b5061028860055481565b348015610345575f80fd5b50610288610354366004611a86565b610735565b348015610364575f80fd5b50610304610756565b348015610378575f80fd5b50610304610387366004611aa1565b6107c7565b348015610397575f80fd5b5061030461080c565b3480156103ab575f80fd5b5061028860115481565b3480156103c0575f80fd5b50610288600a5481565b3480156103d5575f80fd5b5060145461025c906001600160a01b031681565b3480156103f4575f80fd5b505f546001600160a01b031661025c565b348015610410575f80fd5b5061028860125481565b348015610425575f80fd5b50610304610434366004611aa1565b610873565b348015610444575f80fd5b50610304610453366004611acc565b6108b8565b348015610463575f80fd5b5061022d6104723660046119ef565b6108ff565b348015610482575f80fd5b5061028860085481565b348015610497575f80fd5b5061030461090b565b3480156104ab575f80fd5b506102885f1981565b3480156104bf575f80fd5b506103046104ce366004611ae5565b610b1b565b3480156104de575f80fd5b506102886104ed366004611b18565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610522575f80fd5b50610304610531366004611aa1565b610b6e565b348015610541575f80fd5b50610304610550366004611a86565b610bb3565b5f610561338484610c9a565b5060015b92915050565b5f6105786012600a611c43565b610587906461c9f36800611c51565b905090565b5f610598848484610dbd565b6105e984336105e485604051806060016040528060288152602001611dc5602891396001600160a01b038a165f908152600360209081526040808320338452909152902054919061128a565b610c9a565b5060019392505050565b5f546001600160a01b031633146106255760405162461bcd60e51b815260040161061c90611c68565b60405180910390fd5b831561067f5760405162461bcd60e51b815260206004820152602360248201527f427579207265646973206d757374206265206265747765656e20302520616e6460448201526220302560e81b606482015260840161061c565b60328211156106a05760405162461bcd60e51b815260040161061c90611c9d565b82156106fa5760405162461bcd60e51b8152602060048201526024808201527f53656c6c207265646973206d757374206265206265747765656e20302520616e6044820152636420302560e01b606482015260840161061c565b603281111561071b5760405162461bcd60e51b815260040161061c90611c9d565b600793909355600991909155600190811b6008551b600a55565b6001600160a01b0381165f90815260026020526040812054610565906112c2565b5f546001600160a01b0316331461077f5760405162461bcd60e51b815260040161061c90611c68565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107f05760405162461bcd60e51b815260040161061c90611c68565b6107fc6012600a611c43565b6108069082611c51565b60115550565b5f546001600160a01b031633146108355760405162461bcd60e51b815260040161061c90611c68565b6108416012600a611c43565b610850906461c9f36800611c51565b60115561085f6012600a611c43565b61086e906461c9f36800611c51565b601255565b5f546001600160a01b0316331461089c5760405162461bcd60e51b815260040161061c90611c68565b6108a86012600a611c43565b6108b29082611c51565b60135550565b5f546001600160a01b031633146108e15760405162461bcd60e51b815260040161061c90611c68565b60108054911515600160b01b0260ff60b01b19909216919091179055565b5f610561338484610dbd565b5f546001600160a01b031633146109345760405162461bcd60e51b815260040161061c90611c68565b601054600160a01b900460ff161561098e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161061c565b600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156109f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a159190611cdf565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a849190611cdf565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ace573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af29190611cdf565b601080546001600160a81b0319166001600160a01b039290921691909117600160a01b17905550565b5f546001600160a01b03163314610b445760405162461bcd60e51b815260040161061c90611c68565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610b975760405162461bcd60e51b815260040161061c90611c68565b610ba36012600a611c43565b610bad9082611c51565b60125550565b5f546001600160a01b03163314610bdc5760405162461bcd60e51b815260040161061c90611c68565b6001600160a01b038116610c415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161061c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610cfc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161061c565b6001600160a01b038216610d5d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161061c565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e215760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161061c565b6001600160a01b038216610e835760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161061c565b5f8111610ee45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161061c565b5f546001600160a01b03848116911614801590610f0e57505f546001600160a01b03838116911614155b1561118057601054600160a01b900460ff16610fa6575f546001600160a01b03848116911614610fa65760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161061c565b601154811115610ff85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161061c565b6010546001600160a01b0383811691161461107d576012548161101a84610735565b6110249190611cfa565b1061107d5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161061c565b5f61108730610735565b6013546011549192508210159082106110a05760115491505b8080156110b75750601054600160a81b900460ff16155b80156110d157506010546001600160a01b03868116911614155b80156110e65750601054600160b01b900460ff165b801561110a57506001600160a01b0385165f9081526004602052604090205460ff16155b801561112e57506001600160a01b0384165f9081526004602052604090205460ff16155b1561117d5761113c82611344565b47801561117b576014546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611179573d5f803e3d5ffd5b505b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff16806111c057506001600160a01b0383165f9081526004602052604090205460ff165b806111f257506010546001600160a01b038581169116148015906111f257506010546001600160a01b03848116911614155b156111fe57505f611278565b6010546001600160a01b0385811691161480156112295750600f546001600160a01b03848116911614155b1561123b57600754600b55600854600c555b6010546001600160a01b0384811691161480156112665750600f546001600160a01b03858116911614155b1561127857600954600b55600a54600c555b611284848484846114b4565b50505050565b5f81848411156112ad5760405162461bcd60e51b815260040161061c919061198c565b505f6112b98486611d0d565b95945050505050565b5f6005548211156113285760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161061c565b5f6113316114e2565b905061133d8382611503565b9392505050565b6010805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138a5761138a611d20565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114059190611cdf565b8160018151811061141857611418611d20565b6001600160a01b039283166020918202929092010152600f5461143e9130911684610c9a565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906114769085905f90869030904290600401611d34565b5f604051808303815f87803b15801561148d575f80fd5b505af115801561149f573d5f803e3d5ffd5b50506010805460ff60a81b1916905550505050565b806114c1576114c1611544565b6114cc848484611571565b8061128457611284600d54600b55600e54600c55565b5f805f6114ed611662565b90925090506114fc8282611503565b9250505090565b5f61133d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116e6565b600b541580156115545750600c54155b1561155b57565b600b8054600d55600c8054600e555f9182905555565b5f805f805f8061158087611712565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506115b19087611767565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546115df90866117a8565b6001600160a01b0389165f9081526002602052604090205561160081611806565b61160a848361184c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161164f91815260200190565b60405180910390a3505050505050505050565b6005545f908190816116766012600a611c43565b611685906461c9f36800611c51565b90506116ae6116966012600a611c43565b6116a5906461c9f36800611c51565b60055490611503565b8210156116dd576005546116c46012600a611c43565b6116d3906461c9f36800611c51565b9350935050509091565b90939092509050565b5f81836117065760405162461bcd60e51b815260040161061c919061198c565b505f6112b98486611da5565b5f805f805f805f805f61172a8a600b54600c54611870565b9250925092505f6117396114e2565b90505f805f61174a8e8787876118c2565b919e509c509a509598509396509194505050505091939550919395565b5f61133d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061128a565b5f806117b48385611cfa565b90508381101561133d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161061c565b5f61180f6114e2565b90505f61181c838361190e565b305f9081526002602052604090205490915061183890826117a8565b305f90815260026020526040902055505050565b6005546118599083611767565b60055560065461186990826117a8565b6006555050565b5f8080806118896064611883898961190e565b90611503565b90505f61189b60646118838a8961190e565b90505f6118b2826118ac8b86611767565b90611767565b9992985090965090945050505050565b5f8080806118d0888661190e565b90505f6118dd888761190e565b90505f6118ea888861190e565b90505f6118fb826118ac8686611767565b939b939a50919850919650505050505050565b5f825f0361191d57505f610565565b5f6119288385611c51565b9050826119358583611da5565b1461133d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161061c565b5f602080835283518060208501525f5b818110156119b85785810183015185820160400152820161199c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119ec575f80fd5b50565b5f8060408385031215611a00575f80fd5b8235611a0b816119d8565b946020939093013593505050565b5f805f60608486031215611a2b575f80fd5b8335611a36816119d8565b92506020840135611a46816119d8565b929592945050506040919091013590565b5f805f8060808587031215611a6a575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215611a96575f80fd5b813561133d816119d8565b5f60208284031215611ab1575f80fd5b5035919050565b80358015158114611ac7575f80fd5b919050565b5f60208284031215611adc575f80fd5b61133d82611ab8565b5f8060408385031215611af6575f80fd5b8235611b01816119d8565b9150611b0f60208401611ab8565b90509250929050565b5f8060408385031215611b29575f80fd5b8235611b34816119d8565b91506020830135611b44816119d8565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b9d57815f1904821115611b8357611b83611b4f565b80851615611b9057918102915b93841c9390800290611b68565b509250929050565b5f82611bb357506001610565565b81611bbf57505f610565565b8160018114611bd55760028114611bdf57611bfb565b6001915050610565565b60ff841115611bf057611bf0611b4f565b50506001821b610565565b5060208310610133831016604e8410600b8410161715611c1e575081810a610565565b611c288383611b63565b805f1904821115611c3b57611c3b611b4f565b029392505050565b5f61133d60ff841683611ba5565b808202811582820484141761056557610565611b4f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f54617820666565206d757374206265206265747765656e20302520616e642034604082015261392560f01b606082015260800190565b5f60208284031215611cef575f80fd5b815161133d816119d8565b8082018082111561056557610565611b4f565b8181038181111561056557610565611b4f565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611d845784516001600160a01b031683529383019391830191600101611d5f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611dbf57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220270f4d94ebec61e5fbce9b7ec85deee5a07bd829b0ae4bbd47f7ffe74d08e0e664736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101c8575f3560e01c80638199040e116100f2578063a9059cbb11610092578063d63cad2211610062578063d63cad22146104b4578063dd62ed3e146104d3578063ea1644d514610517578063f2fde38b14610536575f80fd5b8063a9059cbb14610458578063bf5976d314610477578063c9567bf91461048c578063d49d5181146104a0575f80fd5b80638f9a55c0116100cd5780638f9a55c01461040557806395d89b41146101d357806398a5c3151461041a578063a60ba16d14610439575f80fd5b80638199040e146103b557806384c150c1146103ca5780638da5cb5b146103e9575f80fd5b8063354ea84c11610168578063715018a611610138578063715018a61461035957806374010ece1461036d578063751039fc1461038c5780637d1db4a5146103a0575f80fd5b8063354ea84c146102e557806349bd5a5e14610306578063540574631461032557806370a082311461033a575f80fd5b806318160ddd116101a357806318160ddd1461027457806323b872dd146102965780632fd689e3146102b5578063313ce567146102ca575f80fd5b806306fdde03146101d3578063095ea7b31461020e5780631694505e1461023d575f80fd5b366101cf57005b5f80fd5b3480156101de575f80fd5b5060408051808201825260048152635045505960e01b60208201529051610205919061198c565b60405180910390f35b348015610219575f80fd5b5061022d6102283660046119ef565b610555565b6040519015158152602001610205565b348015610248575f80fd5b50600f5461025c906001600160a01b031681565b6040516001600160a01b039091168152602001610205565b34801561027f575f80fd5b5061028861056b565b604051908152602001610205565b3480156102a1575f80fd5b5061022d6102b0366004611a19565b61058c565b3480156102c0575f80fd5b5061028860135481565b3480156102d5575f80fd5b5060405160128152602001610205565b3480156102f0575f80fd5b506103046102ff366004611a57565b6105f3565b005b348015610311575f80fd5b5060105461025c906001600160a01b031681565b348015610330575f80fd5b5061028860055481565b348015610345575f80fd5b50610288610354366004611a86565b610735565b348015610364575f80fd5b50610304610756565b348015610378575f80fd5b50610304610387366004611aa1565b6107c7565b348015610397575f80fd5b5061030461080c565b3480156103ab575f80fd5b5061028860115481565b3480156103c0575f80fd5b50610288600a5481565b3480156103d5575f80fd5b5060145461025c906001600160a01b031681565b3480156103f4575f80fd5b505f546001600160a01b031661025c565b348015610410575f80fd5b5061028860125481565b348015610425575f80fd5b50610304610434366004611aa1565b610873565b348015610444575f80fd5b50610304610453366004611acc565b6108b8565b348015610463575f80fd5b5061022d6104723660046119ef565b6108ff565b348015610482575f80fd5b5061028860085481565b348015610497575f80fd5b5061030461090b565b3480156104ab575f80fd5b506102885f1981565b3480156104bf575f80fd5b506103046104ce366004611ae5565b610b1b565b3480156104de575f80fd5b506102886104ed366004611b18565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610522575f80fd5b50610304610531366004611aa1565b610b6e565b348015610541575f80fd5b50610304610550366004611a86565b610bb3565b5f610561338484610c9a565b5060015b92915050565b5f6105786012600a611c43565b610587906461c9f36800611c51565b905090565b5f610598848484610dbd565b6105e984336105e485604051806060016040528060288152602001611dc5602891396001600160a01b038a165f908152600360209081526040808320338452909152902054919061128a565b610c9a565b5060019392505050565b5f546001600160a01b031633146106255760405162461bcd60e51b815260040161061c90611c68565b60405180910390fd5b831561067f5760405162461bcd60e51b815260206004820152602360248201527f427579207265646973206d757374206265206265747765656e20302520616e6460448201526220302560e81b606482015260840161061c565b60328211156106a05760405162461bcd60e51b815260040161061c90611c9d565b82156106fa5760405162461bcd60e51b8152602060048201526024808201527f53656c6c207265646973206d757374206265206265747765656e20302520616e6044820152636420302560e01b606482015260840161061c565b603281111561071b5760405162461bcd60e51b815260040161061c90611c9d565b600793909355600991909155600190811b6008551b600a55565b6001600160a01b0381165f90815260026020526040812054610565906112c2565b5f546001600160a01b0316331461077f5760405162461bcd60e51b815260040161061c90611c68565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b031633146107f05760405162461bcd60e51b815260040161061c90611c68565b6107fc6012600a611c43565b6108069082611c51565b60115550565b5f546001600160a01b031633146108355760405162461bcd60e51b815260040161061c90611c68565b6108416012600a611c43565b610850906461c9f36800611c51565b60115561085f6012600a611c43565b61086e906461c9f36800611c51565b601255565b5f546001600160a01b0316331461089c5760405162461bcd60e51b815260040161061c90611c68565b6108a86012600a611c43565b6108b29082611c51565b60135550565b5f546001600160a01b031633146108e15760405162461bcd60e51b815260040161061c90611c68565b60108054911515600160b01b0260ff60b01b19909216919091179055565b5f610561338484610dbd565b5f546001600160a01b031633146109345760405162461bcd60e51b815260040161061c90611c68565b601054600160a01b900460ff161561098e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e67000000000000000000604482015260640161061c565b600f80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa1580156109f1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a159190611cdf565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a849190611cdf565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ace573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610af29190611cdf565b601080546001600160a81b0319166001600160a01b039290921691909117600160a01b17905550565b5f546001600160a01b03163314610b445760405162461bcd60e51b815260040161061c90611c68565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610b975760405162461bcd60e51b815260040161061c90611c68565b610ba36012600a611c43565b610bad9082611c51565b60125550565b5f546001600160a01b03163314610bdc5760405162461bcd60e51b815260040161061c90611c68565b6001600160a01b038116610c415760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161061c565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316610cfc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161061c565b6001600160a01b038216610d5d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161061c565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e215760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161061c565b6001600160a01b038216610e835760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161061c565b5f8111610ee45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161061c565b5f546001600160a01b03848116911614801590610f0e57505f546001600160a01b03838116911614155b1561118057601054600160a01b900460ff16610fa6575f546001600160a01b03848116911614610fa65760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400606482015260840161061c565b601154811115610ff85760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000604482015260640161061c565b6010546001600160a01b0383811691161461107d576012548161101a84610735565b6110249190611cfa565b1061107d5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b606482015260840161061c565b5f61108730610735565b6013546011549192508210159082106110a05760115491505b8080156110b75750601054600160a81b900460ff16155b80156110d157506010546001600160a01b03868116911614155b80156110e65750601054600160b01b900460ff165b801561110a57506001600160a01b0385165f9081526004602052604090205460ff16155b801561112e57506001600160a01b0384165f9081526004602052604090205460ff16155b1561117d5761113c82611344565b47801561117b576014546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611179573d5f803e3d5ffd5b505b505b50505b6001600160a01b0383165f9081526004602052604090205460019060ff16806111c057506001600160a01b0383165f9081526004602052604090205460ff165b806111f257506010546001600160a01b038581169116148015906111f257506010546001600160a01b03848116911614155b156111fe57505f611278565b6010546001600160a01b0385811691161480156112295750600f546001600160a01b03848116911614155b1561123b57600754600b55600854600c555b6010546001600160a01b0384811691161480156112665750600f546001600160a01b03858116911614155b1561127857600954600b55600a54600c555b611284848484846114b4565b50505050565b5f81848411156112ad5760405162461bcd60e51b815260040161061c919061198c565b505f6112b98486611d0d565b95945050505050565b5f6005548211156113285760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b606482015260840161061c565b5f6113316114e2565b905061133d8382611503565b9392505050565b6010805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138a5761138a611d20565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114059190611cdf565b8160018151811061141857611418611d20565b6001600160a01b039283166020918202929092010152600f5461143e9130911684610c9a565b600f5460405163791ac94760e01b81526001600160a01b039091169063791ac947906114769085905f90869030904290600401611d34565b5f604051808303815f87803b15801561148d575f80fd5b505af115801561149f573d5f803e3d5ffd5b50506010805460ff60a81b1916905550505050565b806114c1576114c1611544565b6114cc848484611571565b8061128457611284600d54600b55600e54600c55565b5f805f6114ed611662565b90925090506114fc8282611503565b9250505090565b5f61133d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116e6565b600b541580156115545750600c54155b1561155b57565b600b8054600d55600c8054600e555f9182905555565b5f805f805f8061158087611712565b6001600160a01b038f165f90815260026020526040902054959b509399509197509550935091506115b19087611767565b6001600160a01b03808b165f9081526002602052604080822093909355908a16815220546115df90866117a8565b6001600160a01b0389165f9081526002602052604090205561160081611806565b61160a848361184c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161164f91815260200190565b60405180910390a3505050505050505050565b6005545f908190816116766012600a611c43565b611685906461c9f36800611c51565b90506116ae6116966012600a611c43565b6116a5906461c9f36800611c51565b60055490611503565b8210156116dd576005546116c46012600a611c43565b6116d3906461c9f36800611c51565b9350935050509091565b90939092509050565b5f81836117065760405162461bcd60e51b815260040161061c919061198c565b505f6112b98486611da5565b5f805f805f805f805f61172a8a600b54600c54611870565b9250925092505f6117396114e2565b90505f805f61174a8e8787876118c2565b919e509c509a509598509396509194505050505091939550919395565b5f61133d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061128a565b5f806117b48385611cfa565b90508381101561133d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161061c565b5f61180f6114e2565b90505f61181c838361190e565b305f9081526002602052604090205490915061183890826117a8565b305f90815260026020526040902055505050565b6005546118599083611767565b60055560065461186990826117a8565b6006555050565b5f8080806118896064611883898961190e565b90611503565b90505f61189b60646118838a8961190e565b90505f6118b2826118ac8b86611767565b90611767565b9992985090965090945050505050565b5f8080806118d0888661190e565b90505f6118dd888761190e565b90505f6118ea888861190e565b90505f6118fb826118ac8686611767565b939b939a50919850919650505050505050565b5f825f0361191d57505f610565565b5f6119288385611c51565b9050826119358583611da5565b1461133d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161061c565b5f602080835283518060208501525f5b818110156119b85785810183015185820160400152820161199c565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146119ec575f80fd5b50565b5f8060408385031215611a00575f80fd5b8235611a0b816119d8565b946020939093013593505050565b5f805f60608486031215611a2b575f80fd5b8335611a36816119d8565b92506020840135611a46816119d8565b929592945050506040919091013590565b5f805f8060808587031215611a6a575f80fd5b5050823594602084013594506040840135936060013592509050565b5f60208284031215611a96575f80fd5b813561133d816119d8565b5f60208284031215611ab1575f80fd5b5035919050565b80358015158114611ac7575f80fd5b919050565b5f60208284031215611adc575f80fd5b61133d82611ab8565b5f8060408385031215611af6575f80fd5b8235611b01816119d8565b9150611b0f60208401611ab8565b90509250929050565b5f8060408385031215611b29575f80fd5b8235611b34816119d8565b91506020830135611b44816119d8565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611b9d57815f1904821115611b8357611b83611b4f565b80851615611b9057918102915b93841c9390800290611b68565b509250929050565b5f82611bb357506001610565565b81611bbf57505f610565565b8160018114611bd55760028114611bdf57611bfb565b6001915050610565565b60ff841115611bf057611bf0611b4f565b50506001821b610565565b5060208310610133831016604e8410600b8410161715611c1e575081810a610565565b611c288383611b63565b805f1904821115611c3b57611c3b611b4f565b029392505050565b5f61133d60ff841683611ba5565b808202811582820484141761056557610565611b4f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f54617820666565206d757374206265206265747765656e20302520616e642034604082015261392560f01b606082015260800190565b5f60208284031215611cef575f80fd5b815161133d816119d8565b8082018082111561056557610565611b4f565b8181038181111561056557610565611b4f565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611d845784516001600160a01b031683529383019391830191600101611d5f565b50506001600160a01b03969096166060850152505050608001529392505050565b5f82611dbf57634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220270f4d94ebec61e5fbce9b7ec85deee5a07bd829b0ae4bbd47f7ffe74d08e0e664736f6c63430008180033

Deployed Bytecode Sourcemap

4265:14049:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8736:83;;;;;;;;;;-1:-1:-1;8806:5:0;;;;;;;;;;;-1:-1:-1;;;8806:5:0;;;;8736:83;;;;8806:5;8736:83;:::i;:::-;;;;;;;;9675:193;;;;;;;;;;-1:-1:-1;9675:193:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9675:193:0;1023:187:1;5287:41:0;;;;;;;;;;-1:-1:-1;5287:41:0;;;;-1:-1:-1;;;;;5287:41:0;;;;;;-1:-1:-1;;;;;1405:32:1;;;1387:51;;1375:2;1360:18;5287:41:0;1215:229:1;9013:99:0;;;;;;;;;;;;;:::i;:::-;;;1595:25:1;;;1583:2;1568:18;9013:99:0;1449:177:1;9876:446:0;;;;;;;;;;-1:-1:-1;9876:446:0;;;;;:::i;:::-;;:::i;5601:61::-;;;;;;;;;;;;;;;;8922:83;;;;;;;;;;-1:-1:-1;8922:83:0;;4490:2;2234:36:1;;2222:2;2207:18;8922:83:0;2092:184:1;6892:900:0;;;;;;;;;;-1:-1:-1;6892:900:0;;;;;:::i;:::-;;:::i;:::-;;5335:28;;;;;;;;;;-1:-1:-1;5335:28:0;;;;-1:-1:-1;;;;;5335:28:0;;;4822:61;;;;;;;;;;;;;;;;9120:148;;;;;;;;;;-1:-1:-1;9120:148:0;;;;;:::i;:::-;;:::i;1720:::-;;;;;;;;;;;;;:::i;8423:125::-;;;;;;;;;;-1:-1:-1;8423:125:0;;;;;:::i;:::-;;:::i;6759:::-;;;;;;;;;;;;;:::i;5477:54::-;;;;;;;;;;;;;;;;5046:32;;;;;;;;;;;;;;;;5671:36;;;;;;;;;;-1:-1:-1;5671:36:0;;;;-1:-1:-1;;;;;5671:36:0;;;1506:79;;;;;;;;;;-1:-1:-1;1544:7:0;1571:6;-1:-1:-1;;;;;1571:6:0;1506:79;;5538:56;;;;;;;;;;;;;;;;8205:179;;;;;;;;;;-1:-1:-1;8205:179:0;;;;;:::i;:::-;;:::i;7844:104::-;;;;;;;;;;-1:-1:-1;7844:104:0;;;;;:::i;:::-;;:::i;9276:199::-;;;;;;;;;;-1:-1:-1;9276:199:0;;;;;:::i;:::-;;:::i;4966:31::-;;;;;;;;;;;;;;;;6268:483;;;;;;;;;;;;;:::i;4697:41::-;;;;;;;;;;-1:-1:-1;4697:41:0;-1:-1:-1;;4697:41:0;;7956:157;;;;;;;;;;-1:-1:-1;7956:157:0;;;;;:::i;:::-;;:::i;9483:184::-;;;;;;;;;;-1:-1:-1;9483:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;9632:18:0;;;9600:7;9632:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9483:184;8556:132;;;;;;;;;;-1:-1:-1;8556:132:0;;;;;:::i;:::-;;:::i;1876:281::-;;;;;;;;;;-1:-1:-1;1876:281:0;;;;;:::i;:::-;;:::i;9675:193::-;9777:4;9799:39;300:10;9822:7;9831:6;9799:8;:39::i;:::-;-1:-1:-1;9856:4:0;9675:193;;;;;:::o;9013:99::-;9066:7;4802:13;4490:2;4802;:13;:::i;:::-;4784:31;;:15;:31;:::i;:::-;9086:18;;9013:99;:::o;9876:446::-;10008:4;10025:36;10035:6;10043:9;10054:6;10025:9;:36::i;:::-;10072:220;10095:6;300:10;10143:138;10199:6;10143:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10143:19:0;;;;;;:11;:19;;;;;;;;300:10;10143:33;;;;;;;;;;:37;:138::i;:::-;10072:8;:220::i;:::-;-1:-1:-1;10310:4:0;9876:446;;;;;:::o;6892:900::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;;;;;;;;;7128:18;;7084:125:::1;;;::::0;-1:-1:-1;;;7084:125:0;;6624:2:1;7084:125:0::1;::::0;::::1;6606:21:1::0;6663:2;6643:18;;;6636:30;6702:34;6682:18;;;6675:62;-1:-1:-1;;;6753:18:1;;;6746:33;6796:19;;7084:125:0::1;6422:399:1::0;7084:125:0::1;7277:2;7262:11;:17;;7220:121;;;;-1:-1:-1::0;;;7220:121:0::1;;;;;;;:::i;:::-;7397:19:::0;;7352:128:::1;;;::::0;-1:-1:-1;;;7352:128:0;;7431:2:1;7352:128:0::1;::::0;::::1;7413:21:1::0;7470:2;7450:18;;;7443:30;7509:34;7489:18;;;7482:62;-1:-1:-1;;;7560:18:1;;;7553:34;7604:19;;7352:128:0::1;7229:400:1::0;7352:128:0::1;7550:2;7534:12;:18;;7491:123;;;;-1:-1:-1::0;;;7491:123:0::1;;;;;;;:::i;:::-;7625:14;:30:::0;;;;7666:15:::1;:32:::0;;;;7739:1:::1;7724:16:::0;;::::1;7709:12;:31:::0;7767:17:::1;7751:13;:33:::0;6892:900::o;9120:148::-;-1:-1:-1;;;;;9229:30:0;;9186:7;9229:30;;;:21;:30;;;;;;9213:47;;:15;:47::i;1720:148::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;1827:1:::1;1811:6:::0;;1790:40:::1;::::0;-1:-1:-1;;;;;1811:6:0;;::::1;::::0;1790:40:::1;::::0;1827:1;;1790:40:::1;1858:1;1841:19:::0;;-1:-1:-1;;;;;;1841:19:0::1;::::0;;1720:148::o;8423:125::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;8526:14:::1;4490:2:::0;8526::::1;:14;:::i;:::-;8512:28;::::0;:11;:28:::1;:::i;:::-;8497:12;:43:::0;-1:-1:-1;8423:125:0:o;6759:::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;4802:13:::1;4490:2;4802;:13;:::i;:::-;4784:31;::::0;:15:::1;:31;:::i;:::-;6811:12;:26:::0;4802:13:::1;4490:2;4802;:13;:::i;:::-;4784:31;::::0;:15:::1;:31;:::i;:::-;6848:14;:28:::0;6759:125::o;8205:179::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;8362:14:::1;4490:2:::0;8362::::1;:14;:::i;:::-;8341:35;::::0;:18;:35:::1;:::i;:::-;8319:19;:57:::0;-1:-1:-1;8205:179:0:o;7844:104::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;7914:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;7914:26:0::1;-1:-1:-1::0;;;;7914:26:0;;::::1;::::0;;;::::1;::::0;;7844:104::o;9276:199::-;9381:4;9403:42;300:10;9427:9;9438:6;9403:9;:42::i;6268:483::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;6328:11:::1;::::0;-1:-1:-1;;;6328:11:0;::::1;;;6327:12;6319:48;;;::::0;-1:-1:-1;;;6319:48:0;;7836:2:1;6319:48:0::1;::::0;::::1;7818:21:1::0;7875:2;7855:18;;;7848:30;7914:25;7894:18;;;7887:53;7957:18;;6319:48:0::1;7634:347:1::0;6319:48:0::1;6523:15;:34:::0;;-1:-1:-1;;;;;;6523:34:0::1;6459:42;6523:34:::0;;::::1;::::0;;;6602:26:::1;::::0;;-1:-1:-1;;;6602:26:0;;;;6459:42;;6602:24:::1;::::0;:26:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;6459:42;6602:26:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;6584:53:0::1;;6660:4;6680:16;-1:-1:-1::0;;;;;6680:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6584:130;::::0;-1:-1:-1;;;;;;6584:130:0::1;::::0;;;;;;-1:-1:-1;;;;;8472:15:1;;;6584:130:0::1;::::0;::::1;8454:34:1::0;8524:15;;8504:18;;;8497:43;8389:18;;6584:130:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6568:13;:146:::0;;-1:-1:-1;;;;;;6725:18:0;-1:-1:-1;;;;;6568:146:0;;;::::1;6725:18:::0;;;;-1:-1:-1;;;6725:18:0::1;::::0;;-1:-1:-1;6268:483:0:o;7956:157::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8067:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;8067:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7956:157::o;8556:132::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;8666:14:::1;4490:2:::0;8666::::1;:14;:::i;:::-;8650:30;::::0;:13;:30:::1;:::i;:::-;8633:14;:47:::0;-1:-1:-1;8556:132:0:o;1876:281::-;1633:6;;-1:-1:-1;;;;;1633:6:0;300:10;1633:22;1625:67;;;;-1:-1:-1;;;1625:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1979:22:0;::::1;1957:110;;;::::0;-1:-1:-1;;;1957:110:0;;8753:2:1;1957:110:0::1;::::0;::::1;8735:21:1::0;8792:2;8772:18;;;8765:30;8831:34;8811:18;;;8804:62;-1:-1:-1;;;8882:18:1;;;8875:36;8928:19;;1957:110:0::1;8551:402:1::0;1957:110:0::1;2104:6;::::0;;2083:38:::1;::::0;-1:-1:-1;;;;;2083:38:0;;::::1;::::0;2104:6;::::1;::::0;2083:38:::1;::::0;::::1;2132:6;:17:::0;;-1:-1:-1;;;;;;2132:17:0::1;-1:-1:-1::0;;;;;2132:17:0;;;::::1;::::0;;;::::1;::::0;;1876:281::o;10330:369::-;-1:-1:-1;;;;;10457:19:0;;10449:68;;;;-1:-1:-1;;;10449:68:0;;9160:2:1;10449:68:0;;;9142:21:1;9199:2;9179:18;;;9172:30;9238:34;9218:18;;;9211:62;-1:-1:-1;;;9289:18:1;;;9282:34;9333:19;;10449:68:0;8958:400:1;10449:68:0;-1:-1:-1;;;;;10536:21:0;;10528:68;;;;-1:-1:-1;;;10528:68:0;;9565:2:1;10528:68:0;;;9547:21:1;9604:2;9584:18;;;9577:30;9643:34;9623:18;;;9616:62;-1:-1:-1;;;9694:18:1;;;9687:32;9736:19;;10528:68:0;9363:398:1;10528:68:0;-1:-1:-1;;;;;10607:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10659:32;;1595:25:1;;;10659:32:0;;1568:18:1;10659:32:0;;;;;;;10330:369;;;:::o;10707:2579::-;-1:-1:-1;;;;;10829:18:0;;10821:68;;;;-1:-1:-1;;;10821:68:0;;9968:2:1;10821:68:0;;;9950:21:1;10007:2;9987:18;;;9980:30;10046:34;10026:18;;;10019:62;-1:-1:-1;;;10097:18:1;;;10090:35;10142:19;;10821:68:0;9766:401:1;10821:68:0;-1:-1:-1;;;;;10908:16:0;;10900:64;;;;-1:-1:-1;;;10900:64:0;;10374:2:1;10900:64:0;;;10356:21:1;10413:2;10393:18;;;10386:30;10452:34;10432:18;;;10425:62;-1:-1:-1;;;10503:18:1;;;10496:33;10546:19;;10900:64:0;10172:399:1;10900:64:0;10992:1;10983:6;:10;10975:64;;;;-1:-1:-1;;;10975:64:0;;10778:2:1;10975:64:0;;;10760:21:1;10817:2;10797:18;;;10790:30;10856:34;10836:18;;;10829:62;-1:-1:-1;;;10907:18:1;;;10900:39;10956:19;;10975:64:0;10576:405:1;10975:64:0;1544:7;1571:6;-1:-1:-1;;;;;11056:15:0;;;1571:6;;11056:15;;;;:32;;-1:-1:-1;1544:7:0;1571:6;-1:-1:-1;;;;;11075:13:0;;;1571:6;;11075:13;;11056:32;11052:1474;;;11143:11;;-1:-1:-1;;;11143:11:0;;;;11138:205;;1544:7;1571:6;-1:-1:-1;;;;;11205:15:0;;;1571:6;;11205:15;11175:152;;;;-1:-1:-1;;;11175:152:0;;11188:2:1;11175:152:0;;;11170:21:1;11227:2;11207:18;;;11200:30;11266:34;11246:18;;;11239:62;11337:33;11317:18;;;11310:61;11388:19;;11175:152:0;10986:427:1;11175:152:0;11377:12;;11367:6;:22;;11359:63;;;;-1:-1:-1;;;11359:63:0;;11620:2:1;11359:63:0;;;11602:21:1;11659:2;11639:18;;;11632:30;11698;11678:18;;;11671:58;11746:18;;11359:63:0;11418:352:1;11359:63:0;11449:13;;-1:-1:-1;;;;;11443:19:0;;;11449:13;;11443:19;11439:208;;11538:14;;11529:6;11513:13;11523:2;11513:9;:13::i;:::-;:22;;;;:::i;:::-;:39;11483:148;;;;-1:-1:-1;;;11483:148:0;;12107:2:1;11483:148:0;;;12089:21:1;12146:2;12126:18;;;12119:30;12185:34;12165:18;;;12158:62;-1:-1:-1;;;12236:18:1;;;12229:33;12279:19;;11483:148:0;11905:399:1;11483:148:0;11663:28;11694:24;11712:4;11694:9;:24::i;:::-;11772:19;;11836:12;;11663:55;;-1:-1:-1;11748:43:0;;;;11812:36;;11808:112;;11892:12;;11869:35;;11808:112;11958:7;:35;;;;-1:-1:-1;11987:6:0;;-1:-1:-1;;;11987:6:0;;;;11986:7;11958:35;:77;;;;-1:-1:-1;12022:13:0;;-1:-1:-1;;;;;12014:21:0;;;12022:13;;12014:21;;11958:77;:109;;;;-1:-1:-1;12056:11:0;;-1:-1:-1;;;12056:11:0;;;;11958:109;:155;;;;-1:-1:-1;;;;;;12089:24:0;;;;;;:18;:24;;;;;;;;12088:25;11958:155;:199;;;;-1:-1:-1;;;;;;12135:22:0;;;;;;:18;:22;;;;;;;;12134:23;11958:199;11936:579;;;12192:39;12210:20;12192:17;:39::i;:::-;12279:21;12323:22;;12319:181;;12378:21;;12370:110;;-1:-1:-1;;;;;12378:21:0;;;;12436;12370:110;;;;;12378:21;12370:110;12378:21;12370:110;12436:21;12378;12370:110;;;;;;;;;;;;;;;;;;;;;12319:181;12173:342;11936:579;11090:1436;;11052:1474;-1:-1:-1;;;;;12616:24:0;;12538:12;12616:24;;;:18;:24;;;;;;12553:4;;12616:24;;;:50;;-1:-1:-1;;;;;;12644:22:0;;;;;;:18;:22;;;;;;;;12616:50;12615:115;;;-1:-1:-1;12693:13:0;;-1:-1:-1;;;;;12685:21:0;;;12693:13;;12685:21;;;;:44;;-1:-1:-1;12716:13:0;;-1:-1:-1;;;;;12710:19:0;;;12716:13;;12710:19;;12685:44;12597:628;;;-1:-1:-1;12767:5:0;12597:628;;;12849:13;;-1:-1:-1;;;;;12841:21:0;;;12849:13;;12841:21;:55;;;;-1:-1:-1;12880:15:0;;-1:-1:-1;;;;;12866:30:0;;;12880:15;;12866:30;;12841:55;12837:163;;;12929:14;;12917:9;:26;12972:12;;12962:7;:22;12837:163;13059:13;;-1:-1:-1;;;;;13053:19:0;;;13059:13;;13053:19;:55;;;;-1:-1:-1;13092:15:0;;-1:-1:-1;;;;;13076:32:0;;;13092:15;;13076:32;;13053:55;13049:165;;;13141:15;;13129:9;:27;13185:13;;13175:7;:23;13049:165;13237:41;13252:4;13258:2;13262:6;13270:7;13237:14;:41::i;:::-;10810:2476;10707:2579;;;:::o;2519:224::-;2639:7;2675:12;2667:6;;;;2659:29;;;;-1:-1:-1;;;2659:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2699:9:0;2711:5;2715:1;2711;:5;:::i;:::-;2699:17;2519:224;-1:-1:-1;;;;;2519:224:0:o;13294:328::-;13385:7;13443:16;;13432:7;:27;;13410:119;;;;-1:-1:-1;;;13410:119:0;;12644:2:1;13410:119:0;;;12626:21:1;12683:2;12663:18;;;12656:30;12722:34;12702:18;;;12695:62;-1:-1:-1;;;12773:18:1;;;12766:40;12823:19;;13410:119:0;12442:406:1;13410:119:0;13540:19;13562:10;:8;:10::i;:::-;13540:32;-1:-1:-1;13590:24:0;:7;13540:32;13590:11;:24::i;:::-;13583:31;13294:328;-1:-1:-1;;;13294:328:0:o;13630:484::-;5803:6;:13;;-1:-1:-1;;;;5803:13:0;-1:-1:-1;;;5803:13:0;;;13733:16:::1;::::0;;13747:1:::1;13733:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13733:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13733:16:0::1;13709:40;;13778:4;13760;13765:1;13760:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13760:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13804:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13804:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13760:7;;13804:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13794:4;13799:1;13794:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13794:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13869:15:::1;::::0;13837:62:::1;::::0;13854:4:::1;::::0;13869:15:::1;13887:11:::0;13837:8:::1;:62::i;:::-;13910:15;::::0;:196:::1;::::0;-1:-1:-1;;;13910:196:0;;-1:-1:-1;;;;;13910:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13991:11;;13910:15:::1;::::0;14033:4;;14060::::1;::::0;14080:15:::1;::::0;13910:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5839:6:0;:14;;-1:-1:-1;;;;5839:14:0;;;-1:-1:-1;;;;13630:484:0:o;14122:288::-;14278:7;14273:32;;14287:18;:16;:18::i;:::-;14316:44;14334:6;14342:9;14353:6;14316:17;:44::i;:::-;14376:7;14371:31;;14385:17;15947:18;;15935:9;:30;15986:16;;15976:7;:26;15889:121;17762:198;17804:7;17825:15;17842;17861:19;:17;:19::i;:::-;17824:56;;-1:-1:-1;17824:56:0;-1:-1:-1;17898:20:0;17824:56;;17898:11;:20::i;:::-;17891:27;;;;17762:198;:::o;3005:132::-;3063:7;3090:39;3094:1;3097;3090:39;;;;;;;;;;;;;;;;;:3;:39::i;15656:225::-;15707:9;;:14;:30;;;;-1:-1:-1;15725:7:0;;:12;15707:30;15703:43;;;15656:225::o;15703:43::-;15779:9;;;15758:18;:30;15818:7;;;15799:16;:26;-1:-1:-1;15838:13:0;;;;15862:11;15656:225::o;14418:782::-;14565:15;14595:23;14633:12;14660:23;14698:12;14725;14751:19;14762:7;14751:10;:19::i;:::-;-1:-1:-1;;;;;14813:29:0;;;;;;:21;:29;;;;;;14550:220;;-1:-1:-1;14550:220:0;;-1:-1:-1;14550:220:0;;-1:-1:-1;14550:220:0;-1:-1:-1;14550:220:0;-1:-1:-1;14550:220:0;-1:-1:-1;14813:66:0;;14550:220;14813:33;:66::i;:::-;-1:-1:-1;;;;;14781:29:0;;;;;;;:21;:29;;;;;;:98;;;;14925:32;;;;;;;:77;;14976:15;14925:36;:77::i;:::-;-1:-1:-1;;;;;14890:32:0;;;;;;:21;:32;;;;;:112;15013:17;15025:4;15013:11;:17::i;:::-;15109:23;15121:4;15127;15109:11;:23::i;:::-;15165:9;-1:-1:-1;;;;;15148:44:0;15157:6;-1:-1:-1;;;;;15148:44:0;;15176:15;15148:44;;;;1595:25:1;;1583:2;1568:18;;1449:177;15148:44:0;;;;;;;;14539:661;;;;;;14418:782;;;:::o;17968:343::-;18066:16;;18019:7;;;;;4802:13;4490:2;4802;:13;:::i;:::-;4784:31;;:15;:31;:::i;:::-;18093:29;-1:-1:-1;18147:33:0;4802:13;4490:2;4802;:13;:::i;:::-;4784:31;;:15;:31;:::i;:::-;18147:16;;;:20;:33::i;:::-;18137:7;:43;18133:100;;;18203:16;;4802:13;4490:2;4802;:13;:::i;:::-;4784:31;;:15;:31;:::i;:::-;18195:38;;;;;;17968:343;;:::o;18133:100::-;18252:7;;18261;;-1:-1:-1;17968:343:0;-1:-1:-1;17968:343:0:o;3145:223::-;3265:7;3300:12;3293:5;3285:28;;;;-1:-1:-1;;;3285:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3324:9:0;3336:5;3340:1;3336;:5;:::i;16018:704::-;16118:7;16140;16162;16184;16206;16228;16278:23;16316:12;16343;16369:44;16385:7;16394:9;;16405:7;;16369:15;:44::i;:::-;16263:150;;;;;;16424:19;16446:10;:8;:10::i;:::-;16424:32;;16482:15;16512:23;16550:12;16576:59;16602:7;16611:4;16617;16623:11;16576:25;:59::i;:::-;16467:168;;-1:-1:-1;16467:168:0;-1:-1:-1;16467:168:0;-1:-1:-1;16686:15:0;;-1:-1:-1;16703:4:0;;-1:-1:-1;16709:4:0;;-1:-1:-1;;;;;16018:704:0;;;;;;;:::o;2375:136::-;2433:7;2460:43;2464:1;2467;2460:43;;;;;;;;;;;;;;;;;:3;:43::i;2188:179::-;2246:7;;2278:5;2282:1;2278;:5;:::i;:::-;2266:17;;2307:1;2302;:6;;2294:46;;;;-1:-1:-1;;;2294:46:0;;14526:2:1;2294:46:0;;;14508:21:1;14565:2;14545:18;;;14538:30;14604:29;14584:18;;;14577:57;14651:18;;2294:46:0;14324:351:1;15208:263:0;15262:19;15284:10;:8;:10::i;:::-;15262:32;-1:-1:-1;15305:13:0;15321:21;:4;15262:32;15321:8;:21::i;:::-;15436:4;15392:60;;;;:21;:60;;;;;;15305:37;;-1:-1:-1;15392:71:0;;15305:37;15392:64;:71::i;:::-;15383:4;15353:36;;;;:21;:36;;;;;:110;-1:-1:-1;;;15208:263:0:o;15479:169::-;15566:16;;:26;;15587:4;15566:20;:26::i;:::-;15547:16;:45;15618:12;;:22;;15635:4;15618:16;:22::i;:::-;15603:12;:37;-1:-1:-1;;15479:169:0:o;16730:470::-;16903:7;;;;16997:30;17023:3;16997:21;:7;17009:8;16997:11;:21::i;:::-;:25;;:30::i;:::-;16982:45;-1:-1:-1;17038:12:0;17053:28;17077:3;17053:19;:7;17065:6;17053:11;:19::i;:28::-;17038:43;-1:-1:-1;17092:23:0;17118:27;17038:43;17118:17;:7;17130:4;17118:11;:17::i;:::-;:21;;:27::i;:::-;17092:53;17181:4;;-1:-1:-1;17187:4:0;;-1:-1:-1;16730:470:0;;-1:-1:-1;;;;;16730:470:0:o;17208:546::-;17415:7;;;;17512:24;:7;17524:11;17512;:24::i;:::-;17494:42;-1:-1:-1;17547:12:0;17562:21;:4;17571:11;17562:8;:21::i;:::-;17547:36;-1:-1:-1;17594:13:0;17610:21;:4;17619:11;17610:8;:21::i;:::-;17594:37;-1:-1:-1;17642:23:0;17668:28;17594:37;17668:17;:7;17680:4;17668:11;:17::i;:28::-;17715:7;;;;-1:-1:-1;17741:4:0;;-1:-1:-1;17208:546:0;;-1:-1:-1;;;;;;;17208:546:0:o;2751:246::-;2809:7;2833:1;2838;2833:6;2829:47;;-1:-1:-1;2863:1:0;2856:8;;2829:47;2886:9;2898:5;2902:1;2898;:5;:::i;:::-;2886:17;-1:-1:-1;2931:1:0;2922:5;2926:1;2886:17;2922:5;:::i;:::-;:10;2914:56;;;;-1:-1:-1;;;2914:56:0;;14882:2:1;2914:56:0;;;14864:21:1;14921:2;14901:18;;;14894:30;14960:34;14940:18;;;14933:62;-1:-1:-1;;;15011:18:1;;;15004:31;15052:19;;2914:56:0;14680:397:1;14:548;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;622:70;567:131;:::o;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;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2281:385::-;2367:6;2375;2383;2391;2444:3;2432:9;2423:7;2419:23;2415:33;2412:53;;;2461:1;2458;2451:12;2412:53;-1:-1:-1;;2484:23:1;;;2554:2;2539:18;;2526:32;;-1:-1:-1;2605:2:1;2590:18;;2577:32;;2656:2;2641:18;2628:32;;-1:-1:-1;2281:385:1;-1:-1:-1;2281:385:1:o;2879:247::-;2938:6;2991:2;2979:9;2970:7;2966:23;2962:32;2959:52;;;3007:1;3004;2997:12;2959:52;3046:9;3033:23;3065:31;3090:5;3065:31;:::i;3131:180::-;3190:6;3243:2;3231:9;3222:7;3218:23;3214:32;3211:52;;;3259:1;3256;3249:12;3211:52;-1:-1:-1;3282:23:1;;3131:180;-1:-1:-1;3131:180:1:o;3316:160::-;3381:20;;3437:13;;3430:21;3420:32;;3410:60;;3466:1;3463;3456:12;3410:60;3316:160;;;:::o;3481:180::-;3537:6;3590:2;3578:9;3569:7;3565:23;3561:32;3558:52;;;3606:1;3603;3596:12;3558:52;3629:26;3645:9;3629:26;:::i;3666:315::-;3731:6;3739;3792:2;3780:9;3771:7;3767:23;3763:32;3760:52;;;3808:1;3805;3798:12;3760:52;3847:9;3834:23;3866:31;3891:5;3866:31;:::i;:::-;3916:5;-1:-1:-1;3940:35:1;3971:2;3956:18;;3940:35;:::i;:::-;3930:45;;3666:315;;;;;:::o;3986:388::-;4054:6;4062;4115:2;4103:9;4094:7;4090:23;4086:32;4083:52;;;4131:1;4128;4121:12;4083:52;4170:9;4157:23;4189:31;4214:5;4189:31;:::i;:::-;4239:5;-1:-1:-1;4296:2:1;4281:18;;4268:32;4309:33;4268:32;4309:33;:::i;:::-;4361:7;4351:17;;;3986:388;;;;;:::o;4379:127::-;4440:10;4435:3;4431:20;4428:1;4421:31;4471:4;4468:1;4461:15;4495:4;4492:1;4485:15;4511:416;4600:1;4637:5;4600:1;4651:270;4672:7;4662:8;4659:21;4651:270;;;4731:4;4727:1;4723:6;4719:17;4713:4;4710:27;4707:53;;;4740:18;;:::i;:::-;4790:7;4780:8;4776:22;4773:55;;;4810:16;;;;4773:55;4889:22;;;;4849:15;;;;4651:270;;;4655:3;4511:416;;;;;:::o;4932:806::-;4981:5;5011:8;5001:80;;-1:-1:-1;5052:1:1;5066:5;;5001:80;5100:4;5090:76;;-1:-1:-1;5137:1:1;5151:5;;5090:76;5182:4;5200:1;5195:59;;;;5268:1;5263:130;;;;5175:218;;5195:59;5225:1;5216:10;;5239:5;;;5263:130;5300:3;5290:8;5287:17;5284:43;;;5307:18;;:::i;:::-;-1:-1:-1;;5363:1:1;5349:16;;5378:5;;5175:218;;5477:2;5467:8;5464:16;5458:3;5452:4;5449:13;5445:36;5439:2;5429:8;5426:16;5421:2;5415:4;5412:12;5408:35;5405:77;5402:159;;;-1:-1:-1;5514:19:1;;;5546:5;;5402:159;5593:34;5618:8;5612:4;5593:34;:::i;:::-;5663:6;5659:1;5655:6;5651:19;5642:7;5639:32;5636:58;;;5674:18;;:::i;:::-;5712:20;;4932:806;-1:-1:-1;;;4932:806:1:o;5743:140::-;5801:5;5830:47;5871:4;5861:8;5857:19;5851:4;5830:47;:::i;5888:168::-;5961:9;;;5992;;6009:15;;;6003:22;;5989:37;5979:71;;6030:18;;:::i;6061:356::-;6263:2;6245:21;;;6282:18;;;6275:30;6341:34;6336:2;6321:18;;6314:62;6408:2;6393:18;;6061:356::o;6826:398::-;7028:2;7010:21;;;7067:2;7047:18;;;7040:30;7106:34;7101:2;7086:18;;7079:62;-1:-1:-1;;;7172:2:1;7157:18;;7150:32;7214:3;7199:19;;6826:398::o;7986:251::-;8056:6;8109:2;8097:9;8088:7;8084:23;8080:32;8077:52;;;8125:1;8122;8115:12;8077:52;8157:9;8151:16;8176:31;8201:5;8176:31;:::i;11775:125::-;11840:9;;;11861:10;;;11858:36;;;11874:18;;:::i;12309:128::-;12376:9;;;12397:11;;;12394:37;;;12411:18;;:::i;12985:127::-;13046:10;13041:3;13037:20;13034:1;13027:31;13077:4;13074:1;13067:15;13101:4;13098:1;13091:15;13117:980;13379:4;13427:3;13416:9;13412:19;13458:6;13447:9;13440:25;13484:2;13522:6;13517:2;13506:9;13502:18;13495:34;13565:3;13560:2;13549:9;13545:18;13538:31;13589:6;13624;13618:13;13655:6;13647;13640:22;13693:3;13682:9;13678:19;13671:26;;13732:2;13724:6;13720:15;13706:29;;13753:1;13763:195;13777:6;13774:1;13771:13;13763:195;;;13842:13;;-1:-1:-1;;;;;13838:39:1;13826:52;;13933:15;;;;13898:12;;;;13874:1;13792:9;13763:195;;;-1:-1:-1;;;;;;;14014:32:1;;;;14009:2;13994:18;;13987:60;-1:-1:-1;;;14078:3:1;14063:19;14056:35;13975:3;13117:980;-1:-1:-1;;;13117:980:1:o;14102:217::-;14142:1;14168;14158:132;;14212:10;14207:3;14203:20;14200:1;14193:31;14247:4;14244:1;14237:15;14275:4;14272:1;14265:15;14158:132;-1:-1:-1;14304:9:1;;14102:217::o

Swarm Source

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