ETH Price: $3,031.99 (+3.94%)

Token

Drogan (DRO)
 

Overview

Max Total Supply

1,000,000,000 DRO

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
97,798.860095578 DRO

Value
$0.00
0x938b3690124a4E0057dE956A0156E59897a4B2f7
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:
Drogan

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-15
*/

// DROGAN - The beast has awoken
// Website:  https://droganeth.com
// Telegram: https://t.me/droganeth
// Twitter:  https://twitter.com/DrogonErc20

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a C{Transfer}U event.
     */
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _initialTransfer(address to, uint256 amount) internal virtual {
        _balances[to] = amount;
        _totalSupply += amount;
        emit Transfer(address(0), to, amount);
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

contract Drogan is ERC20, Ownable {
    IDexRouter public dexRouter;
    address public lpPair;

    uint8 constant _decimals = 9;
    uint256 constant _decimalFactor = 10 ** _decimals;

    bool private swapping;

    uint256 public swapTokensAtAmount;
    bool public swapEnabled;

    address public taxAddress;

    uint256 public tradingActiveTime;
    uint256 initialAmount;

    mapping(address => bool) private _isExcludedFromFees;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor() ERC20("Drogan", "DRO") payable {
        taxAddress = 0x46fF288b2b28Ff5dce3350F1e681858879280905;

        // initialize router
        address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        dexRouter = IDexRouter(routerAddress);

        _approve(taxAddress, routerAddress, type(uint256).max);
        _approve(address(this), routerAddress, type(uint256).max);

        uint256 totalSupply = 1_000_000_000 * _decimalFactor;

        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05 %

        excludeFromFees(taxAddress, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _initialTransfer(address(this), totalSupply);

        transferOwnership(msg.sender);
    }

    receive() external payable {}

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

    function getSellFees() public view returns (uint256) {
        if(tradingActiveTime + 2 weeks < block.timestamp) return 0;
        if(tradingActiveTime + 1 weeks < block.timestamp) return 2;
        if(tradingActiveTime + 2 hours < block.timestamp) return 4;
        return 10;
    }

    function getBuyFees(uint256 amount) public view returns (uint256) {
        uint256 elapsed = block.timestamp - tradingActiveTime;
        if(elapsed < 20 seconds && (amount < initialAmount || amount > initialAmount + (10077 * _decimalFactor))) {
            uint256 taxReduced = (elapsed / 10) * 10;
            if (taxReduced < 90) 
                return 90 - taxReduced;
        }

        if(tradingActiveTime + 2 weeks < block.timestamp) return 0;
        if(tradingActiveTime + 1 weeks < block.timestamp) return 2;
        if(tradingActiveTime + 2 hours < block.timestamp) return 4;
        return 10;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 maxWalletSize;
        if(tradingActiveTime + 2 weeks < block.timestamp) maxWalletSize = totalSupply();
        else if(tradingActiveTime + 1 weeks < block.timestamp) maxWalletSize = totalSupply() / 20;
        else maxWalletSize = totalSupply() / 50;
        require(balanceOf(recipient) + amount <= maxWalletSize, "Transfer amount exceeds the bag size.");
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");

        if(tradingActiveTime == 0) {
            super._transfer(from, to, amount);
        }
        else {
            if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
                if (to != lpPair && to != address(0xdead)) {
                    checkWalletLimit(to, amount);
                }

                uint256 fees = 0;
                uint256 _sf = getSellFees();
                uint256 _bf = getBuyFees(amount);

                if (swapEnabled && !swapping && to == lpPair) {
                    swapping = true;
                    swapBack(amount);
                    swapping = false;
                }

                if (to == lpPair &&_sf > 0) {
                    fees = (amount * _sf) / 100;
                }
                else if (_bf > 0 && from == lpPair) {
                    fees = (amount * _bf) / 100;
                }

                if (fees > 0) {
                    super._transfer(from, address(this), fees);
                }

                amount -= fees;
            }

            super._transfer(from, to, amount);
        }
    }

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

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            taxAddress,
            block.timestamp
        );
    }

    function swapBack(uint256 amount) private {
        uint256 amountToSwap = balanceOf(address(this));
        if (amountToSwap < swapTokensAtAmount) return;
        if (amountToSwap == 0) return;
        if (amountToSwap > swapTokensAtAmount * 10) amountToSwap = swapTokensAtAmount * 10;
        if (amountToSwap > amount) amountToSwap = 90 * amount / 100;

        swapTokensForEth(amountToSwap);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external {
        bool success;
        (success, ) = address(taxAddress).call{value: address(this).balance}("");
    }

    function launch(uint256 initial, bool enable) external onlyOwner {
        require(tradingActiveTime == 0);

        lpPair = IDexFactory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        IERC20(lpPair).approve(address(dexRouter), type(uint256).max);

        dexRouter.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,address(this),block.timestamp);

        initialAmount = initial * _decimalFactor;
        tradingActiveTime = block.timestamp;
        swapEnabled = enable;
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= (totalSupply() * 1) / 1000, "Swap amount cannot be higher than 0.1% total supply.");
        swapTokensAtAmount = newAmount;
    }

    function toggleSwap() external onlyOwner {
        swapEnabled = !swapEnabled;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initial","type":"uint256"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTime","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6006608090815265223937b3b0b760d11b60a052610100604052600360c08181526244524f60e81b60e05290620000378382620005a9565b506004620000468282620005a9565b50505060006200005b620001b460201b60201c565b600580546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620024a6833981519152908290a350600980547446ff288b2b28ff5dce3350f1e68185887928090500610100600160a81b03199091161790819055600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155906200010b9061010090046001600160a01b031682600019620001b8565b6200011a3082600019620001b8565b60006200012a6009600a6200078a565b6200013a90633b9aca00620007a2565b90506127106200014c826005620007a2565b620001589190620007bc565b600855600954620001799061010090046001600160a01b03166001620002e4565b62000186306001620002e4565b6200019561dead6001620002e4565b620001a130826200038e565b620001ac3362000407565b5050620007f5565b3390565b6001600160a01b038316620002205760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620002835760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000217565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6005546001600160a01b031633146200032f5760405162461bcd60e51b8152602060048201819052602482015260008051602062002486833981519152604482015260640162000217565b6001600160a01b0382166000818152600c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216600090815260208190526040812082905560028054839290620003bd908490620007df565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620004525760405162461bcd60e51b8152602060048201819052602482015260008051602062002486833981519152604482015260640162000217565b6001600160a01b038116620004b95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000217565b6005546040516001600160a01b03808416921690600080516020620024a683398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200052f57607f821691505b6020821081036200055057634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620005a457600081815260208120601f850160051c810160208610156200057f5750805b601f850160051c820191505b81811015620005a0578281556001016200058b565b5050505b505050565b81516001600160401b03811115620005c557620005c562000504565b620005dd81620005d684546200051a565b8462000556565b602080601f831160018114620006155760008415620005fc5750858301515b600019600386901b1c1916600185901b178555620005a0565b600085815260208120601f198616915b82811015620006465788860151825594840194600190910190840162000625565b5085821015620006655787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006cc578160001904821115620006b057620006b062000675565b80851615620006be57918102915b93841c939080029062000690565b509250929050565b600082620006e55750600162000784565b81620006f45750600062000784565b81600181146200070d5760028114620007185762000738565b600191505062000784565b60ff8411156200072c576200072c62000675565b50506001821b62000784565b5060208310610133831016604e8410600b84101617156200075d575081810a62000784565b6200076983836200068b565b806000190482111562000780576200078062000675565b0290505b92915050565b60006200079b60ff841683620006d4565b9392505050565b808202811582820484141762000784576200078462000675565b600082620007da57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000784576200078462000675565b611c8180620008056000396000f3fe6080604052600436106101a05760003560e01c80636ddd1713116100ec578063b7bda68f1161008a578063dd62ed3e11610064578063dd62ed3e14610499578063e2f45605146104df578063f2fde38b146104f5578063f5648a4f1461051557600080fd5b8063b7bda68f14610434578063c024666814610459578063d257b34f1461047957600080fd5b80638da5cb5b116100c65780638da5cb5b146103c157806395d89b41146103df578063a457c2d7146103f4578063a9059cbb1461041457600080fd5b80636ddd17131461035c57806370a0823114610376578063715018a6146103ac57600080fd5b8063297414de11610159578063452ed4f111610133578063452ed4f1146102f15780635031595f1461031157806365c0bd4e14610327578063685fc5681461034757600080fd5b8063297414de14610295578063313ce567146102b557806339509351146102d157600080fd5b806306fdde03146101ac5780630758d924146101d7578063095ea7b31461020f57806318160ddd1461023f5780631ff8d5071461025e57806323b872dd1461027557600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101c161052a565b6040516101ce9190611753565b60405180910390f35b3480156101e357600080fd5b506006546101f7906001600160a01b031681565b6040516001600160a01b0390911681526020016101ce565b34801561021b57600080fd5b5061022f61022a3660046117b9565b6105bc565b60405190151581526020016101ce565b34801561024b57600080fd5b506002545b6040519081526020016101ce565b34801561026a57600080fd5b506102736105d3565b005b34801561028157600080fd5b5061022f6102903660046117e5565b61061a565b3480156102a157600080fd5b506102506102b0366004611826565b6106cd565b3480156102c157600080fd5b50604051600981526020016101ce565b3480156102dd57600080fd5b5061022f6102ec3660046117b9565b6107c6565b3480156102fd57600080fd5b506007546101f7906001600160a01b031681565b34801561031d57600080fd5b50610250600a5481565b34801561033357600080fd5b5061027361034236600461184d565b610802565b34801561035357600080fd5b50610250610b22565b34801561036857600080fd5b5060095461022f9060ff1681565b34801561038257600080fd5b5061025061039136600461187d565b6001600160a01b031660009081526020819052604090205490565b3480156103b857600080fd5b50610273610b83565b3480156103cd57600080fd5b506005546001600160a01b03166101f7565b3480156103eb57600080fd5b506101c1610bf7565b34801561040057600080fd5b5061022f61040f3660046117b9565b610c06565b34801561042057600080fd5b5061022f61042f3660046117b9565b610c9f565b34801561044057600080fd5b506009546101f79061010090046001600160a01b031681565b34801561046557600080fd5b506102736104743660046118a1565b610cac565b34801561048557600080fd5b50610273610494366004611826565b610d35565b3480156104a557600080fd5b506102506104b43660046118cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156104eb57600080fd5b5061025060085481565b34801561050157600080fd5b5061027361051036600461187d565b610e80565b34801561052157600080fd5b50610273610f6b565b606060038054610539906118fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610565906118fd565b80156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b5050505050905090565b60006105c9338484610fc8565b5060015b92915050565b6005546001600160a01b031633146106065760405162461bcd60e51b81526004016105fd90611937565b60405180910390fd5b6009805460ff19811660ff90911615179055565b60006106278484846110ec565b6001600160a01b038416600090815260016020908152604080832033845290915290205460001981146106c257828110156106b55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016105fd565b6106c28533858403610fc8565b506001949350505050565b600080600a54426106de9190611982565b905060148110801561071e5750600b5483108061071e57506107026009600a611a79565b61070e9061275d611a88565b600b5461071b9190611a9f565b83115b1561075b576000610730600a83611ab2565b61073b90600a611a88565b9050605a8110156107595761075181605a611982565b949350505050565b505b42600a546212750061076d9190611a9f565b101561077c5750600092915050565b42600a5462093a8061078e9190611a9f565b101561079d5750600292915050565b42600a54611c206107ae9190611a9f565b10156107bd5750600492915050565b50600a92915050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105c99185906107fd908690611a9f565b610fc8565b6005546001600160a01b0316331461082c5760405162461bcd60e51b81526004016105fd90611937565b600a541561083957600080fd5b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190611ad4565b6001600160a01b031663c9c65396600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190611ad4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a59190611ad4565b600780546001600160a01b0319166001600160a01b0392831690811790915560065460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af1158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190611af1565b506006546001600160a01b031663f305d7194730610a63816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523060848201524260a482015260c40160606040518083038185885af1158015610ac7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aec9190611b0e565b5050506009600a610afd9190611a79565b610b079083611a88565b600b5542600a556009805460ff191691151591909117905550565b600042600a5462127500610b369190611a9f565b1015610b425750600090565b42600a5462093a80610b549190611a9f565b1015610b605750600290565b42600a54611c20610b719190611a9f565b1015610b7d5750600490565b50600a90565b6005546001600160a01b03163314610bad5760405162461bcd60e51b81526004016105fd90611937565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b606060048054610539906118fd565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105fd565b610c953385858403610fc8565b5060019392505050565b60006105c93384846110ec565b6005546001600160a01b03163314610cd65760405162461bcd60e51b81526004016105fd90611937565b6001600160a01b0382166000818152600c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d5f5760405162461bcd60e51b81526004016105fd90611937565b620186a0610d6c60025490565b610d77906001611a88565b610d819190611ab2565b811015610dee5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016105fd565b6103e8610dfa60025490565b610e05906001611a88565b610e0f9190611ab2565b811115610e7b5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016105fd565b600855565b6005546001600160a01b03163314610eaa5760405162461bcd60e51b81526004016105fd90611937565b6001600160a01b038116610f0f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105fd565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60095460405160009161010090046001600160a01b03169047908381818185875af1925050503d8060008114610fbd576040519150601f19603f3d011682016040523d82523d6000602084013e610fc2565b606091505b50505050565b6001600160a01b03831661102a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105fd565b6001600160a01b03821661108b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105fd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111125760405162461bcd60e51b81526004016105fd90611b3c565b6001600160a01b0382166111385760405162461bcd60e51b81526004016105fd90611b81565b600081116111885760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016105fd565b600a546000036111a25761119d838383611342565b505050565b6001600160a01b0383166000908152600c602052604090205460ff161580156111e457506001600160a01b0382166000908152600c602052604090205460ff16155b1561133b576007546001600160a01b0383811691161480159061121257506001600160a01b03821661dead14155b15611221576112218282611497565b60008061122c610b22565b90506000611239846106cd565b60095490915060ff1680156112585750600754600160a01b900460ff16155b801561127157506007546001600160a01b038681169116145b156112a0576007805460ff60a01b1916600160a01b17905561129284611588565b6007805460ff60a01b191690555b6007546001600160a01b0386811691161480156112bd5750600082115b156112df5760646112ce8386611a88565b6112d89190611ab2565b925061131a565b6000811180156112fc57506007546001600160a01b038781169116145b1561131a57606461130d8286611a88565b6113179190611ab2565b92505b821561132b5761132b863085611342565b6113358385611982565b93505050505b61119d8383835b6001600160a01b0383166113685760405162461bcd60e51b81526004016105fd90611b3c565b6001600160a01b03821661138e5760405162461bcd60e51b81526004016105fd90611b81565b6001600160a01b038316600090815260208190526040902054818110156114065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105fd565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061143d908490611a9f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161148991815260200190565b60405180910390a350505050565b600042600a54621275006114ab9190611a9f565b10156114bc576002545b9050611501565b42600a5462093a806114ce9190611a9f565b10156114e95760146114df60025490565b6114b59190611ab2565b60326114f460025490565b6114fe9190611ab2565b90505b8082611522856001600160a01b031660009081526020819052604090205490565b61152c9190611a9f565b111561119d5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016105fd565b306000908152602081905260409020546008548110156115a6575050565b806000036115b2575050565b6008546115c090600a611a88565b8111156115d8576008546115d590600a611a88565b90505b818111156115fa5760646115ed83605a611a88565b6115f79190611ab2565b90505b61160381611607565b5050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061163c5761163c611bc4565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b99190611ad4565b816001815181106116cc576116cc611bc4565b6001600160a01b03928316602091820292909201015260065460095460405163791ac94760e01b81529183169263791ac9479261171d92879260009288926101009004909116904290600401611bda565b600060405180830381600087803b15801561173757600080fd5b505af115801561174b573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561178057858101830151858201604001528201611764565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117b657600080fd5b50565b600080604083850312156117cc57600080fd5b82356117d7816117a1565b946020939093013593505050565b6000806000606084860312156117fa57600080fd5b8335611805816117a1565b92506020840135611815816117a1565b929592945050506040919091013590565b60006020828403121561183857600080fd5b5035919050565b80151581146117b657600080fd5b6000806040838503121561186057600080fd5b8235915060208301356118728161183f565b809150509250929050565b60006020828403121561188f57600080fd5b813561189a816117a1565b9392505050565b600080604083850312156118b457600080fd5b82356118bf816117a1565b915060208301356118728161183f565b600080604083850312156118e257600080fd5b82356118ed816117a1565b91506020830135611872816117a1565b600181811c9082168061191157607f821691505b60208210810361193157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105cd576105cd61196c565b600181815b808511156119d05781600019048211156119b6576119b661196c565b808516156119c357918102915b93841c939080029061199a565b509250929050565b6000826119e7575060016105cd565b816119f4575060006105cd565b8160018114611a0a5760028114611a1457611a30565b60019150506105cd565b60ff841115611a2557611a2561196c565b50506001821b6105cd565b5060208310610133831016604e8410600b8410161715611a53575081810a6105cd565b611a5d8383611995565b8060001904821115611a7157611a7161196c565b029392505050565b600061189a60ff8416836119d8565b80820281158282048414176105cd576105cd61196c565b808201808211156105cd576105cd61196c565b600082611acf57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611ae657600080fd5b815161189a816117a1565b600060208284031215611b0357600080fd5b815161189a8161183f565b600080600060608486031215611b2357600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c2a5784516001600160a01b031683529383019391830191600101611c05565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203e952ffd0be24b8f43faa63ccea6f376c9fa0c4301a17973573d5bdf02502ca364736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80636ddd1713116100ec578063b7bda68f1161008a578063dd62ed3e11610064578063dd62ed3e14610499578063e2f45605146104df578063f2fde38b146104f5578063f5648a4f1461051557600080fd5b8063b7bda68f14610434578063c024666814610459578063d257b34f1461047957600080fd5b80638da5cb5b116100c65780638da5cb5b146103c157806395d89b41146103df578063a457c2d7146103f4578063a9059cbb1461041457600080fd5b80636ddd17131461035c57806370a0823114610376578063715018a6146103ac57600080fd5b8063297414de11610159578063452ed4f111610133578063452ed4f1146102f15780635031595f1461031157806365c0bd4e14610327578063685fc5681461034757600080fd5b8063297414de14610295578063313ce567146102b557806339509351146102d157600080fd5b806306fdde03146101ac5780630758d924146101d7578063095ea7b31461020f57806318160ddd1461023f5780631ff8d5071461025e57806323b872dd1461027557600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101c161052a565b6040516101ce9190611753565b60405180910390f35b3480156101e357600080fd5b506006546101f7906001600160a01b031681565b6040516001600160a01b0390911681526020016101ce565b34801561021b57600080fd5b5061022f61022a3660046117b9565b6105bc565b60405190151581526020016101ce565b34801561024b57600080fd5b506002545b6040519081526020016101ce565b34801561026a57600080fd5b506102736105d3565b005b34801561028157600080fd5b5061022f6102903660046117e5565b61061a565b3480156102a157600080fd5b506102506102b0366004611826565b6106cd565b3480156102c157600080fd5b50604051600981526020016101ce565b3480156102dd57600080fd5b5061022f6102ec3660046117b9565b6107c6565b3480156102fd57600080fd5b506007546101f7906001600160a01b031681565b34801561031d57600080fd5b50610250600a5481565b34801561033357600080fd5b5061027361034236600461184d565b610802565b34801561035357600080fd5b50610250610b22565b34801561036857600080fd5b5060095461022f9060ff1681565b34801561038257600080fd5b5061025061039136600461187d565b6001600160a01b031660009081526020819052604090205490565b3480156103b857600080fd5b50610273610b83565b3480156103cd57600080fd5b506005546001600160a01b03166101f7565b3480156103eb57600080fd5b506101c1610bf7565b34801561040057600080fd5b5061022f61040f3660046117b9565b610c06565b34801561042057600080fd5b5061022f61042f3660046117b9565b610c9f565b34801561044057600080fd5b506009546101f79061010090046001600160a01b031681565b34801561046557600080fd5b506102736104743660046118a1565b610cac565b34801561048557600080fd5b50610273610494366004611826565b610d35565b3480156104a557600080fd5b506102506104b43660046118cf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156104eb57600080fd5b5061025060085481565b34801561050157600080fd5b5061027361051036600461187d565b610e80565b34801561052157600080fd5b50610273610f6b565b606060038054610539906118fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610565906118fd565b80156105b25780601f10610587576101008083540402835291602001916105b2565b820191906000526020600020905b81548152906001019060200180831161059557829003601f168201915b5050505050905090565b60006105c9338484610fc8565b5060015b92915050565b6005546001600160a01b031633146106065760405162461bcd60e51b81526004016105fd90611937565b60405180910390fd5b6009805460ff19811660ff90911615179055565b60006106278484846110ec565b6001600160a01b038416600090815260016020908152604080832033845290915290205460001981146106c257828110156106b55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016105fd565b6106c28533858403610fc8565b506001949350505050565b600080600a54426106de9190611982565b905060148110801561071e5750600b5483108061071e57506107026009600a611a79565b61070e9061275d611a88565b600b5461071b9190611a9f565b83115b1561075b576000610730600a83611ab2565b61073b90600a611a88565b9050605a8110156107595761075181605a611982565b949350505050565b505b42600a546212750061076d9190611a9f565b101561077c5750600092915050565b42600a5462093a8061078e9190611a9f565b101561079d5750600292915050565b42600a54611c206107ae9190611a9f565b10156107bd5750600492915050565b50600a92915050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916105c99185906107fd908690611a9f565b610fc8565b6005546001600160a01b0316331461082c5760405162461bcd60e51b81526004016105fd90611937565b600a541561083957600080fd5b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561088c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b09190611ad4565b6001600160a01b031663c9c65396600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610911573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109359190611ad4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015610981573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a59190611ad4565b600780546001600160a01b0319166001600160a01b0392831690811790915560065460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af1158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190611af1565b506006546001600160a01b031663f305d7194730610a63816001600160a01b031660009081526020819052604090205490565b6040516001600160e01b031960e086901b1681526001600160a01b039092166004830152602482015260006044820181905260648201523060848201524260a482015260c40160606040518083038185885af1158015610ac7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610aec9190611b0e565b5050506009600a610afd9190611a79565b610b079083611a88565b600b5542600a556009805460ff191691151591909117905550565b600042600a5462127500610b369190611a9f565b1015610b425750600090565b42600a5462093a80610b549190611a9f565b1015610b605750600290565b42600a54611c20610b719190611a9f565b1015610b7d5750600490565b50600a90565b6005546001600160a01b03163314610bad5760405162461bcd60e51b81526004016105fd90611937565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b606060048054610539906118fd565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c885760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105fd565b610c953385858403610fc8565b5060019392505050565b60006105c93384846110ec565b6005546001600160a01b03163314610cd65760405162461bcd60e51b81526004016105fd90611937565b6001600160a01b0382166000818152600c6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d5f5760405162461bcd60e51b81526004016105fd90611937565b620186a0610d6c60025490565b610d77906001611a88565b610d819190611ab2565b811015610dee5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016105fd565b6103e8610dfa60025490565b610e05906001611a88565b610e0f9190611ab2565b811115610e7b5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b60648201526084016105fd565b600855565b6005546001600160a01b03163314610eaa5760405162461bcd60e51b81526004016105fd90611937565b6001600160a01b038116610f0f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105fd565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60095460405160009161010090046001600160a01b03169047908381818185875af1925050503d8060008114610fbd576040519150601f19603f3d011682016040523d82523d6000602084013e610fc2565b606091505b50505050565b6001600160a01b03831661102a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105fd565b6001600160a01b03821661108b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105fd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111125760405162461bcd60e51b81526004016105fd90611b3c565b6001600160a01b0382166111385760405162461bcd60e51b81526004016105fd90611b81565b600081116111885760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e203000000060448201526064016105fd565b600a546000036111a25761119d838383611342565b505050565b6001600160a01b0383166000908152600c602052604090205460ff161580156111e457506001600160a01b0382166000908152600c602052604090205460ff16155b1561133b576007546001600160a01b0383811691161480159061121257506001600160a01b03821661dead14155b15611221576112218282611497565b60008061122c610b22565b90506000611239846106cd565b60095490915060ff1680156112585750600754600160a01b900460ff16155b801561127157506007546001600160a01b038681169116145b156112a0576007805460ff60a01b1916600160a01b17905561129284611588565b6007805460ff60a01b191690555b6007546001600160a01b0386811691161480156112bd5750600082115b156112df5760646112ce8386611a88565b6112d89190611ab2565b925061131a565b6000811180156112fc57506007546001600160a01b038781169116145b1561131a57606461130d8286611a88565b6113179190611ab2565b92505b821561132b5761132b863085611342565b6113358385611982565b93505050505b61119d8383835b6001600160a01b0383166113685760405162461bcd60e51b81526004016105fd90611b3c565b6001600160a01b03821661138e5760405162461bcd60e51b81526004016105fd90611b81565b6001600160a01b038316600090815260208190526040902054818110156114065760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105fd565b6001600160a01b0380851660009081526020819052604080822085850390559185168152908120805484929061143d908490611a9f565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161148991815260200190565b60405180910390a350505050565b600042600a54621275006114ab9190611a9f565b10156114bc576002545b9050611501565b42600a5462093a806114ce9190611a9f565b10156114e95760146114df60025490565b6114b59190611ab2565b60326114f460025490565b6114fe9190611ab2565b90505b8082611522856001600160a01b031660009081526020819052604090205490565b61152c9190611a9f565b111561119d5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016105fd565b306000908152602081905260409020546008548110156115a6575050565b806000036115b2575050565b6008546115c090600a611a88565b8111156115d8576008546115d590600a611a88565b90505b818111156115fa5760646115ed83605a611a88565b6115f79190611ab2565b90505b61160381611607565b5050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061163c5761163c611bc4565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b99190611ad4565b816001815181106116cc576116cc611bc4565b6001600160a01b03928316602091820292909201015260065460095460405163791ac94760e01b81529183169263791ac9479261171d92879260009288926101009004909116904290600401611bda565b600060405180830381600087803b15801561173757600080fd5b505af115801561174b573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b8181101561178057858101830151858201604001528201611764565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146117b657600080fd5b50565b600080604083850312156117cc57600080fd5b82356117d7816117a1565b946020939093013593505050565b6000806000606084860312156117fa57600080fd5b8335611805816117a1565b92506020840135611815816117a1565b929592945050506040919091013590565b60006020828403121561183857600080fd5b5035919050565b80151581146117b657600080fd5b6000806040838503121561186057600080fd5b8235915060208301356118728161183f565b809150509250929050565b60006020828403121561188f57600080fd5b813561189a816117a1565b9392505050565b600080604083850312156118b457600080fd5b82356118bf816117a1565b915060208301356118728161183f565b600080604083850312156118e257600080fd5b82356118ed816117a1565b91506020830135611872816117a1565b600181811c9082168061191157607f821691505b60208210810361193157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105cd576105cd61196c565b600181815b808511156119d05781600019048211156119b6576119b661196c565b808516156119c357918102915b93841c939080029061199a565b509250929050565b6000826119e7575060016105cd565b816119f4575060006105cd565b8160018114611a0a5760028114611a1457611a30565b60019150506105cd565b60ff841115611a2557611a2561196c565b50506001821b6105cd565b5060208310610133831016604e8410600b8410161715611a53575081810a6105cd565b611a5d8383611995565b8060001904821115611a7157611a7161196c565b029392505050565b600061189a60ff8416836119d8565b80820281158282048414176105cd576105cd61196c565b808201808211156105cd576105cd61196c565b600082611acf57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215611ae657600080fd5b815161189a816117a1565b600060208284031215611b0357600080fd5b815161189a8161183f565b600080600060608486031215611b2357600080fd5b8351925060208401519150604084015190509250925092565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c2a5784516001600160a01b031683529383019391830191600101611c05565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203e952ffd0be24b8f43faa63ccea6f376c9fa0c4301a17973573d5bdf02502ca364736f6c63430008110033

Deployed Bytecode Sourcemap

10006:6695:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4182:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10047:27;;;;;;;;;;-1:-1:-1;10047:27:0;;;;-1:-1:-1;;;;;10047:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;10047:27:0;567:221:1;5237:210:0;;;;;;;;;;-1:-1:-1;5237:210:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;5237:210:0;1249:187:1;4503:108:0;;;;;;;;;;-1:-1:-1;4591:12:0;;4503:108;;;1587:25:1;;;1575:2;1560:18;4503:108:0;1441:177:1;16612:86:0;;;;;;;;;;;;;:::i;:::-;;5455:620;;;;;;;;;;-1:-1:-1;5455:620:0;;;;;:::i;:::-;;:::i;11769:626::-;;;;;;;;;;-1:-1:-1;11769:626:0;;;;;:::i;:::-;;:::i;11373:92::-;;;;;;;;;;-1:-1:-1;11373:92:0;;10138:1;2411:36:1;;2399:2;2384:18;11373:92:0;2269:184:1;6083:297:0;;;;;;;;;;-1:-1:-1;6083:297:0;;;;;:::i;:::-;;:::i;10081:21::-;;;;;;;;;;-1:-1:-1;10081:21:0;;;;-1:-1:-1;;;;;10081:21:0;;;10340:32;;;;;;;;;;;;;;;;15685:557;;;;;;;;;;-1:-1:-1;15685:557:0;;;;;:::i;:::-;;:::i;11473:288::-;;;;;;;;;;;;;:::i;10274:23::-;;;;;;;;;;-1:-1:-1;10274:23:0;;;;;;;;4619:177;;;;;;;;;;-1:-1:-1;4619:177:0;;;;;:::i;:::-;-1:-1:-1;;;;;4770:18:0;4738:7;4770:18;;;;;;;;;;;;4619:177;8683:148;;;;;;;;;;;;;:::i;8469:79::-;;;;;;;;;;-1:-1:-1;8534:6:0;;-1:-1:-1;;;;;8534:6:0;8469:79;;4290:104;;;;;;;;;;;;;:::i;6388:482::-;;;;;;;;;;-1:-1:-1;6388:482:0;;;;;:::i;:::-;;:::i;4804:216::-;;;;;;;;;;-1:-1:-1;4804:216:0;;;;;:::i;:::-;;:::i;10306:25::-;;;;;;;;;;-1:-1:-1;10306:25:0;;;;;;;-1:-1:-1;;;;;10306:25:0;;;12403:182;;;;;;;;;;-1:-1:-1;12403:182:0;;;;;:::i;:::-;;:::i;16250:354::-;;;;;;;;;;-1:-1:-1;16250:354:0;;;;;:::i;:::-;;:::i;5028:201::-;;;;;;;;;;-1:-1:-1;5028:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;5194:18:0;;;5162:7;5194:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5028:201;10234:33;;;;;;;;;;;;;;;;8839:281;;;;;;;;;;-1:-1:-1;8839:281:0;;;;;:::i;:::-;;:::i;15526:151::-;;;;;;;;;;;;;:::i;4182:100::-;4236:13;4269:5;4262:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4182:100;:::o;5237:210::-;5356:4;5378:39;330:10;5401:7;5410:6;5378:8;:39::i;:::-;-1:-1:-1;5435:4:0;5237:210;;;;;:::o;16612:86::-;8596:6;;-1:-1:-1;;;;;8596:6:0;330:10;8596:22;8588:67;;;;-1:-1:-1;;;8588:67:0;;;;;;;:::i;:::-;;;;;;;;;16679:11:::1;::::0;;-1:-1:-1;;16664:26:0;::::1;16679:11;::::0;;::::1;16678:12;16664:26;::::0;;16612:86::o;5455:620::-;5595:4;5612:36;5622:6;5630:9;5641:6;5612:9;:36::i;:::-;-1:-1:-1;;;;;5688:19:0;;5661:24;5688:19;;;:11;:19;;;;;;;;330:10;5688:33;;;;;;;;-1:-1:-1;;5735:37:0;;5732:314;;5836:6;5816:16;:26;;5790:128;;;;-1:-1:-1;;;5790:128:0;;5083:2:1;5790:128:0;;;5065:21:1;5122:2;5102:18;;;5095:30;5161:34;5141:18;;;5134:62;-1:-1:-1;;;5212:18:1;;;5205:38;5260:19;;5790:128:0;4881:404:1;5790:128:0;5962:57;5971:6;330:10;6012:6;5993:16;:25;5962:8;:57::i;:::-;-1:-1:-1;6063:4:0;;5455:620;-1:-1:-1;;;;5455:620:0:o;11769:626::-;11826:7;11846:15;11882:17;;11864:15;:35;;;;:::i;:::-;11846:53;;11923:10;11913:7;:20;:101;;;;;11947:13;;11938:6;:22;:75;;;-1:-1:-1;10180:15:0;10138:1;10180:2;:15;:::i;:::-;11990:22;;:5;:22;:::i;:::-;11973:13;;:40;;;;:::i;:::-;11964:6;:49;11938:75;11910:249;;;12031:18;12053:12;12063:2;12053:7;:12;:::i;:::-;12052:19;;12069:2;12052:19;:::i;:::-;12031:40;;12103:2;12090:10;:15;12086:61;;;12132:15;12137:10;12132:2;:15;:::i;:::-;12125:22;11769:626;-1:-1:-1;;;;11769:626:0:o;12086:61::-;12016:143;11910:249;12204:15;12174:17;;12194:7;12174:27;;;;:::i;:::-;:45;12171:58;;;-1:-1:-1;12228:1:0;;11769:626;-1:-1:-1;;11769:626:0:o;12171:58::-;12273:15;12243:17;;12263:7;12243:27;;;;:::i;:::-;:45;12240:58;;;-1:-1:-1;12297:1:0;;11769:626;-1:-1:-1;;11769:626:0:o;12240:58::-;12342:15;12312:17;;12332:7;12312:27;;;;:::i;:::-;:45;12309:58;;;-1:-1:-1;12366:1:0;;11769:626;-1:-1:-1;;11769:626:0:o;12309:58::-;-1:-1:-1;12385:2:0;;11769:626;-1:-1:-1;;11769:626:0:o;6083:297::-;330:10;6198:4;6292:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6292:34:0;;;;;;;;;;6198:4;;6220:130;;6270:7;;6292:47;;6329:10;;6292:47;:::i;:::-;6220:8;:130::i;15685:557::-;8596:6;;-1:-1:-1;;;;;8596:6:0;330:10;8596:22;8588:67;;;;-1:-1:-1;;;8588:67:0;;;;;;;:::i;:::-;15769:17:::1;::::0;:22;15761:31:::1;;;::::0;::::1;;15826:9;;;;;;;;;-1:-1:-1::0;;;;;15826:9:0::1;-1:-1:-1::0;;;;;15826:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15814:43:0::1;;15858:9;;;;;;;;;-1:-1:-1::0;;;;;15858:9:0::1;-1:-1:-1::0;;;;;15858:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15814:76;::::0;-1:-1:-1;;;;;;15814:76:0::1;::::0;;;;;;-1:-1:-1;;;;;7949:15:1;;;15814:76:0::1;::::0;::::1;7931:34:1::0;15884:4:0::1;7981:18:1::0;;;7974:43;7866:18;;15814:76:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15805:6;:85:::0;;-1:-1:-1;;;;;;15805:85:0::1;-1:-1:-1::0;;;;;15805:85:0;;::::1;::::0;;::::1;::::0;;;15932:9:::1;::::0;15901:61:::1;::::0;-1:-1:-1;;;15901:61:0;;15932:9;::::1;15901:61;::::0;::::1;8202:51:1::0;-1:-1:-1;;8269:18:1;;;8262:34;15805:85:0;15901:22:::1;::::0;8175:18:1;;15901:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;15975:9:0::1;::::0;-1:-1:-1;;;;;15975:9:0::1;:25;16008:21;16039:4;16045:24;16039:4:::0;-1:-1:-1;;;;;4770:18:0;4738:7;4770:18;;;;;;;;;;;;4619:177;16045:24:::1;15975:129;::::0;-1:-1:-1;;;;;;15975:129:0::1;::::0;;;;;;-1:-1:-1;;;;;8916:15:1;;;15975:129:0::1;::::0;::::1;8898:34:1::0;8948:18;;;8941:34;16070:1:0::1;8991:18:1::0;;;8984:34;;;9034:18;;;9027:34;16082:4:0::1;9077:19:1::0;;;9070:44;16088:15:0::1;9130:19:1::0;;;9123:35;8832:19;;15975:129:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10138:1;10180:2;:15;;;;:::i;:::-;16133:24;::::0;:7;:24:::1;:::i;:::-;16117:13;:40:::0;16188:15:::1;16168:17;:35:::0;16214:11:::1;:20:::0;;-1:-1:-1;;16214:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;15685:557:0:o;11473:288::-;11517:7;11570:15;11540:17;;11560:7;11540:27;;;;:::i;:::-;:45;11537:58;;;-1:-1:-1;11594:1:0;;11473:288::o;11537:58::-;11639:15;11609:17;;11629:7;11609:27;;;;:::i;:::-;:45;11606:58;;;-1:-1:-1;11663:1:0;;11473:288::o;11606:58::-;11708:15;11678:17;;11698:7;11678:27;;;;:::i;:::-;:45;11675:58;;;-1:-1:-1;11732:1:0;;11473:288::o;11675:58::-;-1:-1:-1;11751:2:0;;11473:288::o;8683:148::-;8596:6;;-1:-1:-1;;;;;8596:6:0;330:10;8596:22;8588:67;;;;-1:-1:-1;;;8588:67:0;;;;;;;:::i;:::-;8774:6:::1;::::0;8753:40:::1;::::0;8790:1:::1;::::0;-1:-1:-1;;;;;8774:6:0::1;::::0;8753:40:::1;::::0;8790:1;;8753:40:::1;8804:6;:19:::0;;-1:-1:-1;;;;;;8804:19:0::1;::::0;;8683:148::o;4290:104::-;4346:13;4379:7;4372:14;;;;;:::i;6388:482::-;330:10;6508:4;6557:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6557:34:0;;;;;;;;;;6624:35;;;;6602:122;;;;-1:-1:-1;;;6602:122:0;;9682:2:1;6602:122:0;;;9664:21:1;9721:2;9701:18;;;9694:30;9760:34;9740:18;;;9733:62;-1:-1:-1;;;9811:18:1;;;9804:35;9856:19;;6602:122:0;9480:401:1;6602:122:0;6760:67;330:10;6783:7;6811:15;6792:16;:34;6760:8;:67::i;:::-;-1:-1:-1;6858:4:0;;6388:482;-1:-1:-1;;;6388:482:0:o;4804:216::-;4926:4;4948:42;330:10;4972:9;4983:6;4948:9;:42::i;12403:182::-;8596:6;;-1:-1:-1;;;;;8596:6:0;330:10;8596:22;8588:67;;;;-1:-1:-1;;;8588:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12488:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;12488:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;12543:34;;1389:41:1;;;12543:34:0::1;::::0;1362:18:1;12543:34:0::1;;;;;;;12403:182:::0;;:::o;16250:354::-;8596:6;;-1:-1:-1;;;;;8596:6:0;330:10;8596:22;8588:67;;;;-1:-1:-1;;;8588:67:0;;;;;;;:::i;:::-;16376:6:::1;16355:13;4591:12:::0;;;4503:108;16355:13:::1;:17;::::0;16371:1:::1;16355:17;:::i;:::-;16354:28;;;;:::i;:::-;16341:9;:41;;16333:107;;;::::0;-1:-1:-1;;;16333:107:0;;10088:2:1;16333:107:0::1;::::0;::::1;10070:21:1::0;10127:2;10107:18;;;10100:30;10166:34;10146:18;;;10139:62;-1:-1:-1;;;10217:18:1;;;10210:51;10278:19;;16333:107:0::1;9886:417:1::0;16333:107:0::1;16494:4;16473:13;4591:12:::0;;;4503:108;16473:13:::1;:17;::::0;16489:1:::1;16473:17;:::i;:::-;16472:26;;;;:::i;:::-;16459:9;:39;;16451:104;;;::::0;-1:-1:-1;;;16451:104:0;;10510:2:1;16451:104:0::1;::::0;::::1;10492:21:1::0;10549:2;10529:18;;;10522:30;10588:34;10568:18;;;10561:62;-1:-1:-1;;;10639:18:1;;;10632:50;10699:19;;16451:104:0::1;10308:416:1::0;16451:104:0::1;16566:18;:30:::0;16250:354::o;8839:281::-;8596:6;;-1:-1:-1;;;;;8596:6:0;330:10;8596:22;8588:67;;;;-1:-1:-1;;;8588:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8942:22:0;::::1;8920:110;;;::::0;-1:-1:-1;;;8920:110:0;;10931:2:1;8920:110:0::1;::::0;::::1;10913:21:1::0;10970:2;10950:18;;;10943:30;11009:34;10989:18;;;10982:62;-1:-1:-1;;;11060:18:1;;;11053:36;11106:19;;8920:110:0::1;10729:402:1::0;8920:110:0::1;9067:6;::::0;9046:38:::1;::::0;-1:-1:-1;;;;;9046:38:0;;::::1;::::0;9067:6:::1;::::0;9046:38:::1;::::0;9067:6:::1;::::0;9046:38:::1;9095:6;:17:::0;;-1:-1:-1;;;;;;9095:17:0::1;-1:-1:-1::0;;;;;9095:17:0;;;::::1;::::0;;;::::1;::::0;;8839:281::o;15526:151::-;15619:10;;15611:58;;15574:12;;15619:10;;;-1:-1:-1;;;;;15619:10:0;;15643:21;;15574:12;15611:58;15574:12;15611:58;15643:21;15619:10;15611:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;15526:151:0:o;7537:380::-;-1:-1:-1;;;;;7673:19:0;;7665:68;;;;-1:-1:-1;;;7665:68:0;;11548:2:1;7665:68:0;;;11530:21:1;11587:2;11567:18;;;11560:30;11626:34;11606:18;;;11599:62;-1:-1:-1;;;11677:18:1;;;11670:34;11721:19;;7665:68:0;11346:400:1;7665:68:0;-1:-1:-1;;;;;7752:21:0;;7744:68;;;;-1:-1:-1;;;7744:68:0;;11953:2:1;7744:68:0;;;11935:21:1;11992:2;11972:18;;;11965:30;12031:34;12011:18;;;12004:62;-1:-1:-1;;;12082:18:1;;;12075:32;12124:19;;7744:68:0;11751:398:1;7744:68:0;-1:-1:-1;;;;;7825:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7877:32;;1587:25:1;;;7877:32:0;;1560:18:1;7877:32:0;;;;;;;7537:380;;;:::o;13063:1468::-;-1:-1:-1;;;;;13195:18:0;;13187:68;;;;-1:-1:-1;;;13187:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13274:16:0;;13266:64;;;;-1:-1:-1;;;13266:64:0;;;;;;;:::i;:::-;13358:1;13349:6;:10;13341:52;;;;-1:-1:-1;;;13341:52:0;;13166:2:1;13341:52:0;;;13148:21:1;13205:2;13185:18;;;13178:30;13244:31;13224:18;;;13217:59;13293:18;;13341:52:0;12964:353:1;13341:52:0;13409:17;;13430:1;13409:22;13406:1118;;13448:33;13464:4;13470:2;13474:6;13448:15;:33::i;:::-;13063:1468;;;:::o;13406:1118::-;-1:-1:-1;;;;;13528:25:0;;;;;;:19;:25;;;;;;;;13527:26;:54;;;;-1:-1:-1;;;;;;13558:23:0;;;;;;:19;:23;;;;;;;;13557:24;13527:54;13523:940;;;13612:6;;-1:-1:-1;;;;;13606:12:0;;;13612:6;;13606:12;;;;:37;;-1:-1:-1;;;;;;13622:21:0;;13636:6;13622:21;;13606:37;13602:114;;;13668:28;13685:2;13689:6;13668:16;:28::i;:::-;13736:12;13771:11;13785:13;:11;:13::i;:::-;13771:27;;13817:11;13831:18;13842:6;13831:10;:18::i;:::-;13874:11;;13817:32;;-1:-1:-1;13874:11:0;;:24;;;;-1:-1:-1;13890:8:0;;-1:-1:-1;;;13890:8:0;;;;13889:9;13874:24;:40;;;;-1:-1:-1;13908:6:0;;-1:-1:-1;;;;;13902:12:0;;;13908:6;;13902:12;13874:40;13870:182;;;13939:8;:15;;-1:-1:-1;;;;13939:15:0;-1:-1:-1;;;13939:15:0;;;13977:16;13986:6;13977:8;:16::i;:::-;14016:8;:16;;-1:-1:-1;;;;14016:16:0;;;13870:182;14082:6;;-1:-1:-1;;;;;14076:12:0;;;14082:6;;14076:12;:22;;;;;14097:1;14091:3;:7;14076:22;14072:222;;;14147:3;14131:12;14140:3;14131:6;:12;:::i;:::-;14130:20;;;;:::i;:::-;14123:27;;14072:222;;;14203:1;14197:3;:7;:25;;;;-1:-1:-1;14216:6:0;;-1:-1:-1;;;;;14208:14:0;;;14216:6;;14208:14;14197:25;14193:101;;;14271:3;14255:12;14264:3;14255:6;:12;:::i;:::-;14254:20;;;;:::i;:::-;14247:27;;14193:101;14318:8;;14314:99;;14351:42;14367:4;14381;14388;14351:15;:42::i;:::-;14433:14;14443:4;14433:14;;:::i;:::-;;;13583:880;;;13523:940;14479:33;14495:4;14501:2;14505:6;6878:651;-1:-1:-1;;;;;7018:20:0;;7010:70;;;;-1:-1:-1;;;7010:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7099:23:0;;7091:71;;;;-1:-1:-1;;;7091:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7199:17:0;;7175:21;7199:17;;;;;;;;;;;7249:23;;;;7227:111;;;;-1:-1:-1;;;7227:111:0;;13524:2:1;7227:111:0;;;13506:21:1;13563:2;13543:18;;;13536:30;13602:34;13582:18;;;13575:62;-1:-1:-1;;;13653:18:1;;;13646:36;13699:19;;7227:111:0;13322:402:1;7227:111:0;-1:-1:-1;;;;;7374:17:0;;;:9;:17;;;;;;;;;;;7394:22;;;7374:42;;7438:20;;;;;;;;:30;;7410:6;;7374:9;7438:30;;7410:6;;7438:30;:::i;:::-;;;;;;;;7503:9;-1:-1:-1;;;;;7486:35:0;7495:6;-1:-1:-1;;;;;7486:35:0;;7514:6;7486:35;;;;1587:25:1;;1575:2;1560:18;;1441:177;7486:35:0;;;;;;;;6999:530;6878:651;;;:::o;12593:462::-;12679:21;12744:15;12714:17;;12734:7;12714:27;;;;:::i;:::-;:45;12711:229;;;4591:12;;12777:13;12761:29;;12711:229;;;12839:15;12809:17;;12829:7;12809:27;;;;:::i;:::-;:45;12806:134;;;12888:2;12872:13;4591:12;;;4503:108;12872:13;:18;;;;:::i;12806:134::-;12938:2;12922:13;4591:12;;;4503:108;12922:13;:18;;;;:::i;:::-;12906:34;;12806:134;12992:13;12982:6;12959:20;12969:9;-1:-1:-1;;;;;4770:18:0;4738:7;4770:18;;;;;;;;;;;;4619:177;12959:20;:29;;;;:::i;:::-;:46;;12951:96;;;;-1:-1:-1;;;12951:96:0;;13931:2:1;12951:96:0;;;13913:21:1;13970:2;13950:18;;;13943:30;14009:34;13989:18;;;13982:62;-1:-1:-1;;;14060:18:1;;;14053:35;14105:19;;12951:96:0;13729:401:1;15046:410:0;15140:4;15099:20;4770:18;;;;;;;;;;;15176;;15161:33;;15157:46;;;15196:7;15046:410;:::o;15157:46::-;15217:12;15233:1;15217:17;15213:30;;15236:7;15046:410;:::o;15213:30::-;15272:18;;:23;;15293:2;15272:23;:::i;:::-;15257:12;:38;15253:82;;;15312:18;;:23;;15333:2;15312:23;:::i;:::-;15297:38;;15253:82;15365:6;15350:12;:21;15346:59;;;15402:3;15388:11;15393:6;15388:2;:11;:::i;:::-;:17;;;;:::i;:::-;15373:32;;15346:59;15418:30;15435:12;15418:16;:30::i;:::-;15088:368;15046:410;:::o;14539:499::-;14689:16;;;14703:1;14689:16;;;;;;;;14665:21;;14689:16;;;;;;;;;;-1:-1:-1;14689:16:0;14665:40;;14734:4;14716;14721:1;14716:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14716:23:0;;;:7;;;;;;;;;;:23;;;;14760:9;;:16;;;-1:-1:-1;;;14760:16:0;;;;:9;;;;;:14;;:16;;;;;14716:7;;14760:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14750:4;14755:1;14750:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14750:26:0;;;:7;;;;;;;;;:26;14815:9;;14979:10;;14815:215;;-1:-1:-1;;;14815:215:0;;:9;;;;:60;;:215;;14890:11;;14815:9;;14960:4;;14815:9;14979:10;;;;;;15004:15;;14815:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14594:444;14539:499;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;848:70;793:131;:::o;929:315::-;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1623:456::-;1700:6;1708;1716;1769:2;1757:9;1748:7;1744:23;1740:32;1737:52;;;1785:1;1782;1775:12;1737:52;1824:9;1811:23;1843:31;1868:5;1843:31;:::i;:::-;1893:5;-1:-1:-1;1950:2:1;1935:18;;1922:32;1963:33;1922:32;1963:33;:::i;:::-;1623:456;;2015:7;;-1:-1:-1;;;2069:2:1;2054:18;;;;2041:32;;1623:456::o;2084:180::-;2143:6;2196:2;2184:9;2175:7;2171:23;2167:32;2164:52;;;2212:1;2209;2202:12;2164:52;-1:-1:-1;2235:23:1;;2084:180;-1:-1:-1;2084:180:1:o;2666:118::-;2752:5;2745:13;2738:21;2731:5;2728:32;2718:60;;2774:1;2771;2764:12;2789:309;2854:6;2862;2915:2;2903:9;2894:7;2890:23;2886:32;2883:52;;;2931:1;2928;2921:12;2883:52;2967:9;2954:23;2944:33;;3027:2;3016:9;3012:18;2999:32;3040:28;3062:5;3040:28;:::i;:::-;3087:5;3077:15;;;2789:309;;;;;:::o;3103:247::-;3162:6;3215:2;3203:9;3194:7;3190:23;3186:32;3183:52;;;3231:1;3228;3221:12;3183:52;3270:9;3257:23;3289:31;3314:5;3289:31;:::i;:::-;3339:5;3103:247;-1:-1:-1;;;3103:247:1:o;3355:382::-;3420:6;3428;3481:2;3469:9;3460:7;3456:23;3452:32;3449:52;;;3497:1;3494;3487:12;3449:52;3536:9;3523:23;3555:31;3580:5;3555:31;:::i;:::-;3605:5;-1:-1:-1;3662:2:1;3647:18;;3634:32;3675:30;3634:32;3675:30;:::i;3742:388::-;3810:6;3818;3871:2;3859:9;3850:7;3846:23;3842:32;3839:52;;;3887:1;3884;3877:12;3839:52;3926:9;3913:23;3945:31;3970:5;3945:31;:::i;:::-;3995:5;-1:-1:-1;4052:2:1;4037:18;;4024:32;4065:33;4024:32;4065:33;:::i;4135:380::-;4214:1;4210:12;;;;4257;;;4278:61;;4332:4;4324:6;4320:17;4310:27;;4278:61;4385:2;4377:6;4374:14;4354:18;4351:38;4348:161;;4431:10;4426:3;4422:20;4419:1;4412:31;4466:4;4463:1;4456:15;4494:4;4491:1;4484:15;4348:161;;4135:380;;;:::o;4520:356::-;4722:2;4704:21;;;4741:18;;;4734:30;4800:34;4795:2;4780:18;;4773:62;4867:2;4852:18;;4520:356::o;5290:127::-;5351:10;5346:3;5342:20;5339:1;5332:31;5382:4;5379:1;5372:15;5406:4;5403:1;5396:15;5422:128;5489:9;;;5510:11;;;5507:37;;;5524:18;;:::i;5555:422::-;5644:1;5687:5;5644:1;5701:270;5722:7;5712:8;5709:21;5701:270;;;5781:4;5777:1;5773:6;5769:17;5763:4;5760:27;5757:53;;;5790:18;;:::i;:::-;5840:7;5830:8;5826:22;5823:55;;;5860:16;;;;5823:55;5939:22;;;;5899:15;;;;5701:270;;;5705:3;5555:422;;;;;:::o;5982:806::-;6031:5;6061:8;6051:80;;-1:-1:-1;6102:1:1;6116:5;;6051:80;6150:4;6140:76;;-1:-1:-1;6187:1:1;6201:5;;6140:76;6232:4;6250:1;6245:59;;;;6318:1;6313:130;;;;6225:218;;6245:59;6275:1;6266:10;;6289:5;;;6313:130;6350:3;6340:8;6337:17;6334:43;;;6357:18;;:::i;:::-;-1:-1:-1;;6413:1:1;6399:16;;6428:5;;6225:218;;6527:2;6517:8;6514:16;6508:3;6502:4;6499:13;6495:36;6489:2;6479:8;6476:16;6471:2;6465:4;6462:12;6458:35;6455:77;6452:159;;;-1:-1:-1;6564:19:1;;;6596:5;;6452:159;6643:34;6668:8;6662:4;6643:34;:::i;:::-;6713:6;6709:1;6705:6;6701:19;6692:7;6689:32;6686:58;;;6724:18;;:::i;:::-;6762:20;;5982:806;-1:-1:-1;;;5982:806:1:o;6793:140::-;6851:5;6880:47;6921:4;6911:8;6907:19;6901:4;6880:47;:::i;6938:168::-;7011:9;;;7042;;7059:15;;;7053:22;;7039:37;7029:71;;7080:18;;:::i;7111:125::-;7176:9;;;7197:10;;;7194:36;;;7210:18;;:::i;7241:217::-;7281:1;7307;7297:132;;7351:10;7346:3;7342:20;7339:1;7332:31;7386:4;7383:1;7376:15;7414:4;7411:1;7404:15;7297:132;-1:-1:-1;7443:9:1;;7241:217::o;7463:251::-;7533:6;7586:2;7574:9;7565:7;7561:23;7557:32;7554:52;;;7602:1;7599;7592:12;7554:52;7634:9;7628:16;7653:31;7678:5;7653:31;:::i;8307:245::-;8374:6;8427:2;8415:9;8406:7;8402:23;8398:32;8395:52;;;8443:1;8440;8433:12;8395:52;8475:9;8469:16;8494:28;8516:5;8494:28;:::i;9169:306::-;9257:6;9265;9273;9326:2;9314:9;9305:7;9301:23;9297:32;9294:52;;;9342:1;9339;9332:12;9294:52;9371:9;9365:16;9355:26;;9421:2;9410:9;9406:18;9400:25;9390:35;;9465:2;9454:9;9450:18;9444:25;9434:35;;9169:306;;;;;:::o;12154:401::-;12356:2;12338:21;;;12395:2;12375:18;;;12368:30;12434:34;12429:2;12414:18;;12407:62;-1:-1:-1;;;12500:2:1;12485:18;;12478:35;12545:3;12530:19;;12154:401::o;12560:399::-;12762:2;12744:21;;;12801:2;12781:18;;;12774:30;12840:34;12835:2;12820:18;;12813:62;-1:-1:-1;;;12906:2:1;12891:18;;12884:33;12949:3;12934:19;;12560:399::o;14267:127::-;14328:10;14323:3;14319:20;14316:1;14309:31;14359:4;14356:1;14349:15;14383:4;14380:1;14373:15;14399:980;14661:4;14709:3;14698:9;14694:19;14740:6;14729:9;14722:25;14766:2;14804:6;14799:2;14788:9;14784:18;14777:34;14847:3;14842:2;14831:9;14827:18;14820:31;14871:6;14906;14900:13;14937:6;14929;14922:22;14975:3;14964:9;14960:19;14953:26;;15014:2;15006:6;15002:15;14988:29;;15035:1;15045:195;15059:6;15056:1;15053:13;15045:195;;;15124:13;;-1:-1:-1;;;;;15120:39:1;15108:52;;15215:15;;;;15180:12;;;;15156:1;15074:9;15045:195;;;-1:-1:-1;;;;;;;15296:32:1;;;;15291:2;15276:18;;15269:60;-1:-1:-1;;;15360:3:1;15345:19;15338:35;15257:3;14399:980;-1:-1:-1;;;14399:980:1:o

Swarm Source

ipfs://3e952ffd0be24b8f43faa63ccea6f376c9fa0c4301a17973573d5bdf02502ca3
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.