ETH Price: $2,514.19 (-0.13%)

Token

Dark BTC (Dark)
 

Overview

Max Total Supply

21,000,000 Dark

Holders

192

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1.582363706 Dark

Value
$0.00
0xcC795506EC1E366e5F527dbc8e75e8E257Edb693
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:
Dark_BTC

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-07
*/

// SPDX-License-Identifier: MIT
/*  
    https://darkbtc.vip
    https://twitter.com/DarkBTC_WBTC
    https://t.me/darkbtcofficial
*/
pragma solidity ^0.8.19;

interface IERC20 {
    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 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 Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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 addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

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

interface IDividendDistributor {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;

    function claimDividend(address _user) external;

    function getPaidEarnings(
        address shareholder
    ) external view returns (uint256);

    function getUnpaidEarnings(
        address shareholder
    ) external view returns (uint256);

    function totalDistributed() external view returns (uint256);
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address public token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IERC20 public WBTC =
        IERC20(0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599);
    IDexRouter public router;

    address[] public shareholders;
    mapping(address => uint256) public shareholderIndexes;
    mapping(address => uint256) public shareholderClaims;

    mapping(address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 1 hours;
    uint256 public minDistribution = 1 * (10 ** WBTC.decimals());

    uint256 currentIndex;

    bool initialized;
    modifier initializer() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == token);
        _;
    }

    constructor(address router_) {
        token = msg.sender;
        router = IDexRouter(router_);
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(
        address shareholder,
        uint256 amount
    ) external override onlyToken {
        if (shares[shareholder].amount > 0) {
            distributeDividend(shareholder);
        }

        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = WBTC.balanceOf(address(this));

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

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: msg.value
        }(0, path, address(this), block.timestamp);

        uint256 amount = WBTC.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(
            dividendsPerShareAccuracyFactor.mul(amount).div(totalShares)
        );
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if (shareholderCount == 0) {
            return;
        }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }

            if (shouldDistribute(shareholders[currentIndex])) {
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(
        address shareholder
    ) internal view returns (bool) {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed.add(amount);
            WBTC.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder]
                .totalRealised
                .add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function claimDividend(address _user) external {
        distributeDividend(_user);
    }

    function getPaidEarnings(
        address shareholder
    ) public view returns (uint256) {
        return shares[shareholder].totalRealised;
    }

    function getUnpaidEarnings(
        address shareholder
    ) public view returns (uint256) {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(
        uint256 share
    ) internal view returns (uint256) {
        return
            share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract Dark_BTC is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "Dark BTC";
    string private constant _symbol = "Dark";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 21000000 * 10 ** _decimals;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isDividendExempt;
    mapping(address => uint256) private _holderCheckpoint;

    uint256 private _reflectionPercent = 25;
    uint256 private _feePercent = 75;

    uint256 private _iBuyTax = 25;
    uint256 private _fBuyTax = 2;
    uint256 private _buyTaxLimit = 45;

    uint256 private _iSellTax = 40;
    uint256 private _fSellTax = 2;
    uint256 private _sellTaxLimit = 45;

    uint256 private _swapPreventLimit = 15;
    uint256 private _buyCounter = 0;

    uint256 public maxTxnAmount = 210000 * 10 ** _decimals;
    uint256 public maxWalletAmount = 210000 * 10 ** _decimals;
    uint256 public taxSwapThreshold = 4200000 * 10 ** _decimals;
    uint256 public maxTaxSwap = 4200000 * 10 ** _decimals;
    uint256 public distributorGas = 500000;

    DividendDistributor public distributor;
    IDexRouter private router;
    address private pair;
    address payable private feeWallet;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public transferLimitEnabled = true;

    event MaxTxnAmountUpdated(uint maxTxnAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        feeWallet = payable(_msgSender());
        _balances[_msgSender()] = _totalSupply;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[feeWallet] = true;

        _isDividendExempt[pair] = true;
        _isDividendExempt[address(router)] = true;
        _isDividendExempt[address(this)] = true;

        distributor = new DividendDistributor(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            taxAmount = amount
                .mul((_buyCounter > _buyTaxLimit) ? _fBuyTax : _iBuyTax)
                .div(100);

            if (transferLimitEnabled) {
                if (to != address(router) && to != address(pair)) {
                    require(
                        _holderCheckpoint[tx.origin] < block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                    );
                    _holderCheckpoint[tx.origin] = block.number;
                }
            }

            if (
                from == pair && to != address(router) && !_isExcludedFromFee[to]
            ) {
                require(amount <= maxTxnAmount, "Exceeds the maxTxnAmount.");
                require(
                    balanceOf(to) + amount <= maxWalletAmount,
                    "Exceeds the maxWalletAmount."
                );
                _buyCounter++;
            }

            if (to == pair && from != address(this)) {
                taxAmount = amount
                    .mul((_buyCounter > _sellTaxLimit) ? _fSellTax : _iSellTax)
                    .div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == pair &&
                swapEnabled &&
                contractTokenBalance > taxSwapThreshold &&
                _buyCounter > _swapPreventLimit
            ) {
                swapTokensForEth(
                    getMin(amount, getMin(contractTokenBalance, maxTaxSwap))
                );
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0.05 ether) {
                    transferFee(address(this).balance);
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));

        if (!_isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
        if (!_isDividendExempt[to]) {
            try
                distributor.setShare(to, _balances[to])
            {} catch {}
        }

        try distributor.process(distributorGas) {} catch {}
    }

    function transferFee(uint256 amount) private {
        uint256 amountReflection = amount.mul(_reflectionPercent).div(100);
        if (amountReflection > 0) {
            try distributor.deposit{value: amountReflection}() {} catch {}
        }
        uint256 amountFee = amount.mul(_feePercent).div(100);
        if (amountFee > 0) {
            feeWallet.transfer(amountFee);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }

    function getPaidDividend(address shareholder)
        public
        view
        returns (uint256)
    {
        return distributor.getPaidEarnings(shareholder);
    }

    function getUnpaidDividend(address shareholder)
        external
        view
        returns (uint256)
    {
        return distributor.getUnpaidEarnings(shareholder);
    }

    function getTotalDistributedDividend() external view returns (uint256) {
        return distributor.totalDistributed();
    }

    function setIsDividendExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        require(holder != address(this) && holder != pair);
        _isDividendExempt[holder] = exempt;
        if (exempt) {
            distributor.setShare(holder, 0);
        } else {
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function enableTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(router), _totalSupply);
        pair = IDexFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(pair).approve(address(router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    function clearTransferLimits() external onlyOwner {
        maxTxnAmount = _totalSupply;
        maxWalletAmount = _totalSupply;
        transferLimitEnabled = false;
        emit MaxTxnAmountUpdated(_totalSupply);
    }

    function setTaxPercent(
        uint256 _r,
        uint256 _f
    ) external onlyOwner {
        _reflectionPercent = _r;
        _feePercent = _f;
    }

    function setBuyFee(
        uint256 _iBuy,
        uint256 _fBuy,
        uint256 _buyLimit
    ) external onlyOwner {
        _iBuyTax = _iBuy;
        _fBuyTax = _fBuy;
        _buyTaxLimit = _buyLimit;
    }

    function setSellFee(
        uint256 _iSell,
        uint256 _fSell,
        uint256 _sellLimit
    ) external onlyOwner {
        _iSellTax = _iSell;
        _fSellTax = _fSell;
        _sellTaxLimit = _sellLimit;
    }

    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 750000, "Gas must be lower than 750000");
        distributorGas = gas;
    }

    function swapFee() external {
        require(_msgSender() == feeWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            transferFee(ethBalance);
        }
    }

    function removeStuckToken(address _token, uint256 _amount) external {
        require(_msgSender() == feeWallet);
        IERC20(_token).transfer(feeWallet, _amount);
    }
}

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

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":"maxTxnAmount","type":"uint256"}],"name":"MaxTxnAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearTransferLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributorGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getPaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDistributedDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"removeStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_iBuy","type":"uint256"},{"internalType":"uint256","name":"_fBuy","type":"uint256"},{"internalType":"uint256","name":"_buyLimit","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_iSell","type":"uint256"},{"internalType":"uint256","name":"_fSell","type":"uint256"},{"internalType":"uint256","name":"_sellLimit","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_r","type":"uint256"},{"internalType":"uint256","name":"_f","type":"uint256"}],"name":"setTaxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526019600655604b60075560196008556002600955602d600a556028600b556002600c55602d600d55600f600e556000600f556009600a620000469190620003d0565b620000559062033450620003e8565b601055620000666009600a620003d0565b620000759062033450620003e8565b601155620000866009600a620003d0565b620000959062401640620003e8565b601255620000a66009600a620003d0565b620000b59062401640620003e8565b6013556207a1206014556018805462ffffff60a81b1916600160b81b179055348015620000e157600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601880546001600160a01b03191633179055620001436009600a620003d0565b62000153906301406f40620003e8565b336000908152600160208181526040808420949094553080845260038252848420805460ff1990811685179091556018546001600160a01b0390811686528686208054831686179055601754811686526004909352858520805482168517905560165490921684528484208054831684179055835291839020805490921617905551737a250d5630b4cf539739df2c5dacb4c659f2488d90620001f690620002ad565b6001600160a01b039091168152602001604051809103906000f08015801562000223573d6000803e3d6000fd5b50601580546001600160a01b0319166001600160a01b03929092169190911790556200024c3390565b6001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620002866009600a620003d0565b62000296906301406f40620003e8565b60405190815260200160405180910390a362000402565b6113c480620026ce83390190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000312578160001904821115620002f657620002f6620002bb565b808516156200030457918102915b93841c9390800290620002d6565b509250929050565b6000826200032b57506001620003ca565b816200033a57506000620003ca565b81600181146200035357600281146200035e576200037e565b6001915050620003ca565b60ff841115620003725762000372620002bb565b50506001821b620003ca565b5060208310610133831016604e8410600b8410161715620003a3575081810a620003ca565b620003af8383620002d1565b8060001904821115620003c657620003c6620002bb565b0290505b92915050565b6000620003e160ff8416836200031a565b9392505050565b8082028115828204841417620003ca57620003ca620002bb565b6122bc80620004126000396000f3fe6080604052600436106101e75760003560e01c8063717944e011610102578063aa4bde2811610095578063dd62ed3e11610064578063dd62ed3e1461057f578063e54081d0146105c5578063f0fc6bca146105da578063f708a64f146105ef57600080fd5b8063aa4bde2814610513578063bfe1092814610529578063ce261d1014610549578063cf46f24c1461056957600080fd5b80638da5cb5b116100d15780638da5cb5b1461047457806395d89b41146104a65780639d1944f5146104d3578063a9059cbb146104f357600080fd5b8063717944e0146103fe578063796b84ac1461041f57806386db0c051461043f5780638a8c523c1461045f57600080fd5b8063313ce5671161017a57806360e719621161014957806360e719621461038757806362997f8c1461039d57806370a08231146103b3578063715018a6146103e957600080fd5b8063313ce5671461032057806349bc3feb1461033c57806354cf2aeb1461035c5780635e7b655c1461037157600080fd5b80631d865c30116101b65780631d865c301461029e57806323b872dd146102c057806325519cf2146102e05780632d48e8961461030057600080fd5b806306fdde03146101f3578063095ea7b31461023657806318160ddd146102665780631961cee21461028957600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506040805180820190915260088152674461726b2042544360c01b60208201525b60405161022d9190611dd4565b60405180910390f35b34801561024257600080fd5b50610256610251366004611e3a565b61060f565b604051901515815260200161022d565b34801561027257600080fd5b5061027b610626565b60405190815260200161022d565b34801561029557600080fd5b5061027b610647565b3480156102aa57600080fd5b506102be6102b9366004611e66565b6106b5565b005b3480156102cc57600080fd5b506102566102db366004611e92565b6106f6565b3480156102ec57600080fd5b506102be6102fb366004611e66565b61075f565b34801561030c57600080fd5b506102be61031b366004611ed3565b610797565b34801561032c57600080fd5b506040516009815260200161022d565b34801561034857600080fd5b5061027b610357366004611ef5565b61082b565b34801561036857600080fd5b506102be61089b565b34801561037d57600080fd5b5061027b60125481565b34801561039357600080fd5b5061027b60145481565b3480156103a957600080fd5b5061027b60135481565b3480156103bf57600080fd5b5061027b6103ce366004611ef5565b6001600160a01b031660009081526001602052604090205490565b3480156103f557600080fd5b506102be6108ee565b34801561040a57600080fd5b5060185461025690600160b81b900460ff1681565b34801561042b57600080fd5b506102be61043a366004611ed3565b610962565b34801561044b57600080fd5b5061027b61045a366004611ef5565b610997565b34801561046b57600080fd5b506102be6109ca565b34801561048057600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161022d565b3480156104b257600080fd5b506040805180820190915260048152634461726b60e01b6020820152610220565b3480156104df57600080fd5b506102be6104ee366004611f12565b610d86565b3480156104ff57600080fd5b5061025661050e366004611e3a565b610e07565b34801561051f57600080fd5b5061027b60115481565b34801561053557600080fd5b5060155461048e906001600160a01b031681565b34801561055557600080fd5b506102be610564366004611e3a565b610e14565b34801561057557600080fd5b5061027b60105481565b34801561058b57600080fd5b5061027b61059a366004611f2b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105d157600080fd5b506102be610eb0565b3480156105e657600080fd5b506102be610f6f565b3480156105fb57600080fd5b506102be61060a366004611f72565b610fce565b600061061c3384846110ec565b5060015b92915050565b60006106346009600a61209a565b610642906301406f406120a9565b905090565b6015546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064291906120c0565b6000546001600160a01b031633146106e85760405162461bcd60e51b81526004016106df906120d9565b60405180910390fd5b600b92909255600c55600d55565b6000610703848484611210565b61075584336107508560405180606001604052806028815260200161225f602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061198b565b6110ec565b5060019392505050565b6000546001600160a01b031633146107895760405162461bcd60e51b81526004016106df906120d9565b600892909255600955600a55565b6000546001600160a01b031633146107c15760405162461bcd60e51b81526004016106df906120d9565b6015546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561080f57600080fd5b505af1158015610823573d6000803e3d6000fd5b505050505050565b601554604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062091906120c0565b6018546001600160a01b0316336001600160a01b0316146108bb57600080fd5b3060009081526001602052604090205480156108da576108da816119c5565b4780156108ea576108ea81611b3f565b5050565b6000546001600160a01b031633146109185760405162461bcd60e51b81526004016106df906120d9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461098c5760405162461bcd60e51b81526004016106df906120d9565b600691909155600755565b60155460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd31989060240161085a565b6000546001600160a01b031633146109f45760405162461bcd60e51b81526004016106df906120d9565b601854600160a01b900460ff1615610a4e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106df565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a97903090610a896009600a61209a565b610750906301406f406120a9565b601660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0e919061210e565b6001600160a01b031663c9c6539630601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b94919061210e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c05919061210e565b601780546001600160a01b039283166001600160a01b03199091161790556016541663f305d7194730610c4d816001600160a01b031660009081526001602052604090205490565b600080610c626000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cef919061212b565b505060175460165460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612159565b506018805462ff00ff60a01b19166201000160a01b179055565b6000546001600160a01b03163314610db05760405162461bcd60e51b81526004016106df906120d9565b620b71b08110610e025760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e2037353030303000000060448201526064016106df565b601455565b600061061c338484611210565b6018546001600160a01b0316336001600160a01b031614610e3457600080fd5b60185460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eab9190612159565b505050565b6000546001600160a01b03163314610eda5760405162461bcd60e51b81526004016106df906120d9565b610ee66009600a61209a565b610ef4906301406f406120a9565b601055610f036009600a61209a565b610f11906301406f406120a9565b6011556018805460ff60b81b191690557ff7376c86cf503c5788ae74467ebc95b750bc4d5c64790343f9b4f42bdf376eee610f4e6009600a61209a565b610f5c906301406f406120a9565b60405190815260200160405180910390a1565b601554604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610ff85760405162461bcd60e51b81526004016106df906120d9565b6001600160a01b038216301480159061101f57506017546001600160a01b03838116911614155b61102857600080fd5b6001600160a01b0382166000908152600460205260409020805460ff191682158015919091179091556110a357601554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b15801561080f57600080fd5b6015546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016107f5565b6001600160a01b03831661114e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106df565b6001600160a01b0382166111af5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106df565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112745760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106df565b6001600160a01b0382166112d65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106df565b6000811161133f5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016106df565b600080546001600160a01b0385811691161480159061136c57506000546001600160a01b03848116911614155b156116be5761139d6064611397600a54600f541161138c57600854611390565b6009545b8590611c25565b90611cae565b601854909150600160b81b900460ff161561148c576016546001600160a01b038481169116148015906113de57506017546001600160a01b03848116911614155b1561148c573260009081526005602052604090205443116114795760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016106df565b3260009081526005602052604090204390555b6017546001600160a01b0385811691161480156114b757506016546001600160a01b03848116911614155b80156114dc57506001600160a01b03831660009081526003602052604090205460ff16155b156115c4576010548211156115335760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865206d617854786e416d6f756e742e0000000000000060448201526064016106df565b60115482611556856001600160a01b031660009081526001602052604090205490565b6115609190612176565b11156115ae5760405162461bcd60e51b815260206004820152601c60248201527f4578636565647320746865206d617857616c6c6574416d6f756e742e0000000060448201526064016106df565b600f80549060006115be83612189565b91905055505b6017546001600160a01b0384811691161480156115ea57506001600160a01b0384163014155b15611617576116146064611397600d54600f541161160a57600b54611390565b600c548590611c25565b90505b30600090815260016020526040902054601854600160a81b900460ff1615801561164e57506017546001600160a01b038581169116145b80156116635750601854600160b01b900460ff165b8015611670575060125481115b801561167f5750600e54600f54115b156116bc576116a161169c8461169784601354611cf0565b611cf0565b6119c5565b4766b1a2bc2ec500008111156116ba576116ba47611b3f565b505b505b801561173857306000908152600160205260409020546116de9082611d05565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061172f9085815260200190565b60405180910390a35b6001600160a01b03841660009081526001602052604090205461175b9083611d64565b6001600160a01b0385166000908152600160205260409020556117a06117818383611d64565b6001600160a01b03851660009081526001602052604090205490611d05565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6117ea8585611d64565b60405190815260200160405180910390a36001600160a01b03841660009081526004602052604090205460ff1661188c576015546001600160a01b0385811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561187957600080fd5b505af192505050801561188a575060015b505b6001600160a01b03831660009081526004602052604090205460ff1661191d576015546001600160a01b0384811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561190a57600080fd5b505af192505050801561191b575060015b505b6015546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119559160040190815260200190565b600060405180830381600087803b15801561196f57600080fd5b505af1925050508015611980575060015b15610fc85750505050565b600081848411156119af5760405162461bcd60e51b81526004016106df9190611dd4565b5060006119bc84866121a2565b95945050505050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611a0d57611a0d6121b5565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8a919061210e565b81600181518110611a9d57611a9d6121b5565b6001600160a01b039283166020918202929092010152601654611ac391309116846110ec565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611afc9085906000908690309042906004016121cb565b600060405180830381600087803b158015611b1657600080fd5b505af1158015611b2a573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b6000611b5b606461139760065485611c2590919063ffffffff16565b90508015611bc757601560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bb357600080fd5b505af193505050508015611bc5575060015b505b6000611be3606461139760075486611c2590919063ffffffff16565b90508015610eab576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fc8573d6000803e3d6000fd5b600082600003611c3757506000610620565b6000611c4383856120a9565b905082611c50858361223c565b14611ca75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106df565b9392505050565b6000611ca783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611da6565b6000818311611cff5782611ca7565b50919050565b600080611d128385612176565b905083811015611ca75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106df565b6000611ca783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061198b565b60008183611dc75760405162461bcd60e51b81526004016106df9190611dd4565b5060006119bc848661223c565b600060208083528351808285015260005b81811015611e0157858101830151858201604001528201611de5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e3757600080fd5b50565b60008060408385031215611e4d57600080fd5b8235611e5881611e22565b946020939093013593505050565b600080600060608486031215611e7b57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611ea757600080fd5b8335611eb281611e22565b92506020840135611ec281611e22565b929592945050506040919091013590565b60008060408385031215611ee657600080fd5b50508035926020909101359150565b600060208284031215611f0757600080fd5b8135611ca781611e22565b600060208284031215611f2457600080fd5b5035919050565b60008060408385031215611f3e57600080fd5b8235611f4981611e22565b91506020830135611f5981611e22565b809150509250929050565b8015158114611e3757600080fd5b60008060408385031215611f8557600080fd5b8235611f9081611e22565b91506020830135611f5981611f64565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ff1578160001904821115611fd757611fd7611fa0565b80851615611fe457918102915b93841c9390800290611fbb565b509250929050565b60008261200857506001610620565b8161201557506000610620565b816001811461202b576002811461203557612051565b6001915050610620565b60ff84111561204657612046611fa0565b50506001821b610620565b5060208310610133831016604e8410600b8410161715612074575081810a610620565b61207e8383611fb6565b806000190482111561209257612092611fa0565b029392505050565b6000611ca760ff841683611ff9565b808202811582820484141761062057610620611fa0565b6000602082840312156120d257600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561212057600080fd5b8151611ca781611e22565b60008060006060848603121561214057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561216b57600080fd5b8151611ca781611f64565b8082018082111561062057610620611fa0565b60006001820161219b5761219b611fa0565b5060010190565b8181038181111561062057610620611fa0565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561221b5784516001600160a01b0316835293830193918301916001016121f6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261225957634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220249a62be4036c783c4d98de55a96cda3070c86475f0af27ed1459437848e6cfe64736f6c6343000813003360806040819052600180546001600160a01b031916732260fac5e5542a773aa44fbcfedf7c193bc2c5999081179091556ec097ce7bc90715b34b9f1000000000600b55610e10600c5563313ce56760e01b82529063313ce56790608490602090600481865afa15801562000077573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009d91906200011e565b620000aa90600a6200025f565b620000b790600162000270565b600d55348015620000c757600080fd5b50604051620013c4380380620013c4833981016040819052620000ea916200028a565b60008054336001600160a01b031991821617909155600280549091166001600160a01b0392909216919091179055620002b5565b6000602082840312156200013157600080fd5b815160ff811681146200014357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001a15781600019048211156200018557620001856200014a565b808516156200019357918102915b93841c939080029062000165565b509250929050565b600082620001ba5750600162000259565b81620001c95750600062000259565b8160018114620001e25760028114620001ed576200020d565b600191505062000259565b60ff8411156200020157620002016200014a565b50506001821b62000259565b5060208310610133831016604e8410600b841016171562000232575081810a62000259565b6200023e838362000160565b80600019048211156200025557620002556200014a565b0290505b92915050565b60006200014360ff841683620001a9565b80820281158282048414176200025957620002596200014a565b6000602082840312156200029d57600080fd5b81516001600160a01b03811681146200014357600080fd5b6110ff80620002c56000396000f3fe60806040526004361061012a5760003560e01c8063997664d7116100ab578063e2d2e2191161006f578063e2d2e21914610366578063efca2eed1461037c578063f887ea4014610392578063fc0c546a146103b2578063ffb2c479146103d2578063ffd49c84146103f257600080fd5b8063997664d7146102a4578063ab377daa146102ba578063ce7c2ac2146102da578063d0e30db014610331578063d4fda1f21461033957600080fd5b80633a98ef39116100f25780633a98ef39146101da5780634dede3de146101f05780634fab0ae81461022857806352f481581461023e57806366817df51461027757600080fd5b806311ce023d1461012f57806314b6ca961461015857806315f7e05e1461017a57806328fd31981461019a5780632d48e896146101ba575b600080fd5b34801561013b57600080fd5b50610145600b5481565b6040519081526020015b60405180910390f35b34801561016457600080fd5b50610178610173366004610e7b565b610408565b005b34801561018657600080fd5b50610178610195366004610ea7565b610580565b3480156101a657600080fd5b506101456101b5366004610ea7565b61058c565b3480156101c657600080fd5b506101786101d5366004610ec4565b610617565b3480156101e657600080fd5b5061014560075481565b3480156101fc57600080fd5b50600154610210906001600160a01b031681565b6040516001600160a01b03909116815260200161014f565b34801561023457600080fd5b50610145600d5481565b34801561024a57600080fd5b50610145610259366004610ea7565b6001600160a01b031660009081526006602052604090206002015490565b34801561028357600080fd5b50610145610292366004610ea7565b60056020526000908152604090205481565b3480156102b057600080fd5b5061014560085481565b3480156102c657600080fd5b506102106102d5366004610ee6565b610639565b3480156102e657600080fd5b506103166102f5366004610ea7565b60066020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161014f565b610178610663565b34801561034557600080fd5b50610145610354366004610ea7565b60046020526000908152604090205481565b34801561037257600080fd5b50610145600a5481565b34801561038857600080fd5b5061014560095481565b34801561039e57600080fd5b50600254610210906001600160a01b031681565b3480156103be57600080fd5b50600054610210906001600160a01b031681565b3480156103de57600080fd5b506101786103ed366004610ee6565b6108f2565b3480156103fe57600080fd5b50610145600c5481565b6000546001600160a01b0316331461041f57600080fd5b6001600160a01b0382166000908152600660205260409020541561044657610446826109f6565b60008111801561046c57506001600160a01b038216600090815260066020526040902054155b156104d257600380546001600160a01b0384166000818152600460205260408120839055600183018455929092527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180546001600160a01b0319169091179055610505565b801580156104f757506001600160a01b03821660009081526006602052604090205415155b156105055761050582610b14565b6001600160a01b03821660009081526006602052604090205460075461053691839161053091610c29565b90610c74565b6007556001600160a01b038216600090815260066020526040902081905561055d81610cd8565b6001600160a01b0390921660009081526006602052604090206001019190915550565b610589816109f6565b50565b6001600160a01b03811660009081526006602052604081205481036105b357506000919050565b6001600160a01b0382166000908152600660205260408120546105d590610cd8565b6001600160a01b038416600090815260066020526040902060010154909150808211610605575060009392505050565b61060f8282610c29565b949350505050565b6000546001600160a01b0316331461062e57600080fd5b600c91909155600d55565b6003818154811061064957600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b0316331461067a57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156106c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e79190610eff565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a9190610f18565b8160008151811061078d5761078d610f35565b6001600160a01b03928316602091820292909201015260018054835192169183919081106107bd576107bd610f35565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de9590349061080390600090869030904290600401610f4b565b6000604051808303818588803b15801561081c57600080fd5b505af1158015610830573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506108b093508692506001600160a01b03909116906370a0823190602401602060405180830381865afa158015610886573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108aa9190610eff565b90610c29565b6008549091506108c09082610c74565b600855600754600b546108ea916108e1916108db9085610cf5565b90610d77565b600a5490610c74565b600a55505050565b6000546001600160a01b0316331461090957600080fd5b6003546000819003610919575050565b6000805a905060005b848310801561093057508381105b156109ef5783600e5410610944576000600e555b6109766003600e548154811061095c5761095c610f35565b6000918252602090912001546001600160a01b0316610db9565b156109ad576109ad6003600e548154811061099357610993610f35565b6000918252602090912001546001600160a01b03166109f6565b6109c26109bb5a8490610c29565b8490610c74565b92505a600e805491935060006109d783610fcb565b919050555080806109e790610fcb565b915050610922565b5050505050565b6001600160a01b0381166000908152600660205260408120549003610a185750565b6000610a238261058c565b90508015610b1057600954610a389082610c74565b60095560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb906044016020604051808303816000875af1158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab29190610fe4565b506001600160a01b03821660009081526005602090815260408083204290556006909152902060020154610ae69082610c74565b6001600160a01b038316600090815260066020526040902060028101919091555461055d90610cd8565b5050565b60038054610b2490600190611006565b81548110610b3457610b34610f35565b60009182526020808320909101546001600160a01b0384811684526004909252604090922054600380549290931692918110610b7257610b72610f35565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260049182905260408120546003805491939291610bbe90600190611006565b81548110610bce57610bce610f35565b60009182526020808320909101546001600160a01b031683528201929092526040019020556003805480610c0457610c04611019565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610c6b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dfe565b90505b92915050565b600080610c81838561102f565b905083811015610c6b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610c6e600b546108db600a5485610cf590919063ffffffff16565b600082600003610d0757506000610c6e565b6000610d138385611042565b905082610d208583611059565b14610c6b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ccf565b6000610c6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e38565b600c546001600160a01b03821660009081526005602052604081205490914291610de3919061102f565b108015610c6e5750600d54610df78361058c565b1192915050565b60008184841115610e225760405162461bcd60e51b8152600401610ccf919061107b565b506000610e2f8486611006565b95945050505050565b60008183610e595760405162461bcd60e51b8152600401610ccf919061107b565b506000610e2f8486611059565b6001600160a01b038116811461058957600080fd5b60008060408385031215610e8e57600080fd5b8235610e9981610e66565b946020939093013593505050565b600060208284031215610eb957600080fd5b8135610c6b81610e66565b60008060408385031215610ed757600080fd5b50508035926020909101359150565b600060208284031215610ef857600080fd5b5035919050565b600060208284031215610f1157600080fd5b5051919050565b600060208284031215610f2a57600080fd5b8151610c6b81610e66565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610f955784516001600160a01b031683529383019391830191600101610f70565b50506001600160a01b039690961660408501525050506060015292915050565b634e487b7160e01b600052601160045260246000fd5b600060018201610fdd57610fdd610fb5565b5060010190565b600060208284031215610ff657600080fd5b81518015158114610c6b57600080fd5b81810381811115610c6e57610c6e610fb5565b634e487b7160e01b600052603160045260246000fd5b80820180821115610c6e57610c6e610fb5565b8082028115828204841417610c6e57610c6e610fb5565b60008261107657634e487b7160e01b600052601260045260246000fd5b500490565b600060208083528351808285015260005b818110156110a85785810183015185820160400152820161108c565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220b0d892e8bf4b6101973b2826273872b91bc36e8b16d34791974d1aee7ed6fc1c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063717944e011610102578063aa4bde2811610095578063dd62ed3e11610064578063dd62ed3e1461057f578063e54081d0146105c5578063f0fc6bca146105da578063f708a64f146105ef57600080fd5b8063aa4bde2814610513578063bfe1092814610529578063ce261d1014610549578063cf46f24c1461056957600080fd5b80638da5cb5b116100d15780638da5cb5b1461047457806395d89b41146104a65780639d1944f5146104d3578063a9059cbb146104f357600080fd5b8063717944e0146103fe578063796b84ac1461041f57806386db0c051461043f5780638a8c523c1461045f57600080fd5b8063313ce5671161017a57806360e719621161014957806360e719621461038757806362997f8c1461039d57806370a08231146103b3578063715018a6146103e957600080fd5b8063313ce5671461032057806349bc3feb1461033c57806354cf2aeb1461035c5780635e7b655c1461037157600080fd5b80631d865c30116101b65780631d865c301461029e57806323b872dd146102c057806325519cf2146102e05780632d48e8961461030057600080fd5b806306fdde03146101f3578063095ea7b31461023657806318160ddd146102665780631961cee21461028957600080fd5b366101ee57005b600080fd5b3480156101ff57600080fd5b506040805180820190915260088152674461726b2042544360c01b60208201525b60405161022d9190611dd4565b60405180910390f35b34801561024257600080fd5b50610256610251366004611e3a565b61060f565b604051901515815260200161022d565b34801561027257600080fd5b5061027b610626565b60405190815260200161022d565b34801561029557600080fd5b5061027b610647565b3480156102aa57600080fd5b506102be6102b9366004611e66565b6106b5565b005b3480156102cc57600080fd5b506102566102db366004611e92565b6106f6565b3480156102ec57600080fd5b506102be6102fb366004611e66565b61075f565b34801561030c57600080fd5b506102be61031b366004611ed3565b610797565b34801561032c57600080fd5b506040516009815260200161022d565b34801561034857600080fd5b5061027b610357366004611ef5565b61082b565b34801561036857600080fd5b506102be61089b565b34801561037d57600080fd5b5061027b60125481565b34801561039357600080fd5b5061027b60145481565b3480156103a957600080fd5b5061027b60135481565b3480156103bf57600080fd5b5061027b6103ce366004611ef5565b6001600160a01b031660009081526001602052604090205490565b3480156103f557600080fd5b506102be6108ee565b34801561040a57600080fd5b5060185461025690600160b81b900460ff1681565b34801561042b57600080fd5b506102be61043a366004611ed3565b610962565b34801561044b57600080fd5b5061027b61045a366004611ef5565b610997565b34801561046b57600080fd5b506102be6109ca565b34801561048057600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161022d565b3480156104b257600080fd5b506040805180820190915260048152634461726b60e01b6020820152610220565b3480156104df57600080fd5b506102be6104ee366004611f12565b610d86565b3480156104ff57600080fd5b5061025661050e366004611e3a565b610e07565b34801561051f57600080fd5b5061027b60115481565b34801561053557600080fd5b5060155461048e906001600160a01b031681565b34801561055557600080fd5b506102be610564366004611e3a565b610e14565b34801561057557600080fd5b5061027b60105481565b34801561058b57600080fd5b5061027b61059a366004611f2b565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156105d157600080fd5b506102be610eb0565b3480156105e657600080fd5b506102be610f6f565b3480156105fb57600080fd5b506102be61060a366004611f72565b610fce565b600061061c3384846110ec565b5060015b92915050565b60006106346009600a61209a565b610642906301406f406120a9565b905090565b6015546040805163efca2eed60e01b815290516000926001600160a01b03169163efca2eed9160048083019260209291908290030181865afa158015610691573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064291906120c0565b6000546001600160a01b031633146106e85760405162461bcd60e51b81526004016106df906120d9565b60405180910390fd5b600b92909255600c55600d55565b6000610703848484611210565b61075584336107508560405180606001604052806028815260200161225f602891396001600160a01b038a166000908152600260209081526040808320338452909152902054919061198b565b6110ec565b5060019392505050565b6000546001600160a01b031633146107895760405162461bcd60e51b81526004016106df906120d9565b600892909255600955600a55565b6000546001600160a01b031633146107c15760405162461bcd60e51b81526004016106df906120d9565b6015546040516316a4744b60e11b815260048101849052602481018390526001600160a01b0390911690632d48e896906044015b600060405180830381600087803b15801561080f57600080fd5b505af1158015610823573d6000803e3d6000fd5b505050505050565b601554604051630a5e902b60e31b81526001600160a01b03838116600483015260009216906352f48158906024015b602060405180830381865afa158015610877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062091906120c0565b6018546001600160a01b0316336001600160a01b0316146108bb57600080fd5b3060009081526001602052604090205480156108da576108da816119c5565b4780156108ea576108ea81611b3f565b5050565b6000546001600160a01b031633146109185760405162461bcd60e51b81526004016106df906120d9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461098c5760405162461bcd60e51b81526004016106df906120d9565b600691909155600755565b60155460405163051fa63360e31b81526001600160a01b03838116600483015260009216906328fd31989060240161085a565b6000546001600160a01b031633146109f45760405162461bcd60e51b81526004016106df906120d9565b601854600160a01b900460ff1615610a4e5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016106df565b601680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a97903090610a896009600a61209a565b610750906301406f406120a9565b601660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0e919061210e565b6001600160a01b031663c9c6539630601660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b94919061210e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610be1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c05919061210e565b601780546001600160a01b039283166001600160a01b03199091161790556016541663f305d7194730610c4d816001600160a01b031660009081526001602052604090205490565b600080610c626000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610cca573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610cef919061212b565b505060175460165460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c9190612159565b506018805462ff00ff60a01b19166201000160a01b179055565b6000546001600160a01b03163314610db05760405162461bcd60e51b81526004016106df906120d9565b620b71b08110610e025760405162461bcd60e51b815260206004820152601d60248201527f476173206d757374206265206c6f776572207468616e2037353030303000000060448201526064016106df565b601455565b600061061c338484611210565b6018546001600160a01b0316336001600160a01b031614610e3457600080fd5b60185460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610e87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eab9190612159565b505050565b6000546001600160a01b03163314610eda5760405162461bcd60e51b81526004016106df906120d9565b610ee66009600a61209a565b610ef4906301406f406120a9565b601055610f036009600a61209a565b610f11906301406f406120a9565b6011556018805460ff60b81b191690557ff7376c86cf503c5788ae74467ebc95b750bc4d5c64790343f9b4f42bdf376eee610f4e6009600a61209a565b610f5c906301406f406120a9565b60405190815260200160405180910390a1565b601554604051630afbf02f60e11b81523360048201526001600160a01b03909116906315f7e05e90602401600060405180830381600087803b158015610fb457600080fd5b505af1158015610fc8573d6000803e3d6000fd5b50505050565b6000546001600160a01b03163314610ff85760405162461bcd60e51b81526004016106df906120d9565b6001600160a01b038216301480159061101f57506017546001600160a01b03838116911614155b61102857600080fd5b6001600160a01b0382166000908152600460205260409020805460ff191682158015919091179091556110a357601554604051630a5b654b60e11b81526001600160a01b03848116600483015260006024830152909116906314b6ca9690604401600060405180830381600087803b15801561080f57600080fd5b6015546001600160a01b0383811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca96906044016107f5565b6001600160a01b03831661114e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106df565b6001600160a01b0382166111af5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106df565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112745760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106df565b6001600160a01b0382166112d65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106df565b6000811161133f5760405162461bcd60e51b815260206004820152603060248201527f45524332303a205472616e7366657220616d6f756e74206d757374206265206760448201526f726561746572207468616e207a65726f60801b60648201526084016106df565b600080546001600160a01b0385811691161480159061136c57506000546001600160a01b03848116911614155b156116be5761139d6064611397600a54600f541161138c57600854611390565b6009545b8590611c25565b90611cae565b601854909150600160b81b900460ff161561148c576016546001600160a01b038481169116148015906113de57506017546001600160a01b03848116911614155b1561148c573260009081526005602052604090205443116114795760405162461bcd60e51b815260206004820152604960248201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60448201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b6064820152681030b63637bbb2b21760b91b608482015260a4016106df565b3260009081526005602052604090204390555b6017546001600160a01b0385811691161480156114b757506016546001600160a01b03848116911614155b80156114dc57506001600160a01b03831660009081526003602052604090205460ff16155b156115c4576010548211156115335760405162461bcd60e51b815260206004820152601960248201527f4578636565647320746865206d617854786e416d6f756e742e0000000000000060448201526064016106df565b60115482611556856001600160a01b031660009081526001602052604090205490565b6115609190612176565b11156115ae5760405162461bcd60e51b815260206004820152601c60248201527f4578636565647320746865206d617857616c6c6574416d6f756e742e0000000060448201526064016106df565b600f80549060006115be83612189565b91905055505b6017546001600160a01b0384811691161480156115ea57506001600160a01b0384163014155b15611617576116146064611397600d54600f541161160a57600b54611390565b600c548590611c25565b90505b30600090815260016020526040902054601854600160a81b900460ff1615801561164e57506017546001600160a01b038581169116145b80156116635750601854600160b01b900460ff165b8015611670575060125481115b801561167f5750600e54600f54115b156116bc576116a161169c8461169784601354611cf0565b611cf0565b6119c5565b4766b1a2bc2ec500008111156116ba576116ba47611b3f565b505b505b801561173857306000908152600160205260409020546116de9082611d05565b30600081815260016020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061172f9085815260200190565b60405180910390a35b6001600160a01b03841660009081526001602052604090205461175b9083611d64565b6001600160a01b0385166000908152600160205260409020556117a06117818383611d64565b6001600160a01b03851660009081526001602052604090205490611d05565b6001600160a01b0380851660008181526001602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6117ea8585611d64565b60405190815260200160405180910390a36001600160a01b03841660009081526004602052604090205460ff1661188c576015546001600160a01b0385811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561187957600080fd5b505af192505050801561188a575060015b505b6001600160a01b03831660009081526004602052604090205460ff1661191d576015546001600160a01b0384811660008181526001602052604090819020549051630a5b654b60e11b8152600481019290925260248201529116906314b6ca9690604401600060405180830381600087803b15801561190a57600080fd5b505af192505050801561191b575060015b505b6015546014546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916119559160040190815260200190565b600060405180830381600087803b15801561196f57600080fd5b505af1925050508015611980575060015b15610fc85750505050565b600081848411156119af5760405162461bcd60e51b81526004016106df9190611dd4565b5060006119bc84866121a2565b95945050505050565b6018805460ff60a81b1916600160a81b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611a0d57611a0d6121b5565b6001600160a01b03928316602091820292909201810191909152601654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a8a919061210e565b81600181518110611a9d57611a9d6121b5565b6001600160a01b039283166020918202929092010152601654611ac391309116846110ec565b60165460405163791ac94760e01b81526001600160a01b039091169063791ac94790611afc9085906000908690309042906004016121cb565b600060405180830381600087803b158015611b1657600080fd5b505af1158015611b2a573d6000803e3d6000fd5b50506018805460ff60a81b1916905550505050565b6000611b5b606461139760065485611c2590919063ffffffff16565b90508015611bc757601560009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611bb357600080fd5b505af193505050508015611bc5575060015b505b6000611be3606461139760075486611c2590919063ffffffff16565b90508015610eab576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610fc8573d6000803e3d6000fd5b600082600003611c3757506000610620565b6000611c4383856120a9565b905082611c50858361223c565b14611ca75760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106df565b9392505050565b6000611ca783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611da6565b6000818311611cff5782611ca7565b50919050565b600080611d128385612176565b905083811015611ca75760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106df565b6000611ca783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061198b565b60008183611dc75760405162461bcd60e51b81526004016106df9190611dd4565b5060006119bc848661223c565b600060208083528351808285015260005b81811015611e0157858101830151858201604001528201611de5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e3757600080fd5b50565b60008060408385031215611e4d57600080fd5b8235611e5881611e22565b946020939093013593505050565b600080600060608486031215611e7b57600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611ea757600080fd5b8335611eb281611e22565b92506020840135611ec281611e22565b929592945050506040919091013590565b60008060408385031215611ee657600080fd5b50508035926020909101359150565b600060208284031215611f0757600080fd5b8135611ca781611e22565b600060208284031215611f2457600080fd5b5035919050565b60008060408385031215611f3e57600080fd5b8235611f4981611e22565b91506020830135611f5981611e22565b809150509250929050565b8015158114611e3757600080fd5b60008060408385031215611f8557600080fd5b8235611f9081611e22565b91506020830135611f5981611f64565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611ff1578160001904821115611fd757611fd7611fa0565b80851615611fe457918102915b93841c9390800290611fbb565b509250929050565b60008261200857506001610620565b8161201557506000610620565b816001811461202b576002811461203557612051565b6001915050610620565b60ff84111561204657612046611fa0565b50506001821b610620565b5060208310610133831016604e8410600b8410161715612074575081810a610620565b61207e8383611fb6565b806000190482111561209257612092611fa0565b029392505050565b6000611ca760ff841683611ff9565b808202811582820484141761062057610620611fa0565b6000602082840312156120d257600080fd5b5051919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561212057600080fd5b8151611ca781611e22565b60008060006060848603121561214057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561216b57600080fd5b8151611ca781611f64565b8082018082111561062057610620611fa0565b60006001820161219b5761219b611fa0565b5060010190565b8181038181111561062057610620611fa0565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561221b5784516001600160a01b0316835293830193918301916001016121f6565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261225957634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220249a62be4036c783c4d98de55a96cda3070c86475f0af27ed1459437848e6cfe64736f6c63430008130033

Deployed Bytecode Sourcemap

9925:11673:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12239:83;;;;;;;;;;-1:-1:-1;12309:5:0;;;;;;;;;;;;-1:-1:-1;;;12309:5:0;;;;12239:83;;;;;;;:::i;:::-;;;;;;;;13127:186;;;;;;;;;;-1:-1:-1;13127:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;13127:186:0;1023:187:1;12516:100:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;12516:100:0;1215:177:1;18550:127:0;;;;;;;;;;;;;:::i;20424:228::-;;;;;;;;;;-1:-1:-1;20424:228:0;;;;;:::i;:::-;;:::i;:::-;;13321:446;;;;;;;;;;-1:-1:-1;13321:446:0;;;;;:::i;:::-;;:::i;20198:218::-;;;;;;;;;;-1:-1:-1;20198:218:0;;;;;:::i;:::-;;:::i;20660:207::-;;;;;;;;;;-1:-1:-1;20660:207:0;;;;;:::i;:::-;;:::i;12425:83::-;;;;;;;;;;-1:-1:-1;12425:83:0;;10144:1;2574:36:1;;2562:2;2547:18;12425:83:0;2432:184:1;18180:174:0;;;;;;;;;;-1:-1:-1;18180:174:0;;;;;:::i;:::-;;:::i;21051:361::-;;;;;;;;;;;;;:::i;11056:59::-;;;;;;;;;;;;;;;;11182:38;;;;;;;;;;;;;;;;11122:53;;;;;;;;;;;;;;;;12624:119;;;;;;;;;;-1:-1:-1;12624:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;12717:18:0;12690:7;12717:18;;;:9;:18;;;;;;;12624:119;1854:148;;;;;;;;;;;;;:::i;11477:39::-;;;;;;;;;;-1:-1:-1;11477:39:0;;;;-1:-1:-1;;;11477:39:0;;;;;;20030:160;;;;;;;;;;-1:-1:-1;20030:160:0;;;;;:::i;:::-;;:::i;18362:180::-;;;;;;;;;;-1:-1:-1;18362:180:0;;;;;:::i;:::-;;:::i;19067:722::-;;;;;;;;;;;;;:::i;1640:79::-;;;;;;;;;;-1:-1:-1;1678:7:0;1705:6;-1:-1:-1;;;;;1705:6:0;1640:79;;;-1:-1:-1;;;;;3037:32:1;;;3019:51;;3007:2;2992:18;1640:79:0;2873:203:1;12330:87:0;;;;;;;;;;-1:-1:-1;12402:7:0;;;;;;;;;;;;-1:-1:-1;;;12402:7:0;;;;12330:87;;20875:168;;;;;;;;;;-1:-1:-1;20875:168:0;;;;;:::i;:::-;;:::i;12751:192::-;;;;;;;;;;-1:-1:-1;12751:192:0;;;;;:::i;:::-;;:::i;10992:57::-;;;;;;;;;;;;;;;;11229:38;;;;;;;;;;-1:-1:-1;11229:38:0;;;;-1:-1:-1;;;;;11229:38:0;;;21420:175;;;;;;;;;;-1:-1:-1;21420:175:0;;;;;:::i;:::-;;:::i;10931:54::-;;;;;;;;;;;;;;;;12951:168;;;;;;;;;;-1:-1:-1;12951:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;13084:18:0;;;13057:7;13084:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12951:168;19797:225;;;;;;;;;;;;;:::i;18082:90::-;;;;;;;;;;;;;:::i;18685:374::-;;;;;;;;;;-1:-1:-1;18685:374:0;;;;;:::i;:::-;;:::i;13127:186::-;13227:4;13244:39;1273:10;13267:7;13276:6;13244:8;:39::i;:::-;-1:-1:-1;13301:4:0;13127:186;;;;;:::o;12516:100::-;12569:7;10203:15;10144:1;10203:2;:15;:::i;:::-;10192:26;;:8;:26;:::i;:::-;12589:19;;12516:100;:::o;18550:127::-;18639:11;;:30;;;-1:-1:-1;;;18639:30:0;;;;18612:7;;-1:-1:-1;;;;;18639:11:0;;:28;;:30;;;;;;;;;;;;;;:11;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20424:228::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;;;;;;;;;20560:9:::1;:18:::0;;;;20589:9:::1;:18:::0;20618:13:::1;:26:::0;20424:228::o;13321:446::-;13453:4;13470:36;13480:6;13488:9;13499:6;13470:9;:36::i;:::-;13517:220;13540:6;1273:10;13588:138;13644:6;13588:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13588:19:0;;;;;;:11;:19;;;;;;;;1273:10;13588:33;;;;;;;;;;:37;:138::i;:::-;13517:8;:220::i;:::-;-1:-1:-1;13755:4:0;13321:446;;;;;:::o;20198:218::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;20330:8:::1;:16:::0;;;;20357:8:::1;:16:::0;20384:12:::1;:24:::0;20198:218::o;20660:207::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;20794:11:::1;::::0;:65:::1;::::0;-1:-1:-1;;;20794:65:0;;::::1;::::0;::::1;6816:25:1::0;;;6857:18;;;6850:34;;;-1:-1:-1;;;;;20794:11:0;;::::1;::::0;:35:::1;::::0;6789:18:1;;20794:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20660:207:::0;;:::o;18180:174::-;18306:11;;:40;;-1:-1:-1;;;18306:40:0;;-1:-1:-1;;;;;3037:32:1;;;18306:40:0;;;3019:51:1;18274:7:0;;18306:11;;:27;;2992:18:1;;18306:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;21051:361::-;21114:9;;-1:-1:-1;;;;;21114:9:0;1273:10;-1:-1:-1;;;;;21098:25:0;;21090:34;;;;;;21176:4;21135:20;12717:18;;;:9;:18;;;;;;21197:16;;21193:79;;21230:30;21247:12;21230:16;:30::i;:::-;21303:21;21339:14;;21335:70;;21370:23;21382:10;21370:11;:23::i;:::-;21079:333;;21051:361::o;1854:148::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;1961:1:::1;1945:6:::0;;1924:40:::1;::::0;-1:-1:-1;;;;;1945:6:0;;::::1;::::0;1924:40:::1;::::0;1961:1;;1924:40:::1;1992:1;1975:19:::0;;-1:-1:-1;;;;;;1975:19:0::1;::::0;;1854:148::o;20030:160::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;20132:18:::1;:23:::0;;;;20166:11:::1;:16:::0;20030:160::o;18362:180::-;18492:11;;:42;;-1:-1:-1;;;18492:42:0;;-1:-1:-1;;;;;3037:32:1;;;18492:42:0;;;3019:51:1;18460:7:0;;18492:11;;:29;;2992:18:1;;18492:42:0;2873:203:1;19067:722:0;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;19131:11:::1;::::0;-1:-1:-1;;;19131:11:0;::::1;;;19130:12;19122:48;;;::::0;-1:-1:-1;;;19122:48:0;;7097:2:1;19122:48:0::1;::::0;::::1;7079:21:1::0;7136:2;7116:18;;;7109:30;7175:25;7155:18;;;7148:53;7218:18;;19122:48:0::1;6895:347:1::0;19122:48:0::1;19181:6;:63:::0;;-1:-1:-1;;;;;;19181:63:0::1;19201:42;19181:63:::0;;::::1;::::0;;;19255:54:::1;::::0;19272:4:::1;::::0;10203:15:::1;10144:1;10203:2;:15;:::i;:::-;10192:26;::::0;:8:::1;:26;:::i;19255:54::-;19339:6;;;;;;;;;-1:-1:-1::0;;;;;19339:6:0::1;-1:-1:-1::0;;;;;19339:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19327:40:0::1;;19390:4;19410:6;;;;;;;;;-1:-1:-1::0;;;;;19410:6:0::1;-1:-1:-1::0;;;;;19410:11:0::1;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19327:107;::::0;-1:-1:-1;;;;;;19327:107:0::1;::::0;;;;;;-1:-1:-1;;;;;7733:15:1;;;19327:107:0::1;::::0;::::1;7715:34:1::0;7785:15;;7765:18;;;7758:43;7650:18;;19327:107:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19320:4;:114:::0;;-1:-1:-1;;;;;19320:114:0;;::::1;-1:-1:-1::0;;;;;;19320:114:0;;::::1;;::::0;;19445:6:::1;::::0;::::1;:22;19475:21;19520:4;19540:24;19520:4:::0;-1:-1:-1;;;;;12717:18:0;12690:7;12717:18;;;:9;:18;;;;;;;12624:119;19540:24:::1;19579:1;19595::::0;19611:7:::1;1678::::0;1705:6;-1:-1:-1;;;;;1705:6:0;;1640:79;19611:7:::1;19445:214;::::0;::::1;::::0;;;-1:-1:-1;;;;;;19445:214:0;;;-1:-1:-1;;;;;8171:15:1;;;19445:214:0::1;::::0;::::1;8153:34:1::0;8203:18;;;8196:34;;;;8246:18;;;8239:34;;;;8289:18;;;8282:34;8353:15;;;8332:19;;;8325:44;19633:15:0::1;8385:19:1::0;;;8378:35;8087:19;;19445:214:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19677:4:0::1;::::0;19699:6:::1;::::0;19670:53:::1;::::0;-1:-1:-1;;;19670:53:0;;-1:-1:-1;;;;;19699:6:0;;::::1;19670:53;::::0;::::1;8909:51:1::0;-1:-1:-1;;8976:18:1;;;8969:34;19677:4:0;::::1;::::0;-1:-1:-1;19670:20:0::1;::::0;8882:18:1;;19670:53:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19734:11:0::1;:18:::0;;-1:-1:-1;;;;19763:18:0;-1:-1:-1;;;19763:18:0;;;19067:722::o;20875:168::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;20964:6:::1;20958:3;:12;20950:54;;;::::0;-1:-1:-1;;;20950:54:0;;9466:2:1;20950:54:0::1;::::0;::::1;9448:21:1::0;9505:2;9485:18;;;9478:30;9544:31;9524:18;;;9517:59;9593:18;;20950:54:0::1;9264:353:1::0;20950:54:0::1;21015:14;:20:::0;20875:168::o;12751:192::-;12854:4;12871:42;1273:10;12895:9;12906:6;12871:9;:42::i;21420:175::-;21523:9;;-1:-1:-1;;;;;21523:9:0;1273:10;-1:-1:-1;;;;;21507:25:0;;21499:34;;;;;;21568:9;;21544:43;;-1:-1:-1;;;21544:43:0;;-1:-1:-1;;;;;21568:9:0;;;21544:43;;;8909:51:1;8976:18;;;8969:34;;;21544:23:0;;;;;;8882:18:1;;21544:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21420:175;;:::o;19797:225::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;10203:15:::1;10144:1;10203:2;:15;:::i;:::-;10192:26;::::0;:8:::1;:26;:::i;:::-;19858:12;:27:::0;10203:15:::1;10144:1;10203:2;:15;:::i;:::-;10192:26;::::0;:8:::1;:26;:::i;:::-;19896:15;:30:::0;19937:20:::1;:28:::0;;-1:-1:-1;;;;19937:28:0::1;::::0;;19981:33:::1;10203:15;10144:1;10203:2;:15;:::i;:::-;10192:26;::::0;:8:::1;:26;:::i;:::-;19981:33;::::0;1361:25:1;;;1349:2;1334:18;19981:33:0::1;;;;;;;19797:225::o:0;18082:90::-;18127:11;;:37;;-1:-1:-1;;;18127:37:0;;18153:10;18127:37;;;3019:51:1;-1:-1:-1;;;;;18127:11:0;;;;:25;;2992:18:1;;18127:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18082:90::o;18685:374::-;1767:6;;-1:-1:-1;;;;;1767:6:0;1273:10;1767:22;1759:67;;;;-1:-1:-1;;;1759:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18804:23:0;::::1;18822:4;18804:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;18841:4:0::1;::::0;-1:-1:-1;;;;;18831:14:0;;::::1;18841:4:::0;::::1;18831:14;;18804:41;18796:50;;;::::0;::::1;;-1:-1:-1::0;;;;;18857:25:0;::::1;;::::0;;;:17:::1;:25;::::0;;;;:34;;-1:-1:-1;;18857:34:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18902:150:::1;;18929:11;::::0;:31:::1;::::0;-1:-1:-1;;;18929:31:0;;-1:-1:-1;;;;;8927:32:1;;;18929:31:0::1;::::0;::::1;8909:51:1::0;18929:11:0::1;8976:18:1::0;;;8969:34;18929:11:0;;::::1;::::0;:20:::1;::::0;8882:18:1;;18929:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;18902:150;18993:11;::::0;-1:-1:-1;;;;;19022:17:0;;::::1;18993:11;19022:17:::0;;;18993:11;19022:17:::1;::::0;;;;;;;18993:47;;-1:-1:-1;;;18993:47:0;;::::1;::::0;::::1;8909:51:1::0;;;;8976:18;;;8969:34;18993:11:0;::::1;::::0;:20:::1;::::0;8882:18:1;;18993:47:0::1;8735:274:1::0;13775:335:0;-1:-1:-1;;;;;13868:19:0;;13860:68;;;;-1:-1:-1;;;13860:68:0;;10398:2:1;13860:68:0;;;10380:21:1;10437:2;10417:18;;;10410:30;10476:34;10456:18;;;10449:62;-1:-1:-1;;;10527:18:1;;;10520:34;10571:19;;13860:68:0;10196:400:1;13860:68:0;-1:-1:-1;;;;;13947:21:0;;13939:68;;;;-1:-1:-1;;;13939:68:0;;10803:2:1;13939:68:0;;;10785:21:1;10842:2;10822:18;;;10815:30;10881:34;10861:18;;;10854:62;-1:-1:-1;;;10932:18:1;;;10925:32;10974:19;;13939:68:0;10601:398:1;13939:68:0;-1:-1:-1;;;;;14018:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14070:32;;1361:25:1;;;14070:32:0;;1334:18:1;14070:32:0;;;;;;;13775:335;;;:::o;14118:2964::-;-1:-1:-1;;;;;14206:18:0;;14198:68;;;;-1:-1:-1;;;14198:68:0;;11206:2:1;14198:68:0;;;11188:21:1;11245:2;11225:18;;;11218:30;11284:34;11264:18;;;11257:62;-1:-1:-1;;;11335:18:1;;;11328:35;11380:19;;14198:68:0;11004:401:1;14198:68:0;-1:-1:-1;;;;;14285:16:0;;14277:64;;;;-1:-1:-1;;;14277:64:0;;11612:2:1;14277:64:0;;;11594:21:1;11651:2;11631:18;;;11624:30;11690:34;11670:18;;;11663:62;-1:-1:-1;;;11741:18:1;;;11734:33;11784:19;;14277:64:0;11410:399:1;14277:64:0;14369:1;14360:6;:10;14352:71;;;;-1:-1:-1;;;14352:71:0;;12016:2:1;14352:71:0;;;11998:21:1;12055:2;12035:18;;;12028:30;12094:34;12074:18;;;12067:62;-1:-1:-1;;;12145:18:1;;;12138:46;12201:19;;14352:71:0;11814:412:1;14352:71:0;14434:17;1705:6;;-1:-1:-1;;;;;14470:15:0;;;1705:6;;14470:15;;;;:32;;-1:-1:-1;1678:7:0;1705:6;-1:-1:-1;;;;;14489:13:0;;;1705:6;;14489:13;;14470:32;14466:1906;;;14531:107;14634:3;14531:80;14575:12;;14561:11;;:26;14560:50;;14602:8;;14560:50;;;14591:8;;14560:50;14531:6;;:28;:80::i;:::-;:102;;:107::i;:::-;14659:20;;14519:119;;-1:-1:-1;;;;14659:20:0;;;;14655:421;;;14718:6;;-1:-1:-1;;;;;14704:21:0;;;14718:6;;14704:21;;;;:44;;-1:-1:-1;14743:4:0;;-1:-1:-1;;;;;14729:19:0;;;14743:4;;14729:19;;14704:44;14700:361;;;14825:9;14807:28;;;;:17;:28;;;;;;14838:12;-1:-1:-1;14773:202:0;;;;-1:-1:-1;;;14773:202:0;;12433:2:1;14773:202:0;;;12415:21:1;12472:2;12452:18;;;12445:30;12511:34;12491:18;;;12484:62;12582:34;12562:18;;;12555:62;-1:-1:-1;;;12633:19:1;;;12626:40;12683:19;;14773:202:0;12231:477:1;14773:202:0;15016:9;14998:28;;;;:17;:28;;;;;15029:12;14998:43;;14700:361;15122:4;;-1:-1:-1;;;;;15114:12:0;;;15122:4;;15114:12;:37;;;;-1:-1:-1;15144:6:0;;-1:-1:-1;;;;;15130:21:0;;;15144:6;;15130:21;;15114:37;:64;;;;-1:-1:-1;;;;;;15156:22:0;;;;;;:18;:22;;;;;;;;15155:23;15114:64;15092:391;;;15231:12;;15221:6;:22;;15213:60;;;;-1:-1:-1;;;15213:60:0;;12915:2:1;15213:60:0;;;12897:21:1;12954:2;12934:18;;;12927:30;12993:27;12973:18;;;12966:55;13038:18;;15213:60:0;12713:349:1;15213:60:0;15348:15;;15338:6;15322:13;15332:2;-1:-1:-1;;;;;12717:18:0;12690:7;12717:18;;;:9;:18;;;;;;;12624:119;15322:13;:22;;;;:::i;:::-;:41;;15292:143;;;;-1:-1:-1;;;15292:143:0;;13399:2:1;15292:143:0;;;13381:21:1;13438:2;13418:18;;;13411:30;13477;13457:18;;;13450:58;13525:18;;15292:143:0;13197:352:1;15292:143:0;15454:11;:13;;;:11;:13;;;:::i;:::-;;;;;;15092:391;15509:4;;-1:-1:-1;;;;;15503:10:0;;;15509:4;;15503:10;:35;;;;-1:-1:-1;;;;;;15517:21:0;;15533:4;15517:21;;15503:35;15499:206;;;15571:118;15685:3;15571:87;15619:13;;15605:11;;:27;15604:53;;15648:9;;15604:53;;;15636:9;;15571:6;;:32;:87::i;:118::-;15559:130;;15499:206;15770:4;15721:28;12717:18;;;:9;:18;;;;;;15814:6;;-1:-1:-1;;;15814:6:0;;;;15813:7;:38;;;;-1:-1:-1;15847:4:0;;-1:-1:-1;;;;;15841:10:0;;;15847:4;;15841:10;15813:38;:70;;;;-1:-1:-1;15872:11:0;;-1:-1:-1;;;15872:11:0;;;;15813:70;:130;;;;;15927:16;;15904:20;:39;15813:130;:182;;;;;15978:17;;15964:11;;:31;15813:182;15791:570;;;16030:114;16069:56;16076:6;16084:40;16091:20;16113:10;;16084:6;:40::i;:::-;16069:6;:56::i;:::-;16030:16;:114::i;:::-;16192:21;16257:10;16236:31;;16232:114;;;16292:34;16304:21;16292:11;:34::i;:::-;16011:350;15791:570;14504:1868;14466:1906;16388:13;;16384:172;;16463:4;16445:24;;;;:9;:24;;;;;;:39;;16474:9;16445:28;:39::i;:::-;16436:4;16418:24;;;;:9;:24;;;;;;;:66;;;;16504:40;;-1:-1:-1;;;;;16504:40:0;;;;;;;16534:9;1361:25:1;;1349:2;1334:18;;1215:177;16504:40:0;;;;;;;;16384:172;-1:-1:-1;;;;;16584:15:0;;;;;;:9;:15;;;;;;:27;;16604:6;16584:19;:27::i;:::-;-1:-1:-1;;;;;16566:15:0;;;;;;:9;:15;;;;;:45;16638:40;16656:21;:6;16667:9;16656:10;:21::i;:::-;-1:-1:-1;;;;;16638:13:0;;;;;;:9;:13;;;;;;;:17;:40::i;:::-;-1:-1:-1;;;;;16622:13:0;;;;;;;:9;:13;;;;;:56;;;;16694:41;;;16713:21;:6;16724:9;16713:10;:21::i;:::-;16694:41;;1361:25:1;;;1349:2;1334:18;16694:41:0;;;;;;;-1:-1:-1;;;;;16753:23:0;;;;;;:17;:23;;;;;;;;16748:115;;16797:11;;-1:-1:-1;;;;;16824:15:0;;;16797:11;16824:15;;;16797:11;16824:15;;;;;;;;16797:43;;-1:-1:-1;;;16797:43:0;;;;;8909:51:1;;;;8976:18;;;8969:34;16797:11:0;;;:20;;8882:18:1;;16797:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16793:59;;-1:-1:-1;;;;;16878:21:0;;;;;;:17;:21;;;;;;;;16873:139;;16937:11;;-1:-1:-1;;;;;16962:13:0;;;16937:11;16962:13;;;16937:11;16962:13;;;;;;;;16937:39;;-1:-1:-1;;;16937:39:0;;;;;8909:51:1;;;;8976:18;;;8969:34;16937:11:0;;;:20;;8882:18:1;;16937:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16916:85;;17028:11;;17048:14;;17028:35;;-1:-1:-1;;;;;;17028:35:0;;-1:-1:-1;;;;;17028:11:0;;;;:19;;:35;;;;1361:25:1;;;1349:2;1334:18;;1215:177;17028:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17024:51;;;14187:2895;14118:2964;;;:::o;21957:224::-;22077:7;22113:12;22105:6;;;;22097:29;;;;-1:-1:-1;;;22097:29:0;;;;;;;;:::i;:::-;-1:-1:-1;22137:9:0;22149:5;22153:1;22149;:5;:::i;:::-;22137:17;21957:224;-1:-1:-1;;;;;21957:224:0:o;17500:456::-;11610:6;:13;;-1:-1:-1;;;;11610:13:0;-1:-1:-1;;;11610:13:0;;;17602:16:::1;::::0;;17616:1:::1;17602:16:::0;;;;;::::1;::::0;;-1:-1:-1;;17602:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;17602:16:0::1;17578:40;;17647:4;17629;17634:1;17629:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17629:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;17673:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;17673:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;17629:7;;17673:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17663:4;17668:1;17663:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;17663:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;17729:6:::1;::::0;17697:53:::1;::::0;17714:4:::1;::::0;17729:6:::1;17738:11:::0;17697:8:::1;:53::i;:::-;17761:6;::::0;:187:::1;::::0;-1:-1:-1;;;17761:187:0;;-1:-1:-1;;;;;17761:6:0;;::::1;::::0;:57:::1;::::0;:187:::1;::::0;17833:11;;17761:6:::1;::::0;17875:4;;17902::::1;::::0;17922:15:::1;::::0;17761:187:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11646:6:0;:14;;-1:-1:-1;;;;11646:14:0;;;-1:-1:-1;;;;17500:456:0:o;17090:402::-;17146:24;17173:39;17208:3;17173:30;17184:18;;17173:6;:10;;:30;;;;:::i;:39::-;17146:66;-1:-1:-1;17227:20:0;;17223:114;;17268:11;;;;;;;;;-1:-1:-1;;;;;17268:11:0;-1:-1:-1;;;;;17268:19:0;;17295:16;17268:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17264:62;;17347:17;17367:32;17395:3;17367:23;17378:11;;17367:6;:10;;:23;;;;:::i;:32::-;17347:52;-1:-1:-1;17414:13:0;;17410:75;;17444:9;;:29;;-1:-1:-1;;;;;17444:9:0;;;;:29;;;;;17463:9;;17444;:29;:9;:29;17463:9;17444;:29;;;;;;;;;;;;;;;;;;;22189:246;22247:7;22271:1;22276;22271:6;22267:47;;-1:-1:-1;22301:1:0;22294:8;;22267:47;22324:9;22336:5;22340:1;22336;:5;:::i;:::-;22324:17;-1:-1:-1;22369:1:0;22360:5;22364:1;22324:17;22360:5;:::i;:::-;:10;22352:56;;;;-1:-1:-1;;;22352:56:0;;15500:2:1;22352:56:0;;;15482:21:1;15539:2;15519:18;;;15512:30;15578:34;15558:18;;;15551:62;-1:-1:-1;;;15629:18:1;;;15622:31;15670:19;;22352:56:0;15298:397:1;22352:56:0;22426:1;22189:246;-1:-1:-1;;;22189:246:0:o;22443:132::-;22501:7;22528:39;22532:1;22535;22528:39;;;;;;;;;;;;;;;;;:3;:39::i;17964:110::-;18024:7;18056:1;18052;:5;18051:15;;18065:1;18051:15;;;-1:-1:-1;18061:1:0;17964:110;-1:-1:-1;17964:110:0:o;21626:179::-;21684:7;;21716:5;21720:1;21716;:5;:::i;:::-;21704:17;;21745:1;21740;:6;;21732:46;;;;-1:-1:-1;;;21732:46:0;;15902:2:1;21732:46:0;;;15884:21:1;15941:2;15921:18;;;15914:30;15980:29;15960:18;;;15953:57;16027:18;;21732:46:0;15700:351:1;21813:136:0;21871:7;21898:43;21902:1;21905;21898:43;;;;;;;;;;;;;;;;;:3;:43::i;22583:223::-;22703:7;22738:12;22731:5;22723:28;;;;-1:-1:-1;;;22723:28:0;;;;;;;;:::i;:::-;-1:-1:-1;22762:9:0;22774:5;22778:1;22774;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:316::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;-1:-1:-1;;1582:23:1;;;1652:2;1637:18;;1624:32;;-1:-1:-1;1703:2:1;1688:18;;;1675:32;;1397:316;-1:-1:-1;1397:316:1:o;1718:456::-;1795:6;1803;1811;1864:2;1852:9;1843:7;1839:23;1835:32;1832:52;;;1880:1;1877;1870:12;1832:52;1919:9;1906:23;1938:31;1963:5;1938:31;:::i;:::-;1988:5;-1:-1:-1;2045:2:1;2030:18;;2017:32;2058:33;2017:32;2058:33;:::i;:::-;1718:456;;2110:7;;-1:-1:-1;;;2164:2:1;2149:18;;;;2136:32;;1718:456::o;2179:248::-;2247:6;2255;2308:2;2296:9;2287:7;2283:23;2279:32;2276:52;;;2324:1;2321;2314:12;2276:52;-1:-1:-1;;2347:23:1;;;2417:2;2402:18;;;2389:32;;-1:-1:-1;2179:248:1:o;2621:247::-;2680:6;2733:2;2721:9;2712:7;2708:23;2704:32;2701:52;;;2749:1;2746;2739:12;2701:52;2788:9;2775:23;2807:31;2832:5;2807:31;:::i;3081:180::-;3140:6;3193:2;3181:9;3172:7;3168:23;3164:32;3161:52;;;3209:1;3206;3199:12;3161:52;-1:-1:-1;3232:23:1;;3081:180;-1:-1:-1;3081:180:1:o;3501:388::-;3569:6;3577;3630:2;3618:9;3609:7;3605:23;3601:32;3598:52;;;3646:1;3643;3636:12;3598:52;3685:9;3672:23;3704:31;3729:5;3704:31;:::i;:::-;3754:5;-1:-1:-1;3811:2:1;3796:18;;3783:32;3824:33;3783:32;3824:33;:::i;:::-;3876:7;3866:17;;;3501:388;;;;;:::o;3894:118::-;3980:5;3973:13;3966:21;3959:5;3956:32;3946:60;;4002:1;3999;3992:12;4017:382;4082:6;4090;4143:2;4131:9;4122:7;4118:23;4114:32;4111:52;;;4159:1;4156;4149:12;4111:52;4198:9;4185:23;4217:31;4242:5;4217:31;:::i;:::-;4267:5;-1:-1:-1;4324:2:1;4309:18;;4296:32;4337:30;4296:32;4337:30;:::i;4404:127::-;4465:10;4460:3;4456:20;4453:1;4446:31;4496:4;4493:1;4486:15;4520:4;4517:1;4510:15;4536:422;4625:1;4668:5;4625:1;4682:270;4703:7;4693:8;4690:21;4682:270;;;4762:4;4758:1;4754:6;4750:17;4744:4;4741:27;4738:53;;;4771:18;;:::i;:::-;4821:7;4811:8;4807:22;4804:55;;;4841:16;;;;4804:55;4920:22;;;;4880:15;;;;4682:270;;;4686:3;4536:422;;;;;:::o;4963:806::-;5012:5;5042:8;5032:80;;-1:-1:-1;5083:1:1;5097:5;;5032:80;5131:4;5121:76;;-1:-1:-1;5168:1:1;5182:5;;5121:76;5213:4;5231:1;5226:59;;;;5299:1;5294:130;;;;5206:218;;5226:59;5256:1;5247:10;;5270:5;;;5294:130;5331:3;5321:8;5318:17;5315:43;;;5338:18;;:::i;:::-;-1:-1:-1;;5394:1:1;5380:16;;5409:5;;5206:218;;5508:2;5498:8;5495:16;5489:3;5483:4;5480:13;5476:36;5470:2;5460:8;5457:16;5452:2;5446:4;5443:12;5439:35;5436:77;5433:159;;;-1:-1:-1;5545:19:1;;;5577:5;;5433:159;5624:34;5649:8;5643:4;5624:34;:::i;:::-;5694:6;5690:1;5686:6;5682:19;5673:7;5670:32;5667:58;;;5705:18;;:::i;:::-;5743:20;;4963:806;-1:-1:-1;;;4963:806:1:o;5774:140::-;5832:5;5861:47;5902:4;5892:8;5888:19;5882:4;5861:47;:::i;5919:168::-;5992:9;;;6023;;6040:15;;;6034:22;;6020:37;6010:71;;6061:18;;:::i;6092:184::-;6162:6;6215:2;6203:9;6194:7;6190:23;6186:32;6183:52;;;6231:1;6228;6221:12;6183:52;-1:-1:-1;6254:16:1;;6092:184;-1:-1:-1;6092:184:1:o;6281:356::-;6483:2;6465:21;;;6502:18;;;6495:30;6561:34;6556:2;6541:18;;6534:62;6628:2;6613:18;;6281:356::o;7247:251::-;7317:6;7370:2;7358:9;7349:7;7345:23;7341:32;7338:52;;;7386:1;7383;7376:12;7338:52;7418:9;7412:16;7437:31;7462:5;7437:31;:::i;8424:306::-;8512:6;8520;8528;8581:2;8569:9;8560:7;8556:23;8552:32;8549:52;;;8597:1;8594;8587:12;8549:52;8626:9;8620:16;8610:26;;8676:2;8665:9;8661:18;8655:25;8645:35;;8720:2;8709:9;8705:18;8699:25;8689:35;;8424:306;;;;;:::o;9014:245::-;9081:6;9134:2;9122:9;9113:7;9109:23;9105:32;9102:52;;;9150:1;9147;9140:12;9102:52;9182:9;9176:16;9201:28;9223:5;9201:28;:::i;13067:125::-;13132:9;;;13153:10;;;13150:36;;;13166:18;;:::i;13554:135::-;13593:3;13614:17;;;13611:43;;13634:18;;:::i;:::-;-1:-1:-1;13681:1:1;13670:13;;13554:135::o;13694:128::-;13761:9;;;13782:11;;;13779:37;;;13796:18;;:::i;13959:127::-;14020:10;14015:3;14011:20;14008:1;14001:31;14051:4;14048:1;14041:15;14075:4;14072:1;14065:15;14091:980;14353:4;14401:3;14390:9;14386:19;14432:6;14421:9;14414:25;14458:2;14496:6;14491:2;14480:9;14476:18;14469:34;14539:3;14534:2;14523:9;14519:18;14512:31;14563:6;14598;14592:13;14629:6;14621;14614:22;14667:3;14656:9;14652:19;14645:26;;14706:2;14698:6;14694:15;14680:29;;14727:1;14737:195;14751:6;14748:1;14745:13;14737:195;;;14816:13;;-1:-1:-1;;;;;14812:39:1;14800:52;;14907:15;;;;14872:12;;;;14848:1;14766:9;14737:195;;;-1:-1:-1;;;;;;;14988:32:1;;;;14983:2;14968:18;;14961:60;-1:-1:-1;;;15052:3:1;15037:19;15030:35;14949:3;14091:980;-1:-1:-1;;;14091:980:1:o;15076:217::-;15116:1;15142;15132:132;;15186:10;15181:3;15177:20;15174:1;15167:31;15221:4;15218:1;15211:15;15249:4;15246:1;15239:15;15132:132;-1:-1:-1;15278:9:1;;15076:217::o

Swarm Source

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