ETH Price: $3,169.30 (+2.86%)

Token

Rex Inu (REX)
 

Overview

Max Total Supply

10,000,000,000 REX

Holders

269

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
5,367,997.055294232 REX

Value
$0.00
0xAe2B17d0608372234e44BC327EE0aAfad7032dE9
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:
RexInu

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-18
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}  

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

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

contract RexInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant _tTotal = 1e10 * 10**9;
    
    uint256 private _buyProjectFee = 4;
    uint256 private _previousBuyProjectFee = _buyProjectFee;
    uint256 private _buyLiquidityFee = 5;
    uint256 private _previousBuyLiquidityFee = _buyLiquidityFee;
    uint256 private _buyRewardFee = 1;
    uint256 private _previousBuyRewardFee = _buyRewardFee;
    
    uint256 private _sellProjectFee = 14;
    uint256 private _previousSellProjectFee = _sellProjectFee;
    uint256 private _sellLiquidityFee = 10;
    uint256 private _previousSellLiquidityFee = _sellLiquidityFee;
    uint256 private _sellRewardFee = 4;
    uint256 private _previousSellRewardFee = _sellRewardFee;

    uint256 private tokensForReward;
    uint256 private tokensForProject;
    uint256 private tokensForLiquidity;

    address payable private _rewardWallet;
    address payable private _projectWallet;
    address payable private _liquidityWallet;
    
    string private constant _name = "Rex Inu";
    string private constant _symbol = "REX";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private swapping;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private tradingActiveBlock = 0; // 0 means trading is not active
    uint256 private blocksToBlacklist = 10;
    uint256 private _maxBuyAmount = _tTotal;
    uint256 private _maxSellAmount = _tTotal;
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private swapTokensAtAmount = 0;
    
    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event MaxSellAmountUpdated(uint _maxSellAmount);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _projectWallet = payable(0x95111BDB47E39Bc9AbBDB582a00aC789F33b089b);
        _liquidityWallet = payable(address(0xdead));
        _rewardWallet = payable(0x5BBe7aE322254Cc0e818212d6102829284A7916C);
        _rOwned[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_projectWallet] = true;
        _isExcludedFromFee[_liquidityWallet] = true;
        _isExcludedFromFee[_rewardWallet] = true;
        emit Transfer(address(0x433cAEaB78ba8B9F5ab6736A436A81C47A679244), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function setSwapEnabled(bool onoff) external onlyOwner(){
        swapEnabled = onoff;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool takeFee = false;
        bool shouldSwap = false;
        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            require(!bots[from] && !bots[to]);

            takeFee = true;
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] && cooldownEnabled) {
                require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxBuyAmount.");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount.");
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !_isExcludedFromFee[from] && cooldownEnabled) {
                require(amount <= _maxSellAmount, "Transfer amount exceeds the maxSellAmount.");
                shouldSwap = true;
            }
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = (contractTokenBalance > swapTokensAtAmount) && shouldSwap;

        if (canSwap && swapEnabled && !swapping && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        _tokenTransfer(from,to,amount,takeFee, shouldSwap);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForReward + tokensForProject;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForReward = ethBalance.mul(tokensForReward).div(totalTokensToSwap);
        uint256 ethForProject = ethBalance.mul(tokensForProject).div(totalTokensToSwap);
        
        
        uint256 ethForLiquidity = ethBalance - ethForReward - ethForProject;
        
        
        tokensForLiquidity = 0;
        tokensForReward = 0;
        tokensForProject = 0;
        
        (success,) = address(_rewardWallet).call{value: ethForReward}("");
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        
        
        (success,) = address(_projectWallet).call{value: address(this).balance}("");
    }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _liquidityWallet,
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _projectWallet.transfer(amount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxBuyAmount = 5e7 * 10**9;
        _maxSellAmount = 5e7 * 10**9;
        _maxWalletAmount = 1e8 * 10**9;
        swapTokensAtAmount = 5e6 * 10**9;
        tradingOpen = true;
        tradingActiveBlock = block.number;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function setMaxBuyAmount(uint256 maxBuy) public onlyOwner {
        _maxBuyAmount = maxBuy;
    }

    function setMaxSellAmount(uint256 maxSell) public onlyOwner {
        _maxSellAmount = maxSell;
    }
    
    function setMaxWalletAmount(uint256 maxToken) public onlyOwner {
        _maxWalletAmount = maxToken;
    }
    
    function setSwapTokensAtAmount(uint256 newAmount) public onlyOwner {
        require(newAmount >= 1e3 * 10**9, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= 5e6 * 10**9, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
    }

    function setProjectWallet(address projectWallet) public onlyOwner() {
        require(projectWallet != address(0), "projectWallet address cannot be 0");
        _isExcludedFromFee[_projectWallet] = false;
        _projectWallet = payable(projectWallet);
        _isExcludedFromFee[_projectWallet] = true;
    }

    function setRewardWallet(address rewardWallet) public onlyOwner() {
        require(rewardWallet != address(0), "rewardWallet address cannot be 0");
        _isExcludedFromFee[_rewardWallet] = false;
        _rewardWallet = payable(rewardWallet);
        _isExcludedFromFee[_rewardWallet] = true;
    }

    function setLiquidityWallet(address liquidityWallet) public onlyOwner() {
        require(liquidityWallet != address(0), "liquidityWallet address cannot be 0");
        _isExcludedFromFee[_liquidityWallet] = false;
        _liquidityWallet = payable(liquidityWallet);
        _isExcludedFromFee[_liquidityWallet] = true;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setBuyFee(uint256 buyProjectFee, uint256 buyLiquidityFee, uint256 buyRewardFee) external onlyOwner {
        require(buyProjectFee + buyLiquidityFee + buyRewardFee <= 30, "Must keep buy taxes below 30%");
        _buyProjectFee = buyProjectFee;
        _buyLiquidityFee = buyLiquidityFee;
        _buyRewardFee = buyRewardFee;
    }

    function setSellFee(uint256 sellProjectFee, uint256 sellLiquidityFee, uint256 sellRewardFee) external onlyOwner {
        require(sellProjectFee + sellLiquidityFee + sellRewardFee <= 60, "Must keep sell taxes below 60%");
        _sellProjectFee = sellProjectFee;
        _sellLiquidityFee = sellLiquidityFee;
        _sellRewardFee = sellRewardFee;
    }

    function setBlocksToBlacklist(uint256 blocks) public onlyOwner {
        blocksToBlacklist = blocks;
    }

    function removeAllFee() private {
        if(_buyProjectFee == 0 && _buyLiquidityFee == 0 && _buyRewardFee == 0 && _sellProjectFee == 0 && _sellLiquidityFee == 0 && _sellRewardFee == 0) return;
        
        _previousBuyProjectFee = _buyProjectFee;
        _previousBuyLiquidityFee = _buyLiquidityFee;
        _previousBuyRewardFee = _buyRewardFee;
        _previousSellProjectFee = _sellProjectFee;
        _previousSellLiquidityFee = _sellLiquidityFee;
        _previousSellRewardFee = _sellRewardFee;
        
        _buyProjectFee = 0;
        _buyLiquidityFee = 0;
        _buyRewardFee = 0;
        _sellProjectFee = 0;
        _sellLiquidityFee = 0;
        _sellRewardFee = 0;
    }
    
    function restoreAllFee() private {
        _buyProjectFee = _previousBuyProjectFee;
        _buyLiquidityFee = _previousBuyLiquidityFee;
        _buyRewardFee = _previousBuyRewardFee;
        _sellProjectFee = _previousSellProjectFee;
        _sellLiquidityFee = _previousSellLiquidityFee;
        _sellRewardFee = _previousSellRewardFee;
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private {
        if(!takeFee) {
            removeAllFee();
        } else {
            amount = _takeFees(sender, amount, isSell);
        }

        _transferStandard(sender, recipient, amount);
        
        if(!takeFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) {
        uint256 _totalFees;
        uint256 pjctFee;
        uint256 liqFee;
        uint256 rwrdFee;
        if(tradingActiveBlock + blocksToBlacklist >= block.number){
            _totalFees = 99;
            liqFee = 92;
        } else {
            _totalFees = _getTotalFees(isSell);
            if (isSell) {
                pjctFee = _sellProjectFee;
                liqFee = _sellLiquidityFee;
                rwrdFee = _sellRewardFee;
            } else {
                pjctFee = _buyProjectFee;
                liqFee = _buyLiquidityFee;
                rwrdFee = _buyRewardFee;
            }
        }

        uint256 fees = amount.mul(_totalFees).div(100);
        tokensForReward += fees * rwrdFee / _totalFees;
        tokensForProject += fees * pjctFee / _totalFees;
        tokensForLiquidity += fees * liqFee / _totalFees;
            
        if(fees > 0) {
            _transferStandard(sender, address(this), fees);
        }
            
        return amount -= fees;
    }

    receive() external payable {}
    
    function manualswap() public onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() public onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function withdrawStuckETH() external onlyOwner {
        require(!tradingOpen, "Can only withdraw if trading hasn't started");
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function _getTotalFees(bool isSell) private view returns(uint256) {
        if (isSell) {
            return _sellProjectFee + _sellLiquidityFee + _sellRewardFee;
        }
        return _buyProjectFee + _buyLiquidityFee + _buyRewardFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"MaxSellAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setBlocksToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyProjectFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"buyRewardFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"projectWallet","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellProjectFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellRewardFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260046007819055600881905560056009819055600a9081556001600b819055600c55600e600d8190558055600f81905560108190556011829055601291909155601a805462ffffff60b01b191690556000601b819055601c91909155678ac7230489e80000601d819055601e819055601f556020553480156200008657600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601780546001600160a01b03199081167395111bdb47e39bc9abbdb582a00ac789f33b089b1790915560188054821661dead17905560168054909116735bbe7ae322254cc0e818212d6102829284a7916c179055678ac7230489e8000060026000620001313390565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600460006200016b6200025d60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155601754821684528284208054861682179055601854821684528284208054861682179055601654909116835291208054909216179055620001ee3390565b6001600160a01b031673433caeab78ba8b9f5ab6736a436a81c47a6792446001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e800006040516200024f91815260200190565b60405180910390a36200026c565b6000546001600160a01b031690565b6128fb806200027c6000396000f3fe6080604052600436106101dc5760003560e01c8063715018a611610102578063c9567bf911610095578063e99c9d0911610064578063e99c9d09146105a1578063ea2f0b37146105c1578063f34eb0b8146105e1578063f5648a4f1461060157600080fd5b8063c9567bf914610506578063dd62ed3e1461051b578063e01af92c14610561578063e6f7ef4d1461058157600080fd5b8063a9059cbb116100d1578063a9059cbb14610491578063afa4f3b2146104b1578063b515566a146104d1578063c3c8cd80146104f157600080fd5b8063715018a6146104085780638a7804471461041d5780638da5cb5b1461043d57806395d89b411461046557600080fd5b806327a14fc21161017a5780635932ead1116101495780635932ead11461037d5780635958621e1461039d5780636fc3eaec146103bd57806370a08231146103d257600080fd5b806327a14fc214610301578063296f0a0c14610321578063313ce56714610341578063437823ec1461035d57600080fd5b80631d865c30116101b65780631d865c301461027f57806323b872dd146102a157806325519cf2146102c1578063273123b7146102e157600080fd5b806306fdde03146101e8578063095ea7b31461022a57806318160ddd1461025a57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600781526652657820496e7560c81b60208201525b60405161022191906126cd565b60405180910390f35b34801561023657600080fd5b5061024a6102453660046124f8565b610616565b6040519015158152602001610221565b34801561026657600080fd5b50678ac7230489e800005b604051908152602001610221565b34801561028b57600080fd5b5061029f61029a36600461263a565b61062d565b005b3480156102ad57600080fd5b5061024a6102bc3660046124b8565b6106d3565b3480156102cd57600080fd5b5061029f6102dc36600461263a565b61073c565b3480156102ed57600080fd5b5061029f6102fc366004612448565b6107d9565b34801561030d57600080fd5b5061029f61031c366004612622565b610824565b34801561032d57600080fd5b5061029f61033c366004612448565b610853565b34801561034d57600080fd5b5060405160098152602001610221565b34801561036957600080fd5b5061029f610378366004612448565b61092f565b34801561038957600080fd5b5061029f6103983660046125ea565b61097d565b3480156103a957600080fd5b5061029f6103b8366004612448565b6109c5565b3480156103c957600080fd5b5061029f610a95565b3480156103de57600080fd5b506102716103ed366004612448565b6001600160a01b031660009081526002602052604090205490565b34801561041457600080fd5b5061029f610acc565b34801561042957600080fd5b5061029f610438366004612448565b610b40565b34801561044957600080fd5b506000546040516001600160a01b039091168152602001610221565b34801561047157600080fd5b506040805180820190915260038152620a48ab60eb1b6020820152610214565b34801561049d57600080fd5b5061024a6104ac3660046124f8565b610c1a565b3480156104bd57600080fd5b5061029f6104cc366004612622565b610c27565b3480156104dd57600080fd5b5061029f6104ec366004612523565b610d3d565b3480156104fd57600080fd5b5061029f610de1565b34801561051257600080fd5b5061029f610e24565b34801561052757600080fd5b50610271610536366004612480565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561056d57600080fd5b5061029f61057c3660046125ea565b6111f7565b34801561058d57600080fd5b5061029f61059c366004612622565b61123f565b3480156105ad57600080fd5b5061029f6105bc366004612622565b61126e565b3480156105cd57600080fd5b5061029f6105dc366004612448565b61129d565b3480156105ed57600080fd5b5061029f6105fc366004612622565b6112e8565b34801561060d57600080fd5b5061029f611317565b60006106233384846113fc565b5060015b92915050565b6000546001600160a01b031633146106605760405162461bcd60e51b815260040161065790612720565b60405180910390fd5b603c8161066d84866127c5565b61067791906127c5565b11156106c55760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772036302500006044820152606401610657565b600d92909255600f55601155565b60006106e0848484611521565b610732843361072d8560405180606001604052806028815260200161289e602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611aba565b6113fc565b5060019392505050565b6000546001600160a01b031633146107665760405162461bcd60e51b815260040161065790612720565b601e8161077384866127c5565b61077d91906127c5565b11156107cb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203330250000006044820152606401610657565b600792909255600955600b55565b6000546001600160a01b031633146108035760405162461bcd60e51b815260040161065790612720565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b0316331461084e5760405162461bcd60e51b815260040161065790612720565b601f55565b6000546001600160a01b0316331461087d5760405162461bcd60e51b815260040161065790612720565b6001600160a01b0381166108df5760405162461bcd60e51b815260206004820152602360248201527f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260448201526206520360ec1b6064820152608401610657565b601880546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b031633146109595760405162461bcd60e51b815260040161065790612720565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146109a75760405162461bcd60e51b815260040161065790612720565b601a8054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b031633146109ef5760405162461bcd60e51b815260040161065790612720565b6001600160a01b038116610a455760405162461bcd60e51b815260206004820181905260248201527f72657761726457616c6c657420616464726573732063616e6e6f7420626520306044820152606401610657565b601680546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314610abf5760405162461bcd60e51b815260040161065790612720565b47610ac981611af4565b50565b6000546001600160a01b03163314610af65760405162461bcd60e51b815260040161065790612720565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161065790612720565b6001600160a01b038116610bca5760405162461bcd60e51b815260206004820152602160248201527f70726f6a65637457616c6c657420616464726573732063616e6e6f74206265206044820152600360fc1b6064820152608401610657565b601780546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000610623338484611521565b6000546001600160a01b03163314610c515760405162461bcd60e51b815260040161065790612720565b64e8d4a51000811015610cc45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610657565b6611c37937e08000811115610d385760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610657565b602055565b6000546001600160a01b03163314610d675760405162461bcd60e51b815260040161065790612720565b60005b8151811015610ddd57600160056000848481518110610d9957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610dd581612833565b915050610d6a565b5050565b6000546001600160a01b03163314610e0b5760405162461bcd60e51b815260040161065790612720565b30600090815260026020526040902054610ac981611b2e565b6000546001600160a01b03163314610e4e5760405162461bcd60e51b815260040161065790612720565b601a54600160a01b900460ff1615610ea85760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610657565b601980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610ee43082678ac7230489e800006113fc565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1d57600080fd5b505afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190612464565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190612464565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190612464565b601a80546001600160a01b039283166001600160a01b03199091161790556019541663f305d719473061109d816001600160a01b031660009081526002602052604090205490565b6000806110b26000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016110d496959493929190612692565b6060604051808303818588803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111269190612665565b5050601a805466b1a2bc2ec50000601d819055601e5567016345785d8a0000601f556611c37937e0800060205564ffff0000ff60a01b19811664010100000160a01b1790915543601b5560195460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b1580156111bf57600080fd5b505af11580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddd9190612606565b6000546001600160a01b031633146112215760405162461bcd60e51b815260040161065790612720565b601a8054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146112695760405162461bcd60e51b815260040161065790612720565b601c55565b6000546001600160a01b031633146112985760405162461bcd60e51b815260040161065790612720565b601e55565b6000546001600160a01b031633146112c75760405162461bcd60e51b815260040161065790612720565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146113125760405162461bcd60e51b815260040161065790612720565b601d55565b6000546001600160a01b031633146113415760405162461bcd60e51b815260040161065790612720565b601a54600160a01b900460ff16156113af5760405162461bcd60e51b815260206004820152602b60248201527f43616e206f6e6c792077697468647261772069662074726164696e672068617360448201526a1b89dd081cdd185c9d195960aa1b6064820152608401610657565b604051600090339047908381818185875af1925050503d80600081146113f1576040519150601f19603f3d011682016040523d82523d6000602084013e6113f6565b606091505b50505050565b6001600160a01b03831661145e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610657565b6001600160a01b0382166114bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610657565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166115855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610657565b6001600160a01b0382166115e75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610657565b600081116116495760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610657565b60008061165e6000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561168d57506000546001600160a01b03858116911614155b80156116a157506001600160a01b03841615155b80156116b857506001600160a01b03841661dead14155b80156116ce5750601a54600160a81b900460ff16155b15611993576001600160a01b03851660009081526005602052604090205460ff1615801561171557506001600160a01b03841660009081526005602052604090205460ff16155b61171e57600080fd5b601a54600192506001600160a01b03868116911614801561174d57506019546001600160a01b03858116911614155b801561177257506001600160a01b03841660009081526004602052604090205460ff16155b80156117875750601a54600160c01b900460ff165b156118c057601d548311156117f05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610657565b601f5483611813866001600160a01b031660009081526002602052604090205490565b61181d91906127c5565b11156118775760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610657565b6001600160a01b038416600090815260066020526040902054421161189b57600080fd5b6118a642601e6127c5565b6001600160a01b0385166000908152600660205260409020555b601a546001600160a01b0385811691161480156118eb57506019546001600160a01b03868116911614155b801561191057506001600160a01b03851660009081526004602052604090205460ff16155b80156119255750601a54600160c01b900460ff165b1561199357601e5483111561198f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610657565b5060015b6001600160a01b03851660009081526004602052604090205460ff16806119d257506001600160a01b03841660009081526004602052604090205460ff165b156119dc57600091505b3060009081526002602052604081205490506000602054821180156119fe5750825b9050808015611a165750601a54600160b81b900460ff165b8015611a2c5750601a54600160a81b900460ff16155b8015611a5157506001600160a01b03871660009081526004602052604090205460ff16155b8015611a7657506001600160a01b03861660009081526004602052604090205460ff16155b15611aa457601a805460ff60a81b1916600160a81b179055611a96611cd3565b601a805460ff60a81b191690555b611ab18787878787611f13565b50505050505050565b60008184841115611ade5760405162461bcd60e51b815260040161065791906126cd565b506000611aeb848661281c565b95945050505050565b6017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ddd573d6000803e3d6000fd5b601a805460ff60b01b1916600160b01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611b8457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611bd857600080fd5b505afa158015611bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c109190612464565b81600181518110611c3157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601954611c5791309116846113fc565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c90908590600090869030904290600401612755565b600060405180830381600087803b158015611caa57600080fd5b505af1158015611cbe573d6000803e3d6000fd5b5050601a805460ff60b01b1916905550505050565b3060009081526002602052604081205490506000601454601354601554611cfa91906127c5565b611d0491906127c5565b90506000821580611d13575081155b15611d1d57505050565b602054611d2b90600a6127fd565b831115611d4357602054611d4090600a6127fd565b92505b600060028360155486611d5691906127fd565b611d6091906127dd565b611d6a91906127dd565b90506000611d788583611f73565b905047611d8482611b2e565b6000611d904783611f73565b90506000611db387611dad60135485611fbc90919063ffffffff16565b9061203b565b90506000611dd088611dad60145486611fbc90919063ffffffff16565b9050600081611ddf848661281c565b611de9919061281c565b60006015819055601381905560148190556016546040519293506001600160a01b031691859181818185875af1925050503d8060008114611e46576040519150601f19603f3d011682016040523d82523d6000602084013e611e4b565b606091505b50909850508615801590611e5f5750600081115b15611eb257611e6e878261207d565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6017546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611eff576040519150601f19603f3d011682016040523d82523d6000602084013e611f04565b606091505b50505050505050505050505050565b81611f2557611f20612127565b611f33565b611f308584836121af565b92505b611f3e8585856122cd565b81611f6c57611f6c600854600755600a54600955600c54600b55600e54600d55601054600f55601254601155565b5050505050565b6000611fb583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611aba565b9392505050565b600082611fcb57506000610627565b6000611fd783856127fd565b905082611fe485836127dd565b14611fb55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610657565b6000611fb583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612373565b6019546120959030906001600160a01b0316846113fc565b60195460185460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926120d59230928992600092839216904290600401612692565b6060604051808303818588803b1580156120ee57600080fd5b505af1158015612102573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f6c9190612665565b6007541580156121375750600954155b80156121435750600b54155b801561214f5750600d54155b801561215b5750600f54155b80156121675750601154155b1561216e57565b6007805460085560098054600a55600b8054600c55600d8054600e55600f805460105560118054601255600095869055938590559184905583905582905555565b600080600080600043601c54601b546121c891906127c5565b106121da5760639350605c915061220f565b6121e3866123a1565b935085156121ff57600d549250600f549150601154905061220f565b60075492506009549150600b5490505b60006122206064611dad8a88611fbc565b90508461222d83836127fd565b61223791906127dd565b6013600082825461224891906127c5565b9091555085905061225985836127fd565b61226391906127dd565b6014600082825461227491906127c5565b9091555085905061228584836127fd565b61228f91906127dd565b601560008282546122a091906127c5565b909155505080156122b6576122b68930836122cd565b6122c0818961281c565b9998505050505050505050565b6001600160a01b0383166000908152600260205260409020546122f09082611f73565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461231f90826123d9565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115149085815260200190565b600081836123945760405162461bcd60e51b815260040161065791906126cd565b506000611aeb84866127dd565b600081156123c657601154600f54600d546123bc91906127c5565b61062791906127c5565b600b546009546007546123bc91906127c5565b6000806123e683856127c5565b905083811015611fb55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610657565b80356124438161287a565b919050565b600060208284031215612459578081fd5b8135611fb58161287a565b600060208284031215612475578081fd5b8151611fb58161287a565b60008060408385031215612492578081fd5b823561249d8161287a565b915060208301356124ad8161287a565b809150509250929050565b6000806000606084860312156124cc578081fd5b83356124d78161287a565b925060208401356124e78161287a565b929592945050506040919091013590565b6000806040838503121561250a578182fd5b82356125158161287a565b946020939093013593505050565b60006020808385031215612535578182fd5b823567ffffffffffffffff8082111561254c578384fd5b818501915085601f83011261255f578384fd5b81358181111561257157612571612864565b8060051b604051601f19603f8301168101818110858211171561259657612596612864565b604052828152858101935084860182860187018a10156125b4578788fd5b8795505b838610156125dd576125c981612438565b8552600195909501949386019386016125b8565b5098975050505050505050565b6000602082840312156125fb578081fd5b8135611fb58161288f565b600060208284031215612617578081fd5b8151611fb58161288f565b600060208284031215612633578081fd5b5035919050565b60008060006060848603121561264e578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612679578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000602080835283518082850152825b818110156126f9578581018301518582016040015282016126dd565b8181111561270a5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127a45784516001600160a01b03168352938301939183019160010161277f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127d8576127d861284e565b500190565b6000826127f857634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156128175761281761284e565b500290565b60008282101561282e5761282e61284e565b500390565b60006000198214156128475761284761284e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610ac957600080fd5b8015158114610ac957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122043002962b51ac958dcef0e4b70ab16cc6b8a0b76bf2916fd6c5c5de1cfa6ad8064736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063715018a611610102578063c9567bf911610095578063e99c9d0911610064578063e99c9d09146105a1578063ea2f0b37146105c1578063f34eb0b8146105e1578063f5648a4f1461060157600080fd5b8063c9567bf914610506578063dd62ed3e1461051b578063e01af92c14610561578063e6f7ef4d1461058157600080fd5b8063a9059cbb116100d1578063a9059cbb14610491578063afa4f3b2146104b1578063b515566a146104d1578063c3c8cd80146104f157600080fd5b8063715018a6146104085780638a7804471461041d5780638da5cb5b1461043d57806395d89b411461046557600080fd5b806327a14fc21161017a5780635932ead1116101495780635932ead11461037d5780635958621e1461039d5780636fc3eaec146103bd57806370a08231146103d257600080fd5b806327a14fc214610301578063296f0a0c14610321578063313ce56714610341578063437823ec1461035d57600080fd5b80631d865c30116101b65780631d865c301461027f57806323b872dd146102a157806325519cf2146102c1578063273123b7146102e157600080fd5b806306fdde03146101e8578063095ea7b31461022a57806318160ddd1461025a57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600781526652657820496e7560c81b60208201525b60405161022191906126cd565b60405180910390f35b34801561023657600080fd5b5061024a6102453660046124f8565b610616565b6040519015158152602001610221565b34801561026657600080fd5b50678ac7230489e800005b604051908152602001610221565b34801561028b57600080fd5b5061029f61029a36600461263a565b61062d565b005b3480156102ad57600080fd5b5061024a6102bc3660046124b8565b6106d3565b3480156102cd57600080fd5b5061029f6102dc36600461263a565b61073c565b3480156102ed57600080fd5b5061029f6102fc366004612448565b6107d9565b34801561030d57600080fd5b5061029f61031c366004612622565b610824565b34801561032d57600080fd5b5061029f61033c366004612448565b610853565b34801561034d57600080fd5b5060405160098152602001610221565b34801561036957600080fd5b5061029f610378366004612448565b61092f565b34801561038957600080fd5b5061029f6103983660046125ea565b61097d565b3480156103a957600080fd5b5061029f6103b8366004612448565b6109c5565b3480156103c957600080fd5b5061029f610a95565b3480156103de57600080fd5b506102716103ed366004612448565b6001600160a01b031660009081526002602052604090205490565b34801561041457600080fd5b5061029f610acc565b34801561042957600080fd5b5061029f610438366004612448565b610b40565b34801561044957600080fd5b506000546040516001600160a01b039091168152602001610221565b34801561047157600080fd5b506040805180820190915260038152620a48ab60eb1b6020820152610214565b34801561049d57600080fd5b5061024a6104ac3660046124f8565b610c1a565b3480156104bd57600080fd5b5061029f6104cc366004612622565b610c27565b3480156104dd57600080fd5b5061029f6104ec366004612523565b610d3d565b3480156104fd57600080fd5b5061029f610de1565b34801561051257600080fd5b5061029f610e24565b34801561052757600080fd5b50610271610536366004612480565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561056d57600080fd5b5061029f61057c3660046125ea565b6111f7565b34801561058d57600080fd5b5061029f61059c366004612622565b61123f565b3480156105ad57600080fd5b5061029f6105bc366004612622565b61126e565b3480156105cd57600080fd5b5061029f6105dc366004612448565b61129d565b3480156105ed57600080fd5b5061029f6105fc366004612622565b6112e8565b34801561060d57600080fd5b5061029f611317565b60006106233384846113fc565b5060015b92915050565b6000546001600160a01b031633146106605760405162461bcd60e51b815260040161065790612720565b60405180910390fd5b603c8161066d84866127c5565b61067791906127c5565b11156106c55760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772036302500006044820152606401610657565b600d92909255600f55601155565b60006106e0848484611521565b610732843361072d8560405180606001604052806028815260200161289e602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611aba565b6113fc565b5060019392505050565b6000546001600160a01b031633146107665760405162461bcd60e51b815260040161065790612720565b601e8161077384866127c5565b61077d91906127c5565b11156107cb5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203330250000006044820152606401610657565b600792909255600955600b55565b6000546001600160a01b031633146108035760405162461bcd60e51b815260040161065790612720565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b0316331461084e5760405162461bcd60e51b815260040161065790612720565b601f55565b6000546001600160a01b0316331461087d5760405162461bcd60e51b815260040161065790612720565b6001600160a01b0381166108df5760405162461bcd60e51b815260206004820152602360248201527f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260448201526206520360ec1b6064820152608401610657565b601880546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b031633146109595760405162461bcd60e51b815260040161065790612720565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146109a75760405162461bcd60e51b815260040161065790612720565b601a8054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b031633146109ef5760405162461bcd60e51b815260040161065790612720565b6001600160a01b038116610a455760405162461bcd60e51b815260206004820181905260248201527f72657761726457616c6c657420616464726573732063616e6e6f7420626520306044820152606401610657565b601680546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314610abf5760405162461bcd60e51b815260040161065790612720565b47610ac981611af4565b50565b6000546001600160a01b03163314610af65760405162461bcd60e51b815260040161065790612720565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b6a5760405162461bcd60e51b815260040161065790612720565b6001600160a01b038116610bca5760405162461bcd60e51b815260206004820152602160248201527f70726f6a65637457616c6c657420616464726573732063616e6e6f74206265206044820152600360fc1b6064820152608401610657565b601780546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000610623338484611521565b6000546001600160a01b03163314610c515760405162461bcd60e51b815260040161065790612720565b64e8d4a51000811015610cc45760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610657565b6611c37937e08000811115610d385760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610657565b602055565b6000546001600160a01b03163314610d675760405162461bcd60e51b815260040161065790612720565b60005b8151811015610ddd57600160056000848481518110610d9957634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610dd581612833565b915050610d6a565b5050565b6000546001600160a01b03163314610e0b5760405162461bcd60e51b815260040161065790612720565b30600090815260026020526040902054610ac981611b2e565b6000546001600160a01b03163314610e4e5760405162461bcd60e51b815260040161065790612720565b601a54600160a01b900460ff1615610ea85760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610657565b601980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610ee43082678ac7230489e800006113fc565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1d57600080fd5b505afa158015610f31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f559190612464565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9d57600080fd5b505afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190612464565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561101d57600080fd5b505af1158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190612464565b601a80546001600160a01b039283166001600160a01b03199091161790556019541663f305d719473061109d816001600160a01b031660009081526002602052604090205490565b6000806110b26000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016110d496959493929190612692565b6060604051808303818588803b1580156110ed57600080fd5b505af1158015611101573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111269190612665565b5050601a805466b1a2bc2ec50000601d819055601e5567016345785d8a0000601f556611c37937e0800060205564ffff0000ff60a01b19811664010100000160a01b1790915543601b5560195460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b390604401602060405180830381600087803b1580156111bf57600080fd5b505af11580156111d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddd9190612606565b6000546001600160a01b031633146112215760405162461bcd60e51b815260040161065790612720565b601a8054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146112695760405162461bcd60e51b815260040161065790612720565b601c55565b6000546001600160a01b031633146112985760405162461bcd60e51b815260040161065790612720565b601e55565b6000546001600160a01b031633146112c75760405162461bcd60e51b815260040161065790612720565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146113125760405162461bcd60e51b815260040161065790612720565b601d55565b6000546001600160a01b031633146113415760405162461bcd60e51b815260040161065790612720565b601a54600160a01b900460ff16156113af5760405162461bcd60e51b815260206004820152602b60248201527f43616e206f6e6c792077697468647261772069662074726164696e672068617360448201526a1b89dd081cdd185c9d195960aa1b6064820152608401610657565b604051600090339047908381818185875af1925050503d80600081146113f1576040519150601f19603f3d011682016040523d82523d6000602084013e6113f6565b606091505b50505050565b6001600160a01b03831661145e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610657565b6001600160a01b0382166114bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610657565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166115855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610657565b6001600160a01b0382166115e75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610657565b600081116116495760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610657565b60008061165e6000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561168d57506000546001600160a01b03858116911614155b80156116a157506001600160a01b03841615155b80156116b857506001600160a01b03841661dead14155b80156116ce5750601a54600160a81b900460ff16155b15611993576001600160a01b03851660009081526005602052604090205460ff1615801561171557506001600160a01b03841660009081526005602052604090205460ff16155b61171e57600080fd5b601a54600192506001600160a01b03868116911614801561174d57506019546001600160a01b03858116911614155b801561177257506001600160a01b03841660009081526004602052604090205460ff16155b80156117875750601a54600160c01b900460ff165b156118c057601d548311156117f05760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610657565b601f5483611813866001600160a01b031660009081526002602052604090205490565b61181d91906127c5565b11156118775760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610657565b6001600160a01b038416600090815260066020526040902054421161189b57600080fd5b6118a642601e6127c5565b6001600160a01b0385166000908152600660205260409020555b601a546001600160a01b0385811691161480156118eb57506019546001600160a01b03868116911614155b801561191057506001600160a01b03851660009081526004602052604090205460ff16155b80156119255750601a54600160c01b900460ff165b1561199357601e5483111561198f5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610657565b5060015b6001600160a01b03851660009081526004602052604090205460ff16806119d257506001600160a01b03841660009081526004602052604090205460ff165b156119dc57600091505b3060009081526002602052604081205490506000602054821180156119fe5750825b9050808015611a165750601a54600160b81b900460ff165b8015611a2c5750601a54600160a81b900460ff16155b8015611a5157506001600160a01b03871660009081526004602052604090205460ff16155b8015611a7657506001600160a01b03861660009081526004602052604090205460ff16155b15611aa457601a805460ff60a81b1916600160a81b179055611a96611cd3565b601a805460ff60a81b191690555b611ab18787878787611f13565b50505050505050565b60008184841115611ade5760405162461bcd60e51b815260040161065791906126cd565b506000611aeb848661281c565b95945050505050565b6017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ddd573d6000803e3d6000fd5b601a805460ff60b01b1916600160b01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611b8457634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611bd857600080fd5b505afa158015611bec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c109190612464565b81600181518110611c3157634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601954611c5791309116846113fc565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c90908590600090869030904290600401612755565b600060405180830381600087803b158015611caa57600080fd5b505af1158015611cbe573d6000803e3d6000fd5b5050601a805460ff60b01b1916905550505050565b3060009081526002602052604081205490506000601454601354601554611cfa91906127c5565b611d0491906127c5565b90506000821580611d13575081155b15611d1d57505050565b602054611d2b90600a6127fd565b831115611d4357602054611d4090600a6127fd565b92505b600060028360155486611d5691906127fd565b611d6091906127dd565b611d6a91906127dd565b90506000611d788583611f73565b905047611d8482611b2e565b6000611d904783611f73565b90506000611db387611dad60135485611fbc90919063ffffffff16565b9061203b565b90506000611dd088611dad60145486611fbc90919063ffffffff16565b9050600081611ddf848661281c565b611de9919061281c565b60006015819055601381905560148190556016546040519293506001600160a01b031691859181818185875af1925050503d8060008114611e46576040519150601f19603f3d011682016040523d82523d6000602084013e611e4b565b606091505b50909850508615801590611e5f5750600081115b15611eb257611e6e878261207d565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6017546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611eff576040519150601f19603f3d011682016040523d82523d6000602084013e611f04565b606091505b50505050505050505050505050565b81611f2557611f20612127565b611f33565b611f308584836121af565b92505b611f3e8585856122cd565b81611f6c57611f6c600854600755600a54600955600c54600b55600e54600d55601054600f55601254601155565b5050505050565b6000611fb583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611aba565b9392505050565b600082611fcb57506000610627565b6000611fd783856127fd565b905082611fe485836127dd565b14611fb55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610657565b6000611fb583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612373565b6019546120959030906001600160a01b0316846113fc565b60195460185460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926120d59230928992600092839216904290600401612692565b6060604051808303818588803b1580156120ee57600080fd5b505af1158015612102573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f6c9190612665565b6007541580156121375750600954155b80156121435750600b54155b801561214f5750600d54155b801561215b5750600f54155b80156121675750601154155b1561216e57565b6007805460085560098054600a55600b8054600c55600d8054600e55600f805460105560118054601255600095869055938590559184905583905582905555565b600080600080600043601c54601b546121c891906127c5565b106121da5760639350605c915061220f565b6121e3866123a1565b935085156121ff57600d549250600f549150601154905061220f565b60075492506009549150600b5490505b60006122206064611dad8a88611fbc565b90508461222d83836127fd565b61223791906127dd565b6013600082825461224891906127c5565b9091555085905061225985836127fd565b61226391906127dd565b6014600082825461227491906127c5565b9091555085905061228584836127fd565b61228f91906127dd565b601560008282546122a091906127c5565b909155505080156122b6576122b68930836122cd565b6122c0818961281c565b9998505050505050505050565b6001600160a01b0383166000908152600260205260409020546122f09082611f73565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461231f90826123d9565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115149085815260200190565b600081836123945760405162461bcd60e51b815260040161065791906126cd565b506000611aeb84866127dd565b600081156123c657601154600f54600d546123bc91906127c5565b61062791906127c5565b600b546009546007546123bc91906127c5565b6000806123e683856127c5565b905083811015611fb55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610657565b80356124438161287a565b919050565b600060208284031215612459578081fd5b8135611fb58161287a565b600060208284031215612475578081fd5b8151611fb58161287a565b60008060408385031215612492578081fd5b823561249d8161287a565b915060208301356124ad8161287a565b809150509250929050565b6000806000606084860312156124cc578081fd5b83356124d78161287a565b925060208401356124e78161287a565b929592945050506040919091013590565b6000806040838503121561250a578182fd5b82356125158161287a565b946020939093013593505050565b60006020808385031215612535578182fd5b823567ffffffffffffffff8082111561254c578384fd5b818501915085601f83011261255f578384fd5b81358181111561257157612571612864565b8060051b604051601f19603f8301168101818110858211171561259657612596612864565b604052828152858101935084860182860187018a10156125b4578788fd5b8795505b838610156125dd576125c981612438565b8552600195909501949386019386016125b8565b5098975050505050505050565b6000602082840312156125fb578081fd5b8135611fb58161288f565b600060208284031215612617578081fd5b8151611fb58161288f565b600060208284031215612633578081fd5b5035919050565b60008060006060848603121561264e578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612679578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000602080835283518082850152825b818110156126f9578581018301518582016040015282016126dd565b8181111561270a5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156127a45784516001600160a01b03168352938301939183019160010161277f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156127d8576127d861284e565b500190565b6000826127f857634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156128175761281761284e565b500290565b60008282101561282e5761282e61284e565b500390565b60006000198214156128475761284761284e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610ac957600080fd5b8015158114610ac957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122043002962b51ac958dcef0e4b70ab16cc6b8a0b76bf2916fd6c5c5de1cfa6ad8064736f6c63430008040033

Deployed Bytecode Sourcemap

3519:17223:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6540:83;;;;;;;;;;-1:-1:-1;6610:5:0;;;;;;;;;;;;-1:-1:-1;;;6610:5:0;;;;6540:83;;;;;;;:::i;:::-;;;;;;;;7371:161;;;;;;;;;;-1:-1:-1;7371:161:0;;;;;:::i;:::-;;:::i;:::-;;;6833:14:1;;6826:22;6808:41;;6796:2;6781:18;7371:161:0;6763:92:1;6817:95:0;;;;;;;;;;-1:-1:-1;3918:12:0;6817:95;;;15478:25:1;;;15466:2;15451:18;6817:95:0;15433:76:1;16401:360:0;;;;;;;;;;-1:-1:-1;16401:360:0;;;;;:::i;:::-;;:::i;:::-;;7540:313;;;;;;;;;;-1:-1:-1;7540:313:0;;;;;:::i;:::-;;:::i;16047:346::-;;;;;;;;;;-1:-1:-1;16047:346:0;;;;;:::i;:::-;;:::i;17970:88::-;;;;;;;;;;-1:-1:-1;17970:88:0;;;;;:::i;:::-;;:::i;14383:109::-;;;;;;;;;;-1:-1:-1;14383:109:0;;;;;:::i;:::-;;:::i;15467:331::-;;;;;;;;;;-1:-1:-1;15467:331:0;;;;;:::i;:::-;;:::i;6726:83::-;;;;;;;;;;-1:-1:-1;6726:83:0;;4977:1;16968:36:1;;16956:2;16941:18;6726:83:0;16923:87:1;15806:111:0;;;;;;;;;;-1:-1:-1;15806:111:0;;;;;:::i;:::-;;:::i;7861:103::-;;;;;;;;;;-1:-1:-1;7861:103:0;;;;;:::i;:::-;;:::i;15152:307::-;;;;;;;;;;-1:-1:-1;15152:307:0;;;;;:::i;:::-;;:::i;20082:153::-;;;;;;;;;;;;;:::i;6920:117::-;;;;;;;;;;-1:-1:-1;6920:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;7013:16:0;6986:7;7013:16;;;:7;:16;;;;;;;6920:117;2598:148;;;;;;;;;;;;;:::i;14829:315::-;;;;;;;;;;-1:-1:-1;14829:315:0;;;;;:::i;:::-;;:::i;2384:79::-;;;;;;;;;;-1:-1:-1;2422:7:0;2449:6;2384:79;;-1:-1:-1;;;;;2449:6:0;;;4786:51:1;;4774:2;4759:18;2384:79:0;4741:102:1;6631:87:0;;;;;;;;;;-1:-1:-1;6703:7:0;;;;;;;;;;;;-1:-1:-1;;;6703:7:0;;;;6631:87;;7045:167;;;;;;;;;;-1:-1:-1;7045:167:0;;;;;:::i;:::-;;:::i;14504:317::-;;;;;;;;;;-1:-1:-1;14504:317:0;;;;;:::i;:::-;;:::i;13989:164::-;;;;;;;;;;-1:-1:-1;13989:164:0;;;;;:::i;:::-;;:::i;19916:154::-;;;;;;;;;;;;;:::i;13001:976::-;;;;;;;;;;;;;:::i;7220:143::-;;;;;;;;;;-1:-1:-1;7220:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7328:18:0;;;7301:7;7328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7220:143;7972:94;;;;;;;;;;-1:-1:-1;7972:94:0;;;;;:::i;:::-;;:::i;16769:108::-;;;;;;;;;;-1:-1:-1;16769:108:0;;;;;:::i;:::-;;:::i;14268:103::-;;;;;;;;;;-1:-1:-1;14268:103:0;;;;;:::i;:::-;;:::i;15929:110::-;;;;;;;;;;-1:-1:-1;15929:110:0;;;;;:::i;:::-;;:::i;14161:99::-;;;;;;;;;;-1:-1:-1;14161:99:0;;;;;:::i;:::-;;:::i;20243:239::-;;;;;;;;;;;;;:::i;7371:161::-;7446:4;7463:39;182:10;7486:7;7495:6;7463:8;:39::i;:::-;-1:-1:-1;7520:4:0;7371:161;;;;;:::o;16401:360::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;;;;;;;;;16585:2:::1;16568:13:::0;16532:33:::1;16549:16:::0;16532:14;:33:::1;:::i;:::-;:49;;;;:::i;:::-;:55;;16524:98;;;::::0;-1:-1:-1;;;16524:98:0;;12014:2:1;16524:98:0::1;::::0;::::1;11996:21:1::0;12053:2;12033:18;;;12026:30;12092:32;12072:18;;;12065:60;12142:18;;16524:98:0::1;11986:180:1::0;16524:98:0::1;16633:15;:32:::0;;;;16676:17:::1;:36:::0;16723:14:::1;:30:::0;16401:360::o;7540:313::-;7638:4;7655:36;7665:6;7673:9;7684:6;7655:9;:36::i;:::-;7702:121;7711:6;182:10;7733:89;7771:6;7733:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7733:19:0;;;;;;:11;:19;;;;;;;;182:10;7733:33;;;;;;;;;;:37;:89::i;:::-;7702:8;:121::i;:::-;-1:-1:-1;7841:4:0;7540:313;;;;;:::o;16047:346::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;16224:2:::1;16208:12:::0;16174:31:::1;16190:15:::0;16174:13;:31:::1;:::i;:::-;:46;;;;:::i;:::-;:52;;16166:94;;;::::0;-1:-1:-1;;;16166:94:0;;11295:2:1;16166:94:0::1;::::0;::::1;11277:21:1::0;11334:2;11314:18;;;11307:30;11373:31;11353:18;;;11346:59;11422:18;;16166:94:0::1;11267:179:1::0;16166:94:0::1;16271:14;:30:::0;;;;16312:16:::1;:34:::0;16357:13:::1;:28:::0;16047:346::o;17970:88::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18030:12:0::1;18045:5;18030:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;18030:20:0::1;::::0;;17970:88::o;14383:109::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;14457:16:::1;:27:::0;14383:109::o;15467:331::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15558:29:0;::::1;15550:77;;;::::0;-1:-1:-1;;;15550:77:0;;12783:2:1;15550:77:0::1;::::0;::::1;12765:21:1::0;12822:2;12802:18;;;12795:30;12861:34;12841:18;;;12834:62;-1:-1:-1;;;12912:18:1;;;12905:33;12955:19;;15550:77:0::1;12755:225:1::0;15550:77:0::1;15657:16;::::0;;-1:-1:-1;;;;;15657:16:0;;::::1;15677:5;15638:36:::0;;;:18:::1;:36;::::0;;;;;:44;;-1:-1:-1;;15638:44:0;;::::1;::::0;;;15693:43;;-1:-1:-1;;;;;;15693:43:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;15747:36;;;;;:43;;;;::::1;-1:-1:-1::0;15747:43:0::1;::::0;;15467:331::o;15806:111::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15875:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;15875:34:0::1;15905:4;15875:34;::::0;;15806:111::o;7861:103::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;7933:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;7933:23:0::1;-1:-1:-1::0;;;;7933:23:0;;::::1;::::0;;;::::1;::::0;;7861:103::o;15152:307::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15237:26:0;::::1;15229:71;;;::::0;-1:-1:-1;;;15229:71:0;;14350:2:1;15229:71:0::1;::::0;::::1;14332:21:1::0;;;14369:18;;;14362:30;14428:34;14408:18;;;14401:62;14480:18;;15229:71:0::1;14322:182:1::0;15229:71:0::1;15330:13;::::0;;-1:-1:-1;;;;;15330:13:0;;::::1;15347:5;15311:33:::0;;;:18:::1;:33;::::0;;;;;:41;;-1:-1:-1;;15311:41:0;;::::1;::::0;;;15363:37;;-1:-1:-1;;;;;;15363:37:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;15411:33;;;;;:40;;;;::::1;-1:-1:-1::0;15411:40:0::1;::::0;;15152:307::o;20082:153::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;20163:21:::1;20195:32;20163:21:::0;20195:12:::1;:32::i;:::-;2581:1;20082:153::o:0;2598:148::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;2705:1:::1;2689:6:::0;;2668:40:::1;::::0;-1:-1:-1;;;;;2689:6:0;;::::1;::::0;2668:40:::1;::::0;2705:1;;2668:40:::1;2736:1;2719:19:::0;;-1:-1:-1;;;;;;2719:19:0::1;::::0;;2598:148::o;14829:315::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14916:27:0;::::1;14908:73;;;::::0;-1:-1:-1;;;14908:73:0;;8833:2:1;14908:73:0::1;::::0;::::1;8815:21:1::0;8872:2;8852:18;;;8845:30;8911:34;8891:18;;;8884:62;-1:-1:-1;;;8962:18:1;;;8955:31;9003:19;;14908:73:0::1;8805:223:1::0;14908:73:0::1;15011:14;::::0;;-1:-1:-1;;;;;15011:14:0;;::::1;15029:5;14992:34:::0;;;:18:::1;:34;::::0;;;;;:42;;-1:-1:-1;;14992:42:0;;::::1;::::0;;;15045:39;;-1:-1:-1;;;;;;15045:39:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;15095:34;;;;;:41;;;;::::1;-1:-1:-1::0;15095:41:0::1;::::0;;14829:315::o;7045:167::-;7123:4;7140:42;182:10;7164:9;7175:6;7140:9;:42::i;14504:317::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;14603:11:::1;14590:9;:24;;14582:90;;;::::0;-1:-1:-1;;;14582:90:0;;9235:2:1;14582:90:0::1;::::0;::::1;9217:21:1::0;9274:2;9254:18;;;9247:30;9313:34;9293:18;;;9286:62;-1:-1:-1;;;9364:18:1;;;9357:51;9425:19;;14582:90:0::1;9207:243:1::0;14582:90:0::1;14704:11;14691:9;:24;;14683:89;;;::::0;-1:-1:-1;;;14683:89:0;;9657:2:1;14683:89:0::1;::::0;::::1;9639:21:1::0;9696:2;9676:18;;;9669:30;9735:34;9715:18;;;9708:62;-1:-1:-1;;;9786:18:1;;;9779:50;9846:19;;14683:89:0::1;9629:242:1::0;14683:89:0::1;14783:18;:30:::0;14504:317::o;13989:164::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;14063:6:::1;14058:88;14079:5;:12;14075:1;:16;14058:88;;;14130:4;14113;:14;14118:5;14124:1;14118:8;;;;;;-1:-1:-1::0;;;14118:8:0::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14113:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14113:14:0;:21;;-1:-1:-1;;14113:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14093:3;::::1;::::0;::::1;:::i;:::-;;;;14058:88;;;;13989:164:::0;:::o;19916:154::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;20012:4:::1;19968:23;7013:16:::0;;;:7;:16;;;;;;20029:33:::1;7013:16:::0;20029::::1;:33::i;13001:976::-:0;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;13065:11:::1;::::0;-1:-1:-1;;;13065:11:0;::::1;;;13064:12;13056:47;;;::::0;-1:-1:-1;;;13056:47:0;;13998:2:1;13056:47:0::1;::::0;::::1;13980:21:1::0;14037:2;14017:18;;;14010:30;14076:25;14056:18;;;14049:53;14119:18;;13056:47:0::1;13970:173:1::0;13056:47:0::1;13225:15;:34:::0;;-1:-1:-1;;;;;;13225:34:0::1;13171:42;13225:34:::0;;::::1;::::0;;;13270:58:::1;13287:4;13171:42:::0;3918:12:::1;13270:8;:58::i;:::-;13373:16;-1:-1:-1::0;;;;;13373:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13355:56:0::1;;13420:4;13427:16;-1:-1:-1::0;;;;;13427:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13355:96;::::0;-1:-1:-1;;;;;;13355:96:0::1;::::0;;;;;;-1:-1:-1;;;;;5078:15:1;;;13355:96:0::1;::::0;::::1;5060:34:1::0;5130:15;;5110:18;;;5103:43;4995:18;;13355:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13339:13;:112:::0;;-1:-1:-1;;;;;13339:112:0;;::::1;-1:-1:-1::0;;;;;;13339:112:0;;::::1;;::::0;;13462:15:::1;::::0;::::1;:31;13501:21;13532:4;13538:24;13532:4:::0;-1:-1:-1;;;;;7013:16:0;6986:7;7013:16;;;:7;:16;;;;;;;6920:117;13538:24:::1;13563:1;13565::::0;13567:7:::1;2422::::0;2449:6;-1:-1:-1;;;;;2449:6:0;;2384:79;13567:7:::1;13575:15;13462:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13602:11:0::1;:18:::0;;13680:11:::1;13664:13;:27:::0;;;13702:14:::1;:28:::0;13760:11:::1;13741:16;:30:::0;13803:11:::1;13782:18;:32:::0;-1:-1:-1;;;;13825:18:0;;-1:-1:-1;;;13825:18:0;;;;13875:12:::1;13854:18;:33:::0;13936:15:::1;::::0;13898:71:::1;::::0;-1:-1:-1;;;13898:71:0;;-1:-1:-1;;;;;13936:15:0;;::::1;-1:-1:-1::0;13898:71:0;::::1;5331:51:1::0;-1:-1:-1;;5398:18:1;;;5391:34;13905:13:0;;;-1:-1:-1;13898:29:0::1;::::0;5304:18:1;;13898:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7972:94::-:0;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;8039:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;8039:19:0::1;-1:-1:-1::0;;;;8039:19:0;;::::1;::::0;;;::::1;::::0;;7972:94::o;16769:108::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;16843:17:::1;:26:::0;16769:108::o;14268:103::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;14339:14:::1;:24:::0;14268:103::o;15929:110::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15996:27:0::1;16026:5;15996:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;15996:35:0::1;::::0;;15929:110::o;14161:99::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;14230:13:::1;:22:::0;14161:99::o;20243:239::-;2511:6;;-1:-1:-1;;;;;2511:6:0;182:10;2511:22;2503:67;;;;-1:-1:-1;;;2503:67:0;;;;;;;:::i;:::-;20310:11:::1;::::0;-1:-1:-1;;;20310:11:0;::::1;;;20309:12;20301:68;;;::::0;-1:-1:-1;;;20301:68:0;;15122:2:1;20301:68:0::1;::::0;::::1;15104:21:1::0;15161:2;15141:18;;;15134:30;15200:34;15180:18;;;15173:62;-1:-1:-1;;;15251:18:1;;;15244:41;15302:19;;20301:68:0::1;15094:233:1::0;20301:68:0::1;20416:58;::::0;20380:12:::1;::::0;20424:10:::1;::::0;20448:21:::1;::::0;20380:12;20416:58;20380:12;20416:58;20448:21;20424:10;20416:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;20243:239:0:o;8074:335::-;-1:-1:-1;;;;;8167:19:0;;8159:68;;;;-1:-1:-1;;;8159:68:0;;13593:2:1;8159:68:0;;;13575:21:1;13632:2;13612:18;;;13605:30;13671:34;13651:18;;;13644:62;-1:-1:-1;;;13722:18:1;;;13715:34;13766:19;;8159:68:0;13565:226:1;8159:68:0;-1:-1:-1;;;;;8246:21:0;;8238:68;;;;-1:-1:-1;;;8238:68:0;;8074:2:1;8238:68:0;;;8056:21:1;8113:2;8093:18;;;8086:30;8152:34;8132:18;;;8125:62;-1:-1:-1;;;8203:18:1;;;8196:32;8245:19;;8238:68:0;8046:224:1;8238:68:0;-1:-1:-1;;;;;8317:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8369:32;;15478:25:1;;;8369:32:0;;15451:18:1;8369:32:0;;;;;;;;8074:335;;;:::o;8417:1850::-;-1:-1:-1;;;;;8505:18:0;;8497:68;;;;-1:-1:-1;;;8497:68:0;;13187:2:1;8497:68:0;;;13169:21:1;13226:2;13206:18;;;13199:30;13265:34;13245:18;;;13238:62;-1:-1:-1;;;13316:18:1;;;13309:35;13361:19;;8497:68:0;13159:227:1;8497:68:0;-1:-1:-1;;;;;8584:16:0;;8576:64;;;;-1:-1:-1;;;8576:64:0;;7670:2:1;8576:64:0;;;7652:21:1;7709:2;7689:18;;;7682:30;7748:34;7728:18;;;7721:62;-1:-1:-1;;;7799:18:1;;;7792:33;7842:19;;8576:64:0;7642:225:1;8576:64:0;8668:1;8659:6;:10;8651:64;;;;-1:-1:-1;;;8651:64:0;;12373:2:1;8651:64:0;;;12355:21:1;12412:2;12392:18;;;12385:30;12451:34;12431:18;;;12424:62;-1:-1:-1;;;12502:18:1;;;12495:39;12551:19;;8651:64:0;12345:231:1;8651:64:0;8726:12;8757:15;8803:7;2422;2449:6;-1:-1:-1;;;;;2449:6:0;;2384:79;8803:7;-1:-1:-1;;;;;8795:15:0;:4;-1:-1:-1;;;;;8795:15:0;;;:32;;;;-1:-1:-1;2422:7:0;2449:6;-1:-1:-1;;;;;8814:13:0;;;2449:6;;8814:13;;8795:32;:52;;;;-1:-1:-1;;;;;;8831:16:0;;;;8795:52;:77;;;;-1:-1:-1;;;;;;8851:21:0;;8865:6;8851:21;;8795:77;:90;;;;-1:-1:-1;8877:8:0;;-1:-1:-1;;;8877:8:0;;;;8876:9;8795:90;8791:939;;;-1:-1:-1;;;;;8911:10:0;;;;;;:4;:10;;;;;;;;8910:11;:24;;;;-1:-1:-1;;;;;;8926:8:0;;;;;;:4;:8;;;;;;;;8925:9;8910:24;8902:33;;;;;;8993:13;;8962:4;;-1:-1:-1;;;;;;8985:21:0;;;8993:13;;8985:21;:55;;;;-1:-1:-1;9024:15:0;;-1:-1:-1;;;;;9010:30:0;;;9024:15;;9010:30;;8985:55;:82;;;;-1:-1:-1;;;;;;9045:22:0;;;;;;:18;:22;;;;;;;;9044:23;8985:82;:101;;;;-1:-1:-1;9071:15:0;;-1:-1:-1;;;9071:15:0;;;;8985:101;8981:451;;;9125:13;;9115:6;:23;;9107:77;;;;-1:-1:-1;;;9107:77:0;;10483:2:1;9107:77:0;;;10465:21:1;10522:2;10502:18;;;10495:30;10561:34;10541:18;;;10534:62;-1:-1:-1;;;10612:18:1;;;10605:39;10661:19;;9107:77:0;10455:231:1;9107:77:0;9237:16;;9227:6;9211:13;9221:2;-1:-1:-1;;;;;7013:16:0;6986:7;7013:16;;;:7;:16;;;;;;;6920:117;9211:13;:22;;;;:::i;:::-;:42;;9203:91;;;;-1:-1:-1;;;9203:91:0;;10078:2:1;9203:91:0;;;10060:21:1;10117:2;10097:18;;;10090:30;10156:34;10136:18;;;10129:62;-1:-1:-1;;;10207:18:1;;;10200:34;10251:19;;9203:91:0;10050:226:1;9203:91:0;-1:-1:-1;;;;;9321:12:0;;;;;;:8;:12;;;;;;9336:15;-1:-1:-1;9313:39:0;;;;;;9386:30;:15;9405:10;9386:30;:::i;:::-;-1:-1:-1;;;;;9371:12:0;;;;;;:8;:12;;;;;:45;8981:451;9470:13;;-1:-1:-1;;;;;9464:19:0;;;9470:13;;9464:19;:55;;;;-1:-1:-1;9503:15:0;;-1:-1:-1;;;;;9487:32:0;;;9503:15;;9487:32;;9464:55;:84;;;;-1:-1:-1;;;;;;9524:24:0;;;;;;:18;:24;;;;;;;;9523:25;9464:84;:103;;;;-1:-1:-1;9552:15:0;;-1:-1:-1;;;9552:15:0;;;;9464:103;9460:259;;;9606:14;;9596:6;:24;;9588:79;;;;-1:-1:-1;;;9588:79:0;;14711:2:1;9588:79:0;;;14693:21:1;14750:2;14730:18;;;14723:30;14789:34;14769:18;;;14762:62;-1:-1:-1;;;14840:18:1;;;14833:40;14890:19;;9588:79:0;14683:232:1;9588:79:0;-1:-1:-1;9699:4:0;9460:259;-1:-1:-1;;;;;9745:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;9773:22:0;;;;;;:18;:22;;;;;;;;9745:50;9742:97;;;9822:5;9812:15;;9742:97;9900:4;9851:28;7013:16;;;:7;:16;;;;;;9851:55;;9917:12;9956:18;;9933:20;:41;9932:57;;;;;9979:10;9932:57;9917:72;;10006:7;:22;;;;-1:-1:-1;10017:11:0;;-1:-1:-1;;;10017:11:0;;;;10006:22;:35;;;;-1:-1:-1;10033:8:0;;-1:-1:-1;;;10033:8:0;;;;10032:9;10006:35;:64;;;;-1:-1:-1;;;;;;10046:24:0;;;;;;:18;:24;;;;;;;;10045:25;10006:64;:91;;;;-1:-1:-1;;;;;;10075:22:0;;;;;;:18;:22;;;;;;;;10074:23;10006:91;10002:195;;;10114:8;:15;;-1:-1:-1;;;;10114:15:0;-1:-1:-1;;;10114:15:0;;;10144:10;:8;:10::i;:::-;10169:8;:16;;-1:-1:-1;;;;10169:16:0;;;10002:195;10209:50;10224:4;10229:2;10232:6;10239:7;10248:10;10209:14;:50::i;:::-;8417:1850;;;;;;;:::o;1239:190::-;1325:7;1361:12;1353:6;;;;1345:29;;;;-1:-1:-1;;;1345:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1385:9:0;1397:5;1401:1;1397;:5;:::i;:::-;1385:17;1239:190;-1:-1:-1;;;;;1239:190:0:o;12893:96::-;12950:14;;:31;;-1:-1:-1;;;;;12950:14:0;;;;:31;;;;;12974:6;;12950:14;:31;:14;:31;12974:6;12950:14;:31;;;;;;;;;;;;;;;;;;;11963:483;5839:6;:13;;-1:-1:-1;;;;5839:13:0;-1:-1:-1;;;5839:13:0;;;12065:16:::1;::::0;;12079:1:::1;12065:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12065:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12065:16:0::1;12041:40;;12110:4;12092;12097:1;12092:7;;;;;;-1:-1:-1::0;;;12092:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;12092:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12136:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12136:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12092:7;;12136:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12126:4;12131:1;12126:7;;;;;;-1:-1:-1::0;;;12126:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;12126:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12201:15:::1;::::0;12169:62:::1;::::0;12186:4:::1;::::0;12201:15:::1;12219:11:::0;12169:8:::1;:62::i;:::-;12242:15;::::0;:196:::1;::::0;-1:-1:-1;;;12242:196:0;;-1:-1:-1;;;;;12242:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12323:11;;12242:15:::1;::::0;12365:4;;12392::::1;::::0;12412:15:::1;::::0;12242:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5875:6:0;:14;;-1:-1:-1;;;;5875:14:0;;;-1:-1:-1;;;;11963:483:0:o;10275:1680::-;10358:4;10314:23;7013:16;;;:7;:16;;;;;;10314:50;;10375:25;10442:16;;10424:15;;10403:18;;:36;;;;:::i;:::-;:55;;;;:::i;:::-;10375:83;-1:-1:-1;10469:12:0;10505:20;;;:46;;-1:-1:-1;10529:22:0;;10505:46;10502:60;;;10554:7;;;10275:1680::o;10502:60::-;10595:18;;:23;;10616:2;10595:23;:::i;:::-;10577:15;:41;10574:114;;;10653:18;;:23;;10674:2;10653:23;:::i;:::-;10635:41;;10574:114;10757:23;10842:1;10822:17;10801:18;;10783:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;10757:86;-1:-1:-1;10854:26:0;10883:36;:15;10757:86;10883:19;:36::i;:::-;10854:65;-1:-1:-1;10968:21:0;11002:36;10854:65;11002:16;:36::i;:::-;11060:18;11081:44;:21;11107:17;11081:25;:44::i;:::-;11060:65;;11146:20;11169:54;11205:17;11169:31;11184:15;;11169:10;:14;;:31;;;;:::i;:::-;:35;;:54::i;:::-;11146:77;;11234:21;11258:55;11295:17;11258:32;11273:16;;11258:10;:14;;:32;;;;:::i;:55::-;11234:79;-1:-1:-1;11344:23:0;11234:79;11370:25;11383:12;11370:10;:25;:::i;:::-;:41;;;;:::i;:::-;11463:1;11442:18;:22;;;11475:15;:19;;;11505:16;:20;;;11567:13;;11559:52;;11344:67;;-1:-1:-1;;;;;;11567:13:0;;11594:12;;11559:52;11463:1;11559:52;11594:12;11567:13;11559:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11546:65:0;;-1:-1:-1;;11635:19:0;;;;;:42;;;11676:1;11658:15;:19;11635:42;11632:210;;;11693:46;11706:15;11723;11693:12;:46::i;:::-;11811:18;;11759:71;;;16704:25:1;;;16760:2;16745:18;;16738:34;;;16788:18;;;16781:34;;;;11759:71:0;;;;;;16692:2:1;11759:71:0;;;11632:210;11893:14;;11885:62;;-1:-1:-1;;;;;11893:14:0;;;;11921:21;;11885:62;;;;11921:21;11893:14;11885:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;10275:1680:0:o;18074:389::-;18199:7;18195:129;;18223:14;:12;:14::i;:::-;18195:129;;;18279:33;18289:6;18297;18305;18279:9;:33::i;:::-;18270:42;;18195:129;18336:44;18354:6;18362:9;18373:6;18336:17;:44::i;:::-;18405:7;18401:55;;18429:15;17668:22;;17651:14;:39;17720:24;;17701:16;:43;17771:21;;17755:13;:37;17821:23;;17803:15;:41;17875:25;;17855:17;:45;17928:22;;17911:14;:39;17607:351;18429:15;18074:389;;;;;:::o;1095:136::-;1153:7;1180:43;1184:1;1187;1180:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1173:50;1095:136;-1:-1:-1;;;1095:136:0:o;1437:246::-;1495:7;1519:6;1515:47;;-1:-1:-1;1549:1:0;1542:8;;1515:47;1572:9;1584:5;1588:1;1584;:5;:::i;:::-;1572:17;-1:-1:-1;1617:1:0;1608:5;1612:1;1572:17;1608:5;:::i;:::-;:10;1600:56;;;;-1:-1:-1;;;1600:56:0;;10893:2:1;1600:56:0;;;10875:21:1;10932:2;10912:18;;;10905:30;10971:34;10951:18;;;10944:62;-1:-1:-1;;;11022:18:1;;;11015:31;11063:19;;1600:56:0;10865:223:1;1691:132:0;1749:7;1776:39;1780:1;1783;1776:39;;;;;;;;;;;;;;;;;:3;:39::i;12454:423::-;12567:15;;12535:62;;12552:4;;-1:-1:-1;;;;;12567:15:0;12585:11;12535:8;:62::i;:::-;12608:15;;12812:16;;12608:261;;-1:-1:-1;;;12608:261:0;;-1:-1:-1;;;;;12608:15:0;;;;:31;;12647:9;;12608:261;;12680:4;;12700:11;;12608:15;;;;12812:16;;12843:15;;12608:261;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16885:710::-;16931:14;;:19;:44;;;;-1:-1:-1;16954:16:0;;:21;16931:44;:66;;;;-1:-1:-1;16979:13:0;;:18;16931:66;:90;;;;-1:-1:-1;17001:15:0;;:20;16931:90;:116;;;;-1:-1:-1;17025:17:0;;:22;16931:116;:139;;;;-1:-1:-1;17051:14:0;;:19;16931:139;16928:151;;;16885:710::o;16928:151::-;17124:14;;;17099:22;:39;17176:16;;;17149:24;:43;17227:13;;;17203:21;:37;17277:15;;;17251:23;:41;17331:17;;;17303:25;:45;17384:14;;;17359:22;:39;-1:-1:-1;17419:18:0;;;;17448:20;;;;17479:17;;;;17507:19;;;17537:21;;;17569:18;16885:710::o;18746:1121::-;18827:7;18847:18;18876:15;18902:14;18927:15;18998:12;18977:17;;18956:18;;:38;;;;:::i;:::-;:54;18953:518;;19039:2;19026:15;;19065:2;19056:11;;18953:518;;;19113:21;19127:6;19113:13;:21::i;:::-;19100:34;;19153:6;19149:311;;;19190:15;;19180:25;;19233:17;;19224:26;;19279:14;;19269:24;;19149:311;;;19344:14;;19334:24;;19386:16;;19377:25;;19431:13;;19421:23;;19149:311;19483:12;19498:31;19525:3;19498:22;:6;19509:10;19498;:22::i;:31::-;19483:46;-1:-1:-1;19576:10:0;19559:14;19566:7;19483:46;19559:14;:::i;:::-;:27;;;;:::i;:::-;19540:15;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;19634:10:0;;-1:-1:-1;19617:14:0;19624:7;19617:4;:14;:::i;:::-;:27;;;;:::i;:::-;19597:16;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;19693:10:0;;-1:-1:-1;19677:13:0;19684:6;19677:4;:13;:::i;:::-;:26;;;;:::i;:::-;19655:18;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;19731:8:0;;19728:86;;19756:46;19774:6;19790:4;19797;19756:17;:46::i;:::-;19845:14;19855:4;19845:14;;:::i;:::-;;18746:1121;-1:-1:-1;;;;;;;;;18746:1121:0:o;18471:267::-;-1:-1:-1;;;;;18587:15:0;;;;;;:7;:15;;;;;;:28;;18607:7;18587:19;:28::i;:::-;-1:-1:-1;;;;;18569:15:0;;;;;;;:7;:15;;;;;;:46;;;;18647:18;;;;;;;:31;;18670:7;18647:22;:31::i;:::-;-1:-1:-1;;;;;18626:18:0;;;;;;;:7;:18;;;;;;;:52;;;;18694:36;;;;;;;;;;18722:7;15478:25:1;;15466:2;15451:18;;15433:76;1831:189:0;1917:7;1952:12;1945:5;1937:28;;;;-1:-1:-1;;;1937:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1976:9:0;1988:5;1992:1;1988;:5;:::i;20490:249::-;20547:7;20571:6;20567:98;;;20639:14;;20619:17;;20601:15;;:35;;;;:::i;:::-;:52;;;;:::i;20567:98::-;20718:13;;20699:16;;20682:14;;:33;;;;:::i;908:179::-;966:7;;998:5;1002:1;998;:5;:::i;:::-;986:17;;1027:1;1022;:6;;1014:46;;;;-1:-1:-1;;;1014:46:0;;8477:2:1;1014:46:0;;;8459:21:1;8516:2;8496:18;;;8489:30;8555:29;8535:18;;;8528:57;8602:18;;1014:46:0;8449:177:1;14:134;82:20;;111:31;82:20;111:31;:::i;:::-;63:85;;;:::o;153:257::-;212:6;265:2;253:9;244:7;240:23;236:32;233:2;;;286:6;278;271:22;233:2;330:9;317:23;349:31;374:5;349:31;:::i;415:261::-;485:6;538:2;526:9;517:7;513:23;509:32;506:2;;;559:6;551;544:22;506:2;596:9;590:16;615:31;640:5;615:31;:::i;681:398::-;749:6;757;810:2;798:9;789:7;785:23;781:32;778:2;;;831:6;823;816:22;778:2;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;768:311;;;;;:::o;1084:466::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:2;;;1251:6;1243;1236:22;1198:2;1295:9;1282:23;1314:31;1339:5;1314:31;:::i;:::-;1364:5;-1:-1:-1;1421:2:1;1406:18;;1393:32;1434:33;1393:32;1434:33;:::i;:::-;1188:362;;1486:7;;-1:-1:-1;;;1540:2:1;1525:18;;;;1512:32;;1188:362::o;1555:325::-;1623:6;1631;1684:2;1672:9;1663:7;1659:23;1655:32;1652:2;;;1705:6;1697;1690:22;1652:2;1749:9;1736:23;1768:31;1793:5;1768:31;:::i;:::-;1818:5;1870:2;1855:18;;;;1842:32;;-1:-1:-1;;;1642:238:1:o;1885:1177::-;1969:6;2000:2;2043;2031:9;2022:7;2018:23;2014:32;2011:2;;;2064:6;2056;2049:22;2011:2;2109:9;2096:23;2138:18;2179:2;2171:6;2168:14;2165:2;;;2200:6;2192;2185:22;2165:2;2243:6;2232:9;2228:22;2218:32;;2288:7;2281:4;2277:2;2273:13;2269:27;2259:2;;2315:6;2307;2300:22;2259:2;2356;2343:16;2378:2;2374;2371:10;2368:2;;;2384:18;;:::i;:::-;2430:2;2427:1;2423:10;2462:2;2456:9;2525:2;2521:7;2516:2;2512;2508:11;2504:25;2496:6;2492:38;2580:6;2568:10;2565:22;2560:2;2548:10;2545:18;2542:46;2539:2;;;2591:18;;:::i;:::-;2627:2;2620:22;2677:18;;;2711:15;;;;-1:-1:-1;2746:11:1;;;2776;;;2772:20;;2769:33;-1:-1:-1;2766:2:1;;;2820:6;2812;2805:22;2766:2;2847:6;2838:15;;2862:169;2876:2;2873:1;2870:9;2862:169;;;2933:23;2952:3;2933:23;:::i;:::-;2921:36;;2894:1;2887:9;;;;;2977:12;;;;3009;;2862:169;;;-1:-1:-1;3050:6:1;1980:1082;-1:-1:-1;;;;;;;;1980:1082:1:o;3067:251::-;3123:6;3176:2;3164:9;3155:7;3151:23;3147:32;3144:2;;;3197:6;3189;3182:22;3144:2;3241:9;3228:23;3260:28;3282:5;3260:28;:::i;3323:255::-;3390:6;3443:2;3431:9;3422:7;3418:23;3414:32;3411:2;;;3464:6;3456;3449:22;3411:2;3501:9;3495:16;3520:28;3542:5;3520:28;:::i;3583:190::-;3642:6;3695:2;3683:9;3674:7;3670:23;3666:32;3663:2;;;3716:6;3708;3701:22;3663:2;-1:-1:-1;3744:23:1;;3653:120;-1:-1:-1;3653:120:1:o;3778:326::-;3855:6;3863;3871;3924:2;3912:9;3903:7;3899:23;3895:32;3892:2;;;3945:6;3937;3930:22;3892:2;-1:-1:-1;;3973:23:1;;;4043:2;4028:18;;4015:32;;-1:-1:-1;4094:2:1;4079:18;;;4066:32;;3882:222;-1:-1:-1;3882:222:1:o;4109:316::-;4197:6;4205;4213;4266:2;4254:9;4245:7;4241:23;4237:32;4234:2;;;4287:6;4279;4272:22;4234:2;4321:9;4315:16;4305:26;;4371:2;4360:9;4356:18;4350:25;4340:35;;4415:2;4404:9;4400:18;4394:25;4384:35;;4224:201;;;;;:::o;5436:615::-;-1:-1:-1;;;;;5803:15:1;;;5785:34;;5850:2;5835:18;;5828:34;;;;5893:2;5878:18;;5871:34;;;;5936:2;5921:18;;5914:34;;;;5985:15;;;5979:3;5964:19;;5957:44;5765:3;6017:19;;6010:35;;;;5734:3;5719:19;;5701:350::o;6860:603::-;6972:4;7001:2;7030;7019:9;7012:21;7062:6;7056:13;7105:6;7100:2;7089:9;7085:18;7078:34;7130:4;7143:140;7157:6;7154:1;7151:13;7143:140;;;7252:14;;;7248:23;;7242:30;7218:17;;;7237:2;7214:26;7207:66;7172:10;;7143:140;;;7301:6;7298:1;7295:13;7292:2;;;7371:4;7366:2;7357:6;7346:9;7342:22;7338:31;7331:45;7292:2;-1:-1:-1;7447:2:1;7426:15;-1:-1:-1;;7422:29:1;7407:45;;;;7454:2;7403:54;;6981:482;-1:-1:-1;;;6981:482:1:o;11451:356::-;11653:2;11635:21;;;11672:18;;;11665:30;11731:34;11726:2;11711:18;;11704:62;11798:2;11783:18;;11625:182::o;15514:983::-;15776:4;15824:3;15813:9;15809:19;15855:6;15844:9;15837:25;15881:2;15919:6;15914:2;15903:9;15899:18;15892:34;15962:3;15957:2;15946:9;15942:18;15935:31;15986:6;16021;16015:13;16052:6;16044;16037:22;16090:3;16079:9;16075:19;16068:26;;16129:2;16121:6;16117:15;16103:29;;16150:4;16163:195;16177:6;16174:1;16171:13;16163:195;;;16242:13;;-1:-1:-1;;;;;16238:39:1;16226:52;;16333:15;;;;16298:12;;;;16274:1;16192:9;16163:195;;;-1:-1:-1;;;;;;;16414:32:1;;;;16409:2;16394:18;;16387:60;-1:-1:-1;;;16478:3:1;16463:19;16456:35;16375:3;15785:712;-1:-1:-1;;;15785:712:1:o;17015:128::-;17055:3;17086:1;17082:6;17079:1;17076:13;17073:2;;;17092:18;;:::i;:::-;-1:-1:-1;17128:9:1;;17063:80::o;17148:217::-;17188:1;17214;17204:2;;-1:-1:-1;;;17239:31:1;;17293:4;17290:1;17283:15;17321:4;17246:1;17311:15;17204:2;-1:-1:-1;17350:9:1;;17194:171::o;17370:168::-;17410:7;17476:1;17472;17468:6;17464:14;17461:1;17458:21;17453:1;17446:9;17439:17;17435:45;17432:2;;;17483:18;;:::i;:::-;-1:-1:-1;17523:9:1;;17422:116::o;17543:125::-;17583:4;17611:1;17608;17605:8;17602:2;;;17616:18;;:::i;:::-;-1:-1:-1;17653:9:1;;17592:76::o;17673:135::-;17712:3;-1:-1:-1;;17733:17:1;;17730:2;;;17753:18;;:::i;:::-;-1:-1:-1;17800:1:1;17789:13;;17720:88::o;17813:127::-;17874:10;17869:3;17865:20;17862:1;17855:31;17905:4;17902:1;17895:15;17929:4;17926:1;17919:15;17945:127;18006:10;18001:3;17997:20;17994:1;17987:31;18037:4;18034:1;18027:15;18061:4;18058:1;18051:15;18077:131;-1:-1:-1;;;;;18152:31:1;;18142:42;;18132:2;;18198:1;18195;18188:12;18213:118;18299:5;18292:13;18285:21;18278:5;18275:32;18265:2;;18321:1;18318;18311:12

Swarm Source

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