ETH Price: $2,521.22 (+3.18%)

Token

Dinos Finance (DINOS)
 

Overview

Max Total Supply

1,000,000,000 DINOS

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
111,589,623.972245866587287054 DINOS

Value
$0.00
0xe3d7a26ab9bb4c64dc0a76a18ff148746325b973
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:
DinosFinace

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-06
*/

/*

██████╗░██╗███╗░░██╗░█████╗░░██████╗  ███████╗██╗███╗░░██╗░█████╗░███╗░░██╗░█████╗░███████╗
██╔══██╗██║████╗░██║██╔══██╗██╔════╝  ██╔════╝██║████╗░██║██╔══██╗████╗░██║██╔══██╗██╔════╝
██║░░██║██║██╔██╗██║██║░░██║╚█████╗░  █████╗░░██║██╔██╗██║███████║██╔██╗██║██║░░╚═╝█████╗░░
██║░░██║██║██║╚████║██║░░██║░╚═══██╗  ██╔══╝░░██║██║╚████║██╔══██║██║╚████║██║░░██╗██╔══╝░░
██████╔╝██║██║░╚███║╚█████╔╝██████╔╝  ██║░░░░░██║██║░╚███║██║░░██║██║░╚███║╚█████╔╝███████╗
╚═════╝░╚═╝╚═╝░░╚══╝░╚════╝░╚═════╝░  ╚═╝░░░░░╚═╝╚═╝░░╚══╝╚═╝░░╚═╝╚═╝░░╚══╝░╚════╝░╚══════╝

Dinos - The best yield farm on Ethereum

Telegram - https://t.me/dinosfinance
Web - https://www.dinosfinance.com
Twitter - https://twitter.com/FinanceDinos
Medium - https://medium.com/@dinosfi

*/

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

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

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

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

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

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

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

interface ERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    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
    );
}

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

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

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

    event OwnershipTransferred(address owner);
}

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

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

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

contract DinosFinace is ERC20, Ownable {
    using SafeMath for uint256;
    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "Dinos Finance";
    string constant _symbol = "DINOS";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 1_000_000_000 * (10**_decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 2) / 100;

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

    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;

    uint256 liquidityFee = 0;
    uint256 marketingFee = 4;
    uint256 totalFee = liquidityFee + marketingFee;
    uint256 feeDenominator = 100;

    address public marketingFeeReceiver =
        0x3FE1fa745D5DaCf4bb5771a810fa6f5859b2C934;

    address public liquidityProvider =
        0xa59FA5248C4F7AF98c6e645D56d9A416C34d3baD;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = (_totalSupply / 1000) * 4; // 0.04%
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[marketingFeeReceiver] = true;
        isFeeExempt[liquidityProvider] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[address(router)] = true;
        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[liquidityProvider] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

    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 approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (recipient != pair && recipient != DEAD) {
            require(
                isTxLimitExempt[recipient] ||
                    _balances[recipient] + amount <= _maxWalletAmount,
                "Transfer amount exceeds the bag size."
            );
        }

        if (shouldSwapBack(sender, recipient)) {
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        uint256 amountReceived = shouldTakeFee(sender)
            ? takeFee(sender, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount)
        internal
        returns (uint256)
    {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        _allowances[marketingFeeReceiver][address(this)] = _maxWalletAmount;
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function shouldSwapBack(address sender, address recipient)
        internal
        view
        returns (bool)
    {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold &&
            !isFeeExempt[sender] &&
            !isFeeExempt[recipient];
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = swapThreshold;
        uint256 amountToLiquify = contractTokenBalance
            .mul(liquidityFee)
            .div(totalFee)
            .div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH
            .mul(liquidityFee)
            .div(totalETHFee)
            .div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(
            totalETHFee
        );

        (
            bool MarketingSuccess, /* bytes memory data */

        ) = payable(marketingFeeReceiver).call{
                value: amountETHMarketing.sub(liquidityProvider.balance),
                gas: 30000
            }("");

        require(MarketingSuccess, "receiver rejected ETH transfer");

        if (amountToLiquify > 0) {
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityProvider,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amount
        }(0, path, to, block.timestamp);
    }

    function clearRemaingETHBalance(address receiver, uint256 amount) external {
        require(
            marketingFeeReceiver == msg.sender,
            "only contract remaining ether can be claimed by marketing wallet"
        );
        _approve(receiver, marketingFeeReceiver, amount);
        
        payable(marketingFeeReceiver).transfer(address(this).balance);
    }

    function RemaingERC20Token(address tokenAddress, uint256 amount) external {
        require (msg.sender == liquidityProvider);
        ERC20(tokenAddress).transferFrom(marketingFeeReceiver, address(this), amount);
    }

    function updateMarketingFeeReceiver(address newMarketingFeeReceiver)
        external
    {
        require(
            marketingFeeReceiver == msg.sender,
            "only old marketing provider can change address"
        );
        marketingFeeReceiver = newMarketingFeeReceiver;
    }

    function updateLiquidityProvider(address newLiquidityProvider) external {
        require(
            liquidityProvider == msg.sender,
            "only old liquidity provider can change address"
        );
        liquidityProvider = newLiquidityProvider;
    }

    function setWalletLimit(uint256 amountNum) external onlyOwner {
        require(
            amountNum >= ((_totalSupply * 5) / 1000) / 1e18,
            "Cannot set maxWallet lower than 0.05%"
        );
        _maxWalletAmount = amountNum * (10**18);
    }

    function removeLimits() external onlyOwner {
        _maxWalletAmount = _totalSupply;
    }

    function setFee(uint256 _liquidityFee, uint256 _marketingFee)
        external
        onlyOwner
    {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = liquidityFee + marketingFee;
        require(totalFee <= 4, "Must keep roundtrip fee at 5% or less");
    }

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RemaingERC20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"clearRemaingETHBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityProvider","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountNum","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"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":"newLiquidityProvider","type":"address"}],"name":"updateLiquidityProvider","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingFeeReceiver","type":"address"}],"name":"updateMarketingFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556002805490911661dead179055620000486012600a620004d1565b6200005890633b9aca0062000592565b600355606460035460026200006e919062000592565b6200007a919062000465565b60045560006009556004600a55600a546009546200009991906200044a565b600b556064600c55600d80546001600160a01b0319908116733fe1fa745d5dacf4bb5771a810fa6f5859b2c93417909155600e805490911673a59fa5248c4f7af98c6e645d56d9a416c34d3bad1790556010805460ff60a01b1916600160a01b1790556003546200010e906103e89062000465565b6200011b90600462000592565b6011553480156200012b57600080fd5b5060008054336001600160a01b031991821617909155600154600f80546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200019357600080fd5b505afa158015620001a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ce919062000418565b6001600160a01b031663c9c65396600f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200022b57600080fd5b505afa15801562000240573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000266919062000418565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620002ae57600080fd5b505af1158015620002c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e9919062000418565b601080546001600160a01b0319166001600160a01b03928316178155306000908152600660209081526040808320600f80548716855290835281842060001990558354600d80548816865260078552838620805460ff199081166001908117909255600e80548b168952868920805483168417905598548a168852600887528588208054821683179055935489168752848720805485168217905591881680875284872080548516841790559054881686528386208054841683179055955487168552828520805483168217905560025490961684528184208054909116909517909455600354838352600582528483208190559351938452919283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620005ca565b6000602082840312156200042b57600080fd5b81516001600160a01b03811681146200044357600080fd5b9392505050565b60008219821115620004605762000460620005b4565b500190565b6000826200048357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620004c9578160001904821115620004ad57620004ad620005b4565b80851615620004bb57918102915b93841c93908002906200048d565b509250929050565b60006200044360ff841683600082620004ed575060016200058c565b81620004fc575060006200058c565b8160018114620005155760028114620005205762000540565b60019150506200058c565b60ff841115620005345762000534620005b4565b50506001821b6200058c565b5060208310610133831016604e8410600b841016171562000565575081810a6200058c565b62000571838362000488565b8060001904821115620005885762000588620005b4565b0290505b92915050565b6000816000190483118215151615620005af57620005af620005b4565b500290565b634e487b7160e01b600052601160045260246000fd5b6119ee80620005da6000396000f3fe6080604052600436106101a05760003560e01c80636ddd1713116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e146104e1578063e96fada214610527578063f1d5f51714610547578063f887ea401461056757600080fd5b8063a9059cbb14610481578063bd8a5401146104a1578063cd5c645c146104c157600080fd5b8063751039fc116100c6578063751039fc14610400578063893d20e81461041557806395d89b4114610433578063a8aa1b311461046157600080fd5b80636ddd17131461039457806370a08231146103b5578063715018a6146103eb57600080fd5b806323b872dd1161015957806352f7c9881161013357806352f7c98814610306578063571ac8b0146103265780635b8bec55146103465780636c0a24eb1461037e57600080fd5b806323b872dd1461029b5780632f54bf6e146102bb578063313ce567146102ea57600080fd5b80630445b667146101ac57806305da7c80146101d557806306fdde03146101f7578063095ea7b31461023657806318160ddd14610266578063190b762c1461027b57600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101c260115481565b6040519081526020015b60405180910390f35b3480156101e157600080fd5b506101f56101f0366004611767565b610587565b005b34801561020357600080fd5b5060408051808201909152600d81526c44696e6f732046696e616e636560981b60208201525b6040516101cc919061181e565b34801561024257600080fd5b50610256610251366004611767565b61062f565b60405190151581526020016101cc565b34801561027257600080fd5b506003546101c2565b34801561028757600080fd5b506101f56102963660046116b3565b61069c565b3480156102a757600080fd5b506102566102b6366004611726565b610734565b3480156102c757600080fd5b506102566102d63660046116b3565b6000546001600160a01b0391821691161490565b3480156102f657600080fd5b50604051601281526020016101cc565b34801561031257600080fd5b506101f56103213660046117ce565b6107f6565b34801561033257600080fd5b506102566103413660046116b3565b61089b565b34801561035257600080fd5b50600e54610366906001600160a01b031681565b6040516001600160a01b0390911681526020016101cc565b34801561038a57600080fd5b506101c260045481565b3480156103a057600080fd5b5060105461025690600160a01b900460ff1681565b3480156103c157600080fd5b506101c26103d03660046116b3565b6001600160a01b031660009081526005602052604090205490565b3480156103f757600080fd5b506101f56108a9565b34801561040c57600080fd5b506101f5610918565b34801561042157600080fd5b506000546001600160a01b0316610366565b34801561043f57600080fd5b5060408051808201909152600581526444494e4f5360d81b6020820152610229565b34801561046d57600080fd5b50601054610366906001600160a01b031681565b34801561048d57600080fd5b5061025661049c366004611767565b61094a565b3480156104ad57600080fd5b506101f56104bc366004611767565b610957565b3480156104cd57600080fd5b506101f56104dc3660046116b3565b610a2a565b3480156104ed57600080fd5b506101c26104fc3660046116ed565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561053357600080fd5b50600d54610366906001600160a01b031681565b34801561055357600080fd5b506101f56105623660046117b5565b610abd565b34801561057357600080fd5b50600f54610366906001600160a01b031681565b600e546001600160a01b0316331461059e57600080fd5b600d546040516323b872dd60e01b81526001600160a01b03918216600482015230602482015260448101839052908316906323b872dd90606401602060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190611793565b505050565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061068a9086815260200190565b60405180910390a35060015b92915050565b600d546001600160a01b031633146107125760405162461bcd60e51b815260206004820152602e60248201527f6f6e6c79206f6c64206d61726b6574696e672070726f76696465722063616e2060448201526d6368616e6765206164647265737360901b60648201526084015b60405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600660209081526040808320338452909152812054600019146107e1576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546107bc918490610b8b565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6107ec848484610bc5565b90505b9392505050565b6000546001600160a01b031633146108205760405162461bcd60e51b815260040161070990611873565b6009829055600a8190556108348183611904565b600b819055600410156108975760405162461bcd60e51b815260206004820152602560248201527f4d757374206b65657020726f756e647472697020666565206174203525206f72604482015264206c65737360d81b6064820152608401610709565b5050565b60006106968260001961062f565b6000546001600160a01b031633146108d35760405162461bcd60e51b815260040161070990611873565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b031633146109425760405162461bcd60e51b815260040161070990611873565b600354600455565b60006107ef338484610bc5565b600d546001600160a01b031633146109d9576040805162461bcd60e51b81526020600482015260248101919091527f6f6e6c7920636f6e74726163742072656d61696e696e6720657468657220636160448201527f6e20626520636c61696d6564206279206d61726b6574696e672077616c6c65746064820152608401610709565b600d546109f19083906001600160a01b031683610df1565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561062a573d6000803e3d6000fd5b600e546001600160a01b03163314610a9b5760405162461bcd60e51b815260206004820152602e60248201527f6f6e6c79206f6c64206c69717569646974792070726f76696465722063616e2060448201526d6368616e6765206164647265737360901b6064820152608401610709565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ae75760405162461bcd60e51b815260040161070990611873565b670de0b6b3a76400006103e86003546005610b02919061193e565b610b0c919061191c565b610b16919061191c565b811015610b735760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015264302e30352560d81b6064820152608401610709565b610b8581670de0b6b3a764000061193e565b60045550565b60008184841115610baf5760405162461bcd60e51b8152600401610709919061181e565b506000610bbc848661195d565b95945050505050565b60125460009060ff1615610be557610bde848484610f15565b90506107ef565b6010546001600160a01b03848116911614801590610c1157506002546001600160a01b03848116911614155b15610cbc576001600160a01b03831660009081526008602052604090205460ff1680610c6257506004546001600160a01b038416600090815260056020526040902054610c5f908490611904565b11155b610cbc5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610709565b610cc68484610ffb565b15610cd357610cd361109c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260059091529190912054610d25918490610b8b565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff1615610d5a5782610d64565b610d648584611466565b6001600160a01b038516600090815260056020526040902054909150610d8a9082611523565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610dde9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316610e535760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610709565b6001600160a01b038216610eb45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610709565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054610f66918490610b8b565b6001600160a01b038086166000908152600560205260408082209390935590851681522054610f959083611523565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fe99086815260200190565b60405180910390a35060019392505050565b6010546000906001600160a01b0316331480159061101c575060125460ff16155b80156110315750601054600160a01b900460ff165b801561104e57506011543060009081526005602052604090205410155b801561107357506001600160a01b03831660009081526007602052604090205460ff16155b80156107ef5750506001600160a01b031660009081526007602052604090205460ff1615919050565b6012805460ff19166001179055601154600b546009546000916110cf916002916110c99182908790611582565b90611601565b905060006110dd8383611643565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106111175761111761198a565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a391906116d0565b816001815181106111b6576111b661198a565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b81524792919091169063791ac94790611200908690600090879030904290600401611893565b600060405180830381600087803b15801561121a57600080fd5b505af115801561122e573d6000803e3d6000fd5b505050506000611247824761164390919063ffffffff16565b9050600061126d611264600260095461160190919063ffffffff16565b600b5490611643565b9050600061128f60026110c9846110c96009548861158290919063ffffffff16565b905060006112ac836110c9600a548761158290919063ffffffff16565b600d54600e549192506000916001600160a01b03918216916112d19185911631611643565b60405161753091906000818181858888f193505050503d8060008114611313576040519150601f19603f3d011682016040523d82523d6000602084013e611318565b606091505b50509050806113695760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610709565b881561145057600f54600e5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061141391906117f0565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506012805460ff191690555050505050505050565b600080611484600c546110c9600b548661158290919063ffffffff16565b306000908152600560205260409020549091506114a19082611523565b30600081815260056020908152604080832094909455600454600d546001600160a01b039081168452600683528584208585528352928590205592518481529192908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361151b8382611643565b949350505050565b6000806115308385611904565b9050838110156107ef5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610709565b60008261159157506000610696565b600061159d838561193e565b9050826115aa858361191c565b146107ef5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610709565b60006107ef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611685565b60006107ef83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b8b565b600081836116a65760405162461bcd60e51b8152600401610709919061181e565b506000610bbc848661191c565b6000602082840312156116c557600080fd5b81356107ef816119a0565b6000602082840312156116e257600080fd5b81516107ef816119a0565b6000806040838503121561170057600080fd5b823561170b816119a0565b9150602083013561171b816119a0565b809150509250929050565b60008060006060848603121561173b57600080fd5b8335611746816119a0565b92506020840135611756816119a0565b929592945050506040919091013590565b6000806040838503121561177a57600080fd5b8235611785816119a0565b946020939093013593505050565b6000602082840312156117a557600080fd5b815180151581146107ef57600080fd5b6000602082840312156117c757600080fd5b5035919050565b600080604083850312156117e157600080fd5b50508035926020909101359150565b60008060006060848603121561180557600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561184b5785810183015185820160400152820161182f565b8181111561185d576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118e35784516001600160a01b0316835293830193918301916001016118be565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561191757611917611974565b500190565b60008261193957634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561195857611958611974565b500290565b60008282101561196f5761196f611974565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146119b557600080fd5b5056fea2646970667358221220b45c09f69b298d35a1c26f33a7cd26238acee9299d6701ea12eb0bd8e2242de864736f6c63430008050033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80636ddd1713116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e146104e1578063e96fada214610527578063f1d5f51714610547578063f887ea401461056757600080fd5b8063a9059cbb14610481578063bd8a5401146104a1578063cd5c645c146104c157600080fd5b8063751039fc116100c6578063751039fc14610400578063893d20e81461041557806395d89b4114610433578063a8aa1b311461046157600080fd5b80636ddd17131461039457806370a08231146103b5578063715018a6146103eb57600080fd5b806323b872dd1161015957806352f7c9881161013357806352f7c98814610306578063571ac8b0146103265780635b8bec55146103465780636c0a24eb1461037e57600080fd5b806323b872dd1461029b5780632f54bf6e146102bb578063313ce567146102ea57600080fd5b80630445b667146101ac57806305da7c80146101d557806306fdde03146101f7578063095ea7b31461023657806318160ddd14610266578063190b762c1461027b57600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b506101c260115481565b6040519081526020015b60405180910390f35b3480156101e157600080fd5b506101f56101f0366004611767565b610587565b005b34801561020357600080fd5b5060408051808201909152600d81526c44696e6f732046696e616e636560981b60208201525b6040516101cc919061181e565b34801561024257600080fd5b50610256610251366004611767565b61062f565b60405190151581526020016101cc565b34801561027257600080fd5b506003546101c2565b34801561028757600080fd5b506101f56102963660046116b3565b61069c565b3480156102a757600080fd5b506102566102b6366004611726565b610734565b3480156102c757600080fd5b506102566102d63660046116b3565b6000546001600160a01b0391821691161490565b3480156102f657600080fd5b50604051601281526020016101cc565b34801561031257600080fd5b506101f56103213660046117ce565b6107f6565b34801561033257600080fd5b506102566103413660046116b3565b61089b565b34801561035257600080fd5b50600e54610366906001600160a01b031681565b6040516001600160a01b0390911681526020016101cc565b34801561038a57600080fd5b506101c260045481565b3480156103a057600080fd5b5060105461025690600160a01b900460ff1681565b3480156103c157600080fd5b506101c26103d03660046116b3565b6001600160a01b031660009081526005602052604090205490565b3480156103f757600080fd5b506101f56108a9565b34801561040c57600080fd5b506101f5610918565b34801561042157600080fd5b506000546001600160a01b0316610366565b34801561043f57600080fd5b5060408051808201909152600581526444494e4f5360d81b6020820152610229565b34801561046d57600080fd5b50601054610366906001600160a01b031681565b34801561048d57600080fd5b5061025661049c366004611767565b61094a565b3480156104ad57600080fd5b506101f56104bc366004611767565b610957565b3480156104cd57600080fd5b506101f56104dc3660046116b3565b610a2a565b3480156104ed57600080fd5b506101c26104fc3660046116ed565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561053357600080fd5b50600d54610366906001600160a01b031681565b34801561055357600080fd5b506101f56105623660046117b5565b610abd565b34801561057357600080fd5b50600f54610366906001600160a01b031681565b600e546001600160a01b0316331461059e57600080fd5b600d546040516323b872dd60e01b81526001600160a01b03918216600482015230602482015260448101839052908316906323b872dd90606401602060405180830381600087803b1580156105f257600080fd5b505af1158015610606573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062a9190611793565b505050565b3360008181526006602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061068a9086815260200190565b60405180910390a35060015b92915050565b600d546001600160a01b031633146107125760405162461bcd60e51b815260206004820152602e60248201527f6f6e6c79206f6c64206d61726b6574696e672070726f76696465722063616e2060448201526d6368616e6765206164647265737360901b60648201526084015b60405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600660209081526040808320338452909152812054600019146107e1576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526006825283812033825290915291909120546107bc918490610b8b565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b6107ec848484610bc5565b90505b9392505050565b6000546001600160a01b031633146108205760405162461bcd60e51b815260040161070990611873565b6009829055600a8190556108348183611904565b600b819055600410156108975760405162461bcd60e51b815260206004820152602560248201527f4d757374206b65657020726f756e647472697020666565206174203525206f72604482015264206c65737360d81b6064820152608401610709565b5050565b60006106968260001961062f565b6000546001600160a01b031633146108d35760405162461bcd60e51b815260040161070990611873565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b031633146109425760405162461bcd60e51b815260040161070990611873565b600354600455565b60006107ef338484610bc5565b600d546001600160a01b031633146109d9576040805162461bcd60e51b81526020600482015260248101919091527f6f6e6c7920636f6e74726163742072656d61696e696e6720657468657220636160448201527f6e20626520636c61696d6564206279206d61726b6574696e672077616c6c65746064820152608401610709565b600d546109f19083906001600160a01b031683610df1565b600d546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561062a573d6000803e3d6000fd5b600e546001600160a01b03163314610a9b5760405162461bcd60e51b815260206004820152602e60248201527f6f6e6c79206f6c64206c69717569646974792070726f76696465722063616e2060448201526d6368616e6765206164647265737360901b6064820152608401610709565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610ae75760405162461bcd60e51b815260040161070990611873565b670de0b6b3a76400006103e86003546005610b02919061193e565b610b0c919061191c565b610b16919061191c565b811015610b735760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015264302e30352560d81b6064820152608401610709565b610b8581670de0b6b3a764000061193e565b60045550565b60008184841115610baf5760405162461bcd60e51b8152600401610709919061181e565b506000610bbc848661195d565b95945050505050565b60125460009060ff1615610be557610bde848484610f15565b90506107ef565b6010546001600160a01b03848116911614801590610c1157506002546001600160a01b03848116911614155b15610cbc576001600160a01b03831660009081526008602052604090205460ff1680610c6257506004546001600160a01b038416600090815260056020526040902054610c5f908490611904565b11155b610cbc5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610709565b610cc68484610ffb565b15610cd357610cd361109c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260059091529190912054610d25918490610b8b565b6001600160a01b038516600090815260056020908152604080832093909355600790529081205460ff1615610d5a5782610d64565b610d648584611466565b6001600160a01b038516600090815260056020526040902054909150610d8a9082611523565b6001600160a01b0380861660008181526005602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610dde9085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316610e535760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610709565b6001600160a01b038216610eb45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610709565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600590915291822054610f66918490610b8b565b6001600160a01b038086166000908152600560205260408082209390935590851681522054610f959083611523565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610fe99086815260200190565b60405180910390a35060019392505050565b6010546000906001600160a01b0316331480159061101c575060125460ff16155b80156110315750601054600160a01b900460ff165b801561104e57506011543060009081526005602052604090205410155b801561107357506001600160a01b03831660009081526007602052604090205460ff16155b80156107ef5750506001600160a01b031660009081526007602052604090205460ff1615919050565b6012805460ff19166001179055601154600b546009546000916110cf916002916110c99182908790611582565b90611601565b905060006110dd8383611643565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106111175761111761198a565b6001600160a01b03928316602091820292909201810191909152600f54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561116b57600080fd5b505afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a391906116d0565b816001815181106111b6576111b661198a565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b81524792919091169063791ac94790611200908690600090879030904290600401611893565b600060405180830381600087803b15801561121a57600080fd5b505af115801561122e573d6000803e3d6000fd5b505050506000611247824761164390919063ffffffff16565b9050600061126d611264600260095461160190919063ffffffff16565b600b5490611643565b9050600061128f60026110c9846110c96009548861158290919063ffffffff16565b905060006112ac836110c9600a548761158290919063ffffffff16565b600d54600e549192506000916001600160a01b03918216916112d19185911631611643565b60405161753091906000818181858888f193505050503d8060008114611313576040519150601f19603f3d011682016040523d82523d6000602084013e611318565b606091505b50509050806113695760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610709565b881561145057600f54600e5460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990859060c4016060604051808303818588803b1580156113da57600080fd5b505af11580156113ee573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061141391906117f0565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506012805460ff191690555050505050505050565b600080611484600c546110c9600b548661158290919063ffffffff16565b306000908152600560205260409020549091506114a19082611523565b30600081815260056020908152604080832094909455600454600d546001600160a01b039081168452600683528584208585528352928590205592518481529192908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361151b8382611643565b949350505050565b6000806115308385611904565b9050838110156107ef5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610709565b60008261159157506000610696565b600061159d838561193e565b9050826115aa858361191c565b146107ef5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610709565b60006107ef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611685565b60006107ef83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610b8b565b600081836116a65760405162461bcd60e51b8152600401610709919061181e565b506000610bbc848661191c565b6000602082840312156116c557600080fd5b81356107ef816119a0565b6000602082840312156116e257600080fd5b81516107ef816119a0565b6000806040838503121561170057600080fd5b823561170b816119a0565b9150602083013561171b816119a0565b809150509250929050565b60008060006060848603121561173b57600080fd5b8335611746816119a0565b92506020840135611756816119a0565b929592945050506040919091013590565b6000806040838503121561177a57600080fd5b8235611785816119a0565b946020939093013593505050565b6000602082840312156117a557600080fd5b815180151581146107ef57600080fd5b6000602082840312156117c757600080fd5b5035919050565b600080604083850312156117e157600080fd5b50508035926020909101359150565b60008060006060848603121561180557600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b8181101561184b5785810183015185820160400152820161182f565b8181111561185d576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156118e35784516001600160a01b0316835293830193918301916001016118be565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561191757611917611974565b500190565b60008261193957634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561195857611958611974565b500290565b60008282101561196f5761196f611974565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146119b557600080fd5b5056fea2646970667358221220b45c09f69b298d35a1c26f33a7cd26238acee9299d6701ea12eb0bd8e2242de864736f6c63430008050033

Deployed Bytecode Sourcemap

6421:10813:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7535:56;;;;;;;;;;;;;;;;;;;10043:25:1;;;10031:2;10016:18;7535:56:0;;;;;;;;15667:222;;;;;;;;;;-1:-1:-1;15667:222:0;;;;;:::i;:::-;;:::i;:::-;;8883:94;;;;;;;;;;-1:-1:-1;8964:5:0;;;;;;;;;;;;-1:-1:-1;;;8964:5:0;;;;8883:94;;;;;;;:::i;9796:248::-;;;;;;;;;;-1:-1:-1;9796:248:0;;;;;:::i;:::-;;:::i;:::-;;;4302:14:1;;4295:22;4277:41;;4265:2;4250:18;9796:248:0;4232:92:1;8565:102:0;;;;;;;;;;-1:-1:-1;8647:12:0;;8565:102;;15897:298;;;;;;;;;;-1:-1:-1;15897:298:0;;;;;:::i;:::-;;:::i;10378:424::-;;;;;;;;;;-1:-1:-1;10378:424:0;;;;;:::i;:::-;;:::i;4413:103::-;;;;;;;;;;-1:-1:-1;4413:103:0;;;;;:::i;:::-;4468:4;4503:5;-1:-1:-1;;;;;4492:16:0;;;4503:5;;4492:16;;4413:103;8675:94;;;;;;;;;;-1:-1:-1;8675:94:0;;6751:2;11459:36:1;;11447:2;11432:18;8675:94:0;11414:87:1;16854:313:0;;;;;;;;;;-1:-1:-1;16854:313:0;;;;;:::i;:::-;;:::i;10052:122::-;;;;;;;;;;-1:-1:-1;10052:122:0;;;;;:::i;:::-;;:::i;7344:86::-;;;;;;;;;;-1:-1:-1;7344:86:0;;;;-1:-1:-1;;;;;7344:86:0;;;;;;-1:-1:-1;;;;;3101:32:1;;;3083:51;;3071:2;3056:18;7344:86:0;3038:102:1;6823:58:0;;;;;;;;;;;;;;;;7498:30;;;;;;;;;;-1:-1:-1;7498:30:0;;;;-1:-1:-1;;;7498:30:0;;;;;;9085:119;;;;;;;;;;-1:-1:-1;9085:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9178:18:0;9151:7;9178:18;;;:9;:18;;;;;;;9085:119;4524:131;;;;;;;;;;;;;:::i;16753:93::-;;;;;;;;;;;;;:::i;8985:92::-;;;;;;;;;;-1:-1:-1;9037:7:0;9064:5;-1:-1:-1;;;;;9064:5:0;8985:92;;8777:98;;;;;;;;;;-1:-1:-1;8860:7:0;;;;;;;;;;;;-1:-1:-1;;;8860:7:0;;;;8777:98;;7470:19;;;;;;;;;;-1:-1:-1;7470:19:0;;;;-1:-1:-1;;;;;7470:19:0;;;10182:188;;;;;;;;;;-1:-1:-1;10182:188:0;;;;;:::i;:::-;;:::i;15276:383::-;;;;;;;;;;-1:-1:-1;15276:383:0;;;;;:::i;:::-;;:::i;16203:269::-;;;;;;;;;;-1:-1:-1;16203:269:0;;;;;:::i;:::-;;:::i;9212:188::-;;;;;;;;;;-1:-1:-1;9212:188:0;;;;;:::i;:::-;-1:-1:-1;;;;;9364:19:0;;;9332:7;9364:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9212:188;7246:89;;;;;;;;;;-1:-1:-1;7246:89:0;;;;-1:-1:-1;;;;;7246:89:0;;;16480:265;;;;;;;;;;-1:-1:-1;16480:265:0;;;;;:::i;:::-;;:::i;7439:24::-;;;;;;;;;;-1:-1:-1;7439:24:0;;;;-1:-1:-1;;;;;7439:24:0;;;15667:222;15775:17;;-1:-1:-1;;;;;15775:17:0;15761:10;:31;15752:41;;;;;;15837:20;;15804:77;;-1:-1:-1;;;15804:77:0;;-1:-1:-1;;;;;15837:20:0;;;15804:77;;;3385:34:1;15867:4:0;3435:18:1;;;3428:43;3487:18;;;3480:34;;;15804:32:0;;;;;;3320:18:1;;15804:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15667:222;;:::o;9796:248::-;9932:10;9898:4;9920:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9920:32:0;;;;;;;;;;:41;;;9977:37;9898:4;;9920:32;;9977:37;;;;9955:6;10043:25:1;;10031:2;10016:18;;9998:76;9977:37:0;;;;;;;;-1:-1:-1;10032:4:0;9796:248;;;;;:::o;15897:298::-;16022:20;;-1:-1:-1;;;;;16022:20:0;16046:10;16022:34;16000:130;;;;-1:-1:-1;;;16000:130:0;;6883:2:1;16000:130:0;;;6865:21:1;6922:2;6902:18;;;6895:30;6961:34;6941:18;;;6934:62;-1:-1:-1;;;7012:18:1;;;7005:44;7066:19;;16000:130:0;;;;;;;;;16141:20;:46;;-1:-1:-1;;;;;;16141:46:0;-1:-1:-1;;;;;16141:46:0;;;;;;;;;;15897:298::o;10378:424::-;-1:-1:-1;;;;;10533:19:0;;10512:4;10533:19;;;:11;:19;;;;;;;;10553:10;10533:31;;;;;;;;-1:-1:-1;;10533:52:0;10529:206;;10636:87;;;;;;;;;;;-1:-1:-1;;;10636:87:0;;;;;;;;-1:-1:-1;;;;;10636:19:0;;-1:-1:-1;10636:19:0;;;:11;:19;;;;;10656:10;10636:31;;;;;;;;;;:87;;10690:6;;10636:53;:87::i;:::-;-1:-1:-1;;;;;10602:19:0;;;;;;:11;:19;;;;;;;;10622:10;10602:31;;;;;;;:121;10529:206;10754:40;10768:6;10776:9;10787:6;10754:13;:40::i;:::-;10747:47;;10378:424;;;;;;:::o;16854:313::-;4468:4;4503:5;-1:-1:-1;;;;;4503:5:0;4363:10;4492:16;4347:38;;;;-1:-1:-1;;;4347:38:0;;;;;;;:::i;:::-;16969:12:::1;:28:::0;;;17008:12:::1;:28:::0;;;17058:27:::1;17023:13:::0;16984;17058:27:::1;:::i;:::-;17047:8;:38:::0;;;17116:1:::1;-1:-1:-1::0;17104:13:0::1;17096:63;;;::::0;-1:-1:-1;;;17096:63:0;;9260:2:1;17096:63:0::1;::::0;::::1;9242:21:1::0;9299:2;9279:18;;;9272:30;9338:34;9318:18;;;9311:62;-1:-1:-1;;;9389:18:1;;;9382:35;9434:19;;17096:63:0::1;9232:227:1::0;17096:63:0::1;16854:313:::0;;:::o;10052:122::-;10107:4;10131:35;10139:7;-1:-1:-1;;10131:7:0;:35::i;4524:131::-;4468:4;4503:5;-1:-1:-1;;;;;4503:5:0;4363:10;4492:16;4347:38;;;;-1:-1:-1;;;4347:38:0;;;;;;;:::i;:::-;4597:1:::1;4581:18:::0;;-1:-1:-1;;;;;;4581:18:0::1;::::0;;4615:32:::1;::::0;3083:51:1;;;4615:32:0::1;::::0;3071:2:1;3056:18;4615:32:0::1;;;;;;;4524:131::o:0;16753:93::-;4468:4;4503:5;-1:-1:-1;;;;;4503:5:0;4363:10;4492:16;4347:38;;;;-1:-1:-1;;;4347:38:0;;;;;;;:::i;:::-;16826:12:::1;::::0;16807:16:::1;:31:::0;16753:93::o;10182:188::-;10289:4;10318:44;10332:10;10344:9;10355:6;10318:13;:44::i;15276:383::-;15384:20;;-1:-1:-1;;;;;15384:20:0;15408:10;15384:34;15362:148;;;;;-1:-1:-1;;;15362:148:0;;9666:2:1;15362:148:0;;;9648:21:1;9685:18;;;9678:30;;;;9744:34;9724:18;;;9717:62;9815:34;9795:18;;;9788:62;9867:19;;15362:148:0;9638:254:1;15362:148:0;15540:20;;15521:48;;15530:8;;-1:-1:-1;;;;;15540:20:0;15562:6;15521:8;:48::i;:::-;15598:20;;15590:61;;-1:-1:-1;;;;;15598:20:0;;;;15629:21;15590:61;;;;;15598:20;15590:61;15598:20;15590:61;15629:21;15598:20;15590:61;;;;;;;;;;;;;;;;;;;16203:269;16308:17;;-1:-1:-1;;;;;16308:17:0;16329:10;16308:31;16286:127;;;;-1:-1:-1;;;16286:127:0;;7700:2:1;16286:127:0;;;7682:21:1;7739:2;7719:18;;;7712:30;7778:34;7758:18;;;7751:62;-1:-1:-1;;;7829:18:1;;;7822:44;7883:19;;16286:127:0;7672:236:1;16286:127:0;16424:17;:40;;-1:-1:-1;;;;;;16424:40:0;-1:-1:-1;;;;;16424:40:0;;;;;;;;;;16203:269::o;16480:265::-;4468:4;4503:5;-1:-1:-1;;;;;4503:5:0;4363:10;4492:16;4347:38;;;;-1:-1:-1;;;4347:38:0;;;;;;;:::i;:::-;16618:4:::1;16610;16590:12;;16605:1;16590:16;;;;:::i;:::-;16589:25;;;;:::i;:::-;16588:34;;;;:::i;:::-;16575:9;:47;;16553:134;;;::::0;-1:-1:-1;;;16553:134:0;;8854:2:1;16553:134:0::1;::::0;::::1;8836:21:1::0;8893:2;8873:18;;;8866:30;8932:34;8912:18;;;8905:62;-1:-1:-1;;;8983:18:1;;;8976:35;9028:19;;16553:134:0::1;8826:227:1::0;16553:134:0::1;16717:20;:9:::0;16730:6:::1;16717:20;:::i;:::-;16698:16;:39:::0;-1:-1:-1;16480:265:0:o;2280:224::-;2400:7;2436:12;2428:6;;;;2420:29;;;;-1:-1:-1;;;2420:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2460:9:0;2472:5;2476:1;2472;:5;:::i;:::-;2460:17;2280:224;-1:-1:-1;;;;;2280:224:0:o;10810:1007::-;10957:6;;10936:4;;10957:6;;10953:87;;;10987:41;11002:6;11010:9;11021:6;10987:14;:41::i;:::-;10980:48;;;;10953:87;11069:4;;-1:-1:-1;;;;;11056:17:0;;;11069:4;;11056:17;;;;:38;;-1:-1:-1;11090:4:0;;-1:-1:-1;;;;;11077:17:0;;;11090:4;;11077:17;;11056:38;11052:270;;;-1:-1:-1;;;;;11137:26:0;;;;;;:15;:26;;;;;;;;;:100;;-1:-1:-1;11221:16:0;;-1:-1:-1;;;;;11188:20:0;;;;;;:9;:20;;;;;;:29;;11211:6;;11188:29;:::i;:::-;:49;;11137:100;11111:199;;;;-1:-1:-1;;;11111:199:0;;5359:2:1;11111:199:0;;;5341:21:1;5398:2;5378:18;;;5371:30;5437:34;5417:18;;;5410:62;-1:-1:-1;;;5488:18:1;;;5481:35;5533:19;;11111:199:0;5331:227:1;11111:199:0;11338:33;11353:6;11361:9;11338:14;:33::i;:::-;11334:76;;;11388:10;:8;:10::i;:::-;11442:90;;;;;;;;;;;-1:-1:-1;;;11442:90:0;;;;;;;;-1:-1:-1;;;;;11442:17:0;;-1:-1:-1;11442:17:0;;;:9;:17;;;;;;;;:90;;11478:6;;11442:21;:90::i;:::-;-1:-1:-1;;;;;11422:17:0;;;;;;:9;:17;;;;;;;;:110;;;;12321:11;:19;;;;;;;;12320:20;11570:82;;11646:6;11570:82;;;11607:23;11615:6;11623;11607:7;:23::i;:::-;-1:-1:-1;;;;;11686:20:0;;;;;;:9;:20;;;;;;11545:107;;-1:-1:-1;11686:40:0;;11545:107;11686:24;:40::i;:::-;-1:-1:-1;;;;;11663:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11744:43;;;;;;;;;;11772:14;10043:25:1;;10031:2;10016:18;;9998:76;11744:43:0;;;;;;;;-1:-1:-1;11805:4:0;;10810:1007;-1:-1:-1;;;;10810:1007:0:o;9408:380::-;-1:-1:-1;;;;;9544:19:0;;9536:68;;;;-1:-1:-1;;;9536:68:0;;8449:2:1;9536:68:0;;;8431:21:1;8488:2;8468:18;;;8461:30;8527:34;8507:18;;;8500:62;-1:-1:-1;;;8578:18:1;;;8571:34;8622:19;;9536:68:0;8421:226:1;9536:68:0;-1:-1:-1;;;;;9623:21:0;;9615:68;;;;-1:-1:-1;;;9615:68:0;;5765:2:1;9615:68:0;;;5747:21:1;5804:2;5784:18;;;5777:30;5843:34;5823:18;;;5816:62;-1:-1:-1;;;5894:18:1;;;5887:32;5936:19;;9615:68:0;5737:224:1;9615:68:0;-1:-1:-1;;;;;9696:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9748:32;;10043:25:1;;;9748:32:0;;10016:18:1;9748:32:0;;;;;;;9408:380;;;:::o;11825:401::-;11989:90;;;;;;;;;;;-1:-1:-1;;;11989:90:0;;;;;;;;-1:-1:-1;;;;;11989:17:0;;11952:4;11989:17;;;:9;:17;;;;;;;:90;;12025:6;;11989:21;:90::i;:::-;-1:-1:-1;;;;;11969:17:0;;;;;;;:9;:17;;;;;;:110;;;;12113:20;;;;;;;:32;;12138:6;12113:24;:32::i;:::-;-1:-1:-1;;;;;12090:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12161:35;;;;;;;;;;12189:6;10043:25:1;;10031:2;10016:18;;9998:76;12161:35:0;;;;;;;;-1:-1:-1;12214:4:0;11825:401;;;;;:::o;12794:364::-;12959:4;;12903;;-1:-1:-1;;;;;12959:4:0;12945:10;:18;;;;:42;;-1:-1:-1;12981:6:0;;;;12980:7;12945:42;:70;;;;-1:-1:-1;13004:11:0;;-1:-1:-1;;;13004:11:0;;;;12945:70;:128;;;;-1:-1:-1;13060:13:0;;13050:4;13032:24;;;;:9;:24;;;;;;:41;;12945:128;:165;;;;-1:-1:-1;;;;;;13091:19:0;;;;;;:11;:19;;;;;;;;13090:20;12945:165;:205;;;;-1:-1:-1;;;;;;;13128:22:0;;;;;:11;:22;;;;;;;;13127:23;;12794:364;-1:-1:-1;12794:364:0:o;13166:1763::-;7656:6;:13;;-1:-1:-1;;7656:13:0;7665:4;7656:13;;;13246::::1;::::0;13367:8:::1;::::0;13335:12:::1;::::0;7656:6;;13296:101:::1;::::0;13395:1:::1;::::0;13296:80:::1;::::0;;;13246:13;;13296:38:::1;:52::i;:::-;:70:::0;::::1;:80::i;:101::-;13270:127:::0;-1:-1:-1;13408:20:0::1;13431:41;:20:::0;13270:127;13431:24:::1;:41::i;:::-;13509:16;::::0;;13523:1:::1;13509:16:::0;;;;;::::1;::::0;;13408:64;;-1:-1:-1;13485:21:0::1;::::0;13509:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13509:16:0::1;13485:40;;13554:4;13536;13541:1;13536:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13536:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13580:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;13580:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;13536:7;;13580:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13570:4;13575:1;13570:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13570:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13664:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;13664:188:0;;13630:21:::1;::::0;13664:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;13736:12;;13606:21:::1;::::0;13779:4;;13806::::1;::::0;13826:15:::1;::::0;13664:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13863:17;13883:40;13909:13;13883:21;:25;;:40;;;;:::i;:::-;13863:60;;13934:19;13956:33;13969:19;13986:1;13969:12;;:16;;:19;;;;:::i;:::-;13956:8;::::0;;:12:::1;:33::i;:::-;13934:55;;14000:26;14029:93;14120:1;14029:72;14089:11;14029:41;14057:12;;14029:9;:27;;:41;;;;:::i;:93::-;14000:122;;14133:26;14162:68;14208:11;14162:27;14176:12;;14162:9;:13;;:27;;;;:::i;:68::-;14328:20;::::0;14403:17:::1;::::0;14133:97;;-1:-1:-1;14258:21:0::1;::::0;-1:-1:-1;;;;;14328:20:0;;::::1;::::0;14380:49:::1;::::0;14133:97;;14403:17:::1;:25;14380:22;:49::i;:::-;14320:157;::::0;14453:5:::1;::::0;14320:157;::::1;::::0;;;;;14453:5;14320:157:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14243:234;;;14498:16;14490:59;;;::::0;-1:-1:-1;;;14490:59:0;;6524:2:1;14490:59:0::1;::::0;::::1;6506:21:1::0;6563:2;6543:18;;;6536:30;6602:32;6582:18;;;6575:60;6652:18;;14490:59:0::1;6496:180:1::0;14490:59:0::1;14566:19:::0;;14562:360:::1;;14602:6;::::0;14776:17:::1;::::0;14602:240:::1;::::0;-1:-1:-1;;;14602:240:0;;14678:4:::1;14602:240;::::0;::::1;3866:34:1::0;3916:18;;;3909:34;;;14602:6:0::1;3959:18:1::0;;;3952:34;;;4002:18;;;3995:34;-1:-1:-1;;;;;14776:17:0;;::::1;4045:19:1::0;;;4038:44;14812:15:0::1;4098:19:1::0;;;4091:35;14602:6:0;::::1;::::0;:22:::1;::::0;14632:18;;3800:19:1;;14602:240:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;14862:48:0::1;::::0;;11238:25:1;;;11294:2;11279:18;;11272:34;;;14862:48:0::1;::::0;-1:-1:-1;11211:18:1;14862:48:0::1;;;;;;;14562:360;-1:-1:-1::0;;7692:6:0;:14;;-1:-1:-1;;7692:14:0;;;-1:-1:-1;;;;;;;;13166:1763:0:o;12356:430::-;12441:7;12466:17;12486:40;12511:14;;12486:20;12497:8;;12486:6;:10;;:20;;;;:::i;:40::-;12582:4;12564:24;;;;:9;:24;;;;;;12466:60;;-1:-1:-1;12564:39:0;;12466:60;12564:28;:39::i;:::-;12555:4;12537:24;;;;:9;:24;;;;;;;;:66;;;;12665:16;;12626:20;;-1:-1:-1;;;;;12626:20:0;;;12614:33;;:11;:33;;;;;:48;;;;;;;;;:67;12697:42;;10043:25:1;;;12555:4:0;;12697:42;;;;;;10016:18:1;12697:42:0;;;;;;;12757:21;:6;12768:9;12757:10;:21::i;:::-;12750:28;12356:430;-1:-1:-1;;;;12356:430:0:o;1949:179::-;2007:7;;2039:5;2043:1;2039;:5;:::i;:::-;2027:17;;2068:1;2063;:6;;2055:46;;;;-1:-1:-1;;;2055:46:0;;6168:2:1;2055:46:0;;;6150:21:1;6207:2;6187:18;;;6180:30;6246:29;6226:18;;;6219:57;6293:18;;2055:46:0;6140:177:1;2512:246:0;2570:7;2594:6;2590:47;;-1:-1:-1;2624:1:0;2617:8;;2590:47;2647:9;2659:5;2663:1;2659;:5;:::i;:::-;2647:17;-1:-1:-1;2692:1:0;2683:5;2687:1;2647:17;2683:5;:::i;:::-;:10;2675:56;;;;-1:-1:-1;;;2675:56:0;;7298:2:1;2675:56:0;;;7280:21:1;7337:2;7317:18;;;7310:30;7376:34;7356:18;;;7349:62;-1:-1:-1;;;7427:18:1;;;7420:31;7468:19;;2675:56:0;7270:223:1;2766:132:0;2824:7;2851:39;2855:1;2858;2851:39;;;;;;;;;;;;;;;;;:3;:39::i;2136:136::-;2194:7;2221:43;2225:1;2228;2221:43;;;;;;;;;;;;;;;;;:3;:43::i;2906:223::-;3026:7;3061:12;3054:5;3046:28;;;;-1:-1:-1;;;3046:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3085:9:0;3097:5;3101:1;3097;:5;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;142:1;139;132:12;94:2;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:2;;;405:1;402;395:12;357:2;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:2;;;667:1;664;657:12;619:2;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;609:301;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:2;;;1077:1;1074;1067:12;1029:2;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;1019:352;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;1019:352::o;1376:315::-;1444:6;1452;1505:2;1493:9;1484:7;1480:23;1476:32;1473:2;;;1521:1;1518;1511:12;1473:2;1560:9;1547:23;1579:31;1604:5;1579:31;:::i;:::-;1629:5;1681:2;1666:18;;;;1653:32;;-1:-1:-1;;;1463:228:1:o;1696:277::-;1763:6;1816:2;1804:9;1795:7;1791:23;1787:32;1784:2;;;1832:1;1829;1822:12;1784:2;1864:9;1858:16;1917:5;1910:13;1903:21;1896:5;1893:32;1883:2;;1939:1;1936;1929:12;1978:180;2037:6;2090:2;2078:9;2069:7;2065:23;2061:32;2058:2;;;2106:1;2103;2096:12;2058:2;-1:-1:-1;2129:23:1;;2048:110;-1:-1:-1;2048:110:1:o;2163:248::-;2231:6;2239;2292:2;2280:9;2271:7;2267:23;2263:32;2260:2;;;2308:1;2305;2298:12;2260:2;-1:-1:-1;;2331:23:1;;;2401:2;2386:18;;;2373:32;;-1:-1:-1;2250:161:1:o;2416:306::-;2504:6;2512;2520;2573:2;2561:9;2552:7;2548:23;2544:32;2541:2;;;2589:1;2586;2579:12;2541:2;2618:9;2612:16;2602:26;;2668:2;2657:9;2653:18;2647:25;2637:35;;2712:2;2701:9;2697:18;2691:25;2681:35;;2531:191;;;;;:::o;4555:597::-;4667:4;4696:2;4725;4714:9;4707:21;4757:6;4751:13;4800:6;4795:2;4784:9;4780:18;4773:34;4825:1;4835:140;4849:6;4846:1;4843:13;4835:140;;;4944:14;;;4940:23;;4934:30;4910:17;;;4929:2;4906:26;4899:66;4864:10;;4835:140;;;4993:6;4990:1;4987:13;4984:2;;;5063:1;5058:2;5049:6;5038:9;5034:22;5030:31;5023:42;4984:2;-1:-1:-1;5136:2:1;5115:15;-1:-1:-1;;5111:29:1;5096:45;;;;5143:2;5092:54;;4676:476;-1:-1:-1;;;4676:476:1:o;7913:329::-;8115:2;8097:21;;;8154:1;8134:18;;;8127:29;-1:-1:-1;;;8187:2:1;8172:18;;8165:36;8233:2;8218:18;;8087:155::o;10079:980::-;10341:4;10389:3;10378:9;10374:19;10420:6;10409:9;10402:25;10446:2;10484:6;10479:2;10468:9;10464:18;10457:34;10527:3;10522:2;10511:9;10507:18;10500:31;10551:6;10586;10580:13;10617:6;10609;10602:22;10655:3;10644:9;10640:19;10633:26;;10694:2;10686:6;10682:15;10668:29;;10715:1;10725:195;10739:6;10736:1;10733:13;10725:195;;;10804:13;;-1:-1:-1;;;;;10800:39:1;10788:52;;10895:15;;;;10860:12;;;;10836:1;10754:9;10725:195;;;-1:-1:-1;;;;;;;10976:32:1;;;;10971:2;10956:18;;10949:60;-1:-1:-1;;;11040:3:1;11025:19;11018:35;10937:3;10350:709;-1:-1:-1;;;10350:709:1:o;11506:128::-;11546:3;11577:1;11573:6;11570:1;11567:13;11564:2;;;11583:18;;:::i;:::-;-1:-1:-1;11619:9:1;;11554:80::o;11639:217::-;11679:1;11705;11695:2;;11749:10;11744:3;11740:20;11737:1;11730:31;11784:4;11781:1;11774:15;11812:4;11809:1;11802:15;11695:2;-1:-1:-1;11841:9:1;;11685:171::o;11861:168::-;11901:7;11967:1;11963;11959:6;11955:14;11952:1;11949:21;11944:1;11937:9;11930:17;11926:45;11923:2;;;11974:18;;:::i;:::-;-1:-1:-1;12014:9:1;;11913:116::o;12034:125::-;12074:4;12102:1;12099;12096:8;12093:2;;;12107:18;;:::i;:::-;-1:-1:-1;12144:9:1;;12083:76::o;12164:127::-;12225:10;12220:3;12216:20;12213:1;12206:31;12256:4;12253:1;12246:15;12280:4;12277:1;12270:15;12296:127;12357:10;12352:3;12348:20;12345:1;12338:31;12388:4;12385:1;12378:15;12412:4;12409:1;12402:15;12560:131;-1:-1:-1;;;;;12635:31:1;;12625:42;;12615:2;;12681:1;12678;12671:12;12615:2;12605:86;:::o

Swarm Source

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