ETH Price: $3,468.26 (+1.68%)

Token

Xsniper (XS)
 

Overview

Max Total Supply

1,000,000,000 XS

Holders

169

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.15909455 XS

Value
$0.00
0xf49fbe67a722f6dc86ca12640f48dffd4c487832
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:
Xsniper

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

Presenting a groundbreaking innovation - the inaugural token contract featuring an integrated volume AI bot, Xvolumizer, and Xburn. 
This exceptional contract encompasses two distinct bots: a volume bot that activates with each sell order, and a burn bot responsible for regularly reducing the token supply,
 resulting in a remarkable Fomo (Fear of Missing Out) effect. Undoubtedly, these tokenomics are unparalleled and hold the potential to skyrocket the token's value due to the ongoing supply burn. 
Alongside our xsnipe and other cutting-edge tools, this token stands as a colossal force in the world of cryptocurrencies. Welcome to the dawn of a new era, where AI and bot technology converge harmoniously.

Website: https://xsniper.io
Twitter: https://twitter.com/xsnipererc20
Telegram: https://t.me/Xsniper_erc

*/



// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

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

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

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

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

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

interface stakeIntegration {
    function stakingWithdraw(address depositor, uint256 _amount) external;
    function stakingDeposit(address depositor, uint256 _amount) external;
}

interface tokenStaking {
    function deposit(uint256 amount) external;
    function withdraw(uint256 amount) external;
}

interface AIVolumizer {
    function setMaxAmount(uint256 max) external;
    function setVolumePercentage(uint256 percent) external;
    function volumeTokenManual() external;
    function volumeTokenTransaction() external;
    function swapGasBalance(uint256 percent) external;
    function swapTokenBalance(uint256 percent) external;
    function setParameters(address _token) external;
    function rescueHubETH(address receiver, uint256 percent) external;
    function rescueHubERC20(address token, address receiver, uint256 percent) external;
    function amountTotalPurchased() external view returns (uint256);
    function amountTotalETH() external view returns (uint256);
    function totalVolume() external view returns (uint256);
    function lastVolumeTokens() external view returns (uint256);
    function lastVolumeTimestamp() external view returns (uint256);
}

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

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

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

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

contract Xsniper is IERC20, tokenStaking, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Xsniper';
    string private constant _symbol = 'XS';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = ( _totalSupply * 100 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 100 ) / 10000;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping(address => bool) private isFeeExempt;
    IRouter router;
    address public pair;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 100;
    uint256 private developmentFee = 100;
    uint256 private gasFee = 50;
    uint256 private volumeFee = 50;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 5000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    bool private tradingAllowed = false;
    bool public volumeToken = true;
    bool private volumeTx;
    uint256 public txGas = 500000;
    uint256 private swapVolumeTimes;
    uint256 private swapTimes;
    bool private swapping;
    uint256 private swapVolumeAmount = 1;
    uint256 private swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 500 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    uint256 private minVolumeTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    mapping(address => uint256) public amountStaked;
    uint256 public totalStaked; AIVolumizer volumizer;
    stakeIntegration internal stakingContract;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x8b4150A2019A4451AB2C7799e6D7BB8D01c96506; 
    address internal marketing_receiver = 0xb979F35eBC137fA435Be39357A7e42901BE2D69A;
    address internal liquidity_receiver = 0xDbd95E27861ABa1240238Ebdb57F173af9e79f1A;
    address internal burnWallet = 0xc102352DdE1f5E6aBbED5FdF74EDdB59419F0a38;
    bool public burn = true;
    uint256 public burnAmount = ( _totalSupply * 10000 ) / 100000;
    uint256 public burnPercent = 100;
    uint256 public burnTime;
    uint256 public lastBurnTime;
    uint256 public totalBurn;
    uint256 public totalBurnEvents;
    uint256 public burnInterval = 25 minutes;
    bool currentEvent;
    event Deposit(address indexed account, uint256 indexed amount, uint256 indexed timestamp);
    event Withdraw(address indexed account, uint256 indexed amount, uint256 indexed timestamp);
    event SetStakingAddress(address indexed stakingAddress, uint256 indexed timestamp);
    event TradingEnabled(address indexed account, uint256 indexed timestamp);
    event ExcludeFromFees(address indexed account, bool indexed isExcluded, uint256 indexed timestamp);
    event SetInternalAddresses(address indexed marketing, address indexed liquidity, address indexed development, uint256 timestamp);
    event SetSwapBackSettings(uint256 indexed swapAmount, uint256 indexed swapThreshold, uint256 indexed swapMinAmount, uint256 timestamp);
    event SetParameters(uint256 indexed maxTxAmount, uint256 indexed maxWalletToken, uint256 indexed timestamp);
    event SetStructure(uint256 indexed total, uint256 indexed sell, uint256 transfer, uint256 indexed timestamp);

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        volumizer = AIVolumizer(0xa4f56526c2483145b0D6c5462bb2F63daf70c6fa);
        burnTime = block.timestamp.add(burnInterval);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[address(DEAD)] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[burnWallet] = true;
        isFeeExempt[address(volumizer)] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function getOwner() external view override returns (address) { return owner; }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function availableBalance(address wallet) public view returns (uint256) {return _balances[wallet].sub(amountStaked[wallet]);}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"ERC20: below available balance threshold");
    }

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

    function deposit(uint256 amount) override external {
        require(amount <= _balances[msg.sender].sub(amountStaked[msg.sender]), "ERC20: Cannot stake more than available balance");
        stakingContract.stakingDeposit(msg.sender, amount);
        amountStaked[msg.sender] = amountStaked[msg.sender].add(amount);
        totalStaked = totalStaked.add(amount);
        emit Deposit(msg.sender, amount, block.timestamp);
    }

    function withdraw(uint256 amount) override external {
        require(amount <= amountStaked[msg.sender], "ERC20: Cannot unstake more than amount staked");
        stakingContract.stakingWithdraw(msg.sender, amount);
        amountStaked[msg.sender] = amountStaked[msg.sender].sub(amount);
        totalStaked = totalStaked.sub(amount);
        emit Withdraw(msg.sender, amount, block.timestamp);
    }

    function setStakingAddress(address _staking) external onlyOwner {
        stakingContract = stakeIntegration(_staking); isFeeExempt[_staking] = true;
        emit SetStakingAddress(_staking, block.timestamp);
    }

    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _development, uint256 _gas, uint256 _volume, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; developmentFee = _development; volumeFee = _volume; gasFee = _gas;
        totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator && sellFee <= denominator && transferFee <= denominator, "ERC20: invalid total entry%");
        emit SetStructure(_total, _sell, _trans, block.timestamp);
    }

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

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "ERC20: Trading is not allowed");}
    }

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

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

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(amountStaked[sender] > uint256(0)){require((amount.add(amountStaked[sender])) <= _balances[sender], "ERC20: exceeds maximum allowed not currently staked.");}
        if(!volumeTx){require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "ERC20: tx limit exceeded");}
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (totalFee).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith, liquidity_receiver); }
        uint256 marketingAmount = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmount > uint256(0)){payable(marketing_receiver).transfer(marketingAmount);}
        uint256 gasAmount = unitBalance.mul(2).mul(gasFee);
        if(gasAmount > uint256(0)){payable(address(volumizer)).transfer(gasAmount);}
        uint256 eAmount = address(this).balance;
        if(eAmount > uint256(0)){payable(development_receiver).transfer(eAmount);}
    }

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

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

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

    function swapBack(address sender, address recipient) internal {
        if(shouldSwapBack(sender, recipient)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }
    
    function volumizing() external onlyOwner {
        tradingAllowed = true;
        emit TradingEnabled(msg.sender, block.timestamp);
    }

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

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

    function rescueERC20(address _address, uint256 _amount) external onlyOwner {
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function toggleVolume(bool token) external onlyOwner {
        volumeToken = token;
    }

    function setVolumeSettings(bool enable, uint256 percent, uint256 swaps) external onlyOwner {
        volumeToken = enable; volumizer.setVolumePercentage(percent); swapVolumeAmount = swaps;
    }

    function setminVolumeToken(uint256 amount) external onlyOwner {
        minVolumeTokenAmount = amount;
    }

    function setMaxVolumeAmount(uint256 amount) external onlyOwner {
        uint256 max = totalSupply().mul(amount).div(uint256(10000));
        volumizer.setMaxAmount(max);
    }

    function setVolumeGasPerTx(uint256 gas) external onlyOwner {
        txGas = gas;
    }

    function setVolumizerContract(address _contract) external onlyOwner {
        volumizer = AIVolumizer(_contract);
    }

    function rescueHubERC20(address token, address receiver, uint256 percent) external onlyOwner {
        volumizer.rescueHubERC20(token, receiver, percent);
    }

    function rescueHubETH(address receiver, uint256 percent) external onlyOwner {
        volumizer.rescueHubETH(receiver, percent);
    }

    function transferGasBalance() external onlyOwner {
        volumizer.rescueHubETH(address(this), uint256(100));
    }

    function swapTokenBalance(uint256 percent) external onlyOwner {
        volumizer.swapTokenBalance(percent);
    }

    function swapGasBalance(uint256 percent) external onlyOwner {
        volumizer.swapGasBalance(percent);
    }

    function setVolumePercentage(uint256 percent) external onlyOwner {
        volumizer.setVolumePercentage(percent);
    }

    function swapVolume(address sender, address recipient, uint256 amount) internal {
        if(tradingAllowed && !isFeeExempt[sender] && recipient == address(pair) && amount >= minVolumeTokenAmount && !swapping && !volumeTx){swapVolumeTimes += uint256(1);}
        if(tradingAllowed && volumeToken && balanceOf(address(volumizer)) > uint256(0) && swapVolumeTimes >= swapVolumeAmount && !isFeeExempt[sender] && recipient == address(pair) &&
            !swapping && !volumeTx){performSwapVolume();}
    }

    function performSwapVolume() internal {
        volumeTx = true;
        try volumizer.volumeTokenTransaction{gas: txGas}() {} catch {} swapVolumeTimes = uint256(0);
        volumeTx = false;
    }

    function _Volumizer() external {
        volumeTx = true;
        volumizer.volumeTokenManual();
        volumeTx = false;
    }

    function manualVolumizer() external onlyOwner {
        volumeTx = true;
        volumizer.volumeTokenTransaction();
        volumeTx = false;
    }

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

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

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

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

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

    function gasBalance() external view returns (uint256) {
        return address(volumizer).balance;
    }

    function volumizerBalance() external view returns (uint256) {
        return balanceOf(address(volumizer));
    }

    function volumizerTotalPurchased() external view returns (uint256) {
        return volumizer.amountTotalPurchased();
    }

    function volumizerTotalETH() external view returns (uint256) {
        return volumizer.amountTotalETH();
    }

    function volumizerTotalVolume() external view returns (uint256) {
        return volumizer.totalVolume();
    }

    function volumizerLastTXAmount() external view returns (uint256) {
        return volumizer.lastVolumeTokens();
    }

    function volumizerLastTXTime() external view returns (uint256) {
        return volumizer.lastVolumeTimestamp();
    }

    function checkIntervals(address sender, address recipient) internal {
        if(burnTime <= block.timestamp && !swapping && recipient == pair && !isFeeExempt[sender] && burn && balanceOf(burnWallet) > uint256(0) && !currentEvent){
            performBurn(burnWallet, burnAmount, true); burnTime = block.timestamp.add(burnInterval);}
    }
    function performBurn(address sender, uint256 amount, bool isBurn) internal {
        currentEvent = true;
        if(isBurn){uint256 deadPercent = balanceOf(burnWallet).mul(burnPercent).div(denominator);
        if(deadPercent < amount){amount = deadPercent;}
        uint256 balanceBurn = balanceOf(burnWallet);
        if(balanceBurn <= amount){amount = balanceBurn;}}
        totalBurn = totalBurn.add(amount);
        lastBurnTime = block.timestamp;
        totalBurnEvents = totalBurnEvents.add(uint256(1));
        _approve(sender, address(this), amount);
        _transfer(sender, address(DEAD), amount);
        currentEvent = false;
    }
    function depositBurn(uint256 amount) external {
        performBurn(msg.sender, amount, false);
    }
     function setBaseTimes() external onlyOwner {
        burnTime = block.timestamp.add(burnInterval);
    }
    function setIntegrationWallets(address _burn) external onlyOwner {
        burnWallet = _burn;
        isFeeExempt[_burn] = true;
    }
    function setBurnAmounts(uint256 _burnAmount, uint256 _burnPercent) external onlyOwner {
        burnAmount = _totalSupply.mul(_burnAmount).div(100000); burnPercent = _burnPercent;
    }

    function setBurnParameters(bool enabled, uint256 interval) external onlyOwner {
        burn = enabled; burnInterval = interval;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"isExcluded","type":"bool"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketing","type":"address"},{"indexed":true,"internalType":"address","name":"liquidity","type":"address"},{"indexed":true,"internalType":"address","name":"development","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetInternalAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetParameters","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"stakingAddress","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetStakingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"total","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetStructure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"swapAmount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapThreshold","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"swapMinAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"SetSwapBackSettings","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingEnabled","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"_Volumizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountStaked","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":"wallet","type":"address"}],"name":"availableBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualVolumizer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueHubERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueHubETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setBaseTimes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_burnAmount","type":"uint256"},{"internalType":"uint256","name":"_burnPercent","type":"uint256"}],"name":"setBurnAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"interval","type":"uint256"}],"name":"setBurnParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_burn","type":"address"}],"name":"setIntegrationWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxVolumeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_gas","type":"uint256"},{"internalType":"uint256","name":"_volume","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setVolumeGasPerTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"setVolumePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"},{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"swaps","type":"uint256"}],"name":"setVolumeSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"setVolumizerContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setminVolumeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"swapGasBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"swapTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"token","type":"bool"}],"name":"toggleVolume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnEvents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferGasBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumeToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerLastTXAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerLastTXTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerTotalETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerTotalPurchased","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizerTotalVolume","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"volumizing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000600565b6200002290633b9aca0062000611565b600155612710600154606462000039919062000611565b6200004591906200062b565b60025561271060015460646200005c919062000611565b6200006891906200062b565b600355600060098190556064600a819055600b556032600c819055600d556109c4600e55611388600f556010556127106011556012805462ffffff1916620100011790556207a12060135560016017819055601881905554620186a090620000d3906101f462000611565b620000df91906200062b565b601955620186a0600154600a620000f7919062000611565b6200010391906200062b565b601a55620186a0600154600a6200011b919062000611565b6200012791906200062b565b601b55602080546001600160a01b0319908116738b4150a2019a4451ab2c7799e6d7bb8d01c965061790915560218054821673b979f35ebc137fa435be39357a7e42901be2d69a1790556022805490911673dbd95e27861aba1240238ebdb57f173af9e79f1a179055602380547401c102352dde1f5e6abbed5fdf74eddb59419f0a386001600160a81b0319909116179055600154620186a090620001cf9061271062000611565b620001db91906200062b565b60245560646025556105dc602a55348015620001f657600080fd5b50600080546001600160a01b03199081163317909155601e805490911673a4f56526c2483145b0d6c5462bb2f63daf70c6fa179055602a54737a250d5630b4cf539739df2c5dacb4c659f2488d9062000251904290620004d6565b6026819055506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000298573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002be91906200064e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033291906200064e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a691906200064e565b600780546001600160a01b038581166001600160a01b031992831617909255600880548484169216919091179055306000908152600660209081526040808320805460ff19908116600190811790925560225486168552828520805482168317905560215486168552828520805482168317905583548616855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055338086528386208054831684179055602354871686528386208054831684179055601e54909616855282852080549091168217905554848452600483528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000696565b6000620004e4828462000680565b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000544578160001904821115620005285762000528620004ed565b808516156200053657918102915b93841c939080029062000508565b509250929050565b6000826200055d57506001620004e7565b816200056c57506000620004e7565b81600181146200058557600281146200059057620005b0565b6001915050620004e7565b60ff841115620005a457620005a4620004ed565b50506001821b620004e7565b5060208310610133831016604e8410600b8410161715620005d5575081810a620004e7565b620005e1838362000503565b8060001904821115620005f857620005f8620004ed565b029392505050565b6000620004e460ff8416836200054c565b8082028115828204841417620004e757620004e7620004ed565b6000826200064957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200066157600080fd5b81516001600160a01b03811681146200067957600080fd5b9392505050565b80820180821115620004e757620004e7620004ed565b61339080620006a66000396000f3fe6080604052600436106103d25760003560e01c806386993e4d116101fd578063b6b55f2511610118578063e94dd17c116100ab578063ef40a6701161007a578063ef40a67014610aed578063f2fde38b14610b1a578063f4e0d9ac14610b3a578063faf9445714610b5a578063fd5a55bf14610b7a57600080fd5b8063e94dd17c14610a8d578063eb8cf20614610aad578063ebf6cf9b14610ac2578063edfb171d14610ad857600080fd5b8063e2d6f94c116100e7578063e2d6f94c14610a21578063e306744914610a41578063e480034514610a57578063e55a68b314610a7757600080fd5b8063b6b55f251461097b578063c0f874f61461099b578063c4f529fa146109bb578063dd62ed3e146109db57600080fd5b806395d89b4111610190578063a2e2d9f51161015f578063a2e2d9f514610906578063a8aa1b311461091b578063a9059cbb1461093b578063b0b4a1531461095b57600080fd5b806395d89b411461089057806398c56d78146108bb5780639b9a6f09146108d0578063a0821be3146108e657600080fd5b80638cd4426d116101cc5780638cd4426d1461081b5780639213c3581461083b5780639358928b1461085b5780639523f45e1461087057600080fd5b806386993e4d14610794578063884870c7146107a9578063893d20e8146107c95780638b3dc018146107fb57600080fd5b80633e9cc841116102ed57806370a08231116102805780637d1db4a51161024f5780637d1db4a5146107345780637f3d59851461074a578063800c543314610769578063817b1cd21461077e57600080fd5b806370a08231146106c957806373fd6c0a146106e957806378109e54146106fe57806378c7dcd61461071457600080fd5b8063486a7e6b116102bc578063486a7e6b1461065e57806348ff2b8b1461067457806354b822cf146106945780636c0e1c12146106b457600080fd5b80633e9cc841146105f357806344a583e11461061357806344df8e7014610628578063468d34ed1461064957600080fd5b80632cbf536011610365578063329738a411610334578063329738a41461059257806334eead48146105a7578063360b0fcd146105bd5780633c9f861d146105dd57600080fd5b80632cbf5360146105075780632e1a7d4d146105275780632f54bf6e14610547578063313ce5671461057657600080fd5b806318160ddd116103a157806318160ddd146104925780631badc110146104a75780632250f5e1146104c757806323b872dd146104e757600080fd5b806303807ee5146103de57806306fdde031461040757806307f7487314610440578063095ea7b31461046257600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103f460255481565b6040519081526020015b60405180910390f35b34801561041357600080fd5b506040805180820190915260078152662c39b734b832b960c91b60208201525b6040516103fe9190612ebc565b34801561044c57600080fd5b5061046061045b366004612f0a565b610b9a565b005b34801561046e57600080fd5b5061048261047d366004612f38565b610bd2565b60405190151581526020016103fe565b34801561049e57600080fd5b506001546103f4565b3480156104b357600080fd5b506104606104c2366004612f64565b610be9565b3480156104d357600080fd5b506104606104e2366004612f8f565b610c4d565b3480156104f357600080fd5b50610482610502366004612fac565b610c93565b34801561051357600080fd5b50610460610522366004612fed565b610cfd565b34801561053357600080fd5b50610460610542366004612f0a565b610d52565b34801561055357600080fd5b50610482610562366004612f64565b6000546001600160a01b0391821691161490565b34801561058257600080fd5b50604051600981526020016103fe565b34801561059e57600080fd5b506103f4610e98565b3480156105b357600080fd5b506103f460135481565b3480156105c957600080fd5b506104606105d8366004612fac565b610f0b565b3480156105e957600080fd5b506103f460285481565b3480156105ff57600080fd5b506012546104829062010000900460ff1681565b34801561061f57600080fd5b50610460610fa8565b34801561063457600080fd5b5060235461048290600160a01b900460ff1681565b34801561065557600080fd5b50610460611028565b34801561066a57600080fd5b506103f460245481565b34801561068057600080fd5b5061046061068f36600461300f565b6110ab565b3480156106a057600080fd5b506104606106af366004612f0a565b61112a565b3480156106c057600080fd5b50610460611139565b3480156106d557600080fd5b506103f46106e4366004612f64565b611176565b3480156106f557600080fd5b506103f4611191565b34801561070a57600080fd5b506103f460035481565b34801561072057600080fd5b5061046061072f366004612f0a565b6111db565b34801561074057600080fd5b506103f460025481565b34801561075657600080fd5b50601e546001600160a01b0316316103f4565b34801561077557600080fd5b5061046061120a565b34801561078a57600080fd5b506103f4601d5481565b3480156107a057600080fd5b506103f4611272565b3480156107b557600080fd5b506104606107c4366004612fed565b6112bc565b3480156107d557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103fe565b34801561080757600080fd5b50610460610816366004612f64565b6113ec565b34801561082757600080fd5b50610460610836366004612f38565b611438565b34801561084757600080fd5b50610460610856366004613048565b6114de565b34801561086757600080fd5b506103f46115ab565b34801561087c57600080fd5b5061046061088b366004613093565b6115d7565b34801561089c57600080fd5b50604080518082019091526002815261585360f01b6020820152610433565b3480156108c757600080fd5b506103f461167e565b3480156108dc57600080fd5b506103f460295481565b3480156108f257600080fd5b506103f4610901366004612f64565b611696565b34801561091257600080fd5b506103f46116c3565b34801561092757600080fd5b506008546107e3906001600160a01b031681565b34801561094757600080fd5b50610482610956366004612f38565b61170d565b34801561096757600080fd5b50610460610976366004612f0a565b61171a565b34801561098757600080fd5b50610460610996366004612f0a565b6117a6565b3480156109a757600080fd5b506104606109b6366004612f38565b611903565b3480156109c757600080fd5b506104606109d6366004612f0a565b611998565b3480156109e757600080fd5b506103f46109f63660046130c8565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a2d57600080fd5b50610460610a3c3660046130f6565b6119f3565b348015610a4d57600080fd5b506103f460275481565b348015610a6357600080fd5b50610460610a7236600461314b565b611afd565b348015610a8357600080fd5b506103f4602a5481565b348015610a9957600080fd5b50610460610aa8366004613169565b611b49565b348015610ab957600080fd5b50610460611baf565b348015610ace57600080fd5b506103f460265481565b348015610ae457600080fd5b506103f4611c3f565b348015610af957600080fd5b506103f4610b08366004612f64565b601c6020526000908152604090205481565b348015610b2657600080fd5b50610460610b35366004612f64565b611c89565b348015610b4657600080fd5b50610460610b55366004612f64565b611d07565b348015610b6657600080fd5b50610460610b75366004612f0a565b611d93565b348015610b8657600080fd5b50610460610b95366004612f0a565b611e04565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b8152600401610bc490613195565b60405180910390fd5b601355565b6000610bdf338484611e5f565b5060015b92915050565b6000546001600160a01b03163314610c135760405162461bcd60e51b8152600401610bc490613195565b602380546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610c775760405162461bcd60e51b8152600401610bc490613195565b60128054911515620100000262ff000019909216919091179055565b6000610ca0848484611f83565b610cf28433610ced85604051806060016040528060288152602001613333602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906120b4565b611e5f565b5060015b9392505050565b6000546001600160a01b03163314610d275760405162461bcd60e51b8152600401610bc490613195565b610d49620186a0610d43846001546120e090919063ffffffff16565b906120ec565b60245560255550565b336000908152601c6020526040902054811115610dc75760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610bc4565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b5050336000908152601c6020526040902054610e4692509050826120f8565b336000908152601c6020526040902055601d54610e6390826120f8565b601d556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b601e54604080516317e0695f60e21b815290516000926001600160a01b031691635f81a57c9160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0691906131b5565b905090565b6000546001600160a01b03163314610f355760405162461bcd60e51b8152600401610bc490613195565b601e5460405163360b0fcd60e01b81526001600160a01b0385811660048301528481166024830152604482018490529091169063360b0fcd90606401600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b50505050505050565b6012805463ff00000019166301000000179055601e546040805163a362630b60e01b815290516001600160a01b039092169163a362630b9160048082019260009290919082900301818387803b15801561100157600080fd5b505af1158015611015573d6000803e3d6000fd5b50506012805463ff000000191690555050565b6000546001600160a01b031633146110525760405162461bcd60e51b8152600401610bc490613195565b6012805463ff00000019166301000000179055601e5460408051632ce26ec960e11b815290516001600160a01b03909216916359c4dd929160048082019260009290919082900301818387803b15801561100157600080fd5b6000546001600160a01b031633146110d55760405162461bcd60e51b8152600401610bc490613195565b6001600160a01b038216600081815260066020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b61113633826000612104565b50565b6000546001600160a01b031633146111635760405162461bcd60e51b8152600401610bc490613195565b602a546111719042906121c5565b602655565b6001600160a01b031660009081526004602052604090205490565b601e5460408051632062cf9160e01b815290516000926001600160a01b031691632062cf919160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b6000546001600160a01b031633146112055760405162461bcd60e51b8152600401610bc490613195565b601b55565b6000546001600160a01b031633146112345760405162461bcd60e51b8152600401610bc490613195565b6012805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b601e54604080516306e2b37160e01b815290516000926001600160a01b0316916306e2b3719160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b6000546001600160a01b031633146112e65760405162461bcd60e51b8152600401610bc490613195565b6000611301612710610d43856112fb60015490565b906120e0565b90506000611318612710610d43856112fb60015490565b90506000611330612710610d4360056112fb60015490565b90508083101580156113425750808210155b6113ac5760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610bc4565b600283905560038290556040514290839085907f91db8d1965ad76c25e9cdb4624cb29364b3f3939376350bd898c06ab40fe707e90600090a45050505050565b6000546001600160a01b031633146114165760405162461bcd60e51b8152600401610bc490613195565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114625760405162461bcd60e51b8152600401610bc490613195565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af11580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d991906131ce565b505050565b6000546001600160a01b031633146115085760405162461bcd60e51b8152600401610bc490613195565b602180546001600160a01b03199081166001600160a01b038681169182179093556022805483168685169081179091556020805490931693851693841783556000828152600684526040808220805460ff199081166001908117909255848452928290208054909316179091555142815290927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a4505050565b6000610f066115ba6000611176565b6115d16115c861dead611176565b600154906120f8565b906120f8565b6000546001600160a01b031633146116015760405162461bcd60e51b8152600401610bc490613195565b6012805462ff000019166201000085151502179055601e5460405163b0b4a15360e01b8152600481018490526001600160a01b039091169063b0b4a15390602401600060405180830381600087803b15801561165c57600080fd5b505af1158015611670573d6000803e3d6000fd5b505050601791909155505050565b601e54600090610f06906001600160a01b0316611176565b6001600160a01b0381166000908152601c60209081526040808320546004909252822054610be3916120f8565b601e5460408051630415403760e31b815290516000926001600160a01b0316916320aa01b89160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b6000610bdf338484611f83565b6000546001600160a01b031633146117445760405162461bcd60e51b8152600401610bc490613195565b601e5460405163b0b4a15360e01b8152600481018390526001600160a01b039091169063b0b4a153906024015b600060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b5050505050565b336000908152601c60209081526040808320546004909252909120546117cb916120f8565b8111156118325760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610bc4565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b5050336000908152601c60205260409020546118b192509050826121c5565b336000908152601c6020526040902055601d546118ce90826121c5565b601d556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163607c3a7b60e11b81526001600160a01b038481166004830152602482018490529091169063c0f874f6906044015b600060405180830381600087803b15801561197c57600080fd5b505af1158015611990573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146119c25760405162461bcd60e51b8152600401610bc490613195565b601e5460405163627a94fd60e11b8152600481018390526001600160a01b039091169063c4f529fa90602401611771565b6000546001600160a01b03163314611a1d5760405162461bcd60e51b8152600401610bc490613195565b6009889055600a879055600b869055600d849055600c859055600e839055600f82905560108190556011548311801590611a5b5750601154600f5411155b8015611a6b575060115460105411155b611ab75760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e76616c696420746f74616c20656e7472792500000000006044820152606401610bc4565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc98984604051611aeb91815260200190565b60405180910390a45050505050505050565b6000546001600160a01b03163314611b275760405162461bcd60e51b8152600401610bc490613195565b60238054921515600160a01b0260ff60a01b1990931692909217909155602a55565b6000546001600160a01b03163314611b735760405162461bcd60e51b8152600401610bc490613195565b6018839055600154611b8e90620186a090610d4390856120e0565b601955600154611ba790620186a090610d4390846120e0565b601a55505050565b6000546001600160a01b03163314611bd95760405162461bcd60e51b8152600401610bc490613195565b601e5460405163607c3a7b60e11b8152306004820152606460248201526001600160a01b039091169063c0f874f690604401600060405180830381600087803b158015611c2557600080fd5b505af1158015611c39573d6000803e3d6000fd5b50505050565b601e546040805163d85a3bfb60e01b815290516000926001600160a01b03169163d85a3bfb9160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b6000546001600160a01b03163314611cb35760405162461bcd60e51b8152600401610bc490613195565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610bc490613195565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260066020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6000546001600160a01b03163314611dbd5760405162461bcd60e51b8152600401610bc490613195565b6000611dd2612710610d43846112fb60015490565b601e546040516304fe47f760e41b8152600481018390529192506001600160a01b031690634fe47f7090602401611962565b6000546001600160a01b03163314611e2e5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163fd5a55bf60e01b8152600481018390526001600160a01b039091169063fd5a55bf90602401611771565b6001600160a01b038316611ec15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc4565b6001600160a01b038216611f225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc4565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611f8e8383836121d1565b611f988383612300565b611fa38383836123a2565b611fae838383612504565b611fb9838383612614565b611fc3838361269f565b611fce8383836126c2565b6001600160a01b038316600090815260046020526040902054611ff190826120f8565b6001600160a01b038416600090815260046020526040812091909155612017848461281c565b612021578161202c565b61202c84848461287a565b6001600160a01b03841660009081526004602052604090205490915061205290826121c5565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120a69085815260200190565b60405180910390a350505050565b600081848411156120d85760405162461bcd60e51b8152600401610bc49190612ebc565b505050900390565b6000610cf68284613201565b6000610cf68284613218565b6000610cf6828461323a565b602b805460ff191660011790558015612179576000612143601154610d436025546112fb602360009054906101000a90046001600160a01b0316611176565b905082811015612151578092505b602354600090612169906001600160a01b0316611176565b9050838111612176578093505b50505b60285461218690836121c5565b6028554260275560295461219b9060016121c5565b6029556121a9833084611e5f565b6121b68361dead84611f83565b5050602b805460ff1916905550565b6000610cf6828461324d565b6001600160a01b0383166122355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc4565b6001600160a01b0382166122975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc4565b6122a083611176565b8111156114d95760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b6064820152608401610bc4565b6001600160a01b03821660009081526006602052604090205460ff1615801561234257506001600160a01b03811660009081526006602052604090205460ff16155b1561239e57601254610100900460ff1661239e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610bc4565b5050565b6001600160a01b0383166000908152601c60205260409020541561245b576001600160a01b038316600090815260046020908152604080832054601c909252909120546123f09083906121c5565b111561245b5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610bc4565b6012546301000000900460ff166114d9576002548111158061249557506001600160a01b03831660009081526006602052604090205460ff165b806124b857506001600160a01b03821660009081526006602052604090205460ff165b6114d95760405162461bcd60e51b815260206004820152601860248201527f45524332303a207478206c696d697420657863656564656400000000000000006044820152606401610bc4565b6001600160a01b03831660009081526006602052604090205460ff1615801561254657506001600160a01b03821660009081526006602052604090205460ff16155b801561256057506008546001600160a01b03838116911614155b801561257757506001600160a01b03821661dead14155b801561258d57506012546301000000900460ff16155b156114d9576003546001600160a01b0383166000908152600460205260409020546125b890836121c5565b11156114d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b6064820152608401610bc4565b6008546001600160a01b03838116911614801561264a57506001600160a01b03831660009081526006602052604090205460ff16155b80156126585750601a548110155b8015612667575060165460ff16155b801561267d57506012546301000000900460ff16155b156114d957600160156000828254612695919061324d565b9091555050505050565b6126a98282612987565b1561239e576126b9601954612a38565b60006015555050565b601254610100900460ff1680156126f257506001600160a01b03831660009081526006602052604090205460ff16155b801561270b57506008546001600160a01b038381169116145b80156127195750601b548110155b8015612728575060165460ff16155b801561273e57506012546301000000900460ff16155b1561275c57600160146000828254612756919061324d565b90915550505b601254610100900460ff16801561277b575060125462010000900460ff165b801561279c5750601e5460009061279a906001600160a01b0316611176565b115b80156127ac575060175460145410155b80156127d157506001600160a01b03831660009081526006602052604090205460ff16155b80156127ea57506008546001600160a01b038381169116145b80156127f9575060165460ff16155b801561280f57506012546301000000900460ff16155b156114d9576114d9612c02565b6001600160a01b03821660009081526006602052604081205460ff1615801561285e57506001600160a01b03821660009081526006602052604090205460ff16155b8015610cf65750506012546301000000900460ff161592915050565b6000806128878585612c86565b11801561289e57506012546301000000900460ff16155b156129805760006128c06128b28686612c86565b6011546112fb9086906120ec565b306000908152600460205260409020549091506128dd90826121c5565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061292e9085815260200190565b60405180910390a3600d541561296e57601e54600d5460115461296e9230926001600160a01b039091169161296991906112fb9089906120ec565b611f83565b61297883826120f8565b915050610cf6565b5092915050565b60008060195461299630611176565b601654911115915060ff161580156129b0575060125460ff165b80156129c35750601254610100900460ff165b80156129e857506001600160a01b03841660009081526006602052604090205460ff16155b8015612a0157506008546001600160a01b038481169116145b8015612a11575060185460155410155b8015612a1a5750805b8015612a3057506012546301000000900460ff16155b949350505050565b6016805460ff19166001179055600e54600090612a569060026120e0565b90506000612a7382610d43600954866120e090919063ffffffff16565b90506000612a8184836120f8565b905047612a8d82612ced565b6000612a9947836120f8565b90506000612abc612ab5600954886120f890919063ffffffff16565b83906120ec565b90506000612ad5600954836120e090919063ffffffff16565b90508015612af657602254612af690879083906001600160a01b0316612e11565b600a54600090612b0b906112fb8560026120e0565b90508015612b4f576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612b4d573d6000803e3d6000fd5b505b600c54600090612b64906112fb8660026120e0565b90508015612ba857601e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612ba6573d6000803e3d6000fd5b505b478015612beb576020546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612be9573d6000803e3d6000fd5b505b50506016805460ff19169055505050505050505050565b6012805463ff00000019166301000000179055601e5460135460408051632ce26ec960e11b815290516001600160a01b03909316926359c4dd92929160048082019260009290919082900301818388803b158015612c5f57600080fd5b5087f193505050508015612c71575060015b5060006014556012805463ff00000019169055565b6008546000906001600160a01b038381169116148015612ca857506000600f54115b15612cb65750600f54610be3565b6008546001600160a01b038481169116148015612cd557506000600e54115b15612ce35750600e54610be3565b5060105492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d2257612d22613260565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9f9190613276565b81600181518110612db257612db2613260565b6001600160a01b039283166020918202929092010152600754612dd89130911684611e5f565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611962908590600090869030904290600401613293565b600754612e299030906001600160a01b031685611e5f565b60075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612e97573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119909190613304565b600060208083528351808285015260005b81811015612ee957858101830151858201604001528201612ecd565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612f1c57600080fd5b5035919050565b6001600160a01b038116811461113657600080fd5b60008060408385031215612f4b57600080fd5b8235612f5681612f23565b946020939093013593505050565b600060208284031215612f7657600080fd5b8135610cf681612f23565b801515811461113657600080fd5b600060208284031215612fa157600080fd5b8135610cf681612f81565b600080600060608486031215612fc157600080fd5b8335612fcc81612f23565b92506020840135612fdc81612f23565b929592945050506040919091013590565b6000806040838503121561300057600080fd5b50508035926020909101359150565b6000806040838503121561302257600080fd5b823561302d81612f23565b9150602083013561303d81612f81565b809150509250929050565b60008060006060848603121561305d57600080fd5b833561306881612f23565b9250602084013561307881612f23565b9150604084013561308881612f23565b809150509250925092565b6000806000606084860312156130a857600080fd5b83356130b381612f81565b95602085013595506040909401359392505050565b600080604083850312156130db57600080fd5b82356130e681612f23565b9150602083013561303d81612f23565b600080600080600080600080610100898b03121561311357600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b6000806040838503121561315e57600080fd5b8235612f5681612f81565b60008060006060848603121561317e57600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156131c757600080fd5b5051919050565b6000602082840312156131e057600080fd5b8151610cf681612f81565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610be357610be36131eb565b60008261323557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610be357610be36131eb565b80820180821115610be357610be36131eb565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561328857600080fd5b8151610cf681612f23565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132e35784516001600160a01b0316835293830193918301916001016132be565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561331957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b12da34da15cc543cc77d141618e6aaf4a764a239c80cd57dda05283215f405e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103d25760003560e01c806386993e4d116101fd578063b6b55f2511610118578063e94dd17c116100ab578063ef40a6701161007a578063ef40a67014610aed578063f2fde38b14610b1a578063f4e0d9ac14610b3a578063faf9445714610b5a578063fd5a55bf14610b7a57600080fd5b8063e94dd17c14610a8d578063eb8cf20614610aad578063ebf6cf9b14610ac2578063edfb171d14610ad857600080fd5b8063e2d6f94c116100e7578063e2d6f94c14610a21578063e306744914610a41578063e480034514610a57578063e55a68b314610a7757600080fd5b8063b6b55f251461097b578063c0f874f61461099b578063c4f529fa146109bb578063dd62ed3e146109db57600080fd5b806395d89b4111610190578063a2e2d9f51161015f578063a2e2d9f514610906578063a8aa1b311461091b578063a9059cbb1461093b578063b0b4a1531461095b57600080fd5b806395d89b411461089057806398c56d78146108bb5780639b9a6f09146108d0578063a0821be3146108e657600080fd5b80638cd4426d116101cc5780638cd4426d1461081b5780639213c3581461083b5780639358928b1461085b5780639523f45e1461087057600080fd5b806386993e4d14610794578063884870c7146107a9578063893d20e8146107c95780638b3dc018146107fb57600080fd5b80633e9cc841116102ed57806370a08231116102805780637d1db4a51161024f5780637d1db4a5146107345780637f3d59851461074a578063800c543314610769578063817b1cd21461077e57600080fd5b806370a08231146106c957806373fd6c0a146106e957806378109e54146106fe57806378c7dcd61461071457600080fd5b8063486a7e6b116102bc578063486a7e6b1461065e57806348ff2b8b1461067457806354b822cf146106945780636c0e1c12146106b457600080fd5b80633e9cc841146105f357806344a583e11461061357806344df8e7014610628578063468d34ed1461064957600080fd5b80632cbf536011610365578063329738a411610334578063329738a41461059257806334eead48146105a7578063360b0fcd146105bd5780633c9f861d146105dd57600080fd5b80632cbf5360146105075780632e1a7d4d146105275780632f54bf6e14610547578063313ce5671461057657600080fd5b806318160ddd116103a157806318160ddd146104925780631badc110146104a75780632250f5e1146104c757806323b872dd146104e757600080fd5b806303807ee5146103de57806306fdde031461040757806307f7487314610440578063095ea7b31461046257600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103f460255481565b6040519081526020015b60405180910390f35b34801561041357600080fd5b506040805180820190915260078152662c39b734b832b960c91b60208201525b6040516103fe9190612ebc565b34801561044c57600080fd5b5061046061045b366004612f0a565b610b9a565b005b34801561046e57600080fd5b5061048261047d366004612f38565b610bd2565b60405190151581526020016103fe565b34801561049e57600080fd5b506001546103f4565b3480156104b357600080fd5b506104606104c2366004612f64565b610be9565b3480156104d357600080fd5b506104606104e2366004612f8f565b610c4d565b3480156104f357600080fd5b50610482610502366004612fac565b610c93565b34801561051357600080fd5b50610460610522366004612fed565b610cfd565b34801561053357600080fd5b50610460610542366004612f0a565b610d52565b34801561055357600080fd5b50610482610562366004612f64565b6000546001600160a01b0391821691161490565b34801561058257600080fd5b50604051600981526020016103fe565b34801561059e57600080fd5b506103f4610e98565b3480156105b357600080fd5b506103f460135481565b3480156105c957600080fd5b506104606105d8366004612fac565b610f0b565b3480156105e957600080fd5b506103f460285481565b3480156105ff57600080fd5b506012546104829062010000900460ff1681565b34801561061f57600080fd5b50610460610fa8565b34801561063457600080fd5b5060235461048290600160a01b900460ff1681565b34801561065557600080fd5b50610460611028565b34801561066a57600080fd5b506103f460245481565b34801561068057600080fd5b5061046061068f36600461300f565b6110ab565b3480156106a057600080fd5b506104606106af366004612f0a565b61112a565b3480156106c057600080fd5b50610460611139565b3480156106d557600080fd5b506103f46106e4366004612f64565b611176565b3480156106f557600080fd5b506103f4611191565b34801561070a57600080fd5b506103f460035481565b34801561072057600080fd5b5061046061072f366004612f0a565b6111db565b34801561074057600080fd5b506103f460025481565b34801561075657600080fd5b50601e546001600160a01b0316316103f4565b34801561077557600080fd5b5061046061120a565b34801561078a57600080fd5b506103f4601d5481565b3480156107a057600080fd5b506103f4611272565b3480156107b557600080fd5b506104606107c4366004612fed565b6112bc565b3480156107d557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103fe565b34801561080757600080fd5b50610460610816366004612f64565b6113ec565b34801561082757600080fd5b50610460610836366004612f38565b611438565b34801561084757600080fd5b50610460610856366004613048565b6114de565b34801561086757600080fd5b506103f46115ab565b34801561087c57600080fd5b5061046061088b366004613093565b6115d7565b34801561089c57600080fd5b50604080518082019091526002815261585360f01b6020820152610433565b3480156108c757600080fd5b506103f461167e565b3480156108dc57600080fd5b506103f460295481565b3480156108f257600080fd5b506103f4610901366004612f64565b611696565b34801561091257600080fd5b506103f46116c3565b34801561092757600080fd5b506008546107e3906001600160a01b031681565b34801561094757600080fd5b50610482610956366004612f38565b61170d565b34801561096757600080fd5b50610460610976366004612f0a565b61171a565b34801561098757600080fd5b50610460610996366004612f0a565b6117a6565b3480156109a757600080fd5b506104606109b6366004612f38565b611903565b3480156109c757600080fd5b506104606109d6366004612f0a565b611998565b3480156109e757600080fd5b506103f46109f63660046130c8565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a2d57600080fd5b50610460610a3c3660046130f6565b6119f3565b348015610a4d57600080fd5b506103f460275481565b348015610a6357600080fd5b50610460610a7236600461314b565b611afd565b348015610a8357600080fd5b506103f4602a5481565b348015610a9957600080fd5b50610460610aa8366004613169565b611b49565b348015610ab957600080fd5b50610460611baf565b348015610ace57600080fd5b506103f460265481565b348015610ae457600080fd5b506103f4611c3f565b348015610af957600080fd5b506103f4610b08366004612f64565b601c6020526000908152604090205481565b348015610b2657600080fd5b50610460610b35366004612f64565b611c89565b348015610b4657600080fd5b50610460610b55366004612f64565b611d07565b348015610b6657600080fd5b50610460610b75366004612f0a565b611d93565b348015610b8657600080fd5b50610460610b95366004612f0a565b611e04565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b8152600401610bc490613195565b60405180910390fd5b601355565b6000610bdf338484611e5f565b5060015b92915050565b6000546001600160a01b03163314610c135760405162461bcd60e51b8152600401610bc490613195565b602380546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610c775760405162461bcd60e51b8152600401610bc490613195565b60128054911515620100000262ff000019909216919091179055565b6000610ca0848484611f83565b610cf28433610ced85604051806060016040528060288152602001613333602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906120b4565b611e5f565b5060015b9392505050565b6000546001600160a01b03163314610d275760405162461bcd60e51b8152600401610bc490613195565b610d49620186a0610d43846001546120e090919063ffffffff16565b906120ec565b60245560255550565b336000908152601c6020526040902054811115610dc75760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610bc4565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b5050336000908152601c6020526040902054610e4692509050826120f8565b336000908152601c6020526040902055601d54610e6390826120f8565b601d556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b601e54604080516317e0695f60e21b815290516000926001600160a01b031691635f81a57c9160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0691906131b5565b905090565b6000546001600160a01b03163314610f355760405162461bcd60e51b8152600401610bc490613195565b601e5460405163360b0fcd60e01b81526001600160a01b0385811660048301528481166024830152604482018490529091169063360b0fcd90606401600060405180830381600087803b158015610f8b57600080fd5b505af1158015610f9f573d6000803e3d6000fd5b50505050505050565b6012805463ff00000019166301000000179055601e546040805163a362630b60e01b815290516001600160a01b039092169163a362630b9160048082019260009290919082900301818387803b15801561100157600080fd5b505af1158015611015573d6000803e3d6000fd5b50506012805463ff000000191690555050565b6000546001600160a01b031633146110525760405162461bcd60e51b8152600401610bc490613195565b6012805463ff00000019166301000000179055601e5460408051632ce26ec960e11b815290516001600160a01b03909216916359c4dd929160048082019260009290919082900301818387803b15801561100157600080fd5b6000546001600160a01b031633146110d55760405162461bcd60e51b8152600401610bc490613195565b6001600160a01b038216600081815260066020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b61113633826000612104565b50565b6000546001600160a01b031633146111635760405162461bcd60e51b8152600401610bc490613195565b602a546111719042906121c5565b602655565b6001600160a01b031660009081526004602052604090205490565b601e5460408051632062cf9160e01b815290516000926001600160a01b031691632062cf919160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b6000546001600160a01b031633146112055760405162461bcd60e51b8152600401610bc490613195565b601b55565b6000546001600160a01b031633146112345760405162461bcd60e51b8152600401610bc490613195565b6012805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b601e54604080516306e2b37160e01b815290516000926001600160a01b0316916306e2b3719160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b6000546001600160a01b031633146112e65760405162461bcd60e51b8152600401610bc490613195565b6000611301612710610d43856112fb60015490565b906120e0565b90506000611318612710610d43856112fb60015490565b90506000611330612710610d4360056112fb60015490565b90508083101580156113425750808210155b6113ac5760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610bc4565b600283905560038290556040514290839085907f91db8d1965ad76c25e9cdb4624cb29364b3f3939376350bd898c06ab40fe707e90600090a45050505050565b6000546001600160a01b031633146114165760405162461bcd60e51b8152600401610bc490613195565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114625760405162461bcd60e51b8152600401610bc490613195565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af11580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d991906131ce565b505050565b6000546001600160a01b031633146115085760405162461bcd60e51b8152600401610bc490613195565b602180546001600160a01b03199081166001600160a01b038681169182179093556022805483168685169081179091556020805490931693851693841783556000828152600684526040808220805460ff199081166001908117909255848452928290208054909316179091555142815290927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a4505050565b6000610f066115ba6000611176565b6115d16115c861dead611176565b600154906120f8565b906120f8565b6000546001600160a01b031633146116015760405162461bcd60e51b8152600401610bc490613195565b6012805462ff000019166201000085151502179055601e5460405163b0b4a15360e01b8152600481018490526001600160a01b039091169063b0b4a15390602401600060405180830381600087803b15801561165c57600080fd5b505af1158015611670573d6000803e3d6000fd5b505050601791909155505050565b601e54600090610f06906001600160a01b0316611176565b6001600160a01b0381166000908152601c60209081526040808320546004909252822054610be3916120f8565b601e5460408051630415403760e31b815290516000926001600160a01b0316916320aa01b89160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b6000610bdf338484611f83565b6000546001600160a01b031633146117445760405162461bcd60e51b8152600401610bc490613195565b601e5460405163b0b4a15360e01b8152600481018390526001600160a01b039091169063b0b4a153906024015b600060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b5050505050565b336000908152601c60209081526040808320546004909252909120546117cb916120f8565b8111156118325760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610bc4565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b5050336000908152601c60205260409020546118b192509050826121c5565b336000908152601c6020526040902055601d546118ce90826121c5565b601d556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163607c3a7b60e11b81526001600160a01b038481166004830152602482018490529091169063c0f874f6906044015b600060405180830381600087803b15801561197c57600080fd5b505af1158015611990573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146119c25760405162461bcd60e51b8152600401610bc490613195565b601e5460405163627a94fd60e11b8152600481018390526001600160a01b039091169063c4f529fa90602401611771565b6000546001600160a01b03163314611a1d5760405162461bcd60e51b8152600401610bc490613195565b6009889055600a879055600b869055600d849055600c859055600e839055600f82905560108190556011548311801590611a5b5750601154600f5411155b8015611a6b575060115460105411155b611ab75760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e76616c696420746f74616c20656e7472792500000000006044820152606401610bc4565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc98984604051611aeb91815260200190565b60405180910390a45050505050505050565b6000546001600160a01b03163314611b275760405162461bcd60e51b8152600401610bc490613195565b60238054921515600160a01b0260ff60a01b1990931692909217909155602a55565b6000546001600160a01b03163314611b735760405162461bcd60e51b8152600401610bc490613195565b6018839055600154611b8e90620186a090610d4390856120e0565b601955600154611ba790620186a090610d4390846120e0565b601a55505050565b6000546001600160a01b03163314611bd95760405162461bcd60e51b8152600401610bc490613195565b601e5460405163607c3a7b60e11b8152306004820152606460248201526001600160a01b039091169063c0f874f690604401600060405180830381600087803b158015611c2557600080fd5b505af1158015611c39573d6000803e3d6000fd5b50505050565b601e546040805163d85a3bfb60e01b815290516000926001600160a01b03169163d85a3bfb9160048083019260209291908290030181865afa158015610ee2573d6000803e3d6000fd5b6000546001600160a01b03163314611cb35760405162461bcd60e51b8152600401610bc490613195565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610bc490613195565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260066020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6000546001600160a01b03163314611dbd5760405162461bcd60e51b8152600401610bc490613195565b6000611dd2612710610d43846112fb60015490565b601e546040516304fe47f760e41b8152600481018390529192506001600160a01b031690634fe47f7090602401611962565b6000546001600160a01b03163314611e2e5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163fd5a55bf60e01b8152600481018390526001600160a01b039091169063fd5a55bf90602401611771565b6001600160a01b038316611ec15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc4565b6001600160a01b038216611f225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc4565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611f8e8383836121d1565b611f988383612300565b611fa38383836123a2565b611fae838383612504565b611fb9838383612614565b611fc3838361269f565b611fce8383836126c2565b6001600160a01b038316600090815260046020526040902054611ff190826120f8565b6001600160a01b038416600090815260046020526040812091909155612017848461281c565b612021578161202c565b61202c84848461287a565b6001600160a01b03841660009081526004602052604090205490915061205290826121c5565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120a69085815260200190565b60405180910390a350505050565b600081848411156120d85760405162461bcd60e51b8152600401610bc49190612ebc565b505050900390565b6000610cf68284613201565b6000610cf68284613218565b6000610cf6828461323a565b602b805460ff191660011790558015612179576000612143601154610d436025546112fb602360009054906101000a90046001600160a01b0316611176565b905082811015612151578092505b602354600090612169906001600160a01b0316611176565b9050838111612176578093505b50505b60285461218690836121c5565b6028554260275560295461219b9060016121c5565b6029556121a9833084611e5f565b6121b68361dead84611f83565b5050602b805460ff1916905550565b6000610cf6828461324d565b6001600160a01b0383166122355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc4565b6001600160a01b0382166122975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc4565b6122a083611176565b8111156114d95760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b6064820152608401610bc4565b6001600160a01b03821660009081526006602052604090205460ff1615801561234257506001600160a01b03811660009081526006602052604090205460ff16155b1561239e57601254610100900460ff1661239e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610bc4565b5050565b6001600160a01b0383166000908152601c60205260409020541561245b576001600160a01b038316600090815260046020908152604080832054601c909252909120546123f09083906121c5565b111561245b5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610bc4565b6012546301000000900460ff166114d9576002548111158061249557506001600160a01b03831660009081526006602052604090205460ff165b806124b857506001600160a01b03821660009081526006602052604090205460ff165b6114d95760405162461bcd60e51b815260206004820152601860248201527f45524332303a207478206c696d697420657863656564656400000000000000006044820152606401610bc4565b6001600160a01b03831660009081526006602052604090205460ff1615801561254657506001600160a01b03821660009081526006602052604090205460ff16155b801561256057506008546001600160a01b03838116911614155b801561257757506001600160a01b03821661dead14155b801561258d57506012546301000000900460ff16155b156114d9576003546001600160a01b0383166000908152600460205260409020546125b890836121c5565b11156114d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b6064820152608401610bc4565b6008546001600160a01b03838116911614801561264a57506001600160a01b03831660009081526006602052604090205460ff16155b80156126585750601a548110155b8015612667575060165460ff16155b801561267d57506012546301000000900460ff16155b156114d957600160156000828254612695919061324d565b9091555050505050565b6126a98282612987565b1561239e576126b9601954612a38565b60006015555050565b601254610100900460ff1680156126f257506001600160a01b03831660009081526006602052604090205460ff16155b801561270b57506008546001600160a01b038381169116145b80156127195750601b548110155b8015612728575060165460ff16155b801561273e57506012546301000000900460ff16155b1561275c57600160146000828254612756919061324d565b90915550505b601254610100900460ff16801561277b575060125462010000900460ff165b801561279c5750601e5460009061279a906001600160a01b0316611176565b115b80156127ac575060175460145410155b80156127d157506001600160a01b03831660009081526006602052604090205460ff16155b80156127ea57506008546001600160a01b038381169116145b80156127f9575060165460ff16155b801561280f57506012546301000000900460ff16155b156114d9576114d9612c02565b6001600160a01b03821660009081526006602052604081205460ff1615801561285e57506001600160a01b03821660009081526006602052604090205460ff16155b8015610cf65750506012546301000000900460ff161592915050565b6000806128878585612c86565b11801561289e57506012546301000000900460ff16155b156129805760006128c06128b28686612c86565b6011546112fb9086906120ec565b306000908152600460205260409020549091506128dd90826121c5565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061292e9085815260200190565b60405180910390a3600d541561296e57601e54600d5460115461296e9230926001600160a01b039091169161296991906112fb9089906120ec565b611f83565b61297883826120f8565b915050610cf6565b5092915050565b60008060195461299630611176565b601654911115915060ff161580156129b0575060125460ff165b80156129c35750601254610100900460ff165b80156129e857506001600160a01b03841660009081526006602052604090205460ff16155b8015612a0157506008546001600160a01b038481169116145b8015612a11575060185460155410155b8015612a1a5750805b8015612a3057506012546301000000900460ff16155b949350505050565b6016805460ff19166001179055600e54600090612a569060026120e0565b90506000612a7382610d43600954866120e090919063ffffffff16565b90506000612a8184836120f8565b905047612a8d82612ced565b6000612a9947836120f8565b90506000612abc612ab5600954886120f890919063ffffffff16565b83906120ec565b90506000612ad5600954836120e090919063ffffffff16565b90508015612af657602254612af690879083906001600160a01b0316612e11565b600a54600090612b0b906112fb8560026120e0565b90508015612b4f576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612b4d573d6000803e3d6000fd5b505b600c54600090612b64906112fb8660026120e0565b90508015612ba857601e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612ba6573d6000803e3d6000fd5b505b478015612beb576020546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612be9573d6000803e3d6000fd5b505b50506016805460ff19169055505050505050505050565b6012805463ff00000019166301000000179055601e5460135460408051632ce26ec960e11b815290516001600160a01b03909316926359c4dd92929160048082019260009290919082900301818388803b158015612c5f57600080fd5b5087f193505050508015612c71575060015b5060006014556012805463ff00000019169055565b6008546000906001600160a01b038381169116148015612ca857506000600f54115b15612cb65750600f54610be3565b6008546001600160a01b038481169116148015612cd557506000600e54115b15612ce35750600e54610be3565b5060105492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d2257612d22613260565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9f9190613276565b81600181518110612db257612db2613260565b6001600160a01b039283166020918202929092010152600754612dd89130911684611e5f565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611962908590600090869030904290600401613293565b600754612e299030906001600160a01b031685611e5f565b60075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612e97573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119909190613304565b600060208083528351808285015260005b81811015612ee957858101830151858201604001528201612ecd565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612f1c57600080fd5b5035919050565b6001600160a01b038116811461113657600080fd5b60008060408385031215612f4b57600080fd5b8235612f5681612f23565b946020939093013593505050565b600060208284031215612f7657600080fd5b8135610cf681612f23565b801515811461113657600080fd5b600060208284031215612fa157600080fd5b8135610cf681612f81565b600080600060608486031215612fc157600080fd5b8335612fcc81612f23565b92506020840135612fdc81612f23565b929592945050506040919091013590565b6000806040838503121561300057600080fd5b50508035926020909101359150565b6000806040838503121561302257600080fd5b823561302d81612f23565b9150602083013561303d81612f81565b809150509250929050565b60008060006060848603121561305d57600080fd5b833561306881612f23565b9250602084013561307881612f23565b9150604084013561308881612f23565b809150509250925092565b6000806000606084860312156130a857600080fd5b83356130b381612f81565b95602085013595506040909401359392505050565b600080604083850312156130db57600080fd5b82356130e681612f23565b9150602083013561303d81612f23565b600080600080600080600080610100898b03121561311357600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b6000806040838503121561315e57600080fd5b8235612f5681612f81565b60008060006060848603121561317e57600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156131c757600080fd5b5051919050565b6000602082840312156131e057600080fd5b8151610cf681612f81565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610be357610be36131eb565b60008261323557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610be357610be36131eb565b80820180821115610be357610be36131eb565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561328857600080fd5b8151610cf681612f23565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132e35784516001600160a01b0316835293830193918301916001016132be565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561331957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b12da34da15cc543cc77d141618e6aaf4a764a239c80cd57dda05283215f405e64736f6c63430008130033

Deployed Bytecode Sourcemap

6408:20863:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8729:32;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8729:32:0;;;;;;;;10865:67;;;;;;;;;;-1:-1:-1;10925:5:0;;;;;;;;;;;;-1:-1:-1;;;10925:5:0;;;;10865:67;;;;;;;:::i;20935:89::-;;;;;;;;;;-1:-1:-1;20935:89:0;;;;;:::i;:::-;;:::i;:::-;;11649:133;;;;;;;;;;-1:-1:-1;11649:133:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;11649:133:0;1390:187:1;11172:84:0;;;;;;;;;;-1:-1:-1;11242:12:0;;11172:84;;26793:138;;;;;;;;;;-1:-1:-1;26793:138:0;;;;;:::i;:::-;;:::i;20327:91::-;;;;;;;;;;-1:-1:-1;20327:91:0;;;;;:::i;:::-;;:::i;24031:309::-;;;;;;;;;;-1:-1:-1;24031:309:0;;;;;:::i;:::-;;:::i;26937:187::-;;;;;;;;;;-1:-1:-1;26937:187:0;;;;;:::i;:::-;;:::i;13601:408::-;;;;;;;;;;-1:-1:-1;13601:408:0;;;;;:::i;:::-;;:::i;3902:87::-;;;;;;;;;;-1:-1:-1;3902:87:0;;;;;:::i;:::-;3957:4;3982:5;-1:-1:-1;;;;;3971:16:0;;;3982:5;;3971:16;;3902:87;11015:67;;;;;;;;;;-1:-1:-1;11015:67:0;;6626:1;3059:36:1;;3047:2;3032:18;11015:67:0;2917:184:1;25182:113:0;;;;;;;;;;;;;:::i;7552:29::-;;;;;;;;;;;;;;;;21161:162;;;;;;;;;;-1:-1:-1;21161:162:0;;;;;:::i;:::-;;:::i;8832:24::-;;;;;;;;;;;;;;;;7487:30;;;;;;;;;;-1:-1:-1;7487:30:0;;;;;;;;;;;22698:132;;;;;;;;;;;;;:::i;8631:23::-;;;;;;;;;;-1:-1:-1;8631:23:0;;;;-1:-1:-1;;;8631:23:0;;;;;;22838:152;;;;;;;;;;;;;:::i;8661:61::-;;;;;;;;;;;;;;;;19656:192;;;;;;;;;;-1:-1:-1;19656:192:0;;;;;:::i;:::-;;:::i;26571:103::-;;;;;;;;;;-1:-1:-1;26571:103:0;;;;;:::i;:::-;;:::i;26681:106::-;;;;;;;;;;;;;:::i;11262:103::-;;;;;;;;;;-1:-1:-1;11262:103:0;;;;;:::i;:::-;;:::i;24928:125::-;;;;;;;;;;;;;:::i;6769:63::-;;;;;;;;;;;;;;;;20630:110;;;;;;;;;;-1:-1:-1;20630:110:0;;;;;:::i;:::-;;:::i;6702:60::-;;;;;;;;;;;;;;;;24691:106;;;;;;;;;;-1:-1:-1;24771:9:0;;-1:-1:-1;;;;;24771:9:0;24763:26;24691:106;;19105:140;;;;;;;;;;;;;:::i;8102:26::-;;;;;;;;;;;;;;;;25061:113;;;;;;;;;;;;;:::i;14834:514::-;;;;;;;;;;-1:-1:-1;14834:514:0;;;;;:::i;:::-;;:::i;11088:78::-;;;;;;;;;;-1:-1:-1;11140:7:0;11158:5;-1:-1:-1;;;;;11158:5:0;11088:78;;;-1:-1:-1;;;;;3657:32:1;;;3639:51;;3627:2;3612:18;11088:78:0;3493:203:1;21032:121:0;;;;;;;;;;-1:-1:-1;21032:121:0;;;;;:::i;:::-;;:::i;19856:150::-;;;;;;;;;;-1:-1:-1;19856:150:0;;;;;:::i;:::-;;:::i;19253:395::-;;;;;;;;;;-1:-1:-1;19253:395:0;;;;;:::i;:::-;;:::i;11919:138::-;;;;;;;;;;;;;:::i;20426:196::-;;;;;;;;;;-1:-1:-1;20426:196:0;;;;;:::i;:::-;;:::i;10938:71::-;;;;;;;;;;-1:-1:-1;11000:7:0;;;;;;;;;;;;-1:-1:-1;;;11000:7:0;;;;10938:71;;24805:115;;;;;;;;;;;;;:::i;8863:30::-;;;;;;;;;;;;;;;;11788:125;;;;;;;;;;-1:-1:-1;11788:125:0;;;;;:::i;:::-;;:::i;25430:120::-;;;;;;;;;;;;;:::i;7032:19::-;;;;;;;;;;-1:-1:-1;7032:19:0;;;;-1:-1:-1;;;;;7032:19:0;;;11371:139;;;;;;;;;;-1:-1:-1;11371:139:0;;;;;:::i;:::-;;:::i;21846:122::-;;;;;;;;;;-1:-1:-1;21846:122:0;;;;;:::i;:::-;;:::i;13159:434::-;;;;;;;;;;-1:-1:-1;13159:434:0;;;;;:::i;:::-;;:::i;21331:136::-;;;;;;;;;;-1:-1:-1;21331:136:0;;;;;:::i;:::-;;:::i;21726:112::-;;;;;;;;;;-1:-1:-1;21726:112:0;;;;;:::i;:::-;;:::i;11516:127::-;;;;;;;;;;-1:-1:-1;11516:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11614:18:0;;;11597:7;11614:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11516:127;14242:584;;;;;;;;;;-1:-1:-1;14242:584:0;;;;;:::i;:::-;;:::i;8798:27::-;;;;;;;;;;;;;;;;27132:136;;;;;;;;;;-1:-1:-1;27132:136:0;;;;;:::i;:::-;;:::i;8900:40::-;;;;;;;;;;;;;;;;20014:305;;;;;;;;;;-1:-1:-1;20014:305:0;;;;;:::i;:::-;;:::i;21475:119::-;;;;;;;;;;;;;:::i;8768:23::-;;;;;;;;;;;;;;;;25303:119;;;;;;;;;;;;;:::i;8048:47::-;;;;;;;;;;-1:-1:-1;8048:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;3995:111;;;;;;;;;;-1:-1:-1;3995:111:0;;;;;:::i;:::-;;:::i;14017:217::-;;;;;;;;;;-1:-1:-1;14017:217:0;;;;;:::i;:::-;;:::i;20748:179::-;;;;;;;;;;-1:-1:-1;20748:179:0;;;;;:::i;:::-;;:::i;21602:116::-;;;;;;;;;;-1:-1:-1;21602:116:0;;;;;:::i;:::-;;:::i;20935:89::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;;;;;;;;;21005:5:::1;:11:::0;20935:89::o;11649:133::-;11724:4;11731:37;11740:10;11752:7;11761:6;11731:8;:37::i;:::-;-1:-1:-1;11776:4:0;11649:133;;;;;:::o;26793:138::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;26869:10:::1;:18:::0;;-1:-1:-1;;;;;26869:18:0;;::::1;-1:-1:-1::0;;;;;;26869:18:0;;::::1;::::0;::::1;::::0;;:10:::1;26898:18:::0;;;:11:::1;:18;::::0;;;;:25;;-1:-1:-1;;26898:25:0::1;26869:18:::0;26898:25:::1;::::0;;26793:138::o;20327:91::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20391:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;20391:19:0;;::::1;::::0;;;::::1;::::0;;20327:91::o;24031:309::-;24129:4;24146:36;24156:6;24164:9;24175:6;24146:9;:36::i;:::-;24193:117;24202:6;24210:10;24222:87;24258:6;24222:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24222:19:0;;;;;;:11;:19;;;;;;;;24242:10;24222:31;;;;;;;;;:87;:35;:87::i;:::-;24193:8;:117::i;:::-;-1:-1:-1;24328:4:0;24031:309;;;;;;:::o;26937:187::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;27047:41:::1;27081:6;27047:29;27064:11;27047:12;;:16;;:29;;;;:::i;:::-;:33:::0;::::1;:41::i;:::-;27034:10;:54:::0;27090:11:::1;:26:::0;-1:-1:-1;26937:187:0:o;13601:408::-;13695:10;13682:24;;;;:12;:24;;;;;;13672:34;;;13664:92;;;;-1:-1:-1;;;13664:92:0;;7107:2:1;13664:92:0;;;7089:21:1;7146:2;7126:18;;;7119:30;7185:34;7165:18;;;7158:62;-1:-1:-1;;;7236:18:1;;;7229:43;7289:19;;13664:92:0;6905:409:1;13664:92:0;13767:15;;:51;;-1:-1:-1;;;13767:51:0;;13799:10;13767:51;;;7493::1;7560:18;;;7553:34;;;-1:-1:-1;;;;;13767:15:0;;;;:31;;7466:18:1;;13767:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13869:10:0;13856:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;13856:24:0;-1:-1:-1;13885:6:0;13856:28;:36::i;:::-;13842:10;13829:24;;;;:12;:24;;;;;:63;13917:11;;:23;;13933:6;13917:15;:23::i;:::-;13903:11;:37;13956:45;;13985:15;;13977:6;;13965:10;;13956:45;;;;;13601:408;:::o;25182:113::-;25264:9;;:23;;;-1:-1:-1;;;25264:23:0;;;;25237:7;;-1:-1:-1;;;;;25264:9:0;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25257:30;;25182:113;:::o;21161:162::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21265:9:::1;::::0;:50:::1;::::0;-1:-1:-1;;;21265:50:0;;-1:-1:-1;;;;;8045:15:1;;;21265:50:0::1;::::0;::::1;8027:34:1::0;8097:15;;;8077:18;;;8070:43;8129:18;;;8122:34;;;21265:9:0;;::::1;::::0;:24:::1;::::0;7962:18:1;;21265:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21161:162:::0;;;:::o;22698:132::-;22740:8;:15;;-1:-1:-1;;22740:15:0;;;;;22766:9;;:29;;;-1:-1:-1;;;22766:29:0;;;;-1:-1:-1;;;;;22766:9:0;;;;:27;;:29;;;;;22740:15;;22766:29;;;;;;;;22740:15;22766:9;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22806:8:0;:16;;-1:-1:-1;;22806:16:0;;;-1:-1:-1;;22698:132:0:o;22838:152::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;22895:8:::1;:15:::0;;-1:-1:-1;;22895:15:0::1;::::0;::::1;::::0;;22921:9:::1;::::0;:34:::1;::::0;;-1:-1:-1;;;22921:34:0;;;;-1:-1:-1;;;;;22921:9:0;;::::1;::::0;:32:::1;::::0;:34:::1;::::0;;::::1;::::0;22895:15;;22921:34;;;;;;;;22895:15;22921:9;:34;::::1;;::::0;::::1;;;;::::0;::::1;19656:192:::0;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19740:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:32;;-1:-1:-1;;19740:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19788:52;;19824:15:::1;::::0;19740:32;;19788:52:::1;::::0;::::1;19656:192:::0;;:::o;26571:103::-;26628:38;26640:10;26652:6;26660:5;26628:11;:38::i;:::-;26571:103;:::o;26681:106::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;26766:12:::1;::::0;26746:33:::1;::::0;:15:::1;::::0;:19:::1;:33::i;:::-;26735:8;:44:::0;26681:106::o;11262:103::-;-1:-1:-1;;;;;11345:18:0;11328:7;11345:18;;;:9;:18;;;;;;;11262:103::o;24928:125::-;25013:9;;:32;;;-1:-1:-1;;;25013:32:0;;;;24986:7;;-1:-1:-1;;;;;25013:9:0;;:30;;:32;;;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;20630:110;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20703:20:::1;:29:::0;20630:110::o;19105:140::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;19157:14:::1;:21:::0;;-1:-1:-1;;19157:21:0::1;;;::::0;;19194:43:::1;::::0;19221:15:::1;::::0;19209:10:::1;::::0;19194:43:::1;::::0;19157:21;;19194:43:::1;19105:140::o:0;25061:113::-;25140:9;;:26;;;-1:-1:-1;;;25140:26:0;;;;25113:7;;-1:-1:-1;;;;;25140:9:0;;:24;;:26;;;;;;;;;;;;;;:9;:26;;;;;;;;;;;;;;14834:514;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;14918:13:::1;14934:43;14970:5;14934:23;14952:4;14934:13;11242:12:::0;;;11172:84;14934:13:::1;:17:::0;::::1;:23::i;:43::-;14918:59;;14988:17;15008:46;15047:5;15008:26;15026:7;15008:13;11242:12:::0;;;11172:84;15008:46:::1;14988:66;;15056:13;15072:31;15097:5;15072:20;15090:1;15072:13;11242:12:::0;;;11172:84;15072:31:::1;15056:47;;15131:5;15122;:14;;:36;;;;;15153:5;15140:9;:18;;15122:36;15114:102;;;::::0;-1:-1:-1;;;15114:102:0;;8369:2:1;15114:102:0::1;::::0;::::1;8351:21:1::0;8408:2;8388:18;;;8381:30;8447:34;8427:18;;;8420:62;-1:-1:-1;;;8498:18:1;;;8491:51;8559:19;;15114:102:0::1;8167:417:1::0;15114:102:0::1;15227:12;:20:::0;;;15249:15:::1;:27:::0;;;15292:48:::1;::::0;15324:15:::1;::::0;15267:9;;15242:5;;15292:48:::1;::::0;-1:-1:-1;;15292:48:0::1;14907:441;;;14834:514:::0;;:::o;21032:121::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21111:9:::1;:34:::0;;-1:-1:-1;;;;;;21111:34:0::1;-1:-1:-1::0;;;;;21111:34:0;;;::::1;::::0;;;::::1;::::0;;21032:121::o;19856:150::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;19968:20:::1;::::0;19942:56:::1;::::0;-1:-1:-1;;;19942:56:0;;-1:-1:-1;;;;;19968:20:0;;::::1;19942:56;::::0;::::1;7493:51:1::0;7560:18;;;7553:34;;;19942:25:0;;::::1;::::0;::::1;::::0;7466:18:1;;19942:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19856:150:::0;;:::o;19253:395::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;19375:18:::1;:31:::0;;-1:-1:-1;;;;;;19375:31:0;;::::1;-1:-1:-1::0;;;;;19375:31:0;;::::1;::::0;;::::1;::::0;;;19408:18:::1;:31:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;19441:20:::1;:35:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;19487:23:0;;;:11:::1;:23:::0;;;;;;:30;;-1:-1:-1;;19487:30:0;;::::1;-1:-1:-1::0;19487:30:0;;::::1;::::0;;;19519:23;;;;;;;:30;;;;::::1;;::::0;;;19565:75;19624:15:::1;160:25:1::0;;19408:31:0;;19565:75:::1;::::0;133:18:1;19565:75:0::1;;;;;;;19253:395:::0;;;:::o;11919:138::-;11978:7;11995:60;12033:21;12051:1;12033:9;:21::i;:::-;11995:33;12012:15;8239:42;12012:9;:15::i;:::-;11995:12;;;:16;:33::i;:::-;:37;;:60::i;20426:196::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20528:11:::1;:20:::0;;-1:-1:-1;;20528:20:0::1;::::0;;::::1;;;;::::0;;20550:9:::1;::::0;:38:::1;::::0;-1:-1:-1;;;20550:38:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;20550:9:0;;::::1;::::0;:29:::1;::::0;133:18:1;;20550:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;20590:16:0::1;:24:::0;;;;-1:-1:-1;;;20426:196:0:o;24805:115::-;24901:9;;24856:7;;24883:29;;-1:-1:-1;;;;;24901:9:0;24883;:29::i;11788:125::-;-1:-1:-1;;;;;11890:20:0;;11851:7;11890:20;;;:12;:20;;;;;;;;;11868:9;:17;;;;;;:43;;:21;:43::i;25430:120::-;25511:9;;:31;;;-1:-1:-1;;;25511:31:0;;;;25484:7;;-1:-1:-1;;;;;25511:9:0;;:29;;:31;;;;;;;;;;;;;;:9;:31;;;;;;;;;;;;;;11371:139;11449:4;11456:40;11466:10;11478:9;11489:6;11456:9;:40::i;21846:122::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21922:9:::1;::::0;:38:::1;::::0;-1:-1:-1;;;21922:38:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;21922:9:0;;::::1;::::0;:29:::1;::::0;133:18:1;;21922:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21846:122:::0;:::o;13159:434::-;13278:10;13265:24;;;;:12;:24;;;;;;;;;13239:9;:21;;;;;;;:51;;:25;:51::i;:::-;13229:6;:61;;13221:121;;;;-1:-1:-1;;;13221:121:0;;9041:2:1;13221:121:0;;;9023:21:1;9080:2;9060:18;;;9053:30;9119:34;9099:18;;;9092:62;-1:-1:-1;;;9170:18:1;;;9163:45;9225:19;;13221:121:0;8839:411:1;13221:121:0;13353:15;;:50;;-1:-1:-1;;;13353:50:0;;13384:10;13353:50;;;7493:51:1;7560:18;;;7553:34;;;-1:-1:-1;;;;;13353:15:0;;;;:30;;7466:18:1;;13353:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13454:10:0;13441:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;13441:24:0;-1:-1:-1;13470:6:0;13441:28;:36::i;:::-;13427:10;13414:24;;;;:12;:24;;;;;:63;13502:11;;:23;;13518:6;13502:15;:23::i;:::-;13488:11;:37;13541:44;;13569:15;;13561:6;;13549:10;;13541:44;;;;;13159:434;:::o;21331:136::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21418:9:::1;::::0;:41:::1;::::0;-1:-1:-1;;;21418:41:0;;-1:-1:-1;;;;;7511:32:1;;;21418:41:0::1;::::0;::::1;7493:51:1::0;7560:18;;;7553:34;;;21418:9:0;;::::1;::::0;:22:::1;::::0;7466:18:1;;21418:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21331:136:::0;;:::o;21726:112::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21797:9:::1;::::0;:33:::1;::::0;-1:-1:-1;;;21797:33:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;21797:9:0;;::::1;::::0;:24:::1;::::0;133:18:1;;21797:33:0::1;14:177:1::0;14242:584:0;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;14434:12:::1;:25:::0;;;14461:12:::1;:25:::0;;;14488:14:::1;:29:::0;;;14519:9:::1;:19:::0;;;14540:6:::1;:13:::0;;;14564:8:::1;:17:::0;;;14583:7:::1;:15:::0;;;14600:11:::1;:20:::0;;;14651:11:::1;::::0;14639:23;::::1;::::0;::::1;::::0;:49:::1;;;14677:11;;14666:7;;:22;;14639:49;:79;;;;;14707:11;;14692;;:26;;14639:79;14631:119;;;::::0;-1:-1:-1;;;14631:119:0;;9457:2:1;14631:119:0::1;::::0;::::1;9439:21:1::0;9496:2;9476:18;;;9469:30;9535:29;9515:18;;;9508:57;9582:18;;14631:119:0::1;9255:351:1::0;14631:119:0::1;14802:15;14787:5;14779:6;14766:52;14794:6;14766:52;;;;160:25:1::0;;148:2;133:18;;14:177;14766:52:0::1;;;;;;;;14242:584:::0;;;;;;;;:::o;27132:136::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;27221:4:::1;:14:::0;;;::::1;;-1:-1:-1::0;;;27221:14:0::1;-1:-1:-1::0;;;;27221:14:0;;::::1;::::0;;;::::1;::::0;;;27237:12:::1;:23:::0;27132:136::o;20014:305::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20143:10:::1;:24:::0;;;20185:12:::1;::::0;:53:::1;::::0;20230:6:::1;::::0;20185:32:::1;::::0;20202:14;20185:16:::1;:32::i;:53::-;20169:13;:69:::0;20257:12:::1;::::0;:54:::1;::::0;20303:6:::1;::::0;20257:33:::1;::::0;20274:15;20257:16:::1;:33::i;:54::-;20240:14;:71:::0;-1:-1:-1;;;20014:305:0:o;21475:119::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21535:9:::1;::::0;:51:::1;::::0;-1:-1:-1;;;21535:51:0;;21566:4:::1;21535:51;::::0;::::1;7493::1::0;21581:3:0::1;7560:18:1::0;;;7553:34;-1:-1:-1;;;;;21535:9:0;;::::1;::::0;:22:::1;::::0;7466:18:1;;21535:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21475:119::o:0;25303:::-;25386:9;;:28;;;-1:-1:-1;;;25386:28:0;;;;25359:7;;-1:-1:-1;;;;;25386:9:0;;:26;;:28;;;;;;;;;;;;;;:9;:28;;;;;;;;;;;;;;3995:111;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;4061:5:::1;:11:::0;;-1:-1:-1;;;;;;4061:11:0::1;-1:-1:-1::0;;;;;4061:11:0;::::1;::::0;;::::1;::::0;;;4079:25:::1;::::0;3639:51:1;;;4079:25:0::1;::::0;3627:2:1;3612:18;4079:25:0::1;;;;;;;3995:111:::0;:::o;14017:217::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;14092:15:::1;:44:::0;;-1:-1:-1;;;;;;14092:44:0::1;-1:-1:-1::0;;;;;14092:44:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;14138:21:0;;;:11:::1;:21;::::0;;;;;:28;;-1:-1:-1;;14138:28:0::1;-1:-1:-1::0;14138:28:0::1;::::0;;14182:44;14210:15:::1;::::0;14092:44;14182::::1;::::0;::::1;14017:217:::0;:::o;20748:179::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20822:11:::1;20836:45;20874:5;20836:25;20854:6;20836:13;11242:12:::0;;;11172:84;20836:45:::1;20892:9;::::0;:27:::1;::::0;-1:-1:-1;;;20892:27:0;;::::1;::::0;::::1;160:25:1::0;;;20822:59:0;;-1:-1:-1;;;;;;20892:9:0::1;::::0;:22:::1;::::0;133:18:1;;20892:27:0::1;14:177:1::0;21602:116:0;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21675:9:::1;::::0;:35:::1;::::0;-1:-1:-1;;;21675:35:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;21675:9:0;;::::1;::::0;:26:::1;::::0;133:18:1;;21675:35:0::1;14:177:1::0;24348:335:0;-1:-1:-1;;;;;24441:19:0;;24433:68;;;;-1:-1:-1;;;24433:68:0;;10029:2:1;24433:68:0;;;10011:21:1;10068:2;10048:18;;;10041:30;10107:34;10087:18;;;10080:62;-1:-1:-1;;;10158:18:1;;;10151:34;10202:19;;24433:68:0;9827:400:1;24433:68:0;-1:-1:-1;;;;;24520:21:0;;24512:68;;;;-1:-1:-1;;;24512:68:0;;10434:2:1;24512:68:0;;;10416:21:1;10473:2;10453:18;;;10446:30;10512:34;10492:18;;;10485:62;-1:-1:-1;;;10563:18:1;;;10556:32;10605:19;;24512:68:0;10232:398:1;24512:68:0;-1:-1:-1;;;;;24591:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24643:32;;160:25:1;;;24643:32:0;;133:18:1;24643:32:0;;;;;;;24348:335;;;:::o;12419:732::-;12508:37;12519:6;12527:9;12538:6;12508:10;:37::i;:::-;12556:38;12576:6;12584:9;12556:19;:38::i;:::-;12605:39;12618:6;12626:9;12637:6;12605:12;:39::i;:::-;12655:41;12670:6;12678:9;12689:6;12655:14;:41::i;:::-;12707:43;12724:6;12732:9;12743:6;12707:16;:43::i;:::-;12761:27;12770:6;12778:9;12761:8;:27::i;:::-;12799:37;12810:6;12818:9;12829:6;12799:10;:37::i;:::-;-1:-1:-1;;;;;12867:17:0;;;;;;:9;:17;;;;;;:29;;12889:6;12867:21;:29::i;:::-;-1:-1:-1;;;;;12847:17:0;;;;;;:9;:17;;;;;:49;;;;12932:32;12857:6;12954:9;12932:13;:32::i;:::-;:78;;13004:6;12932:78;;;12967:34;12975:6;12983:9;12994:6;12967:7;:34::i;:::-;-1:-1:-1;;;;;13044:20:0;;;;;;:9;:20;;;;;;12907:103;;-1:-1:-1;13044:40:0;;12907:103;13044:24;:40::i;:::-;-1:-1:-1;;;;;13021:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13100:43;;;;;;;;;;13128:14;160:25:1;;148:2;133:18;;14:177;13100:43:0;;;;;;;;12497:654;12419:732;;;:::o;2234:162::-;2320:7;2366:12;2358:6;;;;2350:29;;;;-1:-1:-1;;;2350:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2388:5:0;;;2234:162::o;1109:82::-;1167:7;1184:5;1188:1;1184;:5;:::i;1197:82::-;1255:7;1272:5;1276:1;1272;:5;:::i;1021:82::-;1079:7;1096:5;1100:1;1096;:5;:::i;25906:659::-;25992:12;:19;;-1:-1:-1;;25992:19:0;26007:4;25992:19;;;26022:259;;;;26033:19;26055:55;26098:11;;26055:38;26081:11;;26055:21;26065:10;;;;;;;;;-1:-1:-1;;;;;26065:10:0;26055:9;:21::i;:55::-;26033:77;;26138:6;26124:11;:20;26121:47;;;26155:11;26146:20;;26121:47;26210:10;;26178:19;;26200:21;;-1:-1:-1;;;;;26210:10:0;26200:9;:21::i;:::-;26178:43;;26250:6;26235:11;:21;26232:48;;26267:11;26258:20;;26232:48;26032:249;;26022:259;26303:9;;:21;;26317:6;26303:13;:21::i;:::-;26291:9;:33;26350:15;26335:12;:30;26394:15;;:31;;-1:-1:-1;26394:19:0;:31::i;:::-;26376:15;:49;26436:39;26445:6;26461:4;26468:6;26436:8;:39::i;:::-;26486:40;26496:6;8239:42;26519:6;26486:9;:40::i;:::-;-1:-1:-1;;26537:12:0;:20;;-1:-1:-1;;26537:20:0;;;-1:-1:-1;25906:659:0:o;933:82::-;991:7;1008:5;1012:1;1008;:5;:::i;12065:346::-;-1:-1:-1;;;;;12169:20:0;;12161:70;;;;-1:-1:-1;;;12161:70:0;;11627:2:1;12161:70:0;;;11609:21:1;11666:2;11646:18;;;11639:30;11705:34;11685:18;;;11678:62;-1:-1:-1;;;11756:18:1;;;11749:35;11801:19;;12161:70:0;11425:401:1;12161:70:0;-1:-1:-1;;;;;12250:23:0;;12242:71;;;;-1:-1:-1;;;12242:71:0;;12033:2:1;12242:71:0;;;12015:21:1;12072:2;12052:18;;;12045:30;12111:34;12091:18;;;12084:62;-1:-1:-1;;;12162:18:1;;;12155:33;12205:19;;12242:71:0;11831:399:1;12242:71:0;12342:17;12352:6;12342:9;:17::i;:::-;12332:6;:27;;12324:79;;;;-1:-1:-1;;;12324:79:0;;12437:2:1;12324:79:0;;;12419:21:1;12476:2;12456:18;;;12449:30;12515:34;12495:18;;;12488:62;-1:-1:-1;;;12566:18:1;;;12559:38;12614:19;;12324:79:0;12235:404:1;15356:206:0;-1:-1:-1;;;;;15449:19:0;;;;;;:11;:19;;;;;;;;15448:20;:47;;;;-1:-1:-1;;;;;;15473:22:0;;;;;;:11;:22;;;;;;;;15472:23;15448:47;15445:110;;;15505:14;;;;;;;15497:56;;;;-1:-1:-1;;;15497:56:0;;12846:2:1;15497:56:0;;;12828:21:1;12885:2;12865:18;;;12858:30;12924:31;12904:18;;;12897:59;12973:18;;15497:56:0;12644:353:1;15497:56:0;15356:206;;:::o;16166:399::-;-1:-1:-1;;;;;16267:20:0;;16298:1;16267:20;;;:12;:20;;;;;;:33;16264:160;;-1:-1:-1;;;;;16348:17:0;;;;;;:9;:17;;;;;;;;;16322:12;:20;;;;;;;16311:32;;:6;;:10;:32::i;:::-;16310:55;;16302:120;;;;-1:-1:-1;;;16302:120:0;;13204:2:1;16302:120:0;;;13186:21:1;13243:2;13223:18;;;13216:30;13282:34;13262:18;;;13255:62;-1:-1:-1;;;13333:18:1;;;13326:50;13393:19;;16302:120:0;13002:416:1;16302:120:0;16438:8;;;;;;;16434:124;;16466:12;;16456:6;:22;;:45;;;-1:-1:-1;;;;;;16482:19:0;;;;;;:11;:19;;;;;;;;16456:45;:71;;;-1:-1:-1;;;;;;16505:22:0;;;;;;:11;:22;;;;;;;;16456:71;16448:108;;;;-1:-1:-1;;;16448:108:0;;13625:2:1;16448:108:0;;;13607:21:1;13664:2;13644:18;;;13637:30;13703:26;13683:18;;;13676:54;13747:18;;16448:108:0;13423:348:1;15570:351:0;-1:-1:-1;;;;;15674:19:0;;;;;;:11;:19;;;;;;;;15673:20;:47;;;;-1:-1:-1;;;;;;15698:22:0;;;;;;:11;:22;;;;;;;;15697:23;15673:47;:77;;;;-1:-1:-1;15745:4:0;;-1:-1:-1;;;;;15724:26:0;;;15745:4;;15724:26;;15673:77;:107;;;;-1:-1:-1;;;;;;15754:26:0;;8239:42;15754:26;;15673:107;:120;;;;-1:-1:-1;15785:8:0;;;;;;;15784:9;15673:120;15670:244;;;15855:15;;-1:-1:-1;;;;;15818:20:0;;;;;;:9;:20;;;;;;:32;;15843:6;15818:24;:32::i;:::-;15817:53;;15809:103;;;;-1:-1:-1;;;15809:103:0;;13978:2:1;15809:103:0;;;13960:21:1;14017:2;13997:18;;;13990:30;14056:34;14036:18;;;14029:62;-1:-1:-1;;;14107:18:1;;;14100:35;14152:19;;15809:103:0;13776:401:1;15929:229:0;16042:4;;-1:-1:-1;;;;;16029:17:0;;;16042:4;;16029:17;:41;;;;-1:-1:-1;;;;;;16051:19:0;;;;;;:11;:19;;;;;;;;16050:20;16029:41;:69;;;;;16084:14;;16074:6;:24;;16029:69;:82;;;;-1:-1:-1;16103:8:0;;;;16102:9;16029:82;:95;;;;-1:-1:-1;16116:8:0;;;;;;;16115:9;16029:95;16026:125;;;16147:1;16126:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15929:229:0;;;:::o;18920:173::-;18996:33;19011:6;19019:9;18996:14;:33::i;:::-;18993:93;;;19031:29;19046:13;;19031:14;:29::i;:::-;19082:1;19062:9;:22;18920:173;;:::o;21976:505::-;22070:14;;;;;;;:38;;;;-1:-1:-1;;;;;;22089:19:0;;;;;;:11;:19;;;;;;;;22088:20;22070:38;:68;;;;-1:-1:-1;22133:4:0;;-1:-1:-1;;;;;22112:26:0;;;22133:4;;22112:26;22070:68;:102;;;;;22152:20;;22142:6;:30;;22070:102;:115;;;;-1:-1:-1;22177:8:0;;;;22176:9;22070:115;:128;;;;-1:-1:-1;22190:8:0;;;;;;;22189:9;22070:128;22067:164;;;22227:1;22200:15;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;22067:164:0;22244:14;;;;;;;:29;;;;-1:-1:-1;22262:11:0;;;;;;;22244:29;:75;;;;-1:-1:-1;22295:9:0;;22317:1;;22277:29;;-1:-1:-1;;;;;22295:9:0;22277;:29::i;:::-;:42;22244:75;:114;;;;;22342:16;;22323:15;;:35;;22244:114;:138;;;;-1:-1:-1;;;;;;22363:19:0;;;;;;:11;:19;;;;;;;;22362:20;22244:138;:168;;;;-1:-1:-1;22407:4:0;;-1:-1:-1;;;;;22386:26:0;;;22407:4;;22386:26;22244:168;:194;;;;-1:-1:-1;22430:8:0;;;;22429:9;22244:194;:207;;;;-1:-1:-1;22443:8:0;;;;;;;22442:9;22244:207;22241:233;;;22453:19;:17;:19::i;22998:173::-;-1:-1:-1;;;;;23104:19:0;;23079:4;23104:19;;;:11;:19;;;;;;;;23103:20;:47;;;;-1:-1:-1;;;;;;23128:22:0;;;;;;:11;:22;;;;;;;;23127:23;23103:47;:60;;;;-1:-1:-1;;23155:8:0;;;;;;;23154:9;;22998:173;-1:-1:-1;;22998:173:0:o;23455:568::-;23541:7;23597:1;23564:30;23576:6;23584:9;23564:11;:30::i;:::-;:34;:47;;;;-1:-1:-1;23603:8:0;;;;;;;23602:9;23564:47;23561:440;;;23623:17;23643:59;23671:30;23683:6;23691:9;23671:11;:30::i;:::-;23654:11;;23643:23;;:6;;:10;:23::i;:59::-;23758:4;23740:24;;;;:9;:24;;;;;;23623:79;;-1:-1:-1;23740:39:0;;23623:79;23740:28;:39::i;:::-;23731:4;23713:24;;;;:9;:24;;;;;;;:66;;;;23795:42;;-1:-1:-1;;;;;23795:42:0;;;;;;;23827:9;160:25:1;;148:2;133:18;;14:177;23795:42:0;;;;;;;;23851:9;;:22;23848:113;;23908:9;;23948;;23931:11;;23875:84;;23893:4;;-1:-1:-1;;;;;23908:9:0;;;;23920:38;;23948:9;23920:23;;:6;;:10;:23::i;:38::-;23875:9;:84::i;:::-;23978:21;:6;23989:9;23978:10;:21::i;:::-;23971:28;;;;;23561:440;-1:-1:-1;24009:6:0;23455:568;-1:-1:-1;;23455:568:0:o;18566:346::-;18648:4;18665:19;18715:13;;18687:24;18705:4;18687:9;:24::i;:::-;18747:8;;18687:41;-1:-1:-1;18687:41:0;;-1:-1:-1;18747:8:0;;18746:9;:24;;;;-1:-1:-1;18759:11:0;;;;18746:24;:42;;;;-1:-1:-1;18774:14:0;;;;;;;18746:42;:66;;;;-1:-1:-1;;;;;;18793:19:0;;;;;;:11;:19;;;;;;;;18792:20;18746:66;:100;;;;-1:-1:-1;18842:4:0;;-1:-1:-1;;;;;18829:17:0;;;18842:4;;18829:17;18746:100;:127;;;;;18863:10;;18850:9;;:23;;18746:127;:145;;;;;18877:14;18746:145;:158;;;;-1:-1:-1;18896:8:0;;;;;;;18895:9;18746:158;18739:165;18566:346;-1:-1:-1;;;;18566:346:0:o;16573:1175::-;8004:8;:15;;-1:-1:-1;;8004:15:0;8015:4;8004:15;;;16668:8:::1;::::0;8004;;16667:17:::1;::::0;16682:1:::1;16667:14;:17::i;:::-;16644:40;;16695:32;16730:42;16759:12;16730:24;16741:12;;16730:6;:10;;:24;;;;:::i;:42::-;16695:77:::0;-1:-1:-1;16783:14:0::1;16800:36;:6:::0;16695:77;16800:10:::1;:36::i;:::-;16783:53:::0;-1:-1:-1;16872:21:0::1;16904:24;16783:53:::0;16904:16:::1;:24::i;:::-;16939:20;16962:41;:21;16988:14:::0;16962:25:::1;:41::i;:::-;16939:64;;17014:19;17035:48;17052:30;17069:12;;17052;:16;;:30;;;;:::i;:::-;17035:12:::0;;:16:::1;:48::i;:::-;17014:69;;17094:29;17126;17142:12;;17126:11;:15;;:29;;;;:::i;:::-;17094:61:::0;-1:-1:-1;17169:34:0;;17166:123:::1;;17267:18;::::0;17205:81:::1;::::0;17218:24;;17244:21;;-1:-1:-1;;;;;17267:18:0::1;17205:12;:81::i;:::-;17348:12;::::0;17299:23:::1;::::0;17325:36:::1;::::0;:18:::1;:11:::0;17341:1:::1;17325:15;:18::i;:36::-;17299:62:::0;-1:-1:-1;17375:28:0;;17372:88:::1;;17413:18;::::0;17405:53:::1;::::0;-1:-1:-1;;;;;17413:18:0;;::::1;::::0;17405:53;::::1;;;::::0;17442:15;;17413:18:::1;17405:53:::0;17413:18;17405:53;17442:15;17413:18;17405:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17372:88;17513:6;::::0;17470:17:::1;::::0;17490:30:::1;::::0;:18:::1;:11:::0;17506:1:::1;17490:15;:18::i;:30::-;17470:50:::0;-1:-1:-1;17534:22:0;;17531:76:::1;;17574:9;::::0;17558:47:::1;::::0;-1:-1:-1;;;;;17574:9:0;;::::1;::::0;17558:47;::::1;;;::::0;17595:9;;17574::::1;17558:47:::0;17574:9;17558:47;17595:9;17574;17558:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17531:76;17635:21;17670:20:::0;;17667:74:::1;;17700:20;::::0;17692:47:::1;::::0;-1:-1:-1;;;;;17700:20:0;;::::1;::::0;17692:47;::::1;;;::::0;17731:7;;17700:20:::1;17692:47:::0;17700:20;17692:47;17731:7;17700:20;17692:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17667:74;-1:-1:-1::0;;8024:8:0;:16;;-1:-1:-1;;8024:16:0;;;-1:-1:-1;;;;;;;;;16573:1175:0:o;22489:201::-;22538:8;:15;;-1:-1:-1;;22538:15:0;;;;;22568:9;;22606:5;;22568:46;;;-1:-1:-1;;;22568:46:0;;;;-1:-1:-1;;;;;22568:9:0;;;;:32;;22606:5;22568:46;;;;;22538:15;;22568:46;;;;;;;;22538:15;22568:9;:46;;;;;;;;;;;;;;;;;;;;;;;;;;22564:62;22653:1;22627:15;:28;22666:8;:16;;-1:-1:-1;;22666:16:0;;;22489:201::o;23179:268::-;23294:4;;23258:7;;-1:-1:-1;;;;;23281:17:0;;;23294:4;;23281:17;:41;;;;;23320:1;23302:7;;:20;23281:41;23278:62;;;-1:-1:-1;23331:7:0;;23324:14;;23278:62;23363:4;;-1:-1:-1;;;;;23353:14:0;;;23363:4;;23353:14;:39;;;;;23390:1;23371:8;;:21;23353:39;23350:61;;;-1:-1:-1;23401:8:0;;23394:15;;23350:61;-1:-1:-1;23428:11:0;;23179:268;;;;:::o;18124:434::-;18214:16;;;18228:1;18214:16;;;;;;;;18190:21;;18214:16;;;;;;;;;;-1:-1:-1;18214:16:0;18190:40;;18259:4;18241;18246:1;18241:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18241:23:0;;;:7;;;;;;;;;;:23;;;;18285:6;;:13;;;-1:-1:-1;;;18285:13:0;;;;:6;;;;;:11;;:13;;;;;18241:7;;18285:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18275:4;18280:1;18275:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18275:23:0;;;:7;;;;;;;;;:23;18341:6;;18309:53;;18326:4;;18341:6;18350:11;18309:8;:53::i;:::-;18373:6;;:177;;-1:-1:-1;;;18373:177:0;;-1:-1:-1;;;;;18373:6:0;;;;:57;;:177;;18445:11;;18373:6;;18487:4;;18514;;18534:15;;18373:177;;;:::i;17756:360::-;17887:6;;17855:53;;17872:4;;-1:-1:-1;;;;;17887:6:0;17896:11;17855:8;:53::i;:::-;17919:6;;:189;;-1:-1:-1;;;17919:189:0;;17982:4;17919:189;;;16028:34:1;16078:18;;;16071:34;;;17919:6:0;16121:18:1;;;16114:34;;;16164:18;;;16157:34;-1:-1:-1;;;;;16228:15:1;;;16207:19;;;16200:44;18092:15:0;16260:19:1;;;16253:35;17919:6:0;;;;:22;;17949:9;;15962:19:1;;17919:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:1;;749:180;-1:-1:-1;749:180:1:o;934:131::-;-1:-1:-1;;;;;1009:31:1;;999:42;;989:70;;1055:1;1052;1045:12;1070:315;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:247::-;1641:6;1694:2;1682:9;1673:7;1669:23;1665:32;1662:52;;;1710:1;1707;1700:12;1662:52;1749:9;1736:23;1768:31;1793:5;1768:31;:::i;1834:118::-;1920:5;1913:13;1906:21;1899:5;1896:32;1886:60;;1942:1;1939;1932:12;1957:241;2013:6;2066:2;2054:9;2045:7;2041:23;2037:32;2034:52;;;2082:1;2079;2072:12;2034:52;2121:9;2108:23;2140:28;2162:5;2140:28;:::i;2203:456::-;2280:6;2288;2296;2349:2;2337:9;2328:7;2324:23;2320:32;2317:52;;;2365:1;2362;2355:12;2317:52;2404:9;2391:23;2423:31;2448:5;2423:31;:::i;:::-;2473:5;-1:-1:-1;2530:2:1;2515:18;;2502:32;2543:33;2502:32;2543:33;:::i;:::-;2203:456;;2595:7;;-1:-1:-1;;;2649:2:1;2634:18;;;;2621:32;;2203:456::o;2664:248::-;2732:6;2740;2793:2;2781:9;2772:7;2768:23;2764:32;2761:52;;;2809:1;2806;2799:12;2761:52;-1:-1:-1;;2832:23:1;;;2902:2;2887:18;;;2874:32;;-1:-1:-1;2664:248:1:o;3106:382::-;3171:6;3179;3232:2;3220:9;3211:7;3207:23;3203:32;3200:52;;;3248:1;3245;3238:12;3200:52;3287:9;3274:23;3306:31;3331:5;3306:31;:::i;:::-;3356:5;-1:-1:-1;3413:2:1;3398:18;;3385:32;3426:30;3385:32;3426:30;:::i;:::-;3475:7;3465:17;;;3106:382;;;;;:::o;3701:529::-;3778:6;3786;3794;3847:2;3835:9;3826:7;3822:23;3818:32;3815:52;;;3863:1;3860;3853:12;3815:52;3902:9;3889:23;3921:31;3946:5;3921:31;:::i;:::-;3971:5;-1:-1:-1;4028:2:1;4013:18;;4000:32;4041:33;4000:32;4041:33;:::i;:::-;4093:7;-1:-1:-1;4152:2:1;4137:18;;4124:32;4165:33;4124:32;4165:33;:::i;:::-;4217:7;4207:17;;;3701:529;;;;;:::o;4235:377::-;4309:6;4317;4325;4378:2;4366:9;4357:7;4353:23;4349:32;4346:52;;;4394:1;4391;4384:12;4346:52;4433:9;4420:23;4452:28;4474:5;4452:28;:::i;:::-;4499:5;4551:2;4536:18;;4523:32;;-1:-1:-1;4602:2:1;4587:18;;;4574:32;;4235:377;-1:-1:-1;;;4235:377:1:o;4617:388::-;4685:6;4693;4746:2;4734:9;4725:7;4721:23;4717:32;4714:52;;;4762:1;4759;4752:12;4714:52;4801:9;4788:23;4820:31;4845:5;4820:31;:::i;:::-;4870:5;-1:-1:-1;4927:2:1;4912:18;;4899:32;4940:33;4899:32;4940:33;:::i;5010:661::-;5132:6;5140;5148;5156;5164;5172;5180;5188;5241:3;5229:9;5220:7;5216:23;5212:33;5209:53;;;5258:1;5255;5248:12;5209:53;-1:-1:-1;;5281:23:1;;;5351:2;5336:18;;5323:32;;-1:-1:-1;5402:2:1;5387:18;;5374:32;;5453:2;5438:18;;5425:32;;-1:-1:-1;5504:3:1;5489:19;;5476:33;;-1:-1:-1;5556:3:1;5541:19;;5528:33;;-1:-1:-1;5608:3:1;5593:19;;5580:33;;-1:-1:-1;5660:3:1;5645:19;5632:33;;-1:-1:-1;5010:661:1;-1:-1:-1;5010:661:1:o;5676:309::-;5741:6;5749;5802:2;5790:9;5781:7;5777:23;5773:32;5770:52;;;5818:1;5815;5808:12;5770:52;5857:9;5844:23;5876:28;5898:5;5876:28;:::i;5990:316::-;6067:6;6075;6083;6136:2;6124:9;6115:7;6111:23;6107:32;6104:52;;;6152:1;6149;6142:12;6104:52;-1:-1:-1;;6175:23:1;;;6245:2;6230:18;;6217:32;;-1:-1:-1;6296:2:1;6281:18;;;6268:32;;5990:316;-1:-1:-1;5990:316:1:o;6571:329::-;6773:2;6755:21;;;6812:1;6792:18;;;6785:29;-1:-1:-1;;;6845:2:1;6830:18;;6823:36;6891:2;6876:18;;6571:329::o;7598:184::-;7668:6;7721:2;7709:9;7700:7;7696:23;7692:32;7689:52;;;7737:1;7734;7727:12;7689:52;-1:-1:-1;7760:16:1;;7598:184;-1:-1:-1;7598:184:1:o;8589:245::-;8656:6;8709:2;8697:9;8688:7;8684:23;8680:32;8677:52;;;8725:1;8722;8715:12;8677:52;8757:9;8751:16;8776:28;8798:5;8776:28;:::i;10635:127::-;10696:10;10691:3;10687:20;10684:1;10677:31;10727:4;10724:1;10717:15;10751:4;10748:1;10741:15;10767:168;10840:9;;;10871;;10888:15;;;10882:22;;10868:37;10858:71;;10909:18;;:::i;10940:217::-;10980:1;11006;10996:132;;11050:10;11045:3;11041:20;11038:1;11031:31;11085:4;11082:1;11075:15;11113:4;11110:1;11103:15;10996:132;-1:-1:-1;11142:9:1;;10940:217::o;11162:128::-;11229:9;;;11250:11;;;11247:37;;;11264:18;;:::i;11295:125::-;11360:9;;;11381:10;;;11378:36;;;11394:18;;:::i;14314:127::-;14375:10;14370:3;14366:20;14363:1;14356:31;14406:4;14403:1;14396:15;14430:4;14427:1;14420:15;14446:251;14516:6;14569:2;14557:9;14548:7;14544:23;14540:32;14537:52;;;14585:1;14582;14575:12;14537:52;14617:9;14611:16;14636:31;14661:5;14636:31;:::i;14702:980::-;14964:4;15012:3;15001:9;14997:19;15043:6;15032:9;15025:25;15069:2;15107:6;15102:2;15091:9;15087:18;15080:34;15150:3;15145:2;15134:9;15130:18;15123:31;15174:6;15209;15203:13;15240:6;15232;15225:22;15278:3;15267:9;15263:19;15256:26;;15317:2;15309:6;15305:15;15291:29;;15338:1;15348:195;15362:6;15359:1;15356:13;15348:195;;;15427:13;;-1:-1:-1;;;;;15423:39:1;15411:52;;15518:15;;;;15483:12;;;;15459:1;15377:9;15348:195;;;-1:-1:-1;;;;;;;15599:32:1;;;;15594:2;15579:18;;15572:60;-1:-1:-1;;;15663:3:1;15648:19;15641:35;15560:3;14702:980;-1:-1:-1;;;14702:980:1:o;16299:306::-;16387:6;16395;16403;16456:2;16444:9;16435:7;16431:23;16427:32;16424:52;;;16472:1;16469;16462:12;16424:52;16501:9;16495:16;16485:26;;16551:2;16540:9;16536:18;16530:25;16520:35;;16595:2;16584:9;16580:18;16574:25;16564:35;;16299:306;;;;;:::o

Swarm Source

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