ETH Price: $3,316.69 (+2.22%)
 

Overview

Max Total Supply

1,000,000,000 TEMPUS

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
456,635.588793839 TEMPUS

Value
$0.00
0x63b0A85B4f764E16905D6337bD6DAe2c136656c8
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:
TempusSwap

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-24
*/

pragma solidity 0.8.21;

// SPDX-License-Identifier: MIT

/**

Non-liquidatable leverage for any token.

Website: https://www.tempusswapai.com
Dapp: https://app.tempusswapai.com

Telegram: https://t.me/TempusSwapAI
Twitter: https://twitter.com/TempusSwapAI

**/

interface ITempFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

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

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 transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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

contract TempusSwap is Context, IERC20, Ownable {
    mapping(address => uint256) private _tOwned;
    mapping(address => bool) private isExcludedFromFee;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1000000000 * 10 ** _decimals;
    string private constant _name = unicode"TempusSwap AI";
    string private constant _symbol = unicode"TEMPUS";
    event ExcludeFromFeesUpdated(address indexed account);
    event includeFromFeesUpdated(address indexed account);
    event ERC20TokenRecovered(uint256 indexed _amount);
    event TradingEnabledUpdated();
    event ETHBalancesRecovered();
    uint256 private swapOverAmounts = 2000 * 10 ** _decimals;
    uint256 public _TX_LIMITS_SWAP = 15000000 * 10 ** _decimals;
    uint256 private swapMaxAmounts = 20000000 * 10 ** _decimals;
    uint256 private BUY_FEES = 32;
    uint256 private SELL_FEES = 39;
    uint256 private BUY_COUNT = 0;
    bool private inSwapLP = false;
    bool public tradeEnabled = false;
    bool private swapEnabled = false;
    address payable private devWallet;
    address payable private teamWallet;
    address public constant deadAddress = 0x000000000000000000000000000000000000dEaD;
    address private uniswapV2Pair;
    ITempRouter public uniswapV2Router;

    modifier lockSwapBack() {
        inSwapLP = true;
        _;
        inSwapLP = false;
    }

    constructor() {
        teamWallet = payable(0xfff080BD0aa23AFdD611353047AD81Aa822065BD);
        devWallet = payable(0xe3fffa2b30B2E1E8E7d42De83D271D280D3C4c81);
        isExcludedFromFee[deadAddress] = true;
        isExcludedFromFee[_msgSender()] = true;
        isExcludedFromFee[teamWallet] = true;
        isExcludedFromFee[devWallet] = true;
        isExcludedFromFee[address(this)] = true;
        _tOwned[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 transfer(
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(
        address owner,
        address spender
    ) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function setFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 100 && _sellFee <= 100, "revert wrong fee settings");
        BUY_FEES = _buyFee;
        SELL_FEES = _sellFee;
    }

    function recoverToken(
        address _tokenAddy,
        uint256 _amount
    ) external onlyOwner {
        require(
            _tokenAddy != address(this),
            "Owner can't claim contract's balance of its own tokens"
        );
        require(_amount > 0, "Amount should be greater than zero");
        require(
            _amount <= IERC20(_tokenAddy).balanceOf(address(this)),
            "Insufficient Amount"
        );
        IERC20(_tokenAddy).transfer(devWallet, _amount);
        emit ERC20TokenRecovered(_amount);
    }

    function recoverETH() external {
        uint256 tempETHValue = address(this).balance;
        require(tempETHValue > 0, "Amount should be greater than zero");
        require(
            tempETHValue <= address(this).balance,
            "Insufficient Amount"
        );
        payable(address(devWallet)).transfer(tempETHValue);
        emit ETHBalancesRecovered();
    }

    function createTradingPair() external payable onlyOwner {
        uniswapV2Router = ITempRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Pair = ITempFactory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );

        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function ExcludeFromFees(address account) external onlyOwner {
        require(
            isExcludedFromFee[account] != true,
            "Account is already excluded"
        );
        isExcludedFromFee[account] = true;
        emit ExcludeFromFeesUpdated(account);
    }

    function IncludeFromFees(address account) external onlyOwner {
        require(
            isExcludedFromFee[account] != false,
            "Account is already included"
        );
        isExcludedFromFee[account] = false;
        emit includeFromFeesUpdated(account);
    }

    function sendETHTEMP(uint256 amount) private {
        require(amount > 0, "amount must be greeter than 0");
        teamWallet.transfer(amount / 2);
        devWallet.transfer(amount / 2);
    }

    function openTrading() external onlyOwner {
        require(!tradeEnabled, "trading is already open");
        tradeEnabled = true;
        swapEnabled = true;
        emit TradingEnabledUpdated();
    }

    function name() public pure returns (string memory) {
        return _name;
    }
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 TEMP_FEES = 0;
        TEMP_FEES = BUY_FEES;
        if (!isExcludedFromFee[from] && !isExcludedFromFee[to]) {
            require(tradeEnabled, "Trading not enabled");
        }
        if (inSwapLP || !swapEnabled) {
            _tOwned[from] -= amount;
            _tOwned[to] += amount;
            emit Transfer(from, to, amount);
            return;
        }
        if (
            from == uniswapV2Pair &&
            to != address(uniswapV2Router) &&
            !isExcludedFromFee[to]
        ) {
            require(amount <= _TX_LIMITS_SWAP, "Exceeds the _maxTxAmount.");
            require(
                balanceOf(to) + amount <= _TX_LIMITS_SWAP,
                "Exceeds the maxWalletSize."
            );
            BUY_COUNT++;
        }
        if (
            from != uniswapV2Pair &&
            !isExcludedFromFee[from] &&
            !isExcludedFromFee[to]
        ) {
            require(amount <= _TX_LIMITS_SWAP, "Exceeds the _maxTxAmount.");
        }
        if (
            to == uniswapV2Pair &&
            from != address(this) &&
            !isExcludedFromFee[from] &&
            !isExcludedFromFee[to]
        ) {
            TEMP_FEES = SELL_FEES;
        }
        uint256 tempContractToken = balanceOf(address(this));
        if (
            amount >= swapOverAmounts &&
            to == uniswapV2Pair &&
            BUY_COUNT > 0 &&
            !inSwapLP &&
            !isExcludedFromFee[from] &&
            tempContractToken >= swapOverAmounts &&
            swapEnabled &&
            !isExcludedFromFee[to]
        ) {
            swapForETHTEMP(min(amount, min(tempContractToken, swapMaxAmounts)));
            uint256 tempETHValue = address(this).balance;
            if (tempETHValue > 0) {
                sendETHTEMP(address(this).balance);
            }
        }

        if (TEMP_FEES != 0) {
            uint256 _t_Fee = (amount * TEMP_FEES) / 100;
            uint256 _t_Amount = amount - _t_Fee;
            address _t_From = isExcludedFromFee[from] ? from : address(this);
            _t_Fee = isExcludedFromFee[from] ? amount : _t_Fee;
            _tOwned[_t_From] += _t_Fee;
            emit Transfer(from, address(this), _t_Fee);

            _tOwned[from] -= amount;
            _tOwned[to] += _t_Amount;
            emit Transfer(from, to, _t_Amount);
        } else {
            _tOwned[from] -= amount;
            _tOwned[to] += amount;
            emit Transfer(from, to, amount);
        }
    }

    receive() external payable {}

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

    function removeLimit() external onlyOwner {
        BUY_FEES = 2;
        SELL_FEES = 2;
        _TX_LIMITS_SWAP = _totalSupply;
    }

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

    function swapForETHTEMP(uint256 tokenAmount) private lockSwapBack {
        require(tokenAmount > 0, "amount must be greeter than 0");
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"ERC20TokenRecovered","type":"event"},{"anonymous":false,"inputs":[],"name":"ETHBalancesRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFeesUpdated","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":[],"name":"TradingEnabledUpdated","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"includeFromFeesUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"IncludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_TX_LIMITS_SWAP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createTradingPair","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract ITempRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200033e565b62000020906107d062000355565b600455620000316009600a6200033e565b620000409062e4e1c062000355565b600555620000516009600a6200033e565b62000061906301312d0062000355565b600655602060075560276008555f600955600a805462ffffff191690553480156200008a575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b03191673fff080bd0aa23afdd611353047ad81aa822065bd178155600a805476e3fffa2b30b2e1e8e7d42de83d271d280d3c4c810000006301000000600160b81b031990911617815560026020527f6a9609baa168169acaea398c4407efea4be641bb08e21e88806d9836fd9333cc805460ff199081166001908117909255335f9081526040808220805484168517905594546001600160a01b0390811682528582208054841685179055845463010000009004168152848120805483168417905530815293909320805490931617909155620001b6906009906200033e565b620001c690633b9aca0062000355565b335f81815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002086009600a6200033e565b6200021890633b9aca0062000355565b60405190815260200160405180910390a36200036f565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200028357815f19048211156200026757620002676200022f565b808516156200027557918102915b93841c939080029062000248565b509250929050565b5f826200029b5750600162000338565b81620002a957505f62000338565b8160018114620002c25760028114620002cd57620002ed565b600191505062000338565b60ff841115620002e157620002e16200022f565b50506001821b62000338565b5060208310610133831016604e8410600b841016171562000312575081810a62000338565b6200031e838362000243565b805f19048211156200033457620003346200022f565b0290505b92915050565b5f6200034e60ff8416836200028b565b9392505050565b80820281158282048414176200033857620003386200022f565b611fb7806200037d5f395ff3fe60806040526004361061014a575f3560e01c806362256589116100b3578063b29a81401161006d578063b29a8140146103a9578063c1899962146103c8578063c9567bf9146103e7578063d621e813146103fb578063dd62ed3e14610419578063f2fde38b1461045d575f80fd5b806362256589146102e457806370a08231146102f8578063715018a61461032c5780638da5cb5b1461034057806395d89b411461035c578063a9059cbb1461038a575f80fd5b806318160ddd1161010457806318160ddd1461023f57806323b872dd1461026157806327c8f83514610280578063313ce567146102955780634d131ef7146102b057806357a00f76146102c5575f80fd5b80630614117a1461015557806306fdde031461016b578063095ea7b3146101b25780630b78f9c0146101e15780630c11ab69146102005780631694505e14610208575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016961047c565b005b348015610176575f80fd5b5060408051808201909152600d81526c54656d7075735377617020414960981b60208201525b6040516101a99190611b3c565b60405180910390f35b3480156101bd575f80fd5b506101d16101cc366004611b9b565b610552565b60405190151581526020016101a9565b3480156101ec575f80fd5b506101696101fb366004611bc5565b610568565b6101696105fa565b348015610213575f80fd5b50600d54610227906001600160a01b031681565b6040516001600160a01b0390911681526020016101a9565b34801561024a575f80fd5b5061025361089b565b6040519081526020016101a9565b34801561026c575f80fd5b506101d161027b366004611be5565b6108bb565b34801561028b575f80fd5b5061022761dead81565b3480156102a0575f80fd5b50604051600981526020016101a9565b3480156102bb575f80fd5b5061025360055481565b3480156102d0575f80fd5b506101696102df366004611c23565b610969565b3480156102ef575f80fd5b50610169610a49565b348015610303575f80fd5b50610253610312366004611c23565b6001600160a01b03165f9081526001602052604090205490565b348015610337575f80fd5b50610169610a9b565b34801561034b575f80fd5b505f546001600160a01b0316610227565b348015610367575f80fd5b5060408051808201909152600681526554454d50555360d01b602082015261019c565b348015610395575f80fd5b506101d16103a4366004611b9b565b610b0c565b3480156103b4575f80fd5b506101696103c3366004611b9b565b610b18565b3480156103d3575f80fd5b506101696103e2366004611c23565b610d2c565b3480156103f2575f80fd5b50610169610e08565b348015610406575f80fd5b50600a546101d190610100900460ff1681565b348015610424575f80fd5b50610253610433366004611c3e565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610468575f80fd5b50610169610477366004611c23565b610ec4565b47806104a35760405162461bcd60e51b815260040161049a90611c75565b60405180910390fd5b478111156104e95760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b604482015260640161049a565b600a5460405163010000009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610526573d5f803e3d5ffd5b506040517f3bb0684d6f9d76c7e55b7c296d6672f480511b6f9a014d1dd32b6288bd632d72905f90a150565b5f61055e338484610f5e565b5060015b92915050565b5f546001600160a01b031633146105915760405162461bcd60e51b815260040161049a90611cb7565b606482111580156105a3575060648111155b6105ef5760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e677300000000000000604482015260640161049a565b600791909155600855565b5f546001600160a01b031633146106235760405162461bcd60e51b815260040161049a90611cb7565b600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610685573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a99190611cec565b6001600160a01b031663c9c6539630600d5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610708573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072c9190611cec565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610776573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079a9190611cec565b600c80546001600160a01b0319166001600160a01b03928316179055600d546107c7913091165f19610f5e565b600d546001600160a01b031663f305d71934306107f8816001600160a01b03165f9081526001602052604090205490565b5f8061080b5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610871573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108969190611d07565b505050565b5f6108a86009600a611e26565b6108b690633b9aca00611e34565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120548281101561093f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161049a565b61094a858585611081565b61095e85336109598685611e4b565b610f5e565b506001949350505050565b5f546001600160a01b031633146109925760405162461bcd60e51b815260040161049a90611cb7565b6001600160a01b0381165f9081526002602052604090205460ff1615156001036109fe5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161049a565b6001600160a01b0381165f81815260026020526040808220805460ff19166001179055517f3b27b77c12873f49f9de6c571431dd7c5b1e847f180217efc51f654b835407069190a250565b5f546001600160a01b03163314610a725760405162461bcd60e51b815260040161049a90611cb7565b60026007819055600855610a886009600a611e26565b610a9690633b9aca00611e34565b600555565b5f546001600160a01b03163314610ac45760405162461bcd60e51b815260040161049a90611cb7565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61055e338484611081565b5f546001600160a01b03163314610b415760405162461bcd60e51b815260040161049a90611cb7565b306001600160a01b03831603610bb85760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b606482015260840161049a565b5f8111610bd75760405162461bcd60e51b815260040161049a90611c75565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610c19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3d9190611e5e565b811115610c825760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b604482015260640161049a565b600a5460405163a9059cbb60e01b815263010000009091046001600160a01b0390811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af1158015610cd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfd9190611e75565b5060405181907fb27b69782743fafd4beb1c4e47d050e6a008a7e5e7c9b7330c78a65238498a90905f90a25050565b5f546001600160a01b03163314610d555760405162461bcd60e51b815260040161049a90611cb7565b6001600160a01b0381165f9081526002602052604081205460ff1615159003610dc05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c756465640000000000604482015260640161049a565b6001600160a01b0381165f81815260026020526040808220805460ff19169055517f2787cd66e3c6209ac87ec0b3968ae31a8b953e70a037317f53c3e3e67b101e229190a250565b5f546001600160a01b03163314610e315760405162461bcd60e51b815260040161049a90611cb7565b600a54610100900460ff1615610e895760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161049a565b600a805462ffff001916620101001790556040517fd3c2fdcaf5cd26a75c5d60e014554eb53dc349069d8db1f275187743614b17b4905f90a1565b5f546001600160a01b03163314610eed5760405162461bcd60e51b815260040161049a90611cb7565b6001600160a01b038116610f525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161049a565b610f5b81611849565b50565b6001600160a01b038316610fc05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049a565b6001600160a01b0382166110215760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049a565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049a565b6001600160a01b0382166111475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049a565b5f81116111a85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161049a565b6007546001600160a01b0384165f9081526002602052604090205460ff161580156111eb57506001600160a01b0383165f9081526002602052604090205460ff16155b1561123d57600a54610100900460ff1661123d5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161049a565b600a5460ff16806112575750600a5462010000900460ff16155b156112f6576001600160a01b0384165f9081526001602052604081208054849290611283908490611e4b565b90915550506001600160a01b0383165f90815260016020526040812080548492906112af908490611e94565b92505081905550826001600160a01b0316846001600160a01b03165f80516020611f62833981519152846040516112e891815260200190565b60405180910390a350505050565b600c546001600160a01b0385811691161480156113215750600d546001600160a01b03848116911614155b801561134557506001600160a01b0383165f9081526002602052604090205460ff16155b15611427576005548211156113985760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161049a565b600554826113ba856001600160a01b03165f9081526001602052604090205490565b6113c49190611e94565b11156114125760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049a565b60098054905f61142183611ea7565b91905055505b600c546001600160a01b0385811691161480159061145d57506001600160a01b0384165f9081526002602052604090205460ff16155b801561148157506001600160a01b0383165f9081526002602052604090205460ff16155b156114d4576005548211156114d45760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161049a565b600c546001600160a01b0384811691161480156114fa57506001600160a01b0384163014155b801561151e57506001600160a01b0384165f9081526002602052604090205460ff16155b801561154257506001600160a01b0383165f9081526002602052604090205460ff16155b1561154c57506008545b305f90815260016020526040902054600454831080159061157a5750600c546001600160a01b038581169116145b801561158757505f600954115b80156115965750600a5460ff16155b80156115ba57506001600160a01b0385165f9081526002602052604090205460ff16155b80156115c857506004548110155b80156115dc5750600a5462010000900460ff165b801561160057506001600160a01b0384165f9081526002602052604090205460ff16155b156116345761162261161d8461161884600654611898565b611898565b6118af565b4780156116325761163247611a63565b505b81156117ad575f60646116478486611e34565b6116519190611ebf565b90505f61165e8286611e4b565b6001600160a01b0388165f908152600260205260408120549192509060ff166116875730611689565b875b6001600160a01b0389165f9081526002602052604090205490915060ff166116b157826116b3565b855b6001600160a01b0382165f908152600160205260408120805492955085929091906116df908490611e94565b909155505060405183815230906001600160a01b038a16905f80516020611f628339815191529060200160405180910390a36001600160a01b0388165f9081526001602052604081208054889290611738908490611e4b565b90915550506001600160a01b0387165f9081526001602052604081208054849290611764908490611e94565b92505081905550866001600160a01b0316886001600160a01b03165f80516020611f628339815191528460405161179d91815260200190565b60405180910390a3505050611842565b6001600160a01b0385165f90815260016020526040812080548592906117d4908490611e4b565b90915550506001600160a01b0384165f9081526001602052604081208054859290611800908490611e94565b92505081905550836001600160a01b0316856001600160a01b03165f80516020611f628339815191528560405161183991815260200190565b60405180910390a35b5050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183116118a657826118a8565b815b9392505050565b600a805460ff19166001179055806119095760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e2030000000604482015260640161049a565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061193c5761193c611ede565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611993573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b79190611cec565b816001815181106119ca576119ca611ede565b6001600160a01b039283166020918202929092010152600d546119f09130911684610f5e565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a289085905f90869030904290600401611ef2565b5f604051808303815f87803b158015611a3f575f80fd5b505af1158015611a51573d5f803e3d5ffd5b5050600a805460ff1916905550505050565b5f8111611ab25760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e2030000000604482015260640161049a565b600b546001600160a01b03166108fc611acc600284611ebf565b6040518115909202915f818181858888f19350505050158015611af1573d5f803e3d5ffd5b50600a54630100000090046001600160a01b03166108fc611b13600284611ebf565b6040518115909202915f818181858888f19350505050158015611b38573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b81811015611b6757858101830151858201604001528201611b4b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f5b575f80fd5b5f8060408385031215611bac575f80fd5b8235611bb781611b87565b946020939093013593505050565b5f8060408385031215611bd6575f80fd5b50508035926020909101359150565b5f805f60608486031215611bf7575f80fd5b8335611c0281611b87565b92506020840135611c1281611b87565b929592945050506040919091013590565b5f60208284031215611c33575f80fd5b81356118a881611b87565b5f8060408385031215611c4f575f80fd5b8235611c5a81611b87565b91506020830135611c6a81611b87565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611cfc575f80fd5b81516118a881611b87565b5f805f60608486031215611d19575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d8057815f1904821115611d6657611d66611d32565b80851615611d7357918102915b93841c9390800290611d4b565b509250929050565b5f82611d9657506001610562565b81611da257505f610562565b8160018114611db85760028114611dc257611dde565b6001915050610562565b60ff841115611dd357611dd3611d32565b50506001821b610562565b5060208310610133831016604e8410600b8410161715611e01575081810a610562565b611e0b8383611d46565b805f1904821115611e1e57611e1e611d32565b029392505050565b5f6118a860ff841683611d88565b808202811582820484141761056257610562611d32565b8181038181111561056257610562611d32565b5f60208284031215611e6e575f80fd5b5051919050565b5f60208284031215611e85575f80fd5b815180151581146118a8575f80fd5b8082018082111561056257610562611d32565b5f60018201611eb857611eb8611d32565b5060010190565b5f82611ed957634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f405784516001600160a01b031683529383019391830191600101611f1b565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203152130f8b34d6f9a1a43151dbdd1cc004c864006905dc3f5a5ef68dcd32f8e664736f6c63430008150033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806362256589116100b3578063b29a81401161006d578063b29a8140146103a9578063c1899962146103c8578063c9567bf9146103e7578063d621e813146103fb578063dd62ed3e14610419578063f2fde38b1461045d575f80fd5b806362256589146102e457806370a08231146102f8578063715018a61461032c5780638da5cb5b1461034057806395d89b411461035c578063a9059cbb1461038a575f80fd5b806318160ddd1161010457806318160ddd1461023f57806323b872dd1461026157806327c8f83514610280578063313ce567146102955780634d131ef7146102b057806357a00f76146102c5575f80fd5b80630614117a1461015557806306fdde031461016b578063095ea7b3146101b25780630b78f9c0146101e15780630c11ab69146102005780631694505e14610208575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016961047c565b005b348015610176575f80fd5b5060408051808201909152600d81526c54656d7075735377617020414960981b60208201525b6040516101a99190611b3c565b60405180910390f35b3480156101bd575f80fd5b506101d16101cc366004611b9b565b610552565b60405190151581526020016101a9565b3480156101ec575f80fd5b506101696101fb366004611bc5565b610568565b6101696105fa565b348015610213575f80fd5b50600d54610227906001600160a01b031681565b6040516001600160a01b0390911681526020016101a9565b34801561024a575f80fd5b5061025361089b565b6040519081526020016101a9565b34801561026c575f80fd5b506101d161027b366004611be5565b6108bb565b34801561028b575f80fd5b5061022761dead81565b3480156102a0575f80fd5b50604051600981526020016101a9565b3480156102bb575f80fd5b5061025360055481565b3480156102d0575f80fd5b506101696102df366004611c23565b610969565b3480156102ef575f80fd5b50610169610a49565b348015610303575f80fd5b50610253610312366004611c23565b6001600160a01b03165f9081526001602052604090205490565b348015610337575f80fd5b50610169610a9b565b34801561034b575f80fd5b505f546001600160a01b0316610227565b348015610367575f80fd5b5060408051808201909152600681526554454d50555360d01b602082015261019c565b348015610395575f80fd5b506101d16103a4366004611b9b565b610b0c565b3480156103b4575f80fd5b506101696103c3366004611b9b565b610b18565b3480156103d3575f80fd5b506101696103e2366004611c23565b610d2c565b3480156103f2575f80fd5b50610169610e08565b348015610406575f80fd5b50600a546101d190610100900460ff1681565b348015610424575f80fd5b50610253610433366004611c3e565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610468575f80fd5b50610169610477366004611c23565b610ec4565b47806104a35760405162461bcd60e51b815260040161049a90611c75565b60405180910390fd5b478111156104e95760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b604482015260640161049a565b600a5460405163010000009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015610526573d5f803e3d5ffd5b506040517f3bb0684d6f9d76c7e55b7c296d6672f480511b6f9a014d1dd32b6288bd632d72905f90a150565b5f61055e338484610f5e565b5060015b92915050565b5f546001600160a01b031633146105915760405162461bcd60e51b815260040161049a90611cb7565b606482111580156105a3575060648111155b6105ef5760405162461bcd60e51b815260206004820152601960248201527f7265766572742077726f6e67206665652073657474696e677300000000000000604482015260640161049a565b600791909155600855565b5f546001600160a01b031633146106235760405162461bcd60e51b815260040161049a90611cb7565b600d80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015610685573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106a99190611cec565b6001600160a01b031663c9c6539630600d5f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610708573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072c9190611cec565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610776573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061079a9190611cec565b600c80546001600160a01b0319166001600160a01b03928316179055600d546107c7913091165f19610f5e565b600d546001600160a01b031663f305d71934306107f8816001600160a01b03165f9081526001602052604090205490565b5f8061080b5f546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610871573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108969190611d07565b505050565b5f6108a86009600a611e26565b6108b690633b9aca00611e34565b905090565b6001600160a01b0383165f9081526003602090815260408083203384529091528120548281101561093f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161049a565b61094a858585611081565b61095e85336109598685611e4b565b610f5e565b506001949350505050565b5f546001600160a01b031633146109925760405162461bcd60e51b815260040161049a90611cb7565b6001600160a01b0381165f9081526002602052604090205460ff1615156001036109fe5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015260640161049a565b6001600160a01b0381165f81815260026020526040808220805460ff19166001179055517f3b27b77c12873f49f9de6c571431dd7c5b1e847f180217efc51f654b835407069190a250565b5f546001600160a01b03163314610a725760405162461bcd60e51b815260040161049a90611cb7565b60026007819055600855610a886009600a611e26565b610a9690633b9aca00611e34565b600555565b5f546001600160a01b03163314610ac45760405162461bcd60e51b815260040161049a90611cb7565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f61055e338484611081565b5f546001600160a01b03163314610b415760405162461bcd60e51b815260040161049a90611cb7565b306001600160a01b03831603610bb85760405162461bcd60e51b815260206004820152603660248201527f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c604482015275616e6365206f6620697473206f776e20746f6b656e7360501b606482015260840161049a565b5f8111610bd75760405162461bcd60e51b815260040161049a90611c75565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610c19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3d9190611e5e565b811115610c825760405162461bcd60e51b8152602060048201526013602482015272125b9cdd59999a58da595b9d08105b5bdd5b9d606a1b604482015260640161049a565b600a5460405163a9059cbb60e01b815263010000009091046001600160a01b0390811660048301526024820183905283169063a9059cbb906044016020604051808303815f875af1158015610cd9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfd9190611e75565b5060405181907fb27b69782743fafd4beb1c4e47d050e6a008a7e5e7c9b7330c78a65238498a90905f90a25050565b5f546001600160a01b03163314610d555760405162461bcd60e51b815260040161049a90611cb7565b6001600160a01b0381165f9081526002602052604081205460ff1615159003610dc05760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c756465640000000000604482015260640161049a565b6001600160a01b0381165f81815260026020526040808220805460ff19169055517f2787cd66e3c6209ac87ec0b3968ae31a8b953e70a037317f53c3e3e67b101e229190a250565b5f546001600160a01b03163314610e315760405162461bcd60e51b815260040161049a90611cb7565b600a54610100900460ff1615610e895760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e000000000000000000604482015260640161049a565b600a805462ffff001916620101001790556040517fd3c2fdcaf5cd26a75c5d60e014554eb53dc349069d8db1f275187743614b17b4905f90a1565b5f546001600160a01b03163314610eed5760405162461bcd60e51b815260040161049a90611cb7565b6001600160a01b038116610f525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161049a565b610f5b81611849565b50565b6001600160a01b038316610fc05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161049a565b6001600160a01b0382166110215760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161049a565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161049a565b6001600160a01b0382166111475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161049a565b5f81116111a85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161049a565b6007546001600160a01b0384165f9081526002602052604090205460ff161580156111eb57506001600160a01b0383165f9081526002602052604090205460ff16155b1561123d57600a54610100900460ff1661123d5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161049a565b600a5460ff16806112575750600a5462010000900460ff16155b156112f6576001600160a01b0384165f9081526001602052604081208054849290611283908490611e4b565b90915550506001600160a01b0383165f90815260016020526040812080548492906112af908490611e94565b92505081905550826001600160a01b0316846001600160a01b03165f80516020611f62833981519152846040516112e891815260200190565b60405180910390a350505050565b600c546001600160a01b0385811691161480156113215750600d546001600160a01b03848116911614155b801561134557506001600160a01b0383165f9081526002602052604090205460ff16155b15611427576005548211156113985760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161049a565b600554826113ba856001600160a01b03165f9081526001602052604090205490565b6113c49190611e94565b11156114125760405162461bcd60e51b815260206004820152601a60248201527f4578636565647320746865206d617857616c6c657453697a652e000000000000604482015260640161049a565b60098054905f61142183611ea7565b91905055505b600c546001600160a01b0385811691161480159061145d57506001600160a01b0384165f9081526002602052604090205460ff16155b801561148157506001600160a01b0383165f9081526002602052604090205460ff16155b156114d4576005548211156114d45760405162461bcd60e51b815260206004820152601960248201527822bc31b2b2b239903a3432902fb6b0bc2a3c20b6b7bab73a1760391b604482015260640161049a565b600c546001600160a01b0384811691161480156114fa57506001600160a01b0384163014155b801561151e57506001600160a01b0384165f9081526002602052604090205460ff16155b801561154257506001600160a01b0383165f9081526002602052604090205460ff16155b1561154c57506008545b305f90815260016020526040902054600454831080159061157a5750600c546001600160a01b038581169116145b801561158757505f600954115b80156115965750600a5460ff16155b80156115ba57506001600160a01b0385165f9081526002602052604090205460ff16155b80156115c857506004548110155b80156115dc5750600a5462010000900460ff165b801561160057506001600160a01b0384165f9081526002602052604090205460ff16155b156116345761162261161d8461161884600654611898565b611898565b6118af565b4780156116325761163247611a63565b505b81156117ad575f60646116478486611e34565b6116519190611ebf565b90505f61165e8286611e4b565b6001600160a01b0388165f908152600260205260408120549192509060ff166116875730611689565b875b6001600160a01b0389165f9081526002602052604090205490915060ff166116b157826116b3565b855b6001600160a01b0382165f908152600160205260408120805492955085929091906116df908490611e94565b909155505060405183815230906001600160a01b038a16905f80516020611f628339815191529060200160405180910390a36001600160a01b0388165f9081526001602052604081208054889290611738908490611e4b565b90915550506001600160a01b0387165f9081526001602052604081208054849290611764908490611e94565b92505081905550866001600160a01b0316886001600160a01b03165f80516020611f628339815191528460405161179d91815260200190565b60405180910390a3505050611842565b6001600160a01b0385165f90815260016020526040812080548592906117d4908490611e4b565b90915550506001600160a01b0384165f9081526001602052604081208054859290611800908490611e94565b92505081905550836001600160a01b0316856001600160a01b03165f80516020611f628339815191528560405161183991815260200190565b60405180910390a35b5050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183116118a657826118a8565b815b9392505050565b600a805460ff19166001179055806119095760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e2030000000604482015260640161049a565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061193c5761193c611ede565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611993573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119b79190611cec565b816001815181106119ca576119ca611ede565b6001600160a01b039283166020918202929092010152600d546119f09130911684610f5e565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac94790611a289085905f90869030904290600401611ef2565b5f604051808303815f87803b158015611a3f575f80fd5b505af1158015611a51573d5f803e3d5ffd5b5050600a805460ff1916905550505050565b5f8111611ab25760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726565746572207468616e2030000000604482015260640161049a565b600b546001600160a01b03166108fc611acc600284611ebf565b6040518115909202915f818181858888f19350505050158015611af1573d5f803e3d5ffd5b50600a54630100000090046001600160a01b03166108fc611b13600284611ebf565b6040518115909202915f818181858888f19350505050158015611b38573d5f803e3d5ffd5b5050565b5f6020808352835180828501525f5b81811015611b6757858101830151858201604001528201611b4b565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f5b575f80fd5b5f8060408385031215611bac575f80fd5b8235611bb781611b87565b946020939093013593505050565b5f8060408385031215611bd6575f80fd5b50508035926020909101359150565b5f805f60608486031215611bf7575f80fd5b8335611c0281611b87565b92506020840135611c1281611b87565b929592945050506040919091013590565b5f60208284031215611c33575f80fd5b81356118a881611b87565b5f8060408385031215611c4f575f80fd5b8235611c5a81611b87565b91506020830135611c6a81611b87565b809150509250929050565b60208082526022908201527f416d6f756e742073686f756c642062652067726561746572207468616e207a65604082015261726f60f01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611cfc575f80fd5b81516118a881611b87565b5f805f60608486031215611d19575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611d8057815f1904821115611d6657611d66611d32565b80851615611d7357918102915b93841c9390800290611d4b565b509250929050565b5f82611d9657506001610562565b81611da257505f610562565b8160018114611db85760028114611dc257611dde565b6001915050610562565b60ff841115611dd357611dd3611d32565b50506001821b610562565b5060208310610133831016604e8410600b8410161715611e01575081810a610562565b611e0b8383611d46565b805f1904821115611e1e57611e1e611d32565b029392505050565b5f6118a860ff841683611d88565b808202811582820484141761056257610562611d32565b8181038181111561056257610562611d32565b5f60208284031215611e6e575f80fd5b5051919050565b5f60208284031215611e85575f80fd5b815180151581146118a8575f80fd5b8082018082111561056257610562611d32565b5f60018201611eb857611eb8611d32565b5060010190565b5f82611ed957634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611f405784516001600160a01b031683529383019391830191600101611f1b565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203152130f8b34d6f9a1a43151dbdd1cc004c864006905dc3f5a5ef68dcd32f8e664736f6c63430008150033

Deployed Bytecode Sourcemap

3525:10461:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7246:384;;;;;;;;;;;;;:::i;:::-;;9275:83;;;;;;;;;;-1:-1:-1;9345:5:0;;;;;;;;;;;;-1:-1:-1;;;9345:5:0;;;;9275:83;;;;;;;:::i;:::-;;;;;;;;6257:186;;;;;;;;;;-1:-1:-1;6257:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;6257:186:0;1023:187:1;6451:221:0;;;;;;;;;;-1:-1:-1;6451:221:0;;;;;:::i;:::-;;:::i;7638:624::-;;;:::i;4866:34::-;;;;;;;;;;-1:-1:-1;4866:34:0;;;;-1:-1:-1;;;;;4866:34:0;;;;;;-1:-1:-1;;;;;1651:32:1;;;1633:51;;1621:2;1606:18;4866:34:0;1468:222:1;9546:100:0;;;;;;;;;;;;;:::i;:::-;;;1841:25:1;;;1829:2;1814:18;9546:100:0;1695:177:1;12683:481:0;;;;;;;;;;-1:-1:-1;12683:481:0;;;;;:::i;:::-;;:::i;4743:80::-;;;;;;;;;;;;4781:42;4743:80;;9457:83;;;;;;;;;;-1:-1:-1;9457:83:0;;3796:1;2688:36:1;;2676:2;2661:18;9457:83:0;2546:184:1;4307:59:0;;;;;;;;;;;;;;;;8270:282;;;;;;;;;;-1:-1:-1;8270:282:0;;;;;:::i;:::-;;:::i;13172:138::-;;;;;;;;;;;;;:::i;9652:117::-;;;;;;;;;;-1:-1:-1;9652:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9745:16:0;9718:7;9745:16;;;:7;:16;;;;;;;9652:117;2575:148;;;;;;;;;;;;;:::i;1924:79::-;;;;;;;;;;-1:-1:-1;1962:7:0;1989:6;-1:-1:-1;;;;;1989:6:0;1924:79;;9364:87;;;;;;;;;;-1:-1:-1;9436:7:0;;;;;;;;;;;;-1:-1:-1;;;9436:7:0;;;;9364:87;;5885:192;;;;;;;;;;-1:-1:-1;5885:192:0;;;;;:::i;:::-;;:::i;6680:558::-;;;;;;;;;;-1:-1:-1;6680:558:0;;;;;:::i;:::-;;:::i;8560:284::-;;;;;;;;;;-1:-1:-1;8560:284:0;;;;;:::i;:::-;;:::i;9059:208::-;;;;;;;;;;;;;:::i;4584:32::-;;;;;;;;;;-1:-1:-1;4584:32:0;;;;;;;;;;;6083:168;;;;;;;;;;-1:-1:-1;6083:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;6216:18:0;;;6189:7;6216:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6083:168;2134:238;;;;;;;;;;-1:-1:-1;2134:238:0;;;;;:::i;:::-;;:::i;7246:384::-;7311:21;7351:16;7343:63;;;;-1:-1:-1;;;7343:63:0;;;;;;;:::i;:::-;;;;;;;;;7455:21;7439:12;:37;;7417:106;;;;-1:-1:-1;;;7417:106:0;;3985:2:1;7417:106:0;;;3967:21:1;4024:2;4004:18;;;3997:30;-1:-1:-1;;;4043:18:1;;;4036:49;4102:18;;7417:106:0;3783:343:1;7417:106:0;7550:9;;7534:50;;7550:9;;;;-1:-1:-1;;;;;7550:9:0;;7534:50;;;;;;;;;;;;7550:9;7534:50;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7600:22:0;;;;;;;7277:353;7246:384::o;6257:186::-;6357:4;6374:39;903:10;6397:7;6406:6;6374:8;:39::i;:::-;-1:-1:-1;6431:4:0;6257:186;;;;;:::o;6451:221::-;2049:6;;-1:-1:-1;;;;;2049:6:0;903:10;2049:22;2041:67;;;;-1:-1:-1;;;2041:67:0;;;;;;;:::i;:::-;6552:3:::1;6541:7;:14;;:33;;;;;6571:3;6559:8;:15;;6541:33;6533:71;;;::::0;-1:-1:-1;;;6533:71:0;;4694:2:1;6533:71:0::1;::::0;::::1;4676:21:1::0;4733:2;4713:18;;;4706:30;4772:27;4752:18;;;4745:55;4817:18;;6533:71:0::1;4492:349:1::0;6533:71:0::1;6615:8;:18:::0;;;;6644:9:::1;:20:::0;6451:221::o;7638:624::-;2049:6;;-1:-1:-1;;;;;2049:6:0;903:10;2049:22;2041:67;;;;-1:-1:-1;;;2041:67:0;;;;;;;:::i;:::-;7705:15:::1;:97:::0;;-1:-1:-1;;;;;;7705:97:0::1;7749:42;7705:97:::0;;::::1;::::0;;;7842:25:::1;::::0;;-1:-1:-1;;;7842:25:0;;;;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;7749:42;7842:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;7829:50:0::1;;7902:4;7922:15;;;;;;;;;-1:-1:-1::0;;;;;7922:15:0::1;-1:-1:-1::0;;;;;7922:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7829:126;::::0;-1:-1:-1;;;;;;7829:126:0::1;::::0;;;;;;-1:-1:-1;;;;;5332:15:1;;;7829:126:0::1;::::0;::::1;5314:34:1::0;5384:15;;5364:18;;;5357:43;5249:18;;7829:126:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7813:13;:142:::0;;-1:-1:-1;;;;;;7813:142:0::1;-1:-1:-1::0;;;;;7813:142:0;;::::1;;::::0;;8000:15:::1;::::0;7968:62:::1;::::0;7985:4:::1;::::0;8000:15:::1;-1:-1:-1::0;;7968:8:0::1;:62::i;:::-;8043:15;::::0;-1:-1:-1;;;;;8043:15:0::1;:31;8082:9;8115:4;8135:24;8115:4:::0;-1:-1:-1;;;;;9745:16:0;9718:7;9745:16;;;:7;:16;;;;;;;9652:117;8135:24:::1;8174:1;8190::::0;8206:7:::1;1962::::0;1989:6;-1:-1:-1;;;;;1989:6:0;;1924:79;8206:7:::1;8043:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;8043:211:0;;;-1:-1:-1;;;;;5770:15:1;;;8043:211:0::1;::::0;::::1;5752:34:1::0;5802:18;;;5795:34;;;;5845:18;;;5838:34;;;;5888:18;;;5881:34;5952:15;;;5931:19;;;5924:44;8228:15:0::1;5984:19:1::0;;;5977:35;5686:19;;8043:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7638:624::o:0;9546:100::-;9599:7;3857:15;3796:1;3857:2;:15;:::i;:::-;3844:28;;:10;:28;:::i;:::-;9619:19;;9546:100;:::o;12683:481::-;-1:-1:-1;;;;;12859:19:0;;12815:4;12859:19;;;:11;:19;;;;;;;;903:10;12859:33;;;;;;;;12925:26;;;;12903:116;;;;-1:-1:-1;;;12903:116:0;;8224:2:1;12903:116:0;;;8206:21:1;8263:2;8243:18;;;8236:30;8302:34;8282:18;;;8275:62;-1:-1:-1;;;8353:18:1;;;8346:38;8401:19;;12903:116:0;8022:404:1;12903:116:0;13030:36;13040:6;13048:9;13059:6;13030:9;:36::i;:::-;13077:57;13086:6;903:10;13108:25;13127:6;13108:16;:25;:::i;:::-;13077:8;:57::i;:::-;-1:-1:-1;13152:4:0;;12683:481;-1:-1:-1;;;;12683:481:0:o;8270:282::-;2049:6;;-1:-1:-1;;;;;2049:6:0;903:10;2049:22;2041:67;;;;-1:-1:-1;;;2041:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8364:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;:34;;:26:::0;:34;8342:111:::1;;;::::0;-1:-1:-1;;;8342:111:0;;8766:2:1;8342:111:0::1;::::0;::::1;8748:21:1::0;8805:2;8785:18;;;8778:30;8844:29;8824:18;;;8817:57;8891:18;;8342:111:0::1;8564:351:1::0;8342:111:0::1;-1:-1:-1::0;;;;;8464:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;:33;;-1:-1:-1;;8464:33:0::1;8493:4;8464:33;::::0;;8513:31;::::1;::::0;8464:26;8513:31:::1;8270:282:::0;:::o;13172:138::-;2049:6;;-1:-1:-1;;;;;2049:6:0;903:10;2049:22;2041:67;;;;-1:-1:-1;;;2041:67:0;;;;;;;:::i;:::-;13236:1:::1;13225:8;:12:::0;;;13248:9:::1;:13:::0;3857:15:::1;3796:1;3857:2;:15;:::i;:::-;3844:28;::::0;:10:::1;:28;:::i;:::-;13272:15;:30:::0;13172:138::o;2575:148::-;2049:6;;-1:-1:-1;;;;;2049:6:0;903:10;2049:22;2041:67;;;;-1:-1:-1;;;2041:67:0;;;;;;;:::i;:::-;2682:1:::1;2666:6:::0;;2645:40:::1;::::0;-1:-1:-1;;;;;2666:6:0;;::::1;::::0;2645:40:::1;::::0;2682:1;;2645:40:::1;2713:1;2696:19:::0;;-1:-1:-1;;;;;;2696:19:0::1;::::0;;2575:148::o;5885:192::-;5988:4;6005:42;903:10;6029:9;6040:6;6005:9;:42::i;6680:558::-;2049:6;;-1:-1:-1;;;;;2049:6:0;903:10;2049:22;2041:67;;;;-1:-1:-1;;;2041:67:0;;;;;;;:::i;:::-;6838:4:::1;-1:-1:-1::0;;;;;6816:27:0;::::1;::::0;6794:131:::1;;;::::0;-1:-1:-1;;;6794:131:0;;9122:2:1;6794:131:0::1;::::0;::::1;9104:21:1::0;9161:2;9141:18;;;9134:30;9200:34;9180:18;;;9173:62;-1:-1:-1;;;9251:18:1;;;9244:52;9313:19;;6794:131:0::1;8920:418:1::0;6794:131:0::1;6954:1;6944:7;:11;6936:58;;;;-1:-1:-1::0;;;6936:58:0::1;;;;;;;:::i;:::-;7038:43;::::0;-1:-1:-1;;;7038:43:0;;7075:4:::1;7038:43;::::0;::::1;1633:51:1::0;-1:-1:-1;;;;;7038:28:0;::::1;::::0;::::1;::::0;1606:18:1;;7038:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7027:7;:54;;7005:123;;;::::0;-1:-1:-1;;;7005:123:0;;3985:2:1;7005:123:0::1;::::0;::::1;3967:21:1::0;4024:2;4004:18;;;3997:30;-1:-1:-1;;;4043:18:1;;;4036:49;4102:18;;7005:123:0::1;3783:343:1::0;7005:123:0::1;7167:9;::::0;7139:47:::1;::::0;-1:-1:-1;;;7139:47:0;;7167:9;;;::::1;-1:-1:-1::0;;;;;7167:9:0;;::::1;7139:47;::::0;::::1;9714:51:1::0;9781:18;;;9774:34;;;7139:27:0;::::1;::::0;::::1;::::0;9687:18:1;;7139:47:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7202:28:0::1;::::0;7222:7;;7202:28:::1;::::0;;;::::1;6680:558:::0;;:::o;8560:284::-;2049:6;;-1:-1:-1;;;;;2049:6:0;903:10;2049:22;2041:67;;;;-1:-1:-1;;;2041:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8654:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;::::1;;:35;;::::0;;8632:112:::1;;;::::0;-1:-1:-1;;;8632:112:0;;10303:2:1;8632:112:0::1;::::0;::::1;10285:21:1::0;10342:2;10322:18;;;10315:30;10381:29;10361:18;;;10354:57;10428:18;;8632:112:0::1;10101:351:1::0;8632:112:0::1;-1:-1:-1::0;;;;;8755:26:0;::::1;8784:5;8755:26:::0;;;:17:::1;:26;::::0;;;;;:34;;-1:-1:-1;;8755:34:0::1;::::0;;8805:31;::::1;::::0;8784:5;8805:31:::1;8560:284:::0;:::o;9059:208::-;2049:6;;-1:-1:-1;;;;;2049:6:0;903:10;2049:22;2041:67;;;;-1:-1:-1;;;2041:67:0;;;;;;;:::i;:::-;9121:12:::1;::::0;::::1;::::0;::::1;;;9120:13;9112:49;;;::::0;-1:-1:-1;;;9112:49:0;;10659:2:1;9112:49:0::1;::::0;::::1;10641:21:1::0;10698:2;10678:18;;;10671:30;10737:25;10717:18;;;10710:53;10780:18;;9112:49:0::1;10457:347:1::0;9112:49:0::1;9172:12;:19:::0;;-1:-1:-1;;9202:18:0;;;;;9236:23:::1;::::0;::::1;::::0;-1:-1:-1;;9236:23:0::1;9059:208::o:0;2134:238::-;2049:6;;-1:-1:-1;;;;;2049:6:0;903:10;2049:22;2041:67;;;;-1:-1:-1;;;2041:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2237:22:0;::::1;2215:110;;;::::0;-1:-1:-1;;;2215:110:0;;11011:2:1;2215:110:0::1;::::0;::::1;10993:21:1::0;11050:2;11030:18;;;11023:30;11089:34;11069:18;;;11062:62;-1:-1:-1;;;11140:18:1;;;11133:36;11186:19;;2215:110:0::1;10809:402:1::0;2215:110:0::1;2336:28;2355:8;2336:18;:28::i;:::-;2134:238:::0;:::o;5544:335::-;-1:-1:-1;;;;;5637:19:0;;5629:68;;;;-1:-1:-1;;;5629:68:0;;11418:2:1;5629:68:0;;;11400:21:1;11457:2;11437:18;;;11430:30;11496:34;11476:18;;;11469:62;-1:-1:-1;;;11547:18:1;;;11540:34;11591:19;;5629:68:0;11216:400:1;5629:68:0;-1:-1:-1;;;;;5716:21:0;;5708:68;;;;-1:-1:-1;;;5708:68:0;;11823:2:1;5708:68:0;;;11805:21:1;11862:2;11842:18;;;11835:30;11901:34;11881:18;;;11874:62;-1:-1:-1;;;11952:18:1;;;11945:32;11994:19;;5708:68:0;11621:398:1;5708:68:0;-1:-1:-1;;;;;5787:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5839:32;;1841:25:1;;;5839:32:0;;1814:18:1;5839:32:0;;;;;;;5544:335;;;:::o;9777:2861::-;-1:-1:-1;;;;;9865:18:0;;9857:68;;;;-1:-1:-1;;;9857:68:0;;12226:2:1;9857:68:0;;;12208:21:1;12265:2;12245:18;;;12238:30;12304:34;12284:18;;;12277:62;-1:-1:-1;;;12355:18:1;;;12348:35;12400:19;;9857:68:0;12024:401:1;9857:68:0;-1:-1:-1;;;;;9944:16:0;;9936:64;;;;-1:-1:-1;;;9936:64:0;;12632:2:1;9936:64:0;;;12614:21:1;12671:2;12651:18;;;12644:30;12710:34;12690:18;;;12683:62;-1:-1:-1;;;12761:18:1;;;12754:33;12804:19;;9936:64:0;12430:399:1;9936:64:0;10028:1;10019:6;:10;10011:64;;;;-1:-1:-1;;;10011:64:0;;13036:2:1;10011:64:0;;;13018:21:1;13075:2;13055:18;;;13048:30;13114:34;13094:18;;;13087:62;-1:-1:-1;;;13165:18:1;;;13158:39;13214:19;;10011:64:0;12834:405:1;10011:64:0;10130:8;;-1:-1:-1;;;;;10154:23:0;;10086:17;10154:23;;;:17;:23;;;;;;;;10153:24;:50;;;;-1:-1:-1;;;;;;10182:21:0;;;;;;:17;:21;;;;;;;;10181:22;10153:50;10149:127;;;10228:12;;;;;;;10220:44;;;;-1:-1:-1;;;10220:44:0;;13446:2:1;10220:44:0;;;13428:21:1;13485:2;13465:18;;;13458:30;-1:-1:-1;;;13504:18:1;;;13497:49;13563:18;;10220:44:0;13244:343:1;10220:44:0;10290:8;;;;;:24;;-1:-1:-1;10303:11:0;;;;;;;10302:12;10290:24;10286:183;;;-1:-1:-1;;;;;10331:13:0;;;;;;:7;:13;;;;;:23;;10348:6;;10331:13;:23;;10348:6;;10331:23;:::i;:::-;;;;-1:-1:-1;;;;;;;10369:11:0;;;;;;:7;:11;;;;;:21;;10384:6;;10369:11;:21;;10384:6;;10369:21;:::i;:::-;;;;;;;;10425:2;-1:-1:-1;;;;;10410:26:0;10419:4;-1:-1:-1;;;;;10410:26:0;-1:-1:-1;;;;;;;;;;;10429:6:0;10410:26;;;;1841:25:1;;1829:2;1814:18;;1695:177;10410:26:0;;;;;;;;10451:7;9777:2861;;;:::o;10286:183::-;10505:13;;-1:-1:-1;;;;;10497:21:0;;;10505:13;;10497:21;:68;;;;-1:-1:-1;10549:15:0;;-1:-1:-1;;;;;10535:30:0;;;10549:15;;10535:30;;10497:68;:107;;;;-1:-1:-1;;;;;;10583:21:0;;;;;;:17;:21;;;;;;;;10582:22;10497:107;10479:397;;;10649:15;;10639:6;:25;;10631:63;;;;-1:-1:-1;;;10631:63:0;;13924:2:1;10631:63:0;;;13906:21:1;13963:2;13943:18;;;13936:30;-1:-1:-1;;;13982:18:1;;;13975:55;14047:18;;10631:63:0;13722:349:1;10631:63:0;10761:15;;10751:6;10735:13;10745:2;-1:-1:-1;;;;;9745:16:0;9718:7;9745:16;;;:7;:16;;;;;;;9652:117;10735:13;:22;;;;:::i;:::-;:41;;10709:129;;;;-1:-1:-1;;;10709:129:0;;14278:2:1;10709:129:0;;;14260:21:1;14317:2;14297:18;;;14290:30;14356:28;14336:18;;;14329:56;14402:18;;10709:129:0;14076:350:1;10709:129:0;10853:9;:11;;;:9;:11;;;:::i;:::-;;;;;;10479:397;10912:13;;-1:-1:-1;;;;;10904:21:0;;;10912:13;;10904:21;;;;:62;;-1:-1:-1;;;;;;10943:23:0;;;;;;:17;:23;;;;;;;;10942:24;10904:62;:101;;;;-1:-1:-1;;;;;;10984:21:0;;;;;;:17;:21;;;;;;;;10983:22;10904:101;10886:221;;;11050:15;;11040:6;:25;;11032:63;;;;-1:-1:-1;;;11032:63:0;;13924:2:1;11032:63:0;;;13906:21:1;13963:2;13943:18;;;13936:30;-1:-1:-1;;;13982:18:1;;;13975:55;14047:18;;11032:63:0;13722:349:1;11032:63:0;11141:13;;-1:-1:-1;;;;;11135:19:0;;;11141:13;;11135:19;:57;;;;-1:-1:-1;;;;;;11171:21:0;;11187:4;11171:21;;11135:57;:98;;;;-1:-1:-1;;;;;;11210:23:0;;;;;;:17;:23;;;;;;;;11209:24;11135:98;:137;;;;-1:-1:-1;;;;;;11251:21:0;;;;;;:17;:21;;;;;;;;11250:22;11135:137;11117:215;;;-1:-1:-1;11311:9:0;;11117:215;11388:4;11342:25;9745:16;;;:7;:16;;;;;;11433:15;;11423:25;;;;;:61;;-1:-1:-1;11471:13:0;;-1:-1:-1;;;;;11465:19:0;;;11471:13;;11465:19;11423:61;:91;;;;;11513:1;11501:9;;:13;11423:91;:117;;;;-1:-1:-1;11532:8:0;;;;11531:9;11423:117;:158;;;;-1:-1:-1;;;;;;11558:23:0;;;;;;:17;:23;;;;;;;;11557:24;11423:158;:211;;;;;11619:15;;11598:17;:36;;11423:211;:239;;;;-1:-1:-1;11651:11:0;;;;;;;11423:239;:278;;;;-1:-1:-1;;;;;;11680:21:0;;;;;;:17;:21;;;;;;;;11679:22;11423:278;11405:566;;;11728:67;11743:51;11747:6;11755:38;11759:17;11778:14;;11755:3;:38::i;:::-;11743:3;:51::i;:::-;11728:14;:67::i;:::-;11833:21;11873:16;;11869:91;;11910:34;11922:21;11910:11;:34::i;:::-;11713:258;11405:566;11987:14;;11983:648;;12018:14;12058:3;12036:18;12045:9;12036:6;:18;:::i;:::-;12035:26;;;;:::i;:::-;12018:43;-1:-1:-1;12076:17:0;12096:15;12018:43;12096:6;:15;:::i;:::-;-1:-1:-1;;;;;12144:23:0;;12126:15;12144:23;;;:17;:23;;;;;;12076:35;;-1:-1:-1;12126:15:0;12144:23;;:46;;12185:4;12144:46;;;12170:4;12144:46;-1:-1:-1;;;;;12214:23:0;;;;;;:17;:23;;;;;;12126:64;;-1:-1:-1;12214:23:0;;:41;;12249:6;12214:41;;;12240:6;12214:41;-1:-1:-1;;;;;12270:16:0;;;;;;:7;:16;;;;;:26;;12205:50;;-1:-1:-1;12205:50:0;;12270:16;;;:26;;12205:50;;12270:26;:::i;:::-;;;;-1:-1:-1;;12316:37:0;;1841:25:1;;;12339:4:0;;-1:-1:-1;;;;;12316:37:0;;;-1:-1:-1;;;;;;;;;;;12316:37:0;1829:2:1;1814:18;12316:37:0;;;;;;;-1:-1:-1;;;;;12370:13:0;;;;;;:7;:13;;;;;:23;;12387:6;;12370:13;:23;;12387:6;;12370:23;:::i;:::-;;;;-1:-1:-1;;;;;;;12408:11:0;;;;;;:7;:11;;;;;:24;;12423:9;;12408:11;:24;;12423:9;;12408:24;:::i;:::-;;;;;;;;12467:2;-1:-1:-1;;;;;12452:29:0;12461:4;-1:-1:-1;;;;;12452:29:0;-1:-1:-1;;;;;;;;;;;12471:9:0;12452:29;;;;1841:25:1;;1829:2;1814:18;;1695:177;12452:29:0;;;;;;;;12003:490;;;11983:648;;;-1:-1:-1;;;;;12514:13:0;;;;;;:7;:13;;;;;:23;;12531:6;;12514:13;:23;;12531:6;;12514:23;:::i;:::-;;;;-1:-1:-1;;;;;;;12552:11:0;;;;;;:7;:11;;;;;:21;;12567:6;;12552:11;:21;;12567:6;;12552:21;:::i;:::-;;;;;;;;12608:2;-1:-1:-1;;;;;12593:26:0;12602:4;-1:-1:-1;;;;;12593:26:0;-1:-1:-1;;;;;;;;;;;12612:6:0;12593:26;;;;1841:25:1;;1829:2;1814:18;;1695:177;12593:26:0;;;;;;;;11983:648;9846:2792;;9777:2861;;;:::o;2378:191::-;2452:16;2471:6;;-1:-1:-1;;;;;2488:17:0;;;-1:-1:-1;;;;;;2488:17:0;;;;;;2521:40;;2471:6;;;;;;;2521:40;;2452:16;2521:40;2441:128;2378:191;:::o;13318:107::-;13375:7;13407:1;13403;:5;13402:15;;13416:1;13402:15;;;13412:1;13402:15;13395:22;13318:107;-1:-1:-1;;;13318:107:0:o;13433:550::-;4944:8;:15;;-1:-1:-1;;4944:15:0;4955:4;4944:15;;;13518;13510:57:::1;;;::::0;-1:-1:-1;;;13510:57:0;;14995:2:1;13510:57:0::1;::::0;::::1;14977:21:1::0;15034:2;15014:18;;;15007:30;15073:31;15053:18;;;15046:59;15122:18;;13510:57:0::1;14793:353:1::0;13510:57:0::1;13602:16;::::0;;13616:1:::1;13602:16:::0;;;;;::::1;::::0;;13578:21:::1;::::0;13602:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13602:16:0::1;13578:40;;13647:4;13629;13634:1;13629:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13629:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13673:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13673:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13629:7;;13673:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13663:4;13668:1;13663:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13663:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13738:15:::1;::::0;13706:62:::1;::::0;13723:4:::1;::::0;13738:15:::1;13756:11:::0;13706:8:::1;:62::i;:::-;13779:15;::::0;:196:::1;::::0;-1:-1:-1;;;13779:196:0;;-1:-1:-1;;;;;13779:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;13860:11;;13779:15:::1;::::0;13902:4;;13929::::1;::::0;13949:15:::1;::::0;13779:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4982:8:0;:16;;-1:-1:-1;;4982:16:0;;;-1:-1:-1;;;;13433:550:0:o;8852:199::-;8925:1;8916:6;:10;8908:52;;;;-1:-1:-1;;;8908:52:0;;14995:2:1;8908:52:0;;;14977:21:1;15034:2;15014:18;;;15007:30;15073:31;15053:18;;;15046:59;15122:18;;8908:52:0;14793:353:1;8908:52:0;8971:10;;-1:-1:-1;;;;;8971:10:0;:31;8991:10;9000:1;8991:6;:10;:::i;:::-;8971:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9013:9:0;;;;;-1:-1:-1;;;;;9013:9:0;:30;9032:10;9041:1;9032:6;:10;:::i;:::-;9013:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8852:199;:::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;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:248::-;1283:6;1291;1344:2;1332:9;1323:7;1319:23;1315:32;1312:52;;;1360:1;1357;1350:12;1312:52;-1:-1:-1;;1383:23:1;;;1453:2;1438:18;;;1425:32;;-1:-1:-1;1215:248:1:o;1877:456::-;1954:6;1962;1970;2023:2;2011:9;2002:7;1998:23;1994:32;1991:52;;;2039:1;2036;2029:12;1991:52;2078:9;2065:23;2097:31;2122:5;2097:31;:::i;:::-;2147:5;-1:-1:-1;2204:2:1;2189:18;;2176:32;2217:33;2176:32;2217:33;:::i;:::-;1877:456;;2269:7;;-1:-1:-1;;;2323:2:1;2308:18;;;;2295:32;;1877:456::o;2735:247::-;2794:6;2847:2;2835:9;2826:7;2822:23;2818:32;2815:52;;;2863:1;2860;2853:12;2815:52;2902:9;2889:23;2921:31;2946:5;2921:31;:::i;2987:388::-;3055:6;3063;3116:2;3104:9;3095:7;3091:23;3087:32;3084:52;;;3132:1;3129;3122:12;3084:52;3171:9;3158:23;3190:31;3215:5;3190:31;:::i;:::-;3240:5;-1:-1:-1;3297:2:1;3282:18;;3269:32;3310:33;3269:32;3310:33;:::i;:::-;3362:7;3352:17;;;2987:388;;;;;:::o;3380:398::-;3582:2;3564:21;;;3621:2;3601:18;;;3594:30;3660:34;3655:2;3640:18;;3633:62;-1:-1:-1;;;3726:2:1;3711:18;;3704:32;3768:3;3753:19;;3380:398::o;4131:356::-;4333:2;4315:21;;;4352:18;;;4345:30;4411:34;4406:2;4391:18;;4384:62;4478:2;4463:18;;4131:356::o;4846:251::-;4916:6;4969:2;4957:9;4948:7;4944:23;4940:32;4937:52;;;4985:1;4982;4975:12;4937:52;5017:9;5011:16;5036:31;5061:5;5036:31;:::i;6023:306::-;6111:6;6119;6127;6180:2;6168:9;6159:7;6155:23;6151:32;6148:52;;;6196:1;6193;6186:12;6148:52;6225:9;6219:16;6209:26;;6275:2;6264:9;6260:18;6254:25;6244:35;;6319:2;6308:9;6304:18;6298:25;6288:35;;6023:306;;;;;:::o;6334:127::-;6395:10;6390:3;6386:20;6383:1;6376:31;6426:4;6423:1;6416:15;6450:4;6447:1;6440:15;6466:422;6555:1;6598:5;6555:1;6612:270;6633:7;6623:8;6620:21;6612:270;;;6692:4;6688:1;6684:6;6680:17;6674:4;6671:27;6668:53;;;6701:18;;:::i;:::-;6751:7;6741:8;6737:22;6734:55;;;6771:16;;;;6734:55;6850:22;;;;6810:15;;;;6612:270;;;6616:3;6466:422;;;;;:::o;6893:806::-;6942:5;6972:8;6962:80;;-1:-1:-1;7013:1:1;7027:5;;6962:80;7061:4;7051:76;;-1:-1:-1;7098:1:1;7112:5;;7051:76;7143:4;7161:1;7156:59;;;;7229:1;7224:130;;;;7136:218;;7156:59;7186:1;7177:10;;7200:5;;;7224:130;7261:3;7251:8;7248:17;7245:43;;;7268:18;;:::i;:::-;-1:-1:-1;;7324:1:1;7310:16;;7339:5;;7136:218;;7438:2;7428:8;7425:16;7419:3;7413:4;7410:13;7406:36;7400:2;7390:8;7387:16;7382:2;7376:4;7373:12;7369:35;7366:77;7363:159;;;-1:-1:-1;7475:19:1;;;7507:5;;7363:159;7554:34;7579:8;7573:4;7554:34;:::i;:::-;7624:6;7620:1;7616:6;7612:19;7603:7;7600:32;7597:58;;;7635:18;;:::i;:::-;7673:20;;6893:806;-1:-1:-1;;;6893:806:1:o;7704:140::-;7762:5;7791:47;7832:4;7822:8;7818:19;7812:4;7791:47;:::i;7849:168::-;7922:9;;;7953;;7970:15;;;7964:22;;7950:37;7940:71;;7991:18;;:::i;8431:128::-;8498:9;;;8519:11;;;8516:37;;;8533:18;;:::i;9343:184::-;9413:6;9466:2;9454:9;9445:7;9441:23;9437:32;9434:52;;;9482:1;9479;9472:12;9434:52;-1:-1:-1;9505:16:1;;9343:184;-1:-1:-1;9343:184:1:o;9819:277::-;9886:6;9939:2;9927:9;9918:7;9914:23;9910:32;9907:52;;;9955:1;9952;9945:12;9907:52;9987:9;9981:16;10040:5;10033:13;10026:21;10019:5;10016:32;10006:60;;10062:1;10059;10052:12;13592:125;13657:9;;;13678:10;;;13675:36;;;13691:18;;:::i;14431:135::-;14470:3;14491:17;;;14488:43;;14511:18;;:::i;:::-;-1:-1:-1;14558:1:1;14547:13;;14431:135::o;14571:217::-;14611:1;14637;14627:132;;14681:10;14676:3;14672:20;14669:1;14662:31;14716:4;14713:1;14706:15;14744:4;14741:1;14734:15;14627:132;-1:-1:-1;14773:9:1;;14571:217::o;15283:127::-;15344:10;15339:3;15335:20;15332:1;15325:31;15375:4;15372:1;15365:15;15399:4;15396:1;15389:15;15415:980;15677:4;15725:3;15714:9;15710:19;15756:6;15745:9;15738:25;15782:2;15820:6;15815:2;15804:9;15800:18;15793:34;15863:3;15858:2;15847:9;15843:18;15836:31;15887:6;15922;15916:13;15953:6;15945;15938:22;15991:3;15980:9;15976:19;15969:26;;16030:2;16022:6;16018:15;16004:29;;16051:1;16061:195;16075:6;16072:1;16069:13;16061:195;;;16140:13;;-1:-1:-1;;;;;16136:39:1;16124:52;;16231:15;;;;16196:12;;;;16172:1;16090:9;16061:195;;;-1:-1:-1;;;;;;;16312:32:1;;;;16307:2;16292:18;;16285:60;-1:-1:-1;;;16376:3:1;16361:19;16354:35;16273:3;15415:980;-1:-1:-1;;;15415:980:1:o

Swarm Source

ipfs://3152130f8b34d6f9a1a43151dbdd1cc004c864006905dc3f5a5ef68dcd32f8e6
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.