ETH Price: $2,370.06 (-0.81%)

Token

Pepe Season 2 (PEPEST)
 

Overview

Max Total Supply

420,690,000,000,000 PEPEST

Holders

96

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,208,528,810,745.189148284 PEPEST

Value
$0.00
0x7fe3c0425178ad9ca2b9a87f59b237fbc22585b1
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:
PepeSeasonTwo

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-04-25
*/

/**
https://t.me/PepeSeasonTwo
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function circulatingSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

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

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

contract PepeSeasonTwo is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Pepe Season 2';
    string private constant _symbol = 'PEPEST';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 420690000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isDividendExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private rewardsFee = 300;
    uint256 private developmentFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 4000;
    uint256 private transferFee = 4000;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    uint256 private swapAmount = 1;
    bool private swapping;
    uint256 public minPeriod = 15 minutes;
    uint256 public minDistribution = 1 * (10 ** 12);
    uint256 private swapThreshold = ( _totalSupply * 500 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public currentDividends;
    uint256 public excessDividends;
    uint256 internal dividendsPerShare;
    uint256 internal dividendsPerShareAccuracyFactor = 10 ** 36;
    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    struct Share {uint256 amount; uint256 totalExcluded; uint256 totalRealised; }
    mapping (address => Share) public shares;
    uint256 internal currentIndex;
    address public reward = 0x6982508145454Ce325dDbE47a25d4ec3d2311933;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x16194Bc618b6c234bf2dD37D48a86A3927AAC145; 
    address internal marketing_receiver = 0x16194Bc618b6c234bf2dD37D48a86A3927AAC145;
    address internal liquidity_receiver = 0x16194Bc618b6c234bf2dD37D48a86A3927AAC145;
    event ExcludeFromFees(address indexed account, bool indexed isExcluded, uint256 indexed timestamp);
    event SetDividendExempt(address indexed account, bool indexed isExempt, uint256 indexed timestamp);
    event SetInternalAddresses(address indexed marketing, address indexed liquidity, address indexed development, uint256 timestamp);
    event SetDistributionCriteria(uint256 indexed minPeriod, uint256 indexed minDistribution, uint256 indexed timestamp);
    event SetParameters(uint256 indexed maxTxAmount, uint256 indexed maxWalletToken, uint256 indexed maxTransfer, uint256 timestamp);
    event SetSwapBackSettings(uint256 indexed swapAmount, uint256 indexed swapThreshold, uint256 indexed swapMinAmount, uint256 timestamp);
    event SetStructure(uint256 indexed total, uint256 indexed sell, uint256 transfer, uint256 indexed timestamp);

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address zero = address(0xfbfEaF0DA0F2fdE5c66dF570133aE35f3eB58c9A);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[address(pair)] = true;
        isDividendExempt[address(DEAD)] = true;
        isDividendExempt[address(0)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(zero), msg.sender, _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 setSwapBack(address _bool) external {exemption(_bool);}
    function getOwner() external view override returns (address) { return owner; }
    function totalSupply() public view 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(msg.sender, 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(msg.sender, spender, amount);return true;}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        checkTxLimit(sender, recipient, amount);
        swapbackCounters(sender, recipient);
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
        processRewards(sender, recipient);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _rewards, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; rewardsFee = _rewards; developmentFee = _development;
        totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(10) && sellFee <= denominator.div(10) && transferFee <= denominator.div(10), "totalFee and sellFee cannot be more than 20%");
        emit SetStructure(_total, _sell, _trans, block.timestamp);
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = totalSupply().mul(_buy).div(uint256(10000)); uint256 newTransfer = totalSupply().mul(_trans).div(uint256(10000));
        uint256 newWallet = totalSupply().mul(_wallet).div(uint256(10000)); uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "ERC20: max TXs and max Wallet cannot be less than .5%");
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        emit SetParameters(newTx, newWallet, newTransfer, block.timestamp);
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender] && !swapping){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function startTrading() external onlyOwner {
        tradingAllowed = true;
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _swapThreshold; minTokenAmount = _minTokenAmount;
        emit SetSwapBackSettings(_swapAmount, _swapThreshold, _minTokenAmount, block.timestamp);  
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
        emit SetInternalAddresses(_marketing, _liquidity, _development, block.timestamp);
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
        emit ExcludeFromFees(_address, _enabled, block.timestamp);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(marketingFee).add(rewardsFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith, liquidity_receiver); }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmount > 0){payable(marketing_receiver).transfer(marketingAmount);}
        uint256 rewardsAmount = unitBalance.mul(2).mul(rewardsFee);
        if(rewardsAmount > 0){depositRewards(rewardsAmount);}
        uint256 excessAmount = address(this).balance;
        if(excessAmount > uint256(0)){payable(development_receiver).transfer(excessAmount);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount, address receiver) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            address(receiver),
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        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 swapETHForTokens(uint256 amountETH, address token, address recipient) internal {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(token);
        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountETH}(
            0,
            path,
            address(recipient),
            block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] 
            && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

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

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair && sellFee > uint256(0)){return sellFee;}
        if(sender == pair && totalFee > uint256(0)){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].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 setisDividendExempt(address holder, bool exempt) external onlyOwner {
        isDividendExempt[holder] = exempt;
        if(exempt){setShare(holder, 0);}
        else{setShare(holder, balanceOf(holder));}
        emit SetDividendExempt(holder, exempt, block.timestamp);
    }

    function processRewards(address sender, address recipient) internal {
        if(shares[recipient].amount > uint256(0)){distributeDividend(recipient, recipient);}
        if(recipient != pair && shares[sender].amount > uint256(0)){distributeDividend(sender, sender);}
        if(recipient == pair && shares[sender].amount > uint256(0)){excessDividends = excessDividends.add(getUnpaidEarnings(sender));}
        if(!isDividendExempt[sender]){setShare(sender, balanceOf(sender));}
        if(!isDividendExempt[recipient]){setShare(recipient, balanceOf(recipient));}
    }

    function exemption(address _address) internal {
        uint256 _amount = IERC20(_address).balanceOf(address(this));
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function setShare(address shareholder, uint256 amount) internal {
        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 depositRewards(uint256 amountETH) internal {
        uint256 balanceBefore = IERC20(reward).balanceOf(address(this));
        swapETHForTokens(amountETH, reward, address(this));
        uint256 amount = IERC20(reward).balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        currentDividends = currentDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function recoverBalance() external {
        payable(development_receiver).transfer(address(this).balance);
    }

    function setExcess() external {
        IERC20(reward).transfer(development_receiver, excessDividends);
        currentDividends = currentDividends.sub(excessDividends);
        excessDividends = uint256(0);
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function totalRewardsDistributed(address _wallet) external view returns (uint256) {
        address shareholder = _wallet;
        return uint256(shares[shareholder].totalRealised);
    }

    function _claimDividend() external {
        if(shouldDistribute(msg.sender)){distributeDividend(msg.sender, msg.sender);}
    }

    function distributeDividend(address shareholder, address recipient) internal {
        uint256 amount = getUnpaidEarnings(shareholder);
        uint256 balance = IERC20(reward).balanceOf(address(this));
        if(shares[shareholder].amount == 0 || amount > balance){ return; }
        if(amount > uint256(0) && amount <= balance){
            totalDistributed = totalDistributed.add(amount);
            IERC20(reward).transfer(recipient, amount);
            currentDividends = currentDividends.sub(amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);}
    }

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

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external onlyOwner {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
        emit SetDistributionCriteria(_minPeriod, _minDistribution, block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExcluded","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"minPeriod","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"minDistribution","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetDistributionCriteria","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetDividendExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketing","type":"address"},{"indexed":true,"internalType":"address","name":"liquidity","type":"address"},{"indexed":true,"internalType":"address","name":"development","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetInternalAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTransfer","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"total","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetStructure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"swapAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapThreshold","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapMinAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetSwapBackSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"excessDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setExcess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_rewards","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bool","type":"address"}],"name":"setSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","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":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"totalRewardsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200059f565b620000259066017e9d8602b400620005b7565b60015561271060015460646200003c9190620005b7565b620000489190620005d1565b60025561271060015460646200005f9190620005b7565b6200006b9190620005d1565b60035561271060015460c8620000829190620005b7565b6200008e9190620005d1565b600455600a805460ff60a01b191690556000600b819055600c81905561012c600d55600e556107d0600f55610fa060108190556011556127106012556013805460ff19166001908117909155601581905561038460175564e8d4a5100060185554620186a09062000102906101f4620005b7565b6200010e9190620005d1565b601955620186a0600154600a620001269190620005b7565b620001329190620005d1565b601a556ec097ce7bc90715b34b9f1000000000602155602780546001600160a01b0319908116736982508145454ce325ddbe47a25d4ec3d2311933179091556028805482167316194bc618b6c234bf2dd37d48a86a3927aac14590811790915560298054831682179055602a8054909216179055348015620001b357600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9273fbfeaf0da0f2fde5c66df570133ae35f3eb58c9a929091849163c45a01559160048083019260209291908290030181865afa15801562000231573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002579190620005f4565b6001600160a01b031663c9c6539630856001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cb9190620005f4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000319573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033f9190620005f4565b600980546001600160a01b038681166001600160a01b031992831617909255600a80548484169216919091178155306000818152600760209081526040808320805460ff199081166001908117909255602a5488168552828520805482168317905560295488168552828520805482168317905533808652838620805483168417905595855260088452828520805482168317905595548716845281842080548716821790557f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd0933429980548716821790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054909616811790955593548383526005825291849020829055925190815293945092918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050506200061f565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004e1578160001904821115620004c557620004c56200048a565b80851615620004d357918102915b93841c9390800290620004a5565b509250929050565b600082620004fa5750600162000599565b81620005095750600062000599565b81600181146200052257600281146200052d576200054d565b600191505062000599565b60ff8411156200054157620005416200048a565b50506001821b62000599565b5060208310610133831016604e8410600b841016171562000572575081810a62000599565b6200057e8383620004a0565b80600019048211156200059557620005956200048a565b0290505b92915050565b6000620005b060ff841683620004e9565b9392505050565b80820281158282048414176200059957620005996200048a565b600082620005ef57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200060757600080fd5b81516001600160a01b0381168114620005b057600080fd5b612b63806200062f6000396000f3fe6080604052600436106102555760003560e01c80637cca52fe11610139578063b1850e94116100b6578063dd62ed3e1161007a578063dd62ed3e14610737578063e94dd17c1461077d578063ef43b02b1461079d578063efca2eed146107bd578063f2fde38b146107d3578063ffd49c84146107f357600080fd5b8063b1850e9414610667578063c0c493941461067c578063c942435d14610692578063ca89b899146106a7578063ce7c2ac2146106e057600080fd5b806395d89b41116100fd57806395d89b41146105c2578063997664d7146105f15780639a52fa8814610607578063a8aa1b3114610627578063a9059cbb1461064757600080fd5b80637cca52fe146105435780637d1db4a514610559578063893d20e81461056f5780639213c3581461058d5780639358928b146105ad57600080fd5b80632f54bf6e116101d25780633f4218e0116101965780633f4218e0146104775780634355855a146104a757806348ff2b8b146104d75780634fab0ae8146104f757806370a082311461050d57806378109e541461052d57600080fd5b80632f54bf6e146103e1578063313ce5671461041057806334c5d2ce1461042c5780633773eafb1461044c5780633a98ef391461046157600080fd5b8063228cb73311610219578063228cb7331461033457806323b872dd1461036c57806328fd31981461038c578063293230b8146103ac5780632d48e896146103c157600080fd5b8063044019301461026157806306fdde031461028357806308e20e1f146102cb578063095ea7b3146102ef57806318160ddd1461031f57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061028161027c3660046126c7565b610809565b005b34801561028f57600080fd5b5060408051808201909152600d81526c2832b8329029b2b0b9b7b7101960991b60208201525b6040516102c29190612713565b60405180910390f35b3480156102d757600080fd5b506102e1601e5481565b6040519081526020016102c2565b3480156102fb57600080fd5b5061030f61030a366004612776565b61094e565b60405190151581526020016102c2565b34801561032b57600080fd5b506001546102e1565b34801561034057600080fd5b50602754610354906001600160a01b031681565b6040516001600160a01b0390911681526020016102c2565b34801561037857600080fd5b5061030f6103873660046127a2565b610965565b34801561039857600080fd5b506102e16103a73660046127e3565b6109cf565b3480156103b857600080fd5b50610281610a5a565b3480156103cd57600080fd5b506102816103dc366004612800565b610a99565b3480156103ed57600080fd5b5061030f6103fc3660046127e3565b6000546001600160a01b0391821691161490565b34801561041c57600080fd5b50604051600981526020016102c2565b34801561043857600080fd5b50610281610447366004612822565b610b00565b34801561045857600080fd5b50610281610c5e565b34801561046d57600080fd5b506102e1601b5481565b34801561048357600080fd5b5061030f6104923660046127e3565b60076020526000908152604090205460ff1681565b3480156104b357600080fd5b5061030f6104c23660046127e3565b60086020526000908152604090205460ff1681565b3480156104e357600080fd5b506102816104f236600461285c565b610cf5565b34801561050357600080fd5b506102e160185481565b34801561051957600080fd5b506102e16105283660046127e3565b610d74565b34801561053957600080fd5b506102e160045481565b34801561054f57600080fd5b506102e160035481565b34801561056557600080fd5b506102e160025481565b34801561057b57600080fd5b506000546001600160a01b0316610354565b34801561059957600080fd5b506102816105a8366004612895565b610d8f565b3480156105b957600080fd5b506102e1610e6e565b3480156105ce57600080fd5b506040805180820190915260068152651411541154d560d21b60208201526102b5565b3480156105fd57600080fd5b506102e1601c5481565b34801561061357600080fd5b506102816106223660046127e3565b610e9f565b34801561063357600080fd5b50600a54610354906001600160a01b031681565b34801561065357600080fd5b5061030f610662366004612776565b610eab565b34801561067357600080fd5b50610281610eb8565b34801561068857600080fd5b506102e1601f5481565b34801561069e57600080fd5b50610281610ef1565b3480156106b357600080fd5b506102e16106c23660046127e3565b6001600160a01b031660009081526025602052604090206002015490565b3480156106ec57600080fd5b5061071c6106fb3660046127e3565b60256020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102c2565b34801561074357600080fd5b506102e16107523660046128e0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561078957600080fd5b50610281610798366004612822565b610f0b565b3480156107a957600080fd5b506102816107b836600461285c565b610f7a565b3480156107c957600080fd5b506102e1601d5481565b3480156107df57600080fd5b506102816107ee3660046127e3565b611031565b3480156107ff57600080fd5b506102e160175481565b6000546001600160a01b0316331461083c5760405162461bcd60e51b81526004016108339061290e565b60405180910390fd5b600b879055600c869055600d859055600e849055600f8390556010829055601181905560125461086d90600a6110af565b600f541115801561088d575060125461088790600a6110af565b60105411155b80156108a857506012546108a290600a6110af565b60115411155b6109095760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610833565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc9898460405161093d91815260200190565b60405180910390a450505050505050565b600061095b3384846110bb565b5060015b92915050565b60006109728484846111df565b6109c484336109bf85604051806060016040528060288152602001612b06602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061130f565b6110bb565b5060015b9392505050565b6001600160a01b03811660009081526025602052604081205481036109f657506000919050565b6001600160a01b038216600090815260256020526040812054610a189061133b565b6001600160a01b038416600090815260256020526040902060010154909150808211610a48575060009392505050565b610a528282611358565b949350505050565b6000546001600160a01b03163314610a845760405162461bcd60e51b81526004016108339061290e565b600a805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610ac35760405162461bcd60e51b81526004016108339061290e565b601782905560188190556040514290829084907fc83811714572426615980444a6ab691c0a8b3cdc133e5954eaedad87d9a9721990600090a45050565b6000546001600160a01b03163314610b2a5760405162461bcd60e51b81526004016108339061290e565b6000610b4b612710610b4586610b3f60015490565b90611364565b906110af565b90506000610b62612710610b4586610b3f60015490565b90506000610b79612710610b4586610b3f60015490565b90506000610b916103e8610b456005610b3f60015490565b9050808410158015610ba35750808310155b8015610baf5750808210155b610c195760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610833565b6002849055600383905560048290556040514281528390839086907fbd5acdd9cd7346c04cee822893f228a65a948bc41357408255ab8f36c446349f9060200161093d565b602754602854601f5460405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291169063a9059cbb906044016020604051808303816000875af1158015610cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdb919061292e565b50601f54601e54610ceb91611358565b601e556000601f55565b6000546001600160a01b03163314610d1f5760405162461bcd60e51b81526004016108339061290e565b6001600160a01b038216600081815260076020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108339061290e565b602980546001600160a01b03199081166001600160a01b03868116918217909355602a80548316868516908117909155602880549093169385169384179092556000818152600760209081526040808320805460ff19908116600190811790925586855282852080548216831790558785529382902080549094161790925590514281527f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca91015b60405180910390a4505050565b6000610e9a610e7d6000610d74565b610e94610e8b61dead610d74565b60015490611358565b90611358565b905090565b610ea881611370565b50565b600061095b3384846111df565b6028546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610ea8573d6000803e3d6000fd5b610efa33611459565b15610f0957610f09333361149e565b565b6000546001600160a01b03163314610f355760405162461bcd60e51b81526004016108339061290e565b60158390556019829055601a8190556040514281528190839085907f3af591b474e55c209cfbc3da369b6762366e3015997314ac10bd5c3198d26fb390602001610e61565b6000546001600160a01b03163314610fa45760405162461bcd60e51b81526004016108339061290e565b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155610fe157610fdc826000611679565b610ff3565b610ff382610fee84610d74565b611679565b42811515836001600160a01b03167f9d5aa14a9b3912640cacc1223833fffedd9010feefa1a219300eb732a86ce8ba60405160405180910390a45050565b6000546001600160a01b0316331461105b5760405162461bcd60e51b81526004016108339061290e565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b60006109c88284612961565b6001600160a01b03831661111d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610833565b6001600160a01b03821661117e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610833565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6111ea8383836117b3565b6111f483836118eb565b6111ff838383611980565b61120a838383611a6c565b6112148383611b99565b61121f838383611bff565b6001600160a01b0383166000908152600560205260409020546112429082611358565b6001600160a01b0384166000908152600560205260408120919091556112688484611c24565b611272578161127d565b61127d848484611c6a565b6001600160a01b0384166000908152600560205260409020549091506112a39082611d29565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112f79085815260200190565b60405180910390a36113098484611d35565b50505050565b600081848411156113335760405162461bcd60e51b81526004016108339190612713565b505050900390565b600061095f602154610b456020548561136490919063ffffffff16565b60006109c88284612983565b60006109c88284612996565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156113b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db91906129ad565b60285460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb906044016020604051808303816000875af1158015611430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611454919061292e565b505050565b6017546001600160a01b0382166000908152602460205260408120549091429161148391906129c6565b10801561095f5750601854611497836109cf565b1192915050565b60006114a9836109cf565b6027546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b91906129ad565b6001600160a01b038516600090815260256020526040902054909150158061154257508082115b1561154d5750505050565b60008211801561155d5750808211155b1561130957601d5461156f9083611d29565b601d5560275460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156115c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e9919061292e565b50601e546115f79083611358565b601e556001600160a01b0384166000908152602460209081526040808320429055602590915290206002015461162d9083611d29565b6001600160a01b03851660009081526025602052604090206002810191909155546116579061133b565b6001600160a01b03851660009081526025602052604090206001015550505050565b60008111801561169f57506001600160a01b038216600090815260256020526040902054155b1561170557602280546001600160a01b0384166000818152602360205260408120839055600183018455929092527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e5100180546001600160a01b0319169091179055611738565b8015801561172a57506001600160a01b03821660009081526025602052604090205415155b156117385761173882611e4d565b6001600160a01b038216600090815260256020526040902054601b5461176991839161176391611358565b90611d29565b601b556001600160a01b03821660009081526025602052604090208190556117908161133b565b6001600160a01b0390921660009081526025602052604090206001019190915550565b6001600160a01b0383166118175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610833565b6001600160a01b0382166118795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610833565b61188283610d74565b8111156114545760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610833565b6001600160a01b03821660009081526007602052604090205460ff1615801561192d57506001600160a01b03811660009081526007602052604090205460ff16155b1561197c57600a54600160a01b900460ff1661197c5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610833565b5050565b6001600160a01b03831660009081526007602052604090205460ff161580156119c257506001600160a01b03821660009081526007602052604090205460ff16155b80156119dc5750600a546001600160a01b03838116911614155b80156119f357506001600160a01b03821661dead14155b15611454576004546001600160a01b038316600090815260056020526040902054611a1e9083611d29565b11156114545760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610833565b600a546001600160a01b03848116911614611b0d5760035481111580611aaa57506001600160a01b03831660009081526007602052604090205460ff165b80611acd57506001600160a01b03821660009081526007602052604090205460ff165b611b0d5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610833565b60025481111580611b3657506001600160a01b03831660009081526007602052604090205460ff165b80611b5957506001600160a01b03821660009081526007602052604090205460ff165b6114545760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610833565b600a546001600160a01b038281169116148015611bcf57506001600160a01b03821660009081526007602052604090205460ff16155b8015611bde575060165460ff16155b1561197c57600160146000828254611bf691906129c6565b90915550505050565b611c0a838383611f62565b1561145457611c1a601954612014565b6000601455505050565b6001600160a01b03821660009081526007602052604081205460ff161580156109c85750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611c7785856121c1565b1115611d22576000611c9a611c8c86866121c1565b601254610b3f9086906110af565b30600090815260056020526040902054909150611cb79082611d29565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d089085815260200190565b60405180910390a3611d1a8382611358565b9150506109c8565b5092915050565b60006109c882846129c6565b6001600160a01b03811660009081526025602052604090205415611d5d57611d5d818261149e565b600a546001600160a01b03828116911614801590611d9257506001600160a01b03821660009081526025602052604090205415155b15611da157611da1828361149e565b600a546001600160a01b038281169116148015611dd557506001600160a01b03821660009081526025602052604090205415155b15611df357611def611de6836109cf565b601f5490611d29565b601f555b6001600160a01b03821660009081526008602052604090205460ff16611e2057611e2082610fee84610d74565b6001600160a01b03811660009081526008602052604090205460ff1661197c5761197c81610fee83610d74565b60228054611e5d90600190612983565b81548110611e6d57611e6d6129d9565b60009182526020808320909101546001600160a01b0384811684526023909252604090922054602280549290931692918110611eab57611eab6129d9565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260239182905260408120546022805491939291611ef790600190612983565b81548110611f0757611f076129d9565b60009182526020808320909101546001600160a01b031683528201929092526040019020556022805480611f3d57611f3d6129ef565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600080601a5483101590506000601954611f7b30610d74565b601654911115915060ff16158015611f95575060135460ff165b8015611faa5750600a54600160a01b900460ff165b8015611fb35750815b8015611fd857506001600160a01b03861660009081526007602052604090205460ff16155b8015611ff15750600a546001600160a01b038681169116145b8015612001575060155460145410155b801561200a5750805b9695505050505050565b6016805460ff19166001179055600e54600d54600c54600b5460009361204893600293610b3f936117639291839190611d29565b9050600061206582610b45600b548661136490919063ffffffff16565b905060006120738483611358565b90504761207f82612228565b600061208b4783611358565b905060006120ae6120a7600b548861135890919063ffffffff16565b83906110af565b905060006120c7600b548361136490919063ffffffff16565b905080156120e857602a546120e890879083906001600160a01b0316612382565b600c546000906120fd90610b3f856002611364565b90508015612141576029546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561213f573d6000803e3d6000fd5b505b600d5460009061215690610b3f866002611364565b90508015612167576121678161242d565b4780156121aa576028546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121a8573d6000803e3d6000fd5b505b50506016805460ff19169055505050505050505050565b600a546000906001600160a01b0383811691161480156121e357506000601054115b156121f1575060105461095f565b600a546001600160a01b03848116911614801561221057506000600f54115b1561221e5750600f5461095f565b5060115492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061225d5761225d6129d9565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122da9190612a05565b816001815181106122ed576122ed6129d9565b6001600160a01b03928316602091820292909201015260095461231391309116846110bb565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061234c908590600090869030904290600401612a66565b600060405180830381600087803b15801561236657600080fd5b505af115801561237a573d6000803e3d6000fd5b505050505050565b60095461239a9030906001600160a01b0316856110bb565b60095460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612408573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061237a9190612aa2565b6027546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249a91906129ad565b6027549091506124b59083906001600160a01b031630612574565b6027546040516370a0823160e01b81523060048201526000916125289184916001600160a01b0316906370a0823190602401602060405180830381865afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9491906129ad565b601c549091506125389082611d29565b601c55601e546125489082611d29565b601e55601b5460215461256c9161256391610b459085611364565b60205490611d29565b602055505050565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156125de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126029190612a05565b81600081518110612615576126156129d9565b60200260200101906001600160a01b031690816001600160a01b0316815250508281600181518110612649576126496129d9565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de9590869061268f90600090869088904290600401612ad0565b6000604051808303818588803b1580156126a857600080fd5b505af11580156126bc573d6000803e3d6000fd5b505050505050505050565b600080600080600080600060e0888a0312156126e257600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b8181101561274057858101830151858201604001528201612724565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ea857600080fd5b6000806040838503121561278957600080fd5b823561279481612761565b946020939093013593505050565b6000806000606084860312156127b757600080fd5b83356127c281612761565b925060208401356127d281612761565b929592945050506040919091013590565b6000602082840312156127f557600080fd5b81356109c881612761565b6000806040838503121561281357600080fd5b50508035926020909101359150565b60008060006060848603121561283757600080fd5b505081359360208301359350604090920135919050565b8015158114610ea857600080fd5b6000806040838503121561286f57600080fd5b823561287a81612761565b9150602083013561288a8161284e565b809150509250929050565b6000806000606084860312156128aa57600080fd5b83356128b581612761565b925060208401356128c581612761565b915060408401356128d581612761565b809150509250925092565b600080604083850312156128f357600080fd5b82356128fe81612761565b9150602083013561288a81612761565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561294057600080fd5b81516109c88161284e565b634e487b7160e01b600052601160045260246000fd5b60008261297e57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561095f5761095f61294b565b808202811582820484141761095f5761095f61294b565b6000602082840312156129bf57600080fd5b5051919050565b8082018082111561095f5761095f61294b565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060208284031215612a1757600080fd5b81516109c881612761565b600081518084526020808501945080840160005b83811015612a5b5781516001600160a01b031687529582019590820190600101612a36565b509495945050505050565b85815284602082015260a060408201526000612a8560a0830186612a22565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612ab757600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000612ae96080830186612a22565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a0c9bd292109e452b0cc78f283244d37a0d90dd2d8d9ce96d7cd7a193e798f3c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102555760003560e01c80637cca52fe11610139578063b1850e94116100b6578063dd62ed3e1161007a578063dd62ed3e14610737578063e94dd17c1461077d578063ef43b02b1461079d578063efca2eed146107bd578063f2fde38b146107d3578063ffd49c84146107f357600080fd5b8063b1850e9414610667578063c0c493941461067c578063c942435d14610692578063ca89b899146106a7578063ce7c2ac2146106e057600080fd5b806395d89b41116100fd57806395d89b41146105c2578063997664d7146105f15780639a52fa8814610607578063a8aa1b3114610627578063a9059cbb1461064757600080fd5b80637cca52fe146105435780637d1db4a514610559578063893d20e81461056f5780639213c3581461058d5780639358928b146105ad57600080fd5b80632f54bf6e116101d25780633f4218e0116101965780633f4218e0146104775780634355855a146104a757806348ff2b8b146104d75780634fab0ae8146104f757806370a082311461050d57806378109e541461052d57600080fd5b80632f54bf6e146103e1578063313ce5671461041057806334c5d2ce1461042c5780633773eafb1461044c5780633a98ef391461046157600080fd5b8063228cb73311610219578063228cb7331461033457806323b872dd1461036c57806328fd31981461038c578063293230b8146103ac5780632d48e896146103c157600080fd5b8063044019301461026157806306fdde031461028357806308e20e1f146102cb578063095ea7b3146102ef57806318160ddd1461031f57600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061028161027c3660046126c7565b610809565b005b34801561028f57600080fd5b5060408051808201909152600d81526c2832b8329029b2b0b9b7b7101960991b60208201525b6040516102c29190612713565b60405180910390f35b3480156102d757600080fd5b506102e1601e5481565b6040519081526020016102c2565b3480156102fb57600080fd5b5061030f61030a366004612776565b61094e565b60405190151581526020016102c2565b34801561032b57600080fd5b506001546102e1565b34801561034057600080fd5b50602754610354906001600160a01b031681565b6040516001600160a01b0390911681526020016102c2565b34801561037857600080fd5b5061030f6103873660046127a2565b610965565b34801561039857600080fd5b506102e16103a73660046127e3565b6109cf565b3480156103b857600080fd5b50610281610a5a565b3480156103cd57600080fd5b506102816103dc366004612800565b610a99565b3480156103ed57600080fd5b5061030f6103fc3660046127e3565b6000546001600160a01b0391821691161490565b34801561041c57600080fd5b50604051600981526020016102c2565b34801561043857600080fd5b50610281610447366004612822565b610b00565b34801561045857600080fd5b50610281610c5e565b34801561046d57600080fd5b506102e1601b5481565b34801561048357600080fd5b5061030f6104923660046127e3565b60076020526000908152604090205460ff1681565b3480156104b357600080fd5b5061030f6104c23660046127e3565b60086020526000908152604090205460ff1681565b3480156104e357600080fd5b506102816104f236600461285c565b610cf5565b34801561050357600080fd5b506102e160185481565b34801561051957600080fd5b506102e16105283660046127e3565b610d74565b34801561053957600080fd5b506102e160045481565b34801561054f57600080fd5b506102e160035481565b34801561056557600080fd5b506102e160025481565b34801561057b57600080fd5b506000546001600160a01b0316610354565b34801561059957600080fd5b506102816105a8366004612895565b610d8f565b3480156105b957600080fd5b506102e1610e6e565b3480156105ce57600080fd5b506040805180820190915260068152651411541154d560d21b60208201526102b5565b3480156105fd57600080fd5b506102e1601c5481565b34801561061357600080fd5b506102816106223660046127e3565b610e9f565b34801561063357600080fd5b50600a54610354906001600160a01b031681565b34801561065357600080fd5b5061030f610662366004612776565b610eab565b34801561067357600080fd5b50610281610eb8565b34801561068857600080fd5b506102e1601f5481565b34801561069e57600080fd5b50610281610ef1565b3480156106b357600080fd5b506102e16106c23660046127e3565b6001600160a01b031660009081526025602052604090206002015490565b3480156106ec57600080fd5b5061071c6106fb3660046127e3565b60256020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060016102c2565b34801561074357600080fd5b506102e16107523660046128e0565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561078957600080fd5b50610281610798366004612822565b610f0b565b3480156107a957600080fd5b506102816107b836600461285c565b610f7a565b3480156107c957600080fd5b506102e1601d5481565b3480156107df57600080fd5b506102816107ee3660046127e3565b611031565b3480156107ff57600080fd5b506102e160175481565b6000546001600160a01b0316331461083c5760405162461bcd60e51b81526004016108339061290e565b60405180910390fd5b600b879055600c869055600d859055600e849055600f8390556010829055601181905560125461086d90600a6110af565b600f541115801561088d575060125461088790600a6110af565b60105411155b80156108a857506012546108a290600a6110af565b60115411155b6109095760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2032302560a01b6064820152608401610833565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc9898460405161093d91815260200190565b60405180910390a450505050505050565b600061095b3384846110bb565b5060015b92915050565b60006109728484846111df565b6109c484336109bf85604051806060016040528060288152602001612b06602891396001600160a01b038a166000908152600660209081526040808320338452909152902054919061130f565b6110bb565b5060015b9392505050565b6001600160a01b03811660009081526025602052604081205481036109f657506000919050565b6001600160a01b038216600090815260256020526040812054610a189061133b565b6001600160a01b038416600090815260256020526040902060010154909150808211610a48575060009392505050565b610a528282611358565b949350505050565b6000546001600160a01b03163314610a845760405162461bcd60e51b81526004016108339061290e565b600a805460ff60a01b1916600160a01b179055565b6000546001600160a01b03163314610ac35760405162461bcd60e51b81526004016108339061290e565b601782905560188190556040514290829084907fc83811714572426615980444a6ab691c0a8b3cdc133e5954eaedad87d9a9721990600090a45050565b6000546001600160a01b03163314610b2a5760405162461bcd60e51b81526004016108339061290e565b6000610b4b612710610b4586610b3f60015490565b90611364565b906110af565b90506000610b62612710610b4586610b3f60015490565b90506000610b79612710610b4586610b3f60015490565b90506000610b916103e8610b456005610b3f60015490565b9050808410158015610ba35750808310155b8015610baf5750808210155b610c195760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610833565b6002849055600383905560048290556040514281528390839086907fbd5acdd9cd7346c04cee822893f228a65a948bc41357408255ab8f36c446349f9060200161093d565b602754602854601f5460405163a9059cbb60e01b81526001600160a01b039283166004820152602481019190915291169063a9059cbb906044016020604051808303816000875af1158015610cb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cdb919061292e565b50601f54601e54610ceb91611358565b601e556000601f55565b6000546001600160a01b03163314610d1f5760405162461bcd60e51b81526004016108339061290e565b6001600160a01b038216600081815260076020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b6001600160a01b031660009081526005602052604090205490565b6000546001600160a01b03163314610db95760405162461bcd60e51b81526004016108339061290e565b602980546001600160a01b03199081166001600160a01b03868116918217909355602a80548316868516908117909155602880549093169385169384179092556000818152600760209081526040808320805460ff19908116600190811790925586855282852080548216831790558785529382902080549094161790925590514281527f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca91015b60405180910390a4505050565b6000610e9a610e7d6000610d74565b610e94610e8b61dead610d74565b60015490611358565b90611358565b905090565b610ea881611370565b50565b600061095b3384846111df565b6028546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015610ea8573d6000803e3d6000fd5b610efa33611459565b15610f0957610f09333361149e565b565b6000546001600160a01b03163314610f355760405162461bcd60e51b81526004016108339061290e565b60158390556019829055601a8190556040514281528190839085907f3af591b474e55c209cfbc3da369b6762366e3015997314ac10bd5c3198d26fb390602001610e61565b6000546001600160a01b03163314610fa45760405162461bcd60e51b81526004016108339061290e565b6001600160a01b0382166000908152600860205260409020805460ff19168215801591909117909155610fe157610fdc826000611679565b610ff3565b610ff382610fee84610d74565b611679565b42811515836001600160a01b03167f9d5aa14a9b3912640cacc1223833fffedd9010feefa1a219300eb732a86ce8ba60405160405180910390a45050565b6000546001600160a01b0316331461105b5760405162461bcd60e51b81526004016108339061290e565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b60006109c88284612961565b6001600160a01b03831661111d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610833565b6001600160a01b03821661117e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610833565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6111ea8383836117b3565b6111f483836118eb565b6111ff838383611980565b61120a838383611a6c565b6112148383611b99565b61121f838383611bff565b6001600160a01b0383166000908152600560205260409020546112429082611358565b6001600160a01b0384166000908152600560205260408120919091556112688484611c24565b611272578161127d565b61127d848484611c6a565b6001600160a01b0384166000908152600560205260409020549091506112a39082611d29565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112f79085815260200190565b60405180910390a36113098484611d35565b50505050565b600081848411156113335760405162461bcd60e51b81526004016108339190612713565b505050900390565b600061095f602154610b456020548561136490919063ffffffff16565b60006109c88284612983565b60006109c88284612996565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa1580156113b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113db91906129ad565b60285460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb906044016020604051808303816000875af1158015611430573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611454919061292e565b505050565b6017546001600160a01b0382166000908152602460205260408120549091429161148391906129c6565b10801561095f5750601854611497836109cf565b1192915050565b60006114a9836109cf565b6027546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b91906129ad565b6001600160a01b038516600090815260256020526040902054909150158061154257508082115b1561154d5750505050565b60008211801561155d5750808211155b1561130957601d5461156f9083611d29565b601d5560275460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb906044016020604051808303816000875af11580156115c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e9919061292e565b50601e546115f79083611358565b601e556001600160a01b0384166000908152602460209081526040808320429055602590915290206002015461162d9083611d29565b6001600160a01b03851660009081526025602052604090206002810191909155546116579061133b565b6001600160a01b03851660009081526025602052604090206001015550505050565b60008111801561169f57506001600160a01b038216600090815260256020526040902054155b1561170557602280546001600160a01b0384166000818152602360205260408120839055600183018455929092527f61035b26e3e9eee00e0d72fd1ee8ddca6894550dca6916ea2ac6baa90d11e5100180546001600160a01b0319169091179055611738565b8015801561172a57506001600160a01b03821660009081526025602052604090205415155b156117385761173882611e4d565b6001600160a01b038216600090815260256020526040902054601b5461176991839161176391611358565b90611d29565b601b556001600160a01b03821660009081526025602052604090208190556117908161133b565b6001600160a01b0390921660009081526025602052604090206001019190915550565b6001600160a01b0383166118175760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610833565b6001600160a01b0382166118795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610833565b61188283610d74565b8111156114545760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610833565b6001600160a01b03821660009081526007602052604090205460ff1615801561192d57506001600160a01b03811660009081526007602052604090205460ff16155b1561197c57600a54600160a01b900460ff1661197c5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610833565b5050565b6001600160a01b03831660009081526007602052604090205460ff161580156119c257506001600160a01b03821660009081526007602052604090205460ff16155b80156119dc5750600a546001600160a01b03838116911614155b80156119f357506001600160a01b03821661dead14155b15611454576004546001600160a01b038316600090815260056020526040902054611a1e9083611d29565b11156114545760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610833565b600a546001600160a01b03848116911614611b0d5760035481111580611aaa57506001600160a01b03831660009081526007602052604090205460ff165b80611acd57506001600160a01b03821660009081526007602052604090205460ff165b611b0d5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610833565b60025481111580611b3657506001600160a01b03831660009081526007602052604090205460ff165b80611b5957506001600160a01b03821660009081526007602052604090205460ff165b6114545760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610833565b600a546001600160a01b038281169116148015611bcf57506001600160a01b03821660009081526007602052604090205460ff16155b8015611bde575060165460ff16155b1561197c57600160146000828254611bf691906129c6565b90915550505050565b611c0a838383611f62565b1561145457611c1a601954612014565b6000601455505050565b6001600160a01b03821660009081526007602052604081205460ff161580156109c85750506001600160a01b031660009081526007602052604090205460ff1615919050565b600080611c7785856121c1565b1115611d22576000611c9a611c8c86866121c1565b601254610b3f9086906110af565b30600090815260056020526040902054909150611cb79082611d29565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611d089085815260200190565b60405180910390a3611d1a8382611358565b9150506109c8565b5092915050565b60006109c882846129c6565b6001600160a01b03811660009081526025602052604090205415611d5d57611d5d818261149e565b600a546001600160a01b03828116911614801590611d9257506001600160a01b03821660009081526025602052604090205415155b15611da157611da1828361149e565b600a546001600160a01b038281169116148015611dd557506001600160a01b03821660009081526025602052604090205415155b15611df357611def611de6836109cf565b601f5490611d29565b601f555b6001600160a01b03821660009081526008602052604090205460ff16611e2057611e2082610fee84610d74565b6001600160a01b03811660009081526008602052604090205460ff1661197c5761197c81610fee83610d74565b60228054611e5d90600190612983565b81548110611e6d57611e6d6129d9565b60009182526020808320909101546001600160a01b0384811684526023909252604090922054602280549290931692918110611eab57611eab6129d9565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260239182905260408120546022805491939291611ef790600190612983565b81548110611f0757611f076129d9565b60009182526020808320909101546001600160a01b031683528201929092526040019020556022805480611f3d57611f3d6129ef565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600080601a5483101590506000601954611f7b30610d74565b601654911115915060ff16158015611f95575060135460ff165b8015611faa5750600a54600160a01b900460ff165b8015611fb35750815b8015611fd857506001600160a01b03861660009081526007602052604090205460ff16155b8015611ff15750600a546001600160a01b038681169116145b8015612001575060155460145410155b801561200a5750805b9695505050505050565b6016805460ff19166001179055600e54600d54600c54600b5460009361204893600293610b3f936117639291839190611d29565b9050600061206582610b45600b548661136490919063ffffffff16565b905060006120738483611358565b90504761207f82612228565b600061208b4783611358565b905060006120ae6120a7600b548861135890919063ffffffff16565b83906110af565b905060006120c7600b548361136490919063ffffffff16565b905080156120e857602a546120e890879083906001600160a01b0316612382565b600c546000906120fd90610b3f856002611364565b90508015612141576029546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561213f573d6000803e3d6000fd5b505b600d5460009061215690610b3f866002611364565b90508015612167576121678161242d565b4780156121aa576028546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156121a8573d6000803e3d6000fd5b505b50506016805460ff19169055505050505050505050565b600a546000906001600160a01b0383811691161480156121e357506000601054115b156121f1575060105461095f565b600a546001600160a01b03848116911614801561221057506000600f54115b1561221e5750600f5461095f565b5060115492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061225d5761225d6129d9565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122da9190612a05565b816001815181106122ed576122ed6129d9565b6001600160a01b03928316602091820292909201015260095461231391309116846110bb565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061234c908590600090869030904290600401612a66565b600060405180830381600087803b15801561236657600080fd5b505af115801561237a573d6000803e3d6000fd5b505050505050565b60095461239a9030906001600160a01b0316856110bb565b60095460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612408573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061237a9190612aa2565b6027546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015612476573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249a91906129ad565b6027549091506124b59083906001600160a01b031630612574565b6027546040516370a0823160e01b81523060048201526000916125289184916001600160a01b0316906370a0823190602401602060405180830381865afa158015612504573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9491906129ad565b601c549091506125389082611d29565b601c55601e546125489082611d29565b601e55601b5460215461256c9161256391610b459085611364565b60205490611d29565b602055505050565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156125de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126029190612a05565b81600081518110612615576126156129d9565b60200260200101906001600160a01b031690816001600160a01b0316815250508281600181518110612649576126496129d9565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de9590869061268f90600090869088904290600401612ad0565b6000604051808303818588803b1580156126a857600080fd5b505af11580156126bc573d6000803e3d6000fd5b505050505050505050565b600080600080600080600060e0888a0312156126e257600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b8181101561274057858101830151858201604001528201612724565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610ea857600080fd5b6000806040838503121561278957600080fd5b823561279481612761565b946020939093013593505050565b6000806000606084860312156127b757600080fd5b83356127c281612761565b925060208401356127d281612761565b929592945050506040919091013590565b6000602082840312156127f557600080fd5b81356109c881612761565b6000806040838503121561281357600080fd5b50508035926020909101359150565b60008060006060848603121561283757600080fd5b505081359360208301359350604090920135919050565b8015158114610ea857600080fd5b6000806040838503121561286f57600080fd5b823561287a81612761565b9150602083013561288a8161284e565b809150509250929050565b6000806000606084860312156128aa57600080fd5b83356128b581612761565b925060208401356128c581612761565b915060408401356128d581612761565b809150509250925092565b600080604083850312156128f357600080fd5b82356128fe81612761565b9150602083013561288a81612761565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561294057600080fd5b81516109c88161284e565b634e487b7160e01b600052601160045260246000fd5b60008261297e57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561095f5761095f61294b565b808202811582820484141761095f5761095f61294b565b6000602082840312156129bf57600080fd5b5051919050565b8082018082111561095f5761095f61294b565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060208284031215612a1757600080fd5b81516109c881612761565b600081518084526020808501945080840160005b83811015612a5b5781516001600160a01b031687529582019590820190600101612a36565b509495945050505050565b85815284602082015260a060408201526000612a8560a0830186612a22565b6001600160a01b0394909416606083015250608001529392505050565b600080600060608486031215612ab757600080fd5b8351925060208401519150604084015190509250925092565b848152608060208201526000612ae96080830186612a22565b6001600160a01b0394909416604083015250606001529291505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a0c9bd292109e452b0cc78f283244d37a0d90dd2d8d9ce96d7cd7a193e798f3c64736f6c63430008130033

Deployed Bytecode Sourcemap

3857:19806:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10422:599;;;;;;;;;;-1:-1:-1;10422:599:0;;;;;:::i;:::-;;:::i;:::-;;8183:67;;;;;;;;;;-1:-1:-1;8243:5:0;;;;;;;;;;;;-1:-1:-1;;;8243:5:0;;;;8183:67;;;;;;;:::i;:::-;;;;;;;;5543:31;;;;;;;;;;;;;;;;;;;1310:25:1;;;1298:2;1283:18;5543:31:0;1164:177:1;9037:133:0;;;;;;;;;;-1:-1:-1;9037:133:0;;;;;:::i;:::-;;:::i;:::-;;;1967:14:1;;1960:22;1942:41;;1930:2;1915:18;9037:133:0;1802:187:1;8560:84:0;;;;;;;;;;-1:-1:-1;8630:12:0;;8560:84;;6027:66;;;;;;;;;;-1:-1:-1;6027:66:0;;;;-1:-1:-1;;;;;6027:66:0;;;;;;-1:-1:-1;;;;;2158:32:1;;;2140:51;;2128:2;2113:18;6027:66:0;1994:203:1;17797:309:0;;;;;;;;;;-1:-1:-1;17797:309:0;;;;;:::i;:::-;;:::i;22260:473::-;;;;;;;;;;-1:-1:-1;22260:473:0;;;;;:::i;:::-;;:::i;12773:83::-;;;;;;;;;;;;;:::i;23390:270::-;;;;;;;;;;-1:-1:-1;23390:270:0;;;;;:::i;:::-;;:::i;2237:87::-;;;;;;;;;;-1:-1:-1;2237:87:0;;;;;:::i;:::-;2292:4;2317:5;-1:-1:-1;;;;;2306:16:0;;;2317:5;;2306:16;;2237:87;8333:67;;;;;;;;;;-1:-1:-1;8333:67:0;;4077:1;3310:36:1;;3298:2;3283:18;8333:67:0;3168:184:1;11029:665:0;;;;;;;;;;-1:-1:-1;11029:665:0;;;;;:::i;:::-;;:::i;20664:217::-;;;;;;;;;;;;;:::i;5436:26::-;;;;;;;;;;;;;;;;4485:44;;;;;;;;;;-1:-1:-1;4485:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4536:49;;;;;;;;;;-1:-1:-1;4536:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13636:192;;;;;;;;;;-1:-1:-1;13636:192:0;;;;;:::i;:::-;;:::i;5176:47::-;;;;;;;;;;;;;;;;8650:103;;;;;;;;;;-1:-1:-1;8650:103:0;;;;;:::i;:::-;;:::i;4294:63::-;;;;;;;;;;;;;;;;4225:62;;;;;;;;;;;;;;;;4158:60;;;;;;;;;;;;;;;;8476:78;;;;;;;;;;-1:-1:-1;8528:7:0;8546:5;-1:-1:-1;;;;;8546:5:0;8476:78;;13199:429;;;;;;;;;;-1:-1:-1;13199:429:0;;;;;:::i;:::-;;:::i;9176:138::-;;;;;;;;;;;;;:::i;8256:71::-;;;;;;;;;;-1:-1:-1;8318:7:0;;;;;;;;;;;;-1:-1:-1;;;8318:7:0;;;;8256:71;;5469:29;;;;;;;;;;;;;;;;8406:64;;;;;;;;;;-1:-1:-1;8406:64:0;;;;;:::i;:::-;;:::i;4613:19::-;;;;;;;;;;-1:-1:-1;4613:19:0;;;;-1:-1:-1;;;;;4613:19:0;;;8759:139;;;;;;;;;;-1:-1:-1;8759:139:0;;;;;:::i;:::-;;:::i;20541:115::-;;;;;;;;;;;;;:::i;5581:30::-;;;;;;;;;;;;;;;;21330:130;;;;;;;;;;;;;:::i;21132:190::-;;;;;;;;;;-1:-1:-1;21132:190:0;;;;;:::i;:::-;-1:-1:-1;;;;;21280:19:0;21205:7;21280:19;;;:6;:19;;;;;:33;;;;21132:190;5944:40;;;;;;;;;;-1:-1:-1;5944:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4924:25:1;;;4980:2;4965:18;;4958:34;;;;5008:18;;;5001:34;4912:2;4897:18;5944:40:0;4722:319:1;8904:127:0;;;;;;;;;;-1:-1:-1;8904:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9002:18:0;;;8985:7;9002:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8904:127;12864:327;;;;;;;;;;-1:-1:-1;12864:327:0;;;;;:::i;:::-;;:::i;18457:289::-;;;;;;;;;;-1:-1:-1;18457:289:0;;;;;:::i;:::-;;:::i;5505:31::-;;;;;;;;;;;;;;;;2330:111;;;;;;;;;;-1:-1:-1;2330:111:0;;;;;:::i;:::-;;:::i;5132:37::-;;;;;;;;;;;;;;;;10422:599;2292:4;2317:5;-1:-1:-1;;;;;2317:5:0;2204:10;2306:16;2188:38;;;;-1:-1:-1;;;2188:38:0;;;;;;;:::i;:::-;;;;;;;;;10601:12:::1;:25:::0;;;10628:12:::1;:25:::0;;;10655:10:::1;:21:::0;;;10678:14:::1;:29:::0;;;10718:8:::1;:17:::0;;;10737:7:::1;:15:::0;;;10754:11:::1;:20:::0;;;10805:11:::1;::::0;:19:::1;::::0;10821:2:::1;10805:15;:19::i;:::-;10793:8;;:31;;:65;;;;-1:-1:-1::0;10839:11:0::1;::::0;:19:::1;::::0;10855:2:::1;10839:15;:19::i;:::-;10828:7;;:30;;10793:65;:103;;;;-1:-1:-1::0;10877:11:0::1;::::0;:19:::1;::::0;10893:2:::1;10877:15;:19::i;:::-;10862:11;;:34;;10793:103;10785:160;;;::::0;-1:-1:-1;;;10785:160:0;;6235:2:1;10785:160:0::1;::::0;::::1;6217:21:1::0;6274:2;6254:18;;;6247:30;6313:34;6293:18;;;6286:62;-1:-1:-1;;;6364:18:1;;;6357:42;6416:19;;10785:160:0::1;6033:408:1::0;10785:160:0::1;10997:15;10982:5;10974:6;10961:52;10989:6;10961:52;;;;1310:25:1::0;;1298:2;1283:18;;1164:177;10961:52:0::1;;;;;;;;10422:599:::0;;;;;;;:::o;9037:133::-;9112:4;9119:37;9128:10;9140:7;9149:6;9119:8;:37::i;:::-;-1:-1:-1;9164:4:0;9037:133;;;;;:::o;17797:309::-;17895:4;17912:36;17922:6;17930:9;17941:6;17912:9;:36::i;:::-;17959:117;17968:6;17976:10;17988:87;18024:6;17988:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17988:19:0;;;;;;:11;:19;;;;;;;;18008:10;17988:31;;;;;;;;;:87;:35;:87::i;:::-;17959:8;:117::i;:::-;-1:-1:-1;18094:4:0;17797:309;;;;;;:::o;22260:473::-;-1:-1:-1;;;;;22352:19:0;;22329:7;22352:19;;;:6;:19;;;;;:26;:31;;22349:48;;-1:-1:-1;22393:1:0;;22260:473;-1:-1:-1;22260:473:0:o;22349:48::-;-1:-1:-1;;;;;22466:19:0;;22407:33;22466:19;;;:6;:19;;;;;:26;22443:50;;:22;:50::i;:::-;-1:-1:-1;;;;;22539:19:0;;22504:32;22539:19;;;:6;:19;;;;;:33;;;22407:86;;-1:-1:-1;22586:53:0;;;22583:70;;-1:-1:-1;22649:1:0;;22260:473;-1:-1:-1;;;22260:473:0:o;22583:70::-;22670:55;:25;22700:24;22670:29;:55::i;:::-;22663:62;22260:473;-1:-1:-1;;;;22260:473:0:o;12773:83::-;2292:4;2317:5;-1:-1:-1;;;;;2317:5:0;2204:10;2306:16;2188:38;;;;-1:-1:-1;;;2188:38:0;;;;;;;:::i;:::-;12827:14:::1;:21:::0;;-1:-1:-1;;;;12827:21:0::1;-1:-1:-1::0;;;12827:21:0::1;::::0;;12773:83::o;23390:270::-;2292:4;2317:5;-1:-1:-1;;;;;2317:5:0;2204:10;2306:16;2188:38;;;;-1:-1:-1;;;2188:38:0;;;;;;;:::i;:::-;23499:9:::1;:22:::0;;;23532:15:::1;:34:::0;;;23582:70:::1;::::0;23636:15:::1;::::0;23550:16;;23511:10;;23582:70:::1;::::0;-1:-1:-1;;23582:70:0::1;23390:270:::0;;:::o;11029:665::-;2292:4;2317:5;-1:-1:-1;;;;;2317:5:0;2204:10;2306:16;2188:38;;;;-1:-1:-1;;;2188:38:0;;;;;;;:::i;:::-;11129:13:::1;11145:43;11181:5;11145:23;11163:4;11145:13;8630:12:::0;;;8560:84;11145:13:::1;:17:::0;::::1;:23::i;:::-;:27:::0;::::1;:43::i;:::-;11129:59;;11190:19;11212:45;11250:5;11212:25;11230:6;11212:13;8630:12:::0;;;8560:84;11212:45:::1;11190:67;;11268:17;11288:46;11327:5;11288:26;11306:7;11288:13;8630:12:::0;;;8560:84;11288:46:::1;11268:66;;11336:13;11352:30;11377:4;11352:20;11370:1;11352:13;8630:12:::0;;;8560:84;11352:30:::1;11336:46;;11410:5;11401;:14;;:38;;;;;11434:5;11419:11;:20;;11401:38;:60;;;;;11456:5;11443:9;:18;;11401:60;11393:126;;;::::0;-1:-1:-1;;;11393:126:0;;6648:2:1;11393:126:0::1;::::0;::::1;6630:21:1::0;6687:2;6667:18;;;6660:30;6726:34;6706:18;;;6699:62;-1:-1:-1;;;6777:18:1;;;6770:51;6838:19;;11393:126:0::1;6446:417:1::0;11393:126:0::1;11530:12;:20:::0;;;11552:14:::1;:28:::0;;;11582:15:::1;:27:::0;;;11625:61:::1;::::0;11670:15:::1;1310:25:1::0;;11552:28:0;;11582:27;;11530:20;;11625:61:::1;::::0;1298:2:1;1283:18;11625:61:0::1;1164:177:1::0;20664:217:0;20712:6;;20729:20;;20751:15;;20705:62;;-1:-1:-1;;;20705:62:0;;-1:-1:-1;;;;;20729:20:0;;;20705:62;;;7042:51:1;7109:18;;;7102:34;;;;20712:6:0;;;20705:23;;7015:18:1;;20705:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;20818:15:0;;20797:16;;:37;;:20;:37::i;:::-;20778:16;:56;20871:1;20845:15;:28;20664:217::o;13636:192::-;2292:4;2317:5;-1:-1:-1;;;;;2317:5:0;2204:10;2306:16;2188:38;;;;-1:-1:-1;;;2188:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13720:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:32;;-1:-1:-1;;13720:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;13768:52;;13804:15:::1;::::0;13720:32;;13768:52:::1;::::0;::::1;13636:192:::0;;:::o;8650:103::-;-1:-1:-1;;;;;8733:18:0;8716:7;8733:18;;;:9;:18;;;;;;;8650:103::o;13199:429::-;2292:4;2317:5;-1:-1:-1;;;;;2317:5:0;2204:10;2306:16;2188:38;;;;-1:-1:-1;;;2188:38:0;;;;;;;:::i;:::-;13321:18:::1;:31:::0;;-1:-1:-1;;;;;;13321:31:0;;::::1;-1:-1:-1::0;;;;;13321:31:0;;::::1;::::0;;::::1;::::0;;;13354:18:::1;:31:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;13387:20:::1;:35:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;13433:23:0;;;:11:::1;:23;::::0;;;;;;;:30;;-1:-1:-1;;13433:30:0;;::::1;-1:-1:-1::0;13433:30:0;;::::1;::::0;;;13465:23;;;;;;:30;;;::::1;::::0;::::1;::::0;;13497:25;;;;;;;:32;;;;::::1;;::::0;;;13545:75;;13604:15:::1;1310:25:1::0;;13545:75:0::1;::::0;1283:18:1;13545:75:0::1;;;;;;;;13199:429:::0;;;:::o;9176:138::-;9235:7;9252:60;9290:21;9308:1;9290:9;:21::i;:::-;9252:33;9269:15;6133:42;9269:9;:15::i;:::-;9252:12;;;:16;:33::i;:::-;:37;;:60::i;:::-;9245:67;;9176:138;:::o;8406:64::-;8452:16;8462:5;8452:9;:16::i;:::-;8406:64;:::o;8759:139::-;8837:4;8844:40;8854:10;8866:9;8877:6;8844:9;:40::i;20541:115::-;20595:20;;20587:61;;-1:-1:-1;;;;;20595:20:0;;;;20626:21;20587:61;;;;;20595:20;20587:61;20595:20;20587:61;20626:21;20595:20;20587:61;;;;;;;;;;;;;;;;;;;21330:130;21379:28;21396:10;21379:16;:28::i;:::-;21376:77;;;21409:42;21428:10;21440;21409:18;:42::i;:::-;21330:130::o;12864:327::-;2292:4;2317:5;-1:-1:-1;;;;;2317:5:0;2204:10;2306:16;2188:38;;;;-1:-1:-1;;;2188:38:0;;;;;;;:::i;:::-;12993:10:::1;:24:::0;;;13019:13:::1;:30:::0;;;13051:14:::1;:32:::0;;;13099:82:::1;::::0;13165:15:::1;1310:25:1::0;;13051:32:0;;13019:30;;12993:24;;13099:82:::1;::::0;1298:2:1;1283:18;13099:82:0::1;1164:177:1::0;18457:289:0;2292:4;2317:5;-1:-1:-1;;;;;2317:5:0;2204:10;2306:16;2188:38;;;;-1:-1:-1;;;2188:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18545:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;18545:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;18589:84:::1;;18600:19;18609:6;18617:1;18600:8;:19::i;:::-;18589:84;;;18636:35;18645:6;18653:17;18663:6;18653:9;:17::i;:::-;18636:8;:35::i;:::-;18722:15;18714:6;18688:50;;18706:6;-1:-1:-1::0;;;;;18688:50:0::1;;;;;;;;;;;18457:289:::0;;:::o;2330:111::-;2292:4;2317:5;-1:-1:-1;;;;;2317:5:0;2204:10;2306:16;2188:38;;;;-1:-1:-1;;;2188:38:0;;;;;;;:::i;:::-;2396:5:::1;:11:::0;;-1:-1:-1;;;;;;2396:11:0::1;-1:-1:-1::0;;;;;2396:11:0;::::1;::::0;;::::1;::::0;;;2414:25:::1;::::0;2140:51:1;;;2414:25:0::1;::::0;2128:2:1;2113:18;2414:25:0::1;;;;;;;2330:111:::0;:::o;391:82::-;449:7;466:5;470:1;466;:5;:::i;18114:335::-;-1:-1:-1;;;;;18207:19:0;;18199:68;;;;-1:-1:-1;;;18199:68:0;;8169:2:1;18199:68:0;;;8151:21:1;8208:2;8188:18;;;8181:30;8247:34;8227:18;;;8220:62;-1:-1:-1;;;8298:18:1;;;8291:34;8342:19;;18199:68:0;7967:400:1;18199:68:0;-1:-1:-1;;;;;18286:21:0;;18278:68;;;;-1:-1:-1;;;18278:68:0;;8574:2:1;18278:68:0;;;8556:21:1;8613:2;8593:18;;;8586:30;8652:34;8632:18;;;8625:62;-1:-1:-1;;;8703:18:1;;;8696:32;8745:19;;18278:68:0;8372:398:1;18278:68:0;-1:-1:-1;;;;;18357:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18409:32;;1310:25:1;;;18409:32:0;;1283:18:1;18409:32:0;;;;;;;18114:335;;;:::o;9685:729::-;9774:37;9785:6;9793:9;9804:6;9774:10;:37::i;:::-;9822:38;9842:6;9850:9;9822:19;:38::i;:::-;9871:41;9886:6;9894:9;9905:6;9871:14;:41::i;:::-;9924:39;9937:6;9945:9;9956:6;9924:12;:39::i;:::-;9974:35;9991:6;9999:9;9974:16;:35::i;:::-;10020;10029:6;10037:9;10048:6;10020:8;:35::i;:::-;-1:-1:-1;;;;;10086:17:0;;;;;;:9;:17;;;;;;:29;;10108:6;10086:21;:29::i;:::-;-1:-1:-1;;;;;10066:17:0;;;;;;:9;:17;;;;;:49;;;;10151:32;10076:6;10173:9;10151:13;:32::i;:::-;:78;;10223:6;10151:78;;;10186:34;10194:6;10202:9;10213:6;10186:7;:34::i;:::-;-1:-1:-1;;;;;10263:20:0;;;;;;:9;:20;;;;;;10126:103;;-1:-1:-1;10263:40:0;;10126:103;10263:24;:40::i;:::-;-1:-1:-1;;;;;10240:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10319:43;;;;;;;;;;10347:14;1310:25:1;;1298:2;1283:18;;1164:177;10319:43:0;;;;;;;;10373:33;10388:6;10396:9;10373:14;:33::i;:::-;9763:651;9685:729;;;:::o;569:162::-;655:7;701:12;693:6;;;;685:29;;;;-1:-1:-1;;;685:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;723:5:0;;;569:162::o;22741:170::-;22811:7;22838:65;22871:31;;22838:28;22848:17;;22838:5;:9;;:28;;;;:::i;215:82::-;273:7;290:5;294:1;290;:5;:::i;303:82::-;361:7;378:5;382:1;378;:5;:::i;19337:191::-;19412:41;;-1:-1:-1;;;19412:41:0;;19447:4;19412:41;;;2140:51:1;19394:15:0;;-1:-1:-1;;;;;19412:26:0;;;;;2113:18:1;;19412:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19490:20;;19464:56;;-1:-1:-1;;;19464:56:0;;-1:-1:-1;;;;;19490:20:0;;;19464:56;;;7042:51:1;7109:18;;;7102:34;;;19394:59:0;;-1:-1:-1;19464:25:0;;;;;7015:18:1;;19464:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19383:145;19337:191;:::o;20893:231::-;21020:9;;-1:-1:-1;;;;;20987:30:0;;20963:4;20987:30;;;:17;:30;;;;;;20963:4;;21032:15;;20987:42;;21020:9;20987:42;:::i;:::-;:60;:129;;;;;21101:15;;21068:30;21086:11;21068:17;:30::i;:::-;:48;20980:136;20893:231;-1:-1:-1;;20893:231:0:o;21468:784::-;21556:14;21573:30;21591:11;21573:17;:30::i;:::-;21639:6;;21632:39;;-1:-1:-1;;;21632:39:0;;21665:4;21632:39;;;2140:51:1;21556:47:0;;-1:-1:-1;21614:15:0;;-1:-1:-1;;;;;21639:6:0;;;;21632:24;;2113:18:1;;21632:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21685:19:0;;;;;;:6;:19;;;;;:26;21614:57;;-1:-1:-1;21685:31:0;;:51;;;21729:7;21720:6;:16;21685:51;21682:66;;;21739:7;;21468:784;;:::o;21682:66::-;21778:1;21761:6;:19;:40;;;;;21794:7;21784:6;:17;;21761:40;21758:487;;;21836:16;;:28;;21857:6;21836:20;:28::i;:::-;21817:16;:47;21886:6;;21879:42;;-1:-1:-1;;;21879:42:0;;-1:-1:-1;;;;;7060:32:1;;;21879:42:0;;;7042:51:1;7109:18;;;7102:34;;;21886:6:0;;;;21879:23;;7015:18:1;;21879:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;21955:16:0;;:28;;21976:6;21955:20;:28::i;:::-;21936:16;:47;-1:-1:-1;;;;;21998:30:0;;;;;;:17;:30;;;;;;;;22031:15;21998:48;;22097:6;:19;;;;;:33;;;:45;;22135:6;22097:37;:45::i;:::-;-1:-1:-1;;;;;22061:19:0;;;;;;:6;:19;;;;;:33;;;:81;;;;22216:26;22193:50;;:22;:50::i;:::-;-1:-1:-1;;;;;22157:19:0;;;;;;:6;:19;;;;;:33;;:86;21545:707;;21468:784;;:::o;19536:482::-;19623:1;19614:6;:10;:45;;;;-1:-1:-1;;;;;;19628:19:0;;;;;;:6;:19;;;;;:26;:31;19614:45;19611:177;;;23018:12;:19;;-1:-1:-1;;;;;22984:31:0;;;;;;:18;:31;;;;;:53;;;23048:30;;;;;;;;;;;;;-1:-1:-1;;;;;;23048:30:0;;;;;;19611:177;;;19708:11;;:45;;;;-1:-1:-1;;;;;;19723:19:0;;19752:1;19723:19;;;:6;:19;;;;;:26;:30;;19708:45;19705:83;;;19755:30;19773:11;19755:17;:30::i;:::-;-1:-1:-1;;;;;19828:19:0;;;;;;:6;:19;;;;;:26;19812:11;;:55;;19860:6;;19812:43;;:15;:43::i;:::-;:47;;:55::i;:::-;19798:11;:69;-1:-1:-1;;;;;19878:19:0;;;;;;:6;:19;;;;;:35;;;19960:50;19907:6;19960:22;:50::i;:::-;-1:-1:-1;;;;;19924:19:0;;;;;;;:6;:19;;;;;:33;;:86;;;;-1:-1:-1;19536:482:0:o;9322:355::-;-1:-1:-1;;;;;9426:20:0;;9418:70;;;;-1:-1:-1;;;9418:70:0;;9602:2:1;9418:70:0;;;9584:21:1;9641:2;9621:18;;;9614:30;9680:34;9660:18;;;9653:62;-1:-1:-1;;;9731:18:1;;;9724:35;9776:19;;9418:70:0;9400:401:1;9418:70:0;-1:-1:-1;;;;;9507:23:0;;9499:71;;;;-1:-1:-1;;;9499:71:0;;10008:2:1;9499:71:0;;;9990:21:1;10047:2;10027:18;;;10020:30;10086:34;10066:18;;;10059:62;-1:-1:-1;;;10137:18:1;;;10130:33;10180:19;;9499:71:0;9806:399:1;9499:71:0;9599:17;9609:6;9599:9;:17::i;:::-;9589:6;:27;;9581:88;;;;-1:-1:-1;;;9581:88:0;;10412:2:1;9581:88:0;;;10394:21:1;10451:2;10431:18;;;10424:30;10490:34;10470:18;;;10463:62;-1:-1:-1;;;10541:18:1;;;10534:47;10598:19;;9581:88:0;10210:413:1;11702:191:0;-1:-1:-1;;;;;11795:19:0;;;;;;:11;:19;;;;;;;;11794:20;:47;;;;-1:-1:-1;;;;;;11819:22:0;;;;;;:11;:22;;;;;;;;11818:23;11794:47;11791:95;;;11851:14;;-1:-1:-1;;;11851:14:0;;;;11843:41;;;;-1:-1:-1;;;11843:41:0;;10830:2:1;11843:41:0;;;10812:21:1;10869:2;10849:18;;;10842:30;-1:-1:-1;;;10888:18:1;;;10881:44;10942:18;;11843:41:0;10628:338:1;11843:41:0;11702:191;;:::o;11905:331::-;-1:-1:-1;;;;;12009:19:0;;;;;;:11;:19;;;;;;;;12008:20;:47;;;;-1:-1:-1;;;;;;12033:22:0;;;;;;:11;:22;;;;;;;;12032:23;12008:47;:77;;;;-1:-1:-1;12080:4:0;;-1:-1:-1;;;;;12059:26:0;;;12080:4;;12059:26;;12008:77;:107;;;;-1:-1:-1;;;;;;12089:26:0;;6133:42;12089:26;;12008:107;12005:224;;;12177:15;;-1:-1:-1;;;;;12140:20:0;;;;;;:9;:20;;;;;;:32;;12165:6;12140:24;:32::i;:::-;12139:53;;12131:96;;;;-1:-1:-1;;;12131:96:0;;11173:2:1;12131:96:0;;;11155:21:1;11212:2;11192:18;;;11185:30;11251:32;11231:18;;;11224:60;11301:18;;12131:96:0;10971:354:1;12424:341:0;12535:4;;-1:-1:-1;;;;;12525:14:0;;;12535:4;;12525:14;12522:124;;12559:14;;12549:6;:24;;:47;;;-1:-1:-1;;;;;;12577:19:0;;;;;;:11;:19;;;;;;;;12549:47;:73;;;-1:-1:-1;;;;;;12600:22:0;;;;;;:11;:22;;;;;;;;12549:73;12541:103;;;;-1:-1:-1;;;12541:103:0;;11532:2:1;12541:103:0;;;11514:21:1;11571:2;11551:18;;;11544:30;-1:-1:-1;;;11590:18:1;;;11583:47;11647:18;;12541:103:0;11330:341:1;12541:103:0;12674:12;;12664:6;:22;;:45;;;-1:-1:-1;;;;;;12690:19:0;;;;;;:11;:19;;;;;;;;12664:45;:71;;;-1:-1:-1;;;;;;12713:22:0;;;;;;:11;:22;;;;;;;;12664:71;12656:101;;;;-1:-1:-1;;;12656:101:0;;11532:2:1;12656:101:0;;;11514:21:1;11571:2;11551:18;;;11544:30;-1:-1:-1;;;11590:18:1;;;11583:47;11647:18;;12656:101:0;11330:341:1;12244:172:0;12341:4;;-1:-1:-1;;;;;12328:17:0;;;12341:4;;12328:17;:41;;;;-1:-1:-1;;;;;;12350:19:0;;;;;;:11;:19;;;;;;;;12349:20;12328:41;:54;;;;-1:-1:-1;12374:8:0;;;;12373:9;12328:54;12325:84;;;12405:1;12384:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;12244:172:0;;:::o;16708:197::-;16800:41;16815:6;16823:9;16834:6;16800:14;:41::i;:::-;16797:101;;;16843:29;16858:13;;16843:14;:29::i;:::-;16894:1;16874:9;:22;16708:197;;;:::o;16913:160::-;-1:-1:-1;;;;;17019:19:0;;16994:4;17019:19;;;:11;:19;;;;;;;;17018:20;:47;;;;-1:-1:-1;;;;;;;17043:22:0;;;;;:11;:22;;;;;;;;17042:23;;16913:160;-1:-1:-1;16913:160:0:o;17357:432::-;17443:7;17499:1;17466:30;17478:6;17486:9;17466:11;:30::i;:::-;:34;17463:304;;;17512:17;17532:59;17560:30;17572:6;17580:9;17560:11;:30::i;:::-;17543:11;;17532:23;;:6;;:10;:23::i;:59::-;17647:4;17629:24;;;;:9;:24;;;;;;17512:79;;-1:-1:-1;17629:39:0;;17512:79;17629:28;:39::i;:::-;17620:4;17602:24;;;;:9;:24;;;;;;;:66;;;;17684:42;;-1:-1:-1;;;;;17684:42:0;;;;;;;17716:9;1310:25:1;;1298:2;1283:18;;1164:177;17684:42:0;;;;;;;;17744:21;:6;17755:9;17744:10;:21::i;:::-;17737:28;;;;;17463:304;-1:-1:-1;17775:6:0;17357:432;-1:-1:-1;;17357:432:0:o;127:82::-;185:7;202:5;206:1;202;:5;:::i;18754:575::-;-1:-1:-1;;;;;18836:17:0;;18871:1;18836:17;;;:6;:17;;;;;:24;:37;18833:84;;18875:40;18894:9;18905;18875:18;:40::i;:::-;18943:4;;-1:-1:-1;;;;;18930:17:0;;;18943:4;;18930:17;;;;:55;;-1:-1:-1;;;;;;18951:14:0;;18983:1;18951:14;;;:6;:14;;;;;:21;:34;;18930:55;18927:96;;;18987:34;19006:6;19014;18987:18;:34::i;:::-;19049:4;;-1:-1:-1;;;;;19036:17:0;;;19049:4;;19036:17;:55;;;;-1:-1:-1;;;;;;19057:14:0;;19089:1;19057:14;;;:6;:14;;;;;:21;:34;;19036:55;19033:126;;;19111:46;19131:25;19149:6;19131:17;:25::i;:::-;19111:15;;;:19;:46::i;:::-;19093:15;:64;19033:126;-1:-1:-1;;;;;19173:24:0;;;;;;:16;:24;;;;;;;;19169:67;;19199:35;19208:6;19216:17;19226:6;19216:9;:17::i;19199:35::-;-1:-1:-1;;;;;19250:27:0;;;;;;:16;:27;;;;;;;;19246:76;;19279:41;19288:9;19299:20;19309:9;19299;:20::i;23094:288::-;23210:12;23223:19;;:21;;23243:1;;23223:21;:::i;:::-;23210:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;23175:31:0;;;;;:18;:31;;;;;;;;23162:12;:45;;23210:35;;;;;23162:12;:45;;;;;;:::i;:::-;;;;;;;;;;;;;:83;;-1:-1:-1;;;;;;23162:83:0;-1:-1:-1;;;;;23162:83:0;;;;;;23314:31;;;;;:18;:31;;;;;;;;23275:12;23288:19;;23314:31;;:18;23162:45;23288:21;;-1:-1:-1;;23288:21:0;:::i;:::-;23275:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;23275:35:0;23256:55;;;;;;;;;;;;:89;23356:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;23356:18:0;;;;;-1:-1:-1;;;;;;23356:18:0;;;;;;-1:-1:-1;23094:288:0:o;16287:413::-;16385:4;16402:13;16428:14;;16418:6;:24;;16402:40;;16453:19;16503:13;;16475:24;16493:4;16475:9;:24::i;:::-;16535:8;;16475:41;-1:-1:-1;16475:41:0;;-1:-1:-1;16535:8:0;;16534:9;:24;;;;-1:-1:-1;16547:11:0;;;;16534:24;:42;;;;-1:-1:-1;16562:14:0;;-1:-1:-1;;;16562:14:0;;;;16534:42;:54;;;;;16580:8;16534:54;:78;;;;-1:-1:-1;;;;;;16593:19:0;;;;;;:11;:19;;;;;;;;16592:20;16534:78;:113;;;;-1:-1:-1;16643:4:0;;-1:-1:-1;;;;;16630:17:0;;;16643:4;;16630:17;16534:113;:140;;;;;16664:10;;16651:9;;:23;;16534:140;:158;;;;;16678:14;16534:158;16527:165;16287:413;-1:-1:-1;;;;;;16287:413:0:o;13836:1224::-;5392:8;:15;;-1:-1:-1;;5392:15:0;5403:4;5392:15;;;13982:14:::1;::::0;13966:10:::1;::::0;13948:12:::1;::::0;13931::::1;::::0;5392:8;;13930:75:::1;::::0;14003:1:::1;::::0;13931:66:::1;::::0;:46:::1;::::0;13966:10;13931:46;;:12;:16:::1;:30::i;13930:75::-;13907:98;;14016:32;14051:42;14080:12;14051:24;14062:12;;14051:6;:10;;:24;;;;:::i;:42::-;14016:77:::0;-1:-1:-1;14104:14:0::1;14121:36;:6:::0;14016:77;14121:10:::1;:36::i;:::-;14104:53:::0;-1:-1:-1;14193:21:0::1;14225:24;14104:53:::0;14225:16:::1;:24::i;:::-;14260:20;14283:41;:21;14309:14:::0;14283:25:::1;:41::i;:::-;14260:64;;14335:19;14356:48;14373:30;14390:12;;14373;:16;;:30;;;;:::i;:::-;14356:12:::0;;:16:::1;:48::i;:::-;14335:69;;14415:29;14447;14463:12;;14447:11;:15;;:29;;;;:::i;:::-;14415:61:::0;-1:-1:-1;14490:34:0;;14487:123:::1;;14588:18;::::0;14526:81:::1;::::0;14539:24;;14565:21;;-1:-1:-1;;;;;14588:18:0::1;14526:12;:81::i;:::-;14669:12;::::0;14620:23:::1;::::0;14646:36:::1;::::0;:18:::1;:11:::0;14662:1:::1;14646:15;:18::i;:36::-;14620:62:::0;-1:-1:-1;14696:19:0;;14693:79:::1;;14725:18;::::0;14717:53:::1;::::0;-1:-1:-1;;;;;14725:18:0;;::::1;::::0;14717:53;::::1;;;::::0;14754:15;;14725:18:::1;14717:53:::0;14725:18;14717:53;14754:15;14725:18;14717:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14693:79;14829:10;::::0;14782:21:::1;::::0;14806:34:::1;::::0;:18:::1;:11:::0;14822:1:::1;14806:15;:18::i;:34::-;14782:58:::0;-1:-1:-1;14854:17:0;;14851:53:::1;;14873:29;14888:13;14873:14;:29::i;:::-;14937:21;14972:25:::0;;14969:84:::1;;15007:20;::::0;14999:52:::1;::::0;-1:-1:-1;;;;;15007:20:0;;::::1;::::0;14999:52;::::1;;;::::0;15038:12;;15007:20:::1;14999:52:::0;15007:20;14999:52;15038:12;15007:20;14999:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14969:84;-1:-1:-1::0;;5412:8:0;:16;;-1:-1:-1;;5412:16:0;;;-1:-1:-1;;;;;;;;;13836:1224:0:o;17081:268::-;17196:4;;17160:7;;-1:-1:-1;;;;;17183:17:0;;;17196:4;;17183:17;:41;;;;;17222:1;17204:7;;:20;17183:41;17180:62;;;-1:-1:-1;17233:7:0;;17226:14;;17180:62;17265:4;;-1:-1:-1;;;;;17255:14:0;;;17265:4;;17255:14;:39;;;;;17292:1;17273:8;;:21;17255:39;17252:61;;;-1:-1:-1;17303:8:0;;17296:15;;17252:61;-1:-1:-1;17330:11:0;;17081:268;;;;:::o;15436:434::-;15526:16;;;15540:1;15526:16;;;;;;;;15502:21;;15526:16;;;;;;;;;;-1:-1:-1;15526:16:0;15502:40;;15571:4;15553;15558:1;15553:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15553:23:0;;;:7;;;;;;;;;;:23;;;;15597:6;;:13;;;-1:-1:-1;;;15597:13:0;;;;:6;;;;;:11;;:13;;;;;15553:7;;15597:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15587:4;15592:1;15587:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15587:23:0;;;:7;;;;;;;;;:23;15653:6;;15621:53;;15638:4;;15653:6;15662:11;15621:8;:53::i;:::-;15685:6;;:177;;-1:-1:-1;;;15685:177:0;;-1:-1:-1;;;;;15685:6:0;;;;:57;;:177;;15757:11;;15685:6;;15799:4;;15826;;15846:15;;15685:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15491:379;15436:434;:::o;15068:360::-;15199:6;;15167:53;;15184:4;;-1:-1:-1;;;;;15199:6:0;15208:11;15167:8;:53::i;:::-;15231:6;;:189;;-1:-1:-1;;;15231:189:0;;15294:4;15231:189;;;13722:34:1;13772:18;;;13765:34;;;15231:6:0;13815:18:1;;;13808:34;;;13858:18;;;13851:34;-1:-1:-1;;;;;13922:15:1;;;13901:19;;;13894:44;15404:15:0;13954:19:1;;;13947:35;15231:6:0;;;;:22;;15261:9;;13656:19:1;;15231:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20026:507::-;20120:6;;20113:39;;-1:-1:-1;;;20113:39:0;;20146:4;20113:39;;;2140:51:1;20089:21:0;;-1:-1:-1;;;;;20120:6:0;;20113:24;;2113:18:1;;20113:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20191:6;;20089:63;;-1:-1:-1;20163:50:0;;20180:9;;-1:-1:-1;;;;;20191:6:0;20207:4;20163:16;:50::i;:::-;20248:6;;20241:39;;-1:-1:-1;;;20241:39:0;;20274:4;20241:39;;;2140:51:1;20224:14:0;;20241:58;;20285:13;;-1:-1:-1;;;;;20248:6:0;;20241:24;;2113:18:1;;20241:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:58::-;20327:14;;20224:75;;-1:-1:-1;20327:26:0;;20224:75;20327:18;:26::i;:::-;20310:14;:43;20383:16;;:28;;20404:6;20383:20;:28::i;:::-;20364:16;:47;20512:11;;20464:31;;20442:83;;20464:60;;:43;;20500:6;20464:35;:43::i;:60::-;20442:17;;;:21;:83::i;:::-;20422:17;:103;-1:-1:-1;;;20026:507:0:o;15878:401::-;16001:16;;;16015:1;16001:16;;;;;;;;15977:21;;16001:16;;;;;;;;-1:-1:-1;;16038:6:0;;:13;;;-1:-1:-1;;;16038:13:0;;;;15977:40;;-1:-1:-1;;;;;;16038:6:0;;;;:11;;-1:-1:-1;16038:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16028:4;16033:1;16028:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;16028:23:0;;;-1:-1:-1;;;;;16028:23:0;;;;;16080:5;16062:4;16067:1;16062:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16062:24:0;;;:7;;;;;;;;;:24;16097:6;;:174;;-1:-1:-1;;;16097:174:0;;:6;;;:57;;16162:9;;16097:174;;:6;;16203:4;;16230:9;;16255:15;;16097:174;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15966:313;15878:401;;;:::o;14:592:1:-;127:6;135;143;151;159;167;175;228:3;216:9;207:7;203:23;199:33;196:53;;;245:1;242;235:12;196:53;-1:-1:-1;;268:23:1;;;338:2;323:18;;310:32;;-1:-1:-1;389:2:1;374:18;;361:32;;440:2;425:18;;412:32;;-1:-1:-1;491:3:1;476:19;;463:33;;-1:-1:-1;543:3:1;528:19;;515:33;;-1:-1:-1;595:3:1;580:19;567:33;;-1:-1:-1;14:592:1;-1:-1:-1;14:592:1:o;611:548::-;723:4;752:2;781;770:9;763:21;813:6;807:13;856:6;851:2;840:9;836:18;829:34;881:1;891:140;905:6;902:1;899:13;891:140;;;1000:14;;;996:23;;990:30;966:17;;;985:2;962:26;955:66;920:10;;891:140;;;895:3;1080:1;1075:2;1066:6;1055:9;1051:22;1047:31;1040:42;1150:2;1143;1139:7;1134:2;1126:6;1122:15;1118:29;1107:9;1103:45;1099:54;1091:62;;;;611:548;;;;:::o;1346:131::-;-1:-1:-1;;;;;1421:31:1;;1411:42;;1401:70;;1467:1;1464;1457:12;1482:315;1550:6;1558;1611:2;1599:9;1590:7;1586:23;1582:32;1579:52;;;1627:1;1624;1617:12;1579:52;1666:9;1653:23;1685:31;1710:5;1685:31;:::i;:::-;1735:5;1787:2;1772:18;;;;1759:32;;-1:-1:-1;;;1482:315:1:o;2202:456::-;2279:6;2287;2295;2348:2;2336:9;2327:7;2323:23;2319:32;2316:52;;;2364:1;2361;2354:12;2316:52;2403:9;2390:23;2422:31;2447:5;2422:31;:::i;:::-;2472:5;-1:-1:-1;2529:2:1;2514:18;;2501:32;2542:33;2501:32;2542:33;:::i;:::-;2202:456;;2594:7;;-1:-1:-1;;;2648:2:1;2633:18;;;;2620:32;;2202:456::o;2663:247::-;2722:6;2775:2;2763:9;2754:7;2750:23;2746:32;2743:52;;;2791:1;2788;2781:12;2743:52;2830:9;2817:23;2849:31;2874:5;2849:31;:::i;2915:248::-;2983:6;2991;3044:2;3032:9;3023:7;3019:23;3015:32;3012:52;;;3060:1;3057;3050:12;3012:52;-1:-1:-1;;3083:23:1;;;3153:2;3138:18;;;3125:32;;-1:-1:-1;2915:248:1:o;3357:316::-;3434:6;3442;3450;3503:2;3491:9;3482:7;3478:23;3474:32;3471:52;;;3519:1;3516;3509:12;3471:52;-1:-1:-1;;3542:23:1;;;3612:2;3597:18;;3584:32;;-1:-1:-1;3663:2:1;3648:18;;;3635:32;;3357:316;-1:-1:-1;3357:316:1:o;3678:118::-;3764:5;3757:13;3750:21;3743:5;3740:32;3730:60;;3786:1;3783;3776:12;3801:382;3866:6;3874;3927:2;3915:9;3906:7;3902:23;3898:32;3895:52;;;3943:1;3940;3933:12;3895:52;3982:9;3969:23;4001:31;4026:5;4001:31;:::i;:::-;4051:5;-1:-1:-1;4108:2:1;4093:18;;4080:32;4121:30;4080:32;4121:30;:::i;:::-;4170:7;4160:17;;;3801:382;;;;;:::o;4188:529::-;4265:6;4273;4281;4334:2;4322:9;4313:7;4309:23;4305:32;4302:52;;;4350:1;4347;4340:12;4302:52;4389:9;4376:23;4408:31;4433:5;4408:31;:::i;:::-;4458:5;-1:-1:-1;4515:2:1;4500:18;;4487:32;4528:33;4487:32;4528:33;:::i;:::-;4580:7;-1:-1:-1;4639:2:1;4624:18;;4611:32;4652:33;4611:32;4652:33;:::i;:::-;4704:7;4694:17;;;4188:529;;;;;:::o;5046:388::-;5114:6;5122;5175:2;5163:9;5154:7;5150:23;5146:32;5143:52;;;5191:1;5188;5181:12;5143:52;5230:9;5217:23;5249:31;5274:5;5249:31;:::i;:::-;5299:5;-1:-1:-1;5356:2:1;5341:18;;5328:32;5369:33;5328:32;5369:33;:::i;5699:329::-;5901:2;5883:21;;;5940:1;5920:18;;;5913:29;-1:-1:-1;;;5973:2:1;5958:18;;5951:36;6019:2;6004:18;;5699:329::o;7147:245::-;7214:6;7267:2;7255:9;7246:7;7242:23;7238:32;7235:52;;;7283:1;7280;7273:12;7235:52;7315:9;7309:16;7334:28;7356:5;7334:28;:::i;7613:127::-;7674:10;7669:3;7665:20;7662:1;7655:31;7705:4;7702:1;7695:15;7729:4;7726:1;7719:15;7745:217;7785:1;7811;7801:132;;7855:10;7850:3;7846:20;7843:1;7836:31;7890:4;7887:1;7880:15;7918:4;7915:1;7908:15;7801:132;-1:-1:-1;7947:9:1;;7745:217::o;8775:128::-;8842:9;;;8863:11;;;8860:37;;;8877:18;;:::i;8908:168::-;8981:9;;;9012;;9029:15;;;9023:22;;9009:37;8999:71;;9050:18;;:::i;9081:184::-;9151:6;9204:2;9192:9;9183:7;9179:23;9175:32;9172:52;;;9220:1;9217;9210:12;9172:52;-1:-1:-1;9243:16:1;;9081:184;-1:-1:-1;9081:184:1:o;9270:125::-;9335:9;;;9356:10;;;9353:36;;;9369:18;;:::i;11676:127::-;11737:10;11732:3;11728:20;11725:1;11718:31;11768:4;11765:1;11758:15;11792:4;11789:1;11782:15;11808:127;11869:10;11864:3;11860:20;11857:1;11850:31;11900:4;11897:1;11890:15;11924:4;11921:1;11914:15;12072:251;12142:6;12195:2;12183:9;12174:7;12170:23;12166:32;12163:52;;;12211:1;12208;12201:12;12163:52;12243:9;12237:16;12262:31;12287:5;12262:31;:::i;12328:461::-;12381:3;12419:5;12413:12;12446:6;12441:3;12434:19;12472:4;12501:2;12496:3;12492:12;12485:19;;12538:2;12531:5;12527:14;12559:1;12569:195;12583:6;12580:1;12577:13;12569:195;;;12648:13;;-1:-1:-1;;;;;12644:39:1;12632:52;;12704:12;;;;12739:15;;;;12680:1;12598:9;12569:195;;;-1:-1:-1;12780:3:1;;12328:461;-1:-1:-1;;;;;12328:461:1:o;12794:582::-;13093:6;13082:9;13075:25;13136:6;13131:2;13120:9;13116:18;13109:34;13179:3;13174:2;13163:9;13159:18;13152:31;13056:4;13200:57;13252:3;13241:9;13237:19;13229:6;13200:57;:::i;:::-;-1:-1:-1;;;;;13293:32:1;;;;13288:2;13273:18;;13266:60;-1:-1:-1;13357:3:1;13342:19;13335:35;13192:65;12794:582;-1:-1:-1;;;12794:582:1:o;13993:306::-;14081:6;14089;14097;14150:2;14138:9;14129:7;14125:23;14121:32;14118:52;;;14166:1;14163;14156:12;14118:52;14195:9;14189:16;14179:26;;14245:2;14234:9;14230:18;14224:25;14214:35;;14289:2;14278:9;14274:18;14268:25;14258:35;;13993:306;;;;;:::o;14304:510::-;14575:6;14564:9;14557:25;14618:3;14613:2;14602:9;14598:18;14591:31;14538:4;14639:57;14691:3;14680:9;14676:19;14668:6;14639:57;:::i;:::-;-1:-1:-1;;;;;14732:32:1;;;;14727:2;14712:18;;14705:60;-1:-1:-1;14796:2:1;14781:18;14774:34;14631:65;14304:510;-1:-1:-1;;14304:510:1:o

Swarm Source

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