ETH Price: $2,666.87 (+4.27%)
Gas: 3 Gwei

Token

Xsniper (XS)
 

Overview

Max Total Supply

1,000,000,000 XS

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
6,333,813.75283996 XS

Value
$0.00
0xe1605580a0054a99db8d778e560f4b0a2e11a2f2
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, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-10
*/

/**

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 * 200 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 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 = 0;
    uint256 private gasFee = 0;
    uint256 private volumeFee = 0;
    uint256 private totalFee = 1000;
    uint256 private sellFee = 1500;
    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 = 0x11Eee4d6a955c927a4D383483D0117C6c326801f; 
    address internal marketing_receiver = 0x11Eee4d6a955c927a4D383483D0117C6c326801f;
    address internal liquidity_receiver = 0xDbd95E27861ABa1240238Ebdb57F173af9e79f1A;
    address internal burnWallet = 0xc102352DdE1f5E6aBbED5FdF74EDdB59419F0a38;
    bool public burn = false;
    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 allowTrading() 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":[],"name":"allowTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620005ed565b6200002290633b9aca00620005fe565b60015561271060015460c8620000399190620005fe565b62000045919062000618565b60025561271060015460c86200005c9190620005fe565b62000068919062000618565b600355600060098190556064600a55600b819055600c819055600d8190556103e8600e556105dc600f556010556127106011556012805462ffffff1916620100011790556207a12060135560016017819055601881905554620186a090620000d3906101f4620005fe565b620000df919062000618565b601955620186a0600154600a620000f79190620005fe565b62000103919062000618565b601a55620186a0600154600a6200011b9190620005fe565b62000127919062000618565b601b55602080546001600160a01b03199081167311eee4d6a955c927a4d383483d0117c6c326801f9081179092556021805482169092179091556022805490911673dbd95e27861aba1240238ebdb57f173af9e79f1a179055602380546001600160a81b03191673c102352dde1f5e6abbed5fdf74eddb59419f0a38179055600154620186a090620001bc90612710620005fe565b620001c8919062000618565b60245560646025556105dc602a55348015620001e357600080fd5b50600080546001600160a01b03199081163317909155601e805490911673a4f56526c2483145b0d6c5462bb2f63daf70c6fa179055602a54737a250d5630b4cf539739df2c5dacb4c659f2488d906200023e904290620004c3565b6026819055506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab91906200063b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031f91906200063b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200036d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039391906200063b565b600780546001600160a01b038581166001600160a01b031992831617909255600880548484169216919091179055306000908152600660209081526040808320805460ff19908116600190811790925560225486168552828520805482168317905560215486168552828520805482168317905583548616855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055338086528386208054831684179055602354871686528386208054831684179055601e54909616855282852080549091168217905554848452600483528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000683565b6000620004d182846200066d565b90505b92915050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000531578160001904821115620005155762000515620004da565b808516156200052357918102915b93841c9390800290620004f5565b509250929050565b6000826200054a57506001620004d4565b816200055957506000620004d4565b81600181146200057257600281146200057d576200059d565b6001915050620004d4565b60ff841115620005915762000591620004da565b50506001821b620004d4565b5060208310610133831016604e8410600b8410161715620005c2575081810a620004d4565b620005ce8383620004f0565b8060001904821115620005e557620005e5620004da565b029392505050565b6000620004d160ff84168362000539565b8082028115828204841417620004d457620004d4620004da565b6000826200063657634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200064e57600080fd5b81516001600160a01b03811681146200066657600080fd5b9392505050565b80820180821115620004d457620004d4620004da565b61339080620006936000396000f3fe6080604052600436106103d25760003560e01c806386993e4d116101fd578063b6b55f2511610118578063e94dd17c116100ab578063ef40a6701161007a578063ef40a67014610aed578063f2fde38b14610b1a578063f4e0d9ac14610b3a578063faf9445714610b5a578063fd5a55bf14610b7a57600080fd5b8063e94dd17c14610a8d578063eb8cf20614610aad578063ebf6cf9b14610ac2578063edfb171d14610ad857600080fd5b8063e2d6f94c116100e7578063e2d6f94c14610a21578063e306744914610a41578063e480034514610a57578063e55a68b314610a7757600080fd5b8063b6b55f251461097b578063c0f874f61461099b578063c4f529fa146109bb578063dd62ed3e146109db57600080fd5b806395d89b4111610190578063a2e2d9f51161015f578063a2e2d9f514610906578063a8aa1b311461091b578063a9059cbb1461093b578063b0b4a1531461095b57600080fd5b806395d89b411461089057806398c56d78146108bb5780639b9a6f09146108d0578063a0821be3146108e657600080fd5b80638cd4426d116101cc5780638cd4426d1461081b5780639213c3581461083b5780639358928b1461085b5780639523f45e1461087057600080fd5b806386993e4d14610794578063884870c7146107a9578063893d20e8146107c95780638b3dc018146107fb57600080fd5b80633c9f861d116102ed5780636c0e1c121161028057806378c7dcd61161024f57806378c7dcd6146107295780637d1db4a5146107495780637f3d59851461075f578063817b1cd21461077e57600080fd5b80636c0e1c12146106c957806370a08231146106de57806373fd6c0a146106fe57806378109e541461071357600080fd5b8063468d34ed116102bc578063468d34ed1461065e578063486a7e6b1461067357806348ff2b8b1461068957806354b822cf146106a957600080fd5b80633c9f861d146105f25780633e9cc8411461060857806344a583e11461062857806344df8e701461063d57600080fd5b80632cbf536011610365578063313ce56711610334578063313ce5671461058b578063329738a4146105a757806334eead48146105bc578063360b0fcd146105d257600080fd5b80632cbf5360146105075780632e1a7d4d146105275780632e5b4c43146105475780632f54bf6e1461055c57600080fd5b806318160ddd116103a157806318160ddd146104925780631badc110146104a75780632250f5e1146104c757806323b872dd146104e757600080fd5b806303807ee5146103de57806306fdde031461040757806307f7487314610440578063095ea7b31461046257600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103f460255481565b6040519081526020015b60405180910390f35b34801561041357600080fd5b506040805180820190915260078152662c39b734b832b960c91b60208201525b6040516103fe9190612ebc565b34801561044c57600080fd5b5061046061045b366004612f0a565b610b9a565b005b34801561046e57600080fd5b5061048261047d366004612f38565b610bd2565b60405190151581526020016103fe565b34801561049e57600080fd5b506001546103f4565b3480156104b357600080fd5b506104606104c2366004612f64565b610be9565b3480156104d357600080fd5b506104606104e2366004612f8f565b610c4d565b3480156104f357600080fd5b50610482610502366004612fac565b610c93565b34801561051357600080fd5b50610460610522366004612fed565b610cfd565b34801561053357600080fd5b50610460610542366004612f0a565b610d52565b34801561055357600080fd5b50610460610e98565b34801561056857600080fd5b50610482610577366004612f64565b6000546001600160a01b0391821691161490565b34801561059757600080fd5b50604051600981526020016103fe565b3480156105b357600080fd5b506103f4610f00565b3480156105c857600080fd5b506103f460135481565b3480156105de57600080fd5b506104606105ed366004612fac565b610f73565b3480156105fe57600080fd5b506103f460285481565b34801561061457600080fd5b506012546104829062010000900460ff1681565b34801561063457600080fd5b50610460611010565b34801561064957600080fd5b5060235461048290600160a01b900460ff1681565b34801561066a57600080fd5b50610460611090565b34801561067f57600080fd5b506103f460245481565b34801561069557600080fd5b506104606106a436600461300f565b611113565b3480156106b557600080fd5b506104606106c4366004612f0a565b611192565b3480156106d557600080fd5b506104606111a1565b3480156106ea57600080fd5b506103f46106f9366004612f64565b6111de565b34801561070a57600080fd5b506103f46111f9565b34801561071f57600080fd5b506103f460035481565b34801561073557600080fd5b50610460610744366004612f0a565b611243565b34801561075557600080fd5b506103f460025481565b34801561076b57600080fd5b50601e546001600160a01b0316316103f4565b34801561078a57600080fd5b506103f4601d5481565b3480156107a057600080fd5b506103f4611272565b3480156107b557600080fd5b506104606107c4366004612fed565b6112bc565b3480156107d557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103fe565b34801561080757600080fd5b50610460610816366004612f64565b6113ec565b34801561082757600080fd5b50610460610836366004612f38565b611438565b34801561084757600080fd5b50610460610856366004613048565b6114de565b34801561086757600080fd5b506103f46115ab565b34801561087c57600080fd5b5061046061088b366004613093565b6115d7565b34801561089c57600080fd5b50604080518082019091526002815261585360f01b6020820152610433565b3480156108c757600080fd5b506103f461167e565b3480156108dc57600080fd5b506103f460295481565b3480156108f257600080fd5b506103f4610901366004612f64565b611696565b34801561091257600080fd5b506103f46116c3565b34801561092757600080fd5b506008546107e3906001600160a01b031681565b34801561094757600080fd5b50610482610956366004612f38565b61170d565b34801561096757600080fd5b50610460610976366004612f0a565b61171a565b34801561098757600080fd5b50610460610996366004612f0a565b6117a6565b3480156109a757600080fd5b506104606109b6366004612f38565b611903565b3480156109c757600080fd5b506104606109d6366004612f0a565b611998565b3480156109e757600080fd5b506103f46109f63660046130c8565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a2d57600080fd5b50610460610a3c3660046130f6565b6119f3565b348015610a4d57600080fd5b506103f460275481565b348015610a6357600080fd5b50610460610a7236600461314b565b611afd565b348015610a8357600080fd5b506103f4602a5481565b348015610a9957600080fd5b50610460610aa8366004613169565b611b49565b348015610ab957600080fd5b50610460611baf565b348015610ace57600080fd5b506103f460265481565b348015610ae457600080fd5b506103f4611c3f565b348015610af957600080fd5b506103f4610b08366004612f64565b601c6020526000908152604090205481565b348015610b2657600080fd5b50610460610b35366004612f64565b611c89565b348015610b4657600080fd5b50610460610b55366004612f64565b611d07565b348015610b6657600080fd5b50610460610b75366004612f0a565b611d93565b348015610b8657600080fd5b50610460610b95366004612f0a565b611e04565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b8152600401610bc490613195565b60405180910390fd5b601355565b6000610bdf338484611e5f565b5060015b92915050565b6000546001600160a01b03163314610c135760405162461bcd60e51b8152600401610bc490613195565b602380546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610c775760405162461bcd60e51b8152600401610bc490613195565b60128054911515620100000262ff000019909216919091179055565b6000610ca0848484611f83565b610cf28433610ced85604051806060016040528060288152602001613333602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906120b4565b611e5f565b5060015b9392505050565b6000546001600160a01b03163314610d275760405162461bcd60e51b8152600401610bc490613195565b610d49620186a0610d43846001546120e090919063ffffffff16565b906120ec565b60245560255550565b336000908152601c6020526040902054811115610dc75760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610bc4565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b5050336000908152601c6020526040902054610e4692509050826120f8565b336000908152601c6020526040902055601d54610e6390826120f8565b601d556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b6000546001600160a01b03163314610ec25760405162461bcd60e51b8152600401610bc490613195565b6012805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b601e54604080516317e0695f60e21b815290516000926001600160a01b031691635f81a57c9160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e91906131b5565b905090565b6000546001600160a01b03163314610f9d5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163360b0fcd60e01b81526001600160a01b0385811660048301528481166024830152604482018490529091169063360b0fcd90606401600060405180830381600087803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b50505050505050565b6012805463ff00000019166301000000179055601e546040805163a362630b60e01b815290516001600160a01b039092169163a362630b9160048082019260009290919082900301818387803b15801561106957600080fd5b505af115801561107d573d6000803e3d6000fd5b50506012805463ff000000191690555050565b6000546001600160a01b031633146110ba5760405162461bcd60e51b8152600401610bc490613195565b6012805463ff00000019166301000000179055601e5460408051632ce26ec960e11b815290516001600160a01b03909216916359c4dd929160048082019260009290919082900301818387803b15801561106957600080fd5b6000546001600160a01b0316331461113d5760405162461bcd60e51b8152600401610bc490613195565b6001600160a01b038216600081815260066020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b61119e33826000612104565b50565b6000546001600160a01b031633146111cb5760405162461bcd60e51b8152600401610bc490613195565b602a546111d99042906121c5565b602655565b6001600160a01b031660009081526004602052604090205490565b601e5460408051632062cf9160e01b815290516000926001600160a01b031691632062cf919160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b6000546001600160a01b0316331461126d5760405162461bcd60e51b8152600401610bc490613195565b601b55565b601e54604080516306e2b37160e01b815290516000926001600160a01b0316916306e2b3719160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b6000546001600160a01b031633146112e65760405162461bcd60e51b8152600401610bc490613195565b6000611301612710610d43856112fb60015490565b906120e0565b90506000611318612710610d43856112fb60015490565b90506000611330612710610d4360056112fb60015490565b90508083101580156113425750808210155b6113ac5760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610bc4565b600283905560038290556040514290839085907f91db8d1965ad76c25e9cdb4624cb29364b3f3939376350bd898c06ab40fe707e90600090a45050505050565b6000546001600160a01b031633146114165760405162461bcd60e51b8152600401610bc490613195565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114625760405162461bcd60e51b8152600401610bc490613195565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af11580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d991906131ce565b505050565b6000546001600160a01b031633146115085760405162461bcd60e51b8152600401610bc490613195565b602180546001600160a01b03199081166001600160a01b038681169182179093556022805483168685169081179091556020805490931693851693841783556000828152600684526040808220805460ff199081166001908117909255848452928290208054909316179091555142815290927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a4505050565b6000610f6e6115ba60006111de565b6115d16115c861dead6111de565b600154906120f8565b906120f8565b6000546001600160a01b031633146116015760405162461bcd60e51b8152600401610bc490613195565b6012805462ff000019166201000085151502179055601e5460405163b0b4a15360e01b8152600481018490526001600160a01b039091169063b0b4a15390602401600060405180830381600087803b15801561165c57600080fd5b505af1158015611670573d6000803e3d6000fd5b505050601791909155505050565b601e54600090610f6e906001600160a01b03166111de565b6001600160a01b0381166000908152601c60209081526040808320546004909252822054610be3916120f8565b601e5460408051630415403760e31b815290516000926001600160a01b0316916320aa01b89160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b6000610bdf338484611f83565b6000546001600160a01b031633146117445760405162461bcd60e51b8152600401610bc490613195565b601e5460405163b0b4a15360e01b8152600481018390526001600160a01b039091169063b0b4a153906024015b600060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b5050505050565b336000908152601c60209081526040808320546004909252909120546117cb916120f8565b8111156118325760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610bc4565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b5050336000908152601c60205260409020546118b192509050826121c5565b336000908152601c6020526040902055601d546118ce90826121c5565b601d556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163607c3a7b60e11b81526001600160a01b038481166004830152602482018490529091169063c0f874f6906044015b600060405180830381600087803b15801561197c57600080fd5b505af1158015611990573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146119c25760405162461bcd60e51b8152600401610bc490613195565b601e5460405163627a94fd60e11b8152600481018390526001600160a01b039091169063c4f529fa90602401611771565b6000546001600160a01b03163314611a1d5760405162461bcd60e51b8152600401610bc490613195565b6009889055600a879055600b869055600d849055600c859055600e839055600f82905560108190556011548311801590611a5b5750601154600f5411155b8015611a6b575060115460105411155b611ab75760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e76616c696420746f74616c20656e7472792500000000006044820152606401610bc4565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc98984604051611aeb91815260200190565b60405180910390a45050505050505050565b6000546001600160a01b03163314611b275760405162461bcd60e51b8152600401610bc490613195565b60238054921515600160a01b0260ff60a01b1990931692909217909155602a55565b6000546001600160a01b03163314611b735760405162461bcd60e51b8152600401610bc490613195565b6018839055600154611b8e90620186a090610d4390856120e0565b601955600154611ba790620186a090610d4390846120e0565b601a55505050565b6000546001600160a01b03163314611bd95760405162461bcd60e51b8152600401610bc490613195565b601e5460405163607c3a7b60e11b8152306004820152606460248201526001600160a01b039091169063c0f874f690604401600060405180830381600087803b158015611c2557600080fd5b505af1158015611c39573d6000803e3d6000fd5b50505050565b601e546040805163d85a3bfb60e01b815290516000926001600160a01b03169163d85a3bfb9160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b6000546001600160a01b03163314611cb35760405162461bcd60e51b8152600401610bc490613195565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610bc490613195565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260066020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6000546001600160a01b03163314611dbd5760405162461bcd60e51b8152600401610bc490613195565b6000611dd2612710610d43846112fb60015490565b601e546040516304fe47f760e41b8152600481018390529192506001600160a01b031690634fe47f7090602401611962565b6000546001600160a01b03163314611e2e5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163fd5a55bf60e01b8152600481018390526001600160a01b039091169063fd5a55bf90602401611771565b6001600160a01b038316611ec15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc4565b6001600160a01b038216611f225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc4565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611f8e8383836121d1565b611f988383612300565b611fa38383836123a2565b611fae838383612504565b611fb9838383612614565b611fc3838361269f565b611fce8383836126c2565b6001600160a01b038316600090815260046020526040902054611ff190826120f8565b6001600160a01b038416600090815260046020526040812091909155612017848461281c565b612021578161202c565b61202c84848461287a565b6001600160a01b03841660009081526004602052604090205490915061205290826121c5565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120a69085815260200190565b60405180910390a350505050565b600081848411156120d85760405162461bcd60e51b8152600401610bc49190612ebc565b505050900390565b6000610cf68284613201565b6000610cf68284613218565b6000610cf6828461323a565b602b805460ff191660011790558015612179576000612143601154610d436025546112fb602360009054906101000a90046001600160a01b03166111de565b905082811015612151578092505b602354600090612169906001600160a01b03166111de565b9050838111612176578093505b50505b60285461218690836121c5565b6028554260275560295461219b9060016121c5565b6029556121a9833084611e5f565b6121b68361dead84611f83565b5050602b805460ff1916905550565b6000610cf6828461324d565b6001600160a01b0383166122355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc4565b6001600160a01b0382166122975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc4565b6122a0836111de565b8111156114d95760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b6064820152608401610bc4565b6001600160a01b03821660009081526006602052604090205460ff1615801561234257506001600160a01b03811660009081526006602052604090205460ff16155b1561239e57601254610100900460ff1661239e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610bc4565b5050565b6001600160a01b0383166000908152601c60205260409020541561245b576001600160a01b038316600090815260046020908152604080832054601c909252909120546123f09083906121c5565b111561245b5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610bc4565b6012546301000000900460ff166114d9576002548111158061249557506001600160a01b03831660009081526006602052604090205460ff165b806124b857506001600160a01b03821660009081526006602052604090205460ff165b6114d95760405162461bcd60e51b815260206004820152601860248201527f45524332303a207478206c696d697420657863656564656400000000000000006044820152606401610bc4565b6001600160a01b03831660009081526006602052604090205460ff1615801561254657506001600160a01b03821660009081526006602052604090205460ff16155b801561256057506008546001600160a01b03838116911614155b801561257757506001600160a01b03821661dead14155b801561258d57506012546301000000900460ff16155b156114d9576003546001600160a01b0383166000908152600460205260409020546125b890836121c5565b11156114d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b6064820152608401610bc4565b6008546001600160a01b03838116911614801561264a57506001600160a01b03831660009081526006602052604090205460ff16155b80156126585750601a548110155b8015612667575060165460ff16155b801561267d57506012546301000000900460ff16155b156114d957600160156000828254612695919061324d565b9091555050505050565b6126a98282612987565b1561239e576126b9601954612a38565b60006015555050565b601254610100900460ff1680156126f257506001600160a01b03831660009081526006602052604090205460ff16155b801561270b57506008546001600160a01b038381169116145b80156127195750601b548110155b8015612728575060165460ff16155b801561273e57506012546301000000900460ff16155b1561275c57600160146000828254612756919061324d565b90915550505b601254610100900460ff16801561277b575060125462010000900460ff165b801561279c5750601e5460009061279a906001600160a01b03166111de565b115b80156127ac575060175460145410155b80156127d157506001600160a01b03831660009081526006602052604090205460ff16155b80156127ea57506008546001600160a01b038381169116145b80156127f9575060165460ff16155b801561280f57506012546301000000900460ff16155b156114d9576114d9612c02565b6001600160a01b03821660009081526006602052604081205460ff1615801561285e57506001600160a01b03821660009081526006602052604090205460ff16155b8015610cf65750506012546301000000900460ff161592915050565b6000806128878585612c86565b11801561289e57506012546301000000900460ff16155b156129805760006128c06128b28686612c86565b6011546112fb9086906120ec565b306000908152600460205260409020549091506128dd90826121c5565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061292e9085815260200190565b60405180910390a3600d541561296e57601e54600d5460115461296e9230926001600160a01b039091169161296991906112fb9089906120ec565b611f83565b61297883826120f8565b915050610cf6565b5092915050565b600080601954612996306111de565b601654911115915060ff161580156129b0575060125460ff165b80156129c35750601254610100900460ff165b80156129e857506001600160a01b03841660009081526006602052604090205460ff16155b8015612a0157506008546001600160a01b038481169116145b8015612a11575060185460155410155b8015612a1a5750805b8015612a3057506012546301000000900460ff16155b949350505050565b6016805460ff19166001179055600e54600090612a569060026120e0565b90506000612a7382610d43600954866120e090919063ffffffff16565b90506000612a8184836120f8565b905047612a8d82612ced565b6000612a9947836120f8565b90506000612abc612ab5600954886120f890919063ffffffff16565b83906120ec565b90506000612ad5600954836120e090919063ffffffff16565b90508015612af657602254612af690879083906001600160a01b0316612e11565b600a54600090612b0b906112fb8560026120e0565b90508015612b4f576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612b4d573d6000803e3d6000fd5b505b600c54600090612b64906112fb8660026120e0565b90508015612ba857601e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612ba6573d6000803e3d6000fd5b505b478015612beb576020546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612be9573d6000803e3d6000fd5b505b50506016805460ff19169055505050505050505050565b6012805463ff00000019166301000000179055601e5460135460408051632ce26ec960e11b815290516001600160a01b03909316926359c4dd92929160048082019260009290919082900301818388803b158015612c5f57600080fd5b5087f193505050508015612c71575060015b5060006014556012805463ff00000019169055565b6008546000906001600160a01b038381169116148015612ca857506000600f54115b15612cb65750600f54610be3565b6008546001600160a01b038481169116148015612cd557506000600e54115b15612ce35750600e54610be3565b5060105492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d2257612d22613260565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9f9190613276565b81600181518110612db257612db2613260565b6001600160a01b039283166020918202929092010152600754612dd89130911684611e5f565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611962908590600090869030904290600401613293565b600754612e299030906001600160a01b031685611e5f565b60075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612e97573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119909190613304565b600060208083528351808285015260005b81811015612ee957858101830151858201604001528201612ecd565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612f1c57600080fd5b5035919050565b6001600160a01b038116811461119e57600080fd5b60008060408385031215612f4b57600080fd5b8235612f5681612f23565b946020939093013593505050565b600060208284031215612f7657600080fd5b8135610cf681612f23565b801515811461119e57600080fd5b600060208284031215612fa157600080fd5b8135610cf681612f81565b600080600060608486031215612fc157600080fd5b8335612fcc81612f23565b92506020840135612fdc81612f23565b929592945050506040919091013590565b6000806040838503121561300057600080fd5b50508035926020909101359150565b6000806040838503121561302257600080fd5b823561302d81612f23565b9150602083013561303d81612f81565b809150509250929050565b60008060006060848603121561305d57600080fd5b833561306881612f23565b9250602084013561307881612f23565b9150604084013561308881612f23565b809150509250925092565b6000806000606084860312156130a857600080fd5b83356130b381612f81565b95602085013595506040909401359392505050565b600080604083850312156130db57600080fd5b82356130e681612f23565b9150602083013561303d81612f23565b600080600080600080600080610100898b03121561311357600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b6000806040838503121561315e57600080fd5b8235612f5681612f81565b60008060006060848603121561317e57600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156131c757600080fd5b5051919050565b6000602082840312156131e057600080fd5b8151610cf681612f81565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610be357610be36131eb565b60008261323557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610be357610be36131eb565b80820180821115610be357610be36131eb565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561328857600080fd5b8151610cf681612f23565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132e35784516001600160a01b0316835293830193918301916001016132be565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561331957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220af63f356887203bcdbac85a793e867e111de2e3419b10c489bf1428ae224dbdf64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103d25760003560e01c806386993e4d116101fd578063b6b55f2511610118578063e94dd17c116100ab578063ef40a6701161007a578063ef40a67014610aed578063f2fde38b14610b1a578063f4e0d9ac14610b3a578063faf9445714610b5a578063fd5a55bf14610b7a57600080fd5b8063e94dd17c14610a8d578063eb8cf20614610aad578063ebf6cf9b14610ac2578063edfb171d14610ad857600080fd5b8063e2d6f94c116100e7578063e2d6f94c14610a21578063e306744914610a41578063e480034514610a57578063e55a68b314610a7757600080fd5b8063b6b55f251461097b578063c0f874f61461099b578063c4f529fa146109bb578063dd62ed3e146109db57600080fd5b806395d89b4111610190578063a2e2d9f51161015f578063a2e2d9f514610906578063a8aa1b311461091b578063a9059cbb1461093b578063b0b4a1531461095b57600080fd5b806395d89b411461089057806398c56d78146108bb5780639b9a6f09146108d0578063a0821be3146108e657600080fd5b80638cd4426d116101cc5780638cd4426d1461081b5780639213c3581461083b5780639358928b1461085b5780639523f45e1461087057600080fd5b806386993e4d14610794578063884870c7146107a9578063893d20e8146107c95780638b3dc018146107fb57600080fd5b80633c9f861d116102ed5780636c0e1c121161028057806378c7dcd61161024f57806378c7dcd6146107295780637d1db4a5146107495780637f3d59851461075f578063817b1cd21461077e57600080fd5b80636c0e1c12146106c957806370a08231146106de57806373fd6c0a146106fe57806378109e541461071357600080fd5b8063468d34ed116102bc578063468d34ed1461065e578063486a7e6b1461067357806348ff2b8b1461068957806354b822cf146106a957600080fd5b80633c9f861d146105f25780633e9cc8411461060857806344a583e11461062857806344df8e701461063d57600080fd5b80632cbf536011610365578063313ce56711610334578063313ce5671461058b578063329738a4146105a757806334eead48146105bc578063360b0fcd146105d257600080fd5b80632cbf5360146105075780632e1a7d4d146105275780632e5b4c43146105475780632f54bf6e1461055c57600080fd5b806318160ddd116103a157806318160ddd146104925780631badc110146104a75780632250f5e1146104c757806323b872dd146104e757600080fd5b806303807ee5146103de57806306fdde031461040757806307f7487314610440578063095ea7b31461046257600080fd5b366103d957005b600080fd5b3480156103ea57600080fd5b506103f460255481565b6040519081526020015b60405180910390f35b34801561041357600080fd5b506040805180820190915260078152662c39b734b832b960c91b60208201525b6040516103fe9190612ebc565b34801561044c57600080fd5b5061046061045b366004612f0a565b610b9a565b005b34801561046e57600080fd5b5061048261047d366004612f38565b610bd2565b60405190151581526020016103fe565b34801561049e57600080fd5b506001546103f4565b3480156104b357600080fd5b506104606104c2366004612f64565b610be9565b3480156104d357600080fd5b506104606104e2366004612f8f565b610c4d565b3480156104f357600080fd5b50610482610502366004612fac565b610c93565b34801561051357600080fd5b50610460610522366004612fed565b610cfd565b34801561053357600080fd5b50610460610542366004612f0a565b610d52565b34801561055357600080fd5b50610460610e98565b34801561056857600080fd5b50610482610577366004612f64565b6000546001600160a01b0391821691161490565b34801561059757600080fd5b50604051600981526020016103fe565b3480156105b357600080fd5b506103f4610f00565b3480156105c857600080fd5b506103f460135481565b3480156105de57600080fd5b506104606105ed366004612fac565b610f73565b3480156105fe57600080fd5b506103f460285481565b34801561061457600080fd5b506012546104829062010000900460ff1681565b34801561063457600080fd5b50610460611010565b34801561064957600080fd5b5060235461048290600160a01b900460ff1681565b34801561066a57600080fd5b50610460611090565b34801561067f57600080fd5b506103f460245481565b34801561069557600080fd5b506104606106a436600461300f565b611113565b3480156106b557600080fd5b506104606106c4366004612f0a565b611192565b3480156106d557600080fd5b506104606111a1565b3480156106ea57600080fd5b506103f46106f9366004612f64565b6111de565b34801561070a57600080fd5b506103f46111f9565b34801561071f57600080fd5b506103f460035481565b34801561073557600080fd5b50610460610744366004612f0a565b611243565b34801561075557600080fd5b506103f460025481565b34801561076b57600080fd5b50601e546001600160a01b0316316103f4565b34801561078a57600080fd5b506103f4601d5481565b3480156107a057600080fd5b506103f4611272565b3480156107b557600080fd5b506104606107c4366004612fed565b6112bc565b3480156107d557600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016103fe565b34801561080757600080fd5b50610460610816366004612f64565b6113ec565b34801561082757600080fd5b50610460610836366004612f38565b611438565b34801561084757600080fd5b50610460610856366004613048565b6114de565b34801561086757600080fd5b506103f46115ab565b34801561087c57600080fd5b5061046061088b366004613093565b6115d7565b34801561089c57600080fd5b50604080518082019091526002815261585360f01b6020820152610433565b3480156108c757600080fd5b506103f461167e565b3480156108dc57600080fd5b506103f460295481565b3480156108f257600080fd5b506103f4610901366004612f64565b611696565b34801561091257600080fd5b506103f46116c3565b34801561092757600080fd5b506008546107e3906001600160a01b031681565b34801561094757600080fd5b50610482610956366004612f38565b61170d565b34801561096757600080fd5b50610460610976366004612f0a565b61171a565b34801561098757600080fd5b50610460610996366004612f0a565b6117a6565b3480156109a757600080fd5b506104606109b6366004612f38565b611903565b3480156109c757600080fd5b506104606109d6366004612f0a565b611998565b3480156109e757600080fd5b506103f46109f63660046130c8565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a2d57600080fd5b50610460610a3c3660046130f6565b6119f3565b348015610a4d57600080fd5b506103f460275481565b348015610a6357600080fd5b50610460610a7236600461314b565b611afd565b348015610a8357600080fd5b506103f4602a5481565b348015610a9957600080fd5b50610460610aa8366004613169565b611b49565b348015610ab957600080fd5b50610460611baf565b348015610ace57600080fd5b506103f460265481565b348015610ae457600080fd5b506103f4611c3f565b348015610af957600080fd5b506103f4610b08366004612f64565b601c6020526000908152604090205481565b348015610b2657600080fd5b50610460610b35366004612f64565b611c89565b348015610b4657600080fd5b50610460610b55366004612f64565b611d07565b348015610b6657600080fd5b50610460610b75366004612f0a565b611d93565b348015610b8657600080fd5b50610460610b95366004612f0a565b611e04565b6000546001600160a01b03163314610bcd5760405162461bcd60e51b8152600401610bc490613195565b60405180910390fd5b601355565b6000610bdf338484611e5f565b5060015b92915050565b6000546001600160a01b03163314610c135760405162461bcd60e51b8152600401610bc490613195565b602380546001600160a01b039092166001600160a01b0319909216821790556000908152600660205260409020805460ff19166001179055565b6000546001600160a01b03163314610c775760405162461bcd60e51b8152600401610bc490613195565b60128054911515620100000262ff000019909216919091179055565b6000610ca0848484611f83565b610cf28433610ced85604051806060016040528060288152602001613333602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906120b4565b611e5f565b5060015b9392505050565b6000546001600160a01b03163314610d275760405162461bcd60e51b8152600401610bc490613195565b610d49620186a0610d43846001546120e090919063ffffffff16565b906120ec565b60245560255550565b336000908152601c6020526040902054811115610dc75760405162461bcd60e51b815260206004820152602d60248201527f45524332303a2043616e6e6f7420756e7374616b65206d6f7265207468616e2060448201526c185b5bdd5b9d081cdd185ad959609a1b6064820152608401610bc4565b601f5460405163d8a9bf2960e01b8152336004820152602481018390526001600160a01b039091169063d8a9bf2990604401600060405180830381600087803b158015610e1357600080fd5b505af1158015610e27573d6000803e3d6000fd5b5050336000908152601c6020526040902054610e4692509050826120f8565b336000908152601c6020526040902055601d54610e6390826120f8565b601d556040514290829033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56890600090a450565b6000546001600160a01b03163314610ec25760405162461bcd60e51b8152600401610bc490613195565b6012805461ff001916610100179055604051429033907f340c369ced7c3a65b67543c4f1e839173c42d01b38931b0c01b18c89a1d1ba4b90600090a3565b601e54604080516317e0695f60e21b815290516000926001600160a01b031691635f81a57c9160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e91906131b5565b905090565b6000546001600160a01b03163314610f9d5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163360b0fcd60e01b81526001600160a01b0385811660048301528481166024830152604482018490529091169063360b0fcd90606401600060405180830381600087803b158015610ff357600080fd5b505af1158015611007573d6000803e3d6000fd5b50505050505050565b6012805463ff00000019166301000000179055601e546040805163a362630b60e01b815290516001600160a01b039092169163a362630b9160048082019260009290919082900301818387803b15801561106957600080fd5b505af115801561107d573d6000803e3d6000fd5b50506012805463ff000000191690555050565b6000546001600160a01b031633146110ba5760405162461bcd60e51b8152600401610bc490613195565b6012805463ff00000019166301000000179055601e5460408051632ce26ec960e11b815290516001600160a01b03909216916359c4dd929160048082019260009290919082900301818387803b15801561106957600080fd5b6000546001600160a01b0316331461113d5760405162461bcd60e51b8152600401610bc490613195565b6001600160a01b038216600081815260066020526040808220805460ff19168515159081179091559051429391927ff61420caae4661cdd9554a2c8b6c89fc9f30f94abccb1da76abb2ec99783821191a45050565b61119e33826000612104565b50565b6000546001600160a01b031633146111cb5760405162461bcd60e51b8152600401610bc490613195565b602a546111d99042906121c5565b602655565b6001600160a01b031660009081526004602052604090205490565b601e5460408051632062cf9160e01b815290516000926001600160a01b031691632062cf919160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b6000546001600160a01b0316331461126d5760405162461bcd60e51b8152600401610bc490613195565b601b55565b601e54604080516306e2b37160e01b815290516000926001600160a01b0316916306e2b3719160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b6000546001600160a01b031633146112e65760405162461bcd60e51b8152600401610bc490613195565b6000611301612710610d43856112fb60015490565b906120e0565b90506000611318612710610d43856112fb60015490565b90506000611330612710610d4360056112fb60015490565b90508083101580156113425750808210155b6113ac5760405162461bcd60e51b815260206004820152603560248201527f45524332303a206d61782054587320616e64206d61782057616c6c65742063616044820152746e6e6f74206265206c657373207468616e202e352560581b6064820152608401610bc4565b600283905560038290556040514290839085907f91db8d1965ad76c25e9cdb4624cb29364b3f3939376350bd898c06ab40fe707e90600090a45050505050565b6000546001600160a01b031633146114165760405162461bcd60e51b8152600401610bc490613195565b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114625760405162461bcd60e51b8152600401610bc490613195565b60205460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af11580156114b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d991906131ce565b505050565b6000546001600160a01b031633146115085760405162461bcd60e51b8152600401610bc490613195565b602180546001600160a01b03199081166001600160a01b038681169182179093556022805483168685169081179091556020805490931693851693841783556000828152600684526040808220805460ff199081166001908117909255848452928290208054909316179091555142815290927f358f3926f41536f5fa6926b5b6945502e5fdfb85b1876c473d06606ed0fae9ca910160405180910390a4505050565b6000610f6e6115ba60006111de565b6115d16115c861dead6111de565b600154906120f8565b906120f8565b6000546001600160a01b031633146116015760405162461bcd60e51b8152600401610bc490613195565b6012805462ff000019166201000085151502179055601e5460405163b0b4a15360e01b8152600481018490526001600160a01b039091169063b0b4a15390602401600060405180830381600087803b15801561165c57600080fd5b505af1158015611670573d6000803e3d6000fd5b505050601791909155505050565b601e54600090610f6e906001600160a01b03166111de565b6001600160a01b0381166000908152601c60209081526040808320546004909252822054610be3916120f8565b601e5460408051630415403760e31b815290516000926001600160a01b0316916320aa01b89160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b6000610bdf338484611f83565b6000546001600160a01b031633146117445760405162461bcd60e51b8152600401610bc490613195565b601e5460405163b0b4a15360e01b8152600481018390526001600160a01b039091169063b0b4a153906024015b600060405180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b5050505050565b336000908152601c60209081526040808320546004909252909120546117cb916120f8565b8111156118325760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2043616e6e6f74207374616b65206d6f7265207468616e20617660448201526e61696c61626c652062616c616e636560881b6064820152608401610bc4565b601f5460405163773a0f0960e01b8152336004820152602481018390526001600160a01b039091169063773a0f0990604401600060405180830381600087803b15801561187e57600080fd5b505af1158015611892573d6000803e3d6000fd5b5050336000908152601c60205260409020546118b192509050826121c5565b336000908152601c6020526040902055601d546118ce90826121c5565b601d556040514290829033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590600090a450565b6000546001600160a01b0316331461192d5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163607c3a7b60e11b81526001600160a01b038481166004830152602482018490529091169063c0f874f6906044015b600060405180830381600087803b15801561197c57600080fd5b505af1158015611990573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146119c25760405162461bcd60e51b8152600401610bc490613195565b601e5460405163627a94fd60e11b8152600481018390526001600160a01b039091169063c4f529fa90602401611771565b6000546001600160a01b03163314611a1d5760405162461bcd60e51b8152600401610bc490613195565b6009889055600a879055600b869055600d849055600c859055600e839055600f82905560108190556011548311801590611a5b5750601154600f5411155b8015611a6b575060115460105411155b611ab75760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e76616c696420746f74616c20656e7472792500000000006044820152606401610bc4565b4282847fdddb43af0ad29e5d9d3cb393fd94e8f11ac2c069da19545bac6ee6baf3ddc98984604051611aeb91815260200190565b60405180910390a45050505050505050565b6000546001600160a01b03163314611b275760405162461bcd60e51b8152600401610bc490613195565b60238054921515600160a01b0260ff60a01b1990931692909217909155602a55565b6000546001600160a01b03163314611b735760405162461bcd60e51b8152600401610bc490613195565b6018839055600154611b8e90620186a090610d4390856120e0565b601955600154611ba790620186a090610d4390846120e0565b601a55505050565b6000546001600160a01b03163314611bd95760405162461bcd60e51b8152600401610bc490613195565b601e5460405163607c3a7b60e11b8152306004820152606460248201526001600160a01b039091169063c0f874f690604401600060405180830381600087803b158015611c2557600080fd5b505af1158015611c39573d6000803e3d6000fd5b50505050565b601e546040805163d85a3bfb60e01b815290516000926001600160a01b03169163d85a3bfb9160048083019260209291908290030181865afa158015610f4a573d6000803e3d6000fd5b6000546001600160a01b03163314611cb35760405162461bcd60e51b8152600401610bc490613195565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610bc490613195565b601f80546001600160a01b0319166001600160a01b038316908117909155600081815260066020526040808220805460ff19166001179055514292917f23481943b6ef3dff645af874fbb24781bf224a02312f9cb308880e03e0a9ddee91a350565b6000546001600160a01b03163314611dbd5760405162461bcd60e51b8152600401610bc490613195565b6000611dd2612710610d43846112fb60015490565b601e546040516304fe47f760e41b8152600481018390529192506001600160a01b031690634fe47f7090602401611962565b6000546001600160a01b03163314611e2e5760405162461bcd60e51b8152600401610bc490613195565b601e5460405163fd5a55bf60e01b8152600481018390526001600160a01b039091169063fd5a55bf90602401611771565b6001600160a01b038316611ec15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc4565b6001600160a01b038216611f225760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc4565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611f8e8383836121d1565b611f988383612300565b611fa38383836123a2565b611fae838383612504565b611fb9838383612614565b611fc3838361269f565b611fce8383836126c2565b6001600160a01b038316600090815260046020526040902054611ff190826120f8565b6001600160a01b038416600090815260046020526040812091909155612017848461281c565b612021578161202c565b61202c84848461287a565b6001600160a01b03841660009081526004602052604090205490915061205290826121c5565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120a69085815260200190565b60405180910390a350505050565b600081848411156120d85760405162461bcd60e51b8152600401610bc49190612ebc565b505050900390565b6000610cf68284613201565b6000610cf68284613218565b6000610cf6828461323a565b602b805460ff191660011790558015612179576000612143601154610d436025546112fb602360009054906101000a90046001600160a01b03166111de565b905082811015612151578092505b602354600090612169906001600160a01b03166111de565b9050838111612176578093505b50505b60285461218690836121c5565b6028554260275560295461219b9060016121c5565b6029556121a9833084611e5f565b6121b68361dead84611f83565b5050602b805460ff1916905550565b6000610cf6828461324d565b6001600160a01b0383166122355760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc4565b6001600160a01b0382166122975760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc4565b6122a0836111de565b8111156114d95760405162461bcd60e51b815260206004820152602860248201527f45524332303a2062656c6f7720617661696c61626c652062616c616e636520746044820152671a1c995cda1bdb1960c21b6064820152608401610bc4565b6001600160a01b03821660009081526006602052604090205460ff1615801561234257506001600160a01b03811660009081526006602052604090205460ff16155b1561239e57601254610100900460ff1661239e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2054726164696e67206973206e6f7420616c6c6f7765640000006044820152606401610bc4565b5050565b6001600160a01b0383166000908152601c60205260409020541561245b576001600160a01b038316600090815260046020908152604080832054601c909252909120546123f09083906121c5565b111561245b5760405162461bcd60e51b815260206004820152603460248201527f45524332303a2065786365656473206d6178696d756d20616c6c6f776564206e60448201527337ba1031bab93932b73a363c9039ba30b5b2b21760611b6064820152608401610bc4565b6012546301000000900460ff166114d9576002548111158061249557506001600160a01b03831660009081526006602052604090205460ff165b806124b857506001600160a01b03821660009081526006602052604090205460ff165b6114d95760405162461bcd60e51b815260206004820152601860248201527f45524332303a207478206c696d697420657863656564656400000000000000006044820152606401610bc4565b6001600160a01b03831660009081526006602052604090205460ff1615801561254657506001600160a01b03821660009081526006602052604090205460ff16155b801561256057506008546001600160a01b03838116911614155b801561257757506001600160a01b03821661dead14155b801561258d57506012546301000000900460ff16155b156114d9576003546001600160a01b0383166000908152600460205260409020546125b890836121c5565b11156114d95760405162461bcd60e51b815260206004820152602560248201527f45524332303a2065786365656473206d6178696d756d2077616c6c657420616d60448201526437bab73a1760d91b6064820152608401610bc4565b6008546001600160a01b03838116911614801561264a57506001600160a01b03831660009081526006602052604090205460ff16155b80156126585750601a548110155b8015612667575060165460ff16155b801561267d57506012546301000000900460ff16155b156114d957600160156000828254612695919061324d565b9091555050505050565b6126a98282612987565b1561239e576126b9601954612a38565b60006015555050565b601254610100900460ff1680156126f257506001600160a01b03831660009081526006602052604090205460ff16155b801561270b57506008546001600160a01b038381169116145b80156127195750601b548110155b8015612728575060165460ff16155b801561273e57506012546301000000900460ff16155b1561275c57600160146000828254612756919061324d565b90915550505b601254610100900460ff16801561277b575060125462010000900460ff165b801561279c5750601e5460009061279a906001600160a01b03166111de565b115b80156127ac575060175460145410155b80156127d157506001600160a01b03831660009081526006602052604090205460ff16155b80156127ea57506008546001600160a01b038381169116145b80156127f9575060165460ff16155b801561280f57506012546301000000900460ff16155b156114d9576114d9612c02565b6001600160a01b03821660009081526006602052604081205460ff1615801561285e57506001600160a01b03821660009081526006602052604090205460ff16155b8015610cf65750506012546301000000900460ff161592915050565b6000806128878585612c86565b11801561289e57506012546301000000900460ff16155b156129805760006128c06128b28686612c86565b6011546112fb9086906120ec565b306000908152600460205260409020549091506128dd90826121c5565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061292e9085815260200190565b60405180910390a3600d541561296e57601e54600d5460115461296e9230926001600160a01b039091169161296991906112fb9089906120ec565b611f83565b61297883826120f8565b915050610cf6565b5092915050565b600080601954612996306111de565b601654911115915060ff161580156129b0575060125460ff165b80156129c35750601254610100900460ff165b80156129e857506001600160a01b03841660009081526006602052604090205460ff16155b8015612a0157506008546001600160a01b038481169116145b8015612a11575060185460155410155b8015612a1a5750805b8015612a3057506012546301000000900460ff16155b949350505050565b6016805460ff19166001179055600e54600090612a569060026120e0565b90506000612a7382610d43600954866120e090919063ffffffff16565b90506000612a8184836120f8565b905047612a8d82612ced565b6000612a9947836120f8565b90506000612abc612ab5600954886120f890919063ffffffff16565b83906120ec565b90506000612ad5600954836120e090919063ffffffff16565b90508015612af657602254612af690879083906001600160a01b0316612e11565b600a54600090612b0b906112fb8560026120e0565b90508015612b4f576021546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612b4d573d6000803e3d6000fd5b505b600c54600090612b64906112fb8660026120e0565b90508015612ba857601e546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612ba6573d6000803e3d6000fd5b505b478015612beb576020546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612be9573d6000803e3d6000fd5b505b50506016805460ff19169055505050505050505050565b6012805463ff00000019166301000000179055601e5460135460408051632ce26ec960e11b815290516001600160a01b03909316926359c4dd92929160048082019260009290919082900301818388803b158015612c5f57600080fd5b5087f193505050508015612c71575060015b5060006014556012805463ff00000019169055565b6008546000906001600160a01b038381169116148015612ca857506000600f54115b15612cb65750600f54610be3565b6008546001600160a01b038481169116148015612cd557506000600e54115b15612ce35750600e54610be3565b5060105492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d2257612d22613260565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9f9190613276565b81600181518110612db257612db2613260565b6001600160a01b039283166020918202929092010152600754612dd89130911684611e5f565b60075460405163791ac94760e01b81526001600160a01b039091169063791ac94790611962908590600090869030904290600401613293565b600754612e299030906001600160a01b031685611e5f565b60075460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0383811660848301524260a48301529091169063f305d71990849060c40160606040518083038185885af1158015612e97573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119909190613304565b600060208083528351808285015260005b81811015612ee957858101830151858201604001528201612ecd565b506000604082860101526040601f19601f8301168501019250505092915050565b600060208284031215612f1c57600080fd5b5035919050565b6001600160a01b038116811461119e57600080fd5b60008060408385031215612f4b57600080fd5b8235612f5681612f23565b946020939093013593505050565b600060208284031215612f7657600080fd5b8135610cf681612f23565b801515811461119e57600080fd5b600060208284031215612fa157600080fd5b8135610cf681612f81565b600080600060608486031215612fc157600080fd5b8335612fcc81612f23565b92506020840135612fdc81612f23565b929592945050506040919091013590565b6000806040838503121561300057600080fd5b50508035926020909101359150565b6000806040838503121561302257600080fd5b823561302d81612f23565b9150602083013561303d81612f81565b809150509250929050565b60008060006060848603121561305d57600080fd5b833561306881612f23565b9250602084013561307881612f23565b9150604084013561308881612f23565b809150509250925092565b6000806000606084860312156130a857600080fd5b83356130b381612f81565b95602085013595506040909401359392505050565b600080604083850312156130db57600080fd5b82356130e681612f23565b9150602083013561303d81612f23565b600080600080600080600080610100898b03121561311357600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b6000806040838503121561315e57600080fd5b8235612f5681612f81565b60008060006060848603121561317e57600080fd5b505081359360208301359350604090920135919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000602082840312156131c757600080fd5b5051919050565b6000602082840312156131e057600080fd5b8151610cf681612f81565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610be357610be36131eb565b60008261323557634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610be357610be36131eb565b80820180821115610be357610be36131eb565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561328857600080fd5b8151610cf681612f23565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156132e35784516001600160a01b0316835293830193918301916001016132be565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561331957600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220af63f356887203bcdbac85a793e867e111de2e3419b10c489bf1428ae224dbdf64736f6c63430008130033

Deployed Bytecode Sourcemap

6408:20862:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8726:32;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8726:32:0;;;;;;;;10862:67;;;;;;;;;;-1:-1:-1;10922:5:0;;;;;;;;;;;;-1:-1:-1;;;10922:5:0;;;;10862:67;;;;;;;:::i;20934:89::-;;;;;;;;;;-1:-1:-1;20934:89:0;;;;;:::i;:::-;;:::i;:::-;;11646:133;;;;;;;;;;-1:-1:-1;11646:133:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;11646:133:0;1390:187:1;11169:84:0;;;;;;;;;;-1:-1:-1;11239:12:0;;11169:84;;26792:138;;;;;;;;;;-1:-1:-1;26792:138:0;;;;;:::i;:::-;;:::i;20326:91::-;;;;;;;;;;-1:-1:-1;20326:91:0;;;;;:::i;:::-;;:::i;24030:309::-;;;;;;;;;;-1:-1:-1;24030:309:0;;;;;:::i;:::-;;:::i;26936:187::-;;;;;;;;;;-1:-1:-1;26936:187:0;;;;;:::i;:::-;;:::i;13598:408::-;;;;;;;;;;-1:-1:-1;13598:408:0;;;;;:::i;:::-;;:::i;19102:142::-;;;;;;;;;;;;;:::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;11012:67;;;;;;;;;;-1:-1:-1;11012:67:0;;6626:1;3059:36:1;;3047:2;3032:18;11012:67:0;2917:184:1;25181:113:0;;;;;;;;;;;;;:::i;7548:29::-;;;;;;;;;;;;;;;;21160:162;;;;;;;;;;-1:-1:-1;21160:162:0;;;;;:::i;:::-;;:::i;8829:24::-;;;;;;;;;;;;;;;;7483:30;;;;;;;;;;-1:-1:-1;7483:30:0;;;;;;;;;;;22697:132;;;;;;;;;;;;;:::i;8627:24::-;;;;;;;;;;-1:-1:-1;8627:24:0;;;;-1:-1:-1;;;8627:24:0;;;;;;22837:152;;;;;;;;;;;;;:::i;8658:61::-;;;;;;;;;;;;;;;;19655:192;;;;;;;;;;-1:-1:-1;19655:192:0;;;;;:::i;:::-;;:::i;26570:103::-;;;;;;;;;;-1:-1:-1;26570:103:0;;;;;:::i;:::-;;:::i;26680:106::-;;;;;;;;;;;;;:::i;11259:103::-;;;;;;;;;;-1:-1:-1;11259:103:0;;;;;:::i;:::-;;:::i;24927:125::-;;;;;;;;;;;;;:::i;6769:63::-;;;;;;;;;;;;;;;;20629:110;;;;;;;;;;-1:-1:-1;20629:110:0;;;;;:::i;:::-;;:::i;6702:60::-;;;;;;;;;;;;;;;;24690:106;;;;;;;;;;-1:-1:-1;24770:9:0;;-1:-1:-1;;;;;24770:9:0;24762:26;24690:106;;8098:26;;;;;;;;;;;;;;;;25060:113;;;;;;;;;;;;;:::i;14831:514::-;;;;;;;;;;-1:-1:-1;14831:514:0;;;;;:::i;:::-;;:::i;11085:78::-;;;;;;;;;;-1:-1:-1;11137:7:0;11155:5;-1:-1:-1;;;;;11155:5:0;11085:78;;;-1:-1:-1;;;;;3657:32:1;;;3639:51;;3627:2;3612:18;11085:78:0;3493:203:1;21031:121:0;;;;;;;;;;-1:-1:-1;21031:121:0;;;;;:::i;:::-;;:::i;19855:150::-;;;;;;;;;;-1:-1:-1;19855:150:0;;;;;:::i;:::-;;:::i;19252:395::-;;;;;;;;;;-1:-1:-1;19252:395:0;;;;;:::i;:::-;;:::i;11916:138::-;;;;;;;;;;;;;:::i;20425:196::-;;;;;;;;;;-1:-1:-1;20425:196:0;;;;;:::i;:::-;;:::i;10935:71::-;;;;;;;;;;-1:-1:-1;10997:7:0;;;;;;;;;;;;-1:-1:-1;;;10997:7:0;;;;10935:71;;24804:115;;;;;;;;;;;;;:::i;8860:30::-;;;;;;;;;;;;;;;;11785:125;;;;;;;;;;-1:-1:-1;11785:125:0;;;;;:::i;:::-;;:::i;25429:120::-;;;;;;;;;;;;;:::i;7032:19::-;;;;;;;;;;-1:-1:-1;7032:19:0;;;;-1:-1:-1;;;;;7032:19:0;;;11368:139;;;;;;;;;;-1:-1:-1;11368:139:0;;;;;:::i;:::-;;:::i;21845:122::-;;;;;;;;;;-1:-1:-1;21845:122:0;;;;;:::i;:::-;;:::i;13156:434::-;;;;;;;;;;-1:-1:-1;13156:434:0;;;;;:::i;:::-;;:::i;21330:136::-;;;;;;;;;;-1:-1:-1;21330:136:0;;;;;:::i;:::-;;:::i;21725:112::-;;;;;;;;;;-1:-1:-1;21725:112:0;;;;;:::i;:::-;;:::i;11513:127::-;;;;;;;;;;-1:-1:-1;11513:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11611:18:0;;;11594:7;11611:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11513:127;14239:584;;;;;;;;;;-1:-1:-1;14239:584:0;;;;;:::i;:::-;;:::i;8795:27::-;;;;;;;;;;;;;;;;27131:136;;;;;;;;;;-1:-1:-1;27131:136:0;;;;;:::i;:::-;;:::i;8897:40::-;;;;;;;;;;;;;;;;20013:305;;;;;;;;;;-1:-1:-1;20013:305:0;;;;;:::i;:::-;;:::i;21474:119::-;;;;;;;;;;;;;:::i;8765:23::-;;;;;;;;;;;;;;;;25302:119;;;;;;;;;;;;;:::i;8044:47::-;;;;;;;;;;-1:-1:-1;8044:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;3995:111;;;;;;;;;;-1:-1:-1;3995:111:0;;;;;:::i;:::-;;:::i;14014:217::-;;;;;;;;;;-1:-1:-1;14014:217:0;;;;;:::i;:::-;;:::i;20747:179::-;;;;;;;;;;-1:-1:-1;20747:179:0;;;;;:::i;:::-;;:::i;21601:116::-;;;;;;;;;;-1:-1:-1;21601:116:0;;;;;:::i;:::-;;:::i;20934:89::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;;;;;;;;;21004:5:::1;:11:::0;20934:89::o;11646:133::-;11721:4;11728:37;11737:10;11749:7;11758:6;11728:8;:37::i;:::-;-1:-1:-1;11773:4:0;11646:133;;;;;:::o;26792:138::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;26868:10:::1;:18:::0;;-1:-1:-1;;;;;26868:18:0;;::::1;-1:-1:-1::0;;;;;;26868:18:0;;::::1;::::0;::::1;::::0;;:10:::1;26897:18:::0;;;:11:::1;:18;::::0;;;;:25;;-1:-1:-1;;26897:25:0::1;26868:18:::0;26897:25:::1;::::0;;26792:138::o;20326:91::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20390:11:::1;:19:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;20390:19:0;;::::1;::::0;;;::::1;::::0;;20326:91::o;24030:309::-;24128:4;24145:36;24155:6;24163:9;24174:6;24145:9;:36::i;:::-;24192:117;24201:6;24209:10;24221:87;24257:6;24221:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24221:19:0;;;;;;:11;:19;;;;;;;;24241:10;24221:31;;;;;;;;;:87;:35;:87::i;:::-;24192:8;:117::i;:::-;-1:-1:-1;24327:4:0;24030:309;;;;;;:::o;26936:187::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;27046:41:::1;27080:6;27046:29;27063:11;27046:12;;:16;;:29;;;;:::i;:::-;:33:::0;::::1;:41::i;:::-;27033:10;:54:::0;27089:11:::1;:26:::0;-1:-1:-1;26936:187:0:o;13598:408::-;13692:10;13679:24;;;;:12;:24;;;;;;13669:34;;;13661:92;;;;-1:-1:-1;;;13661:92:0;;7107:2:1;13661: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;;13661:92:0;6905:409:1;13661:92:0;13764:15;;:51;;-1:-1:-1;;;13764:51:0;;13796:10;13764:51;;;7493::1;7560:18;;;7553:34;;;-1:-1:-1;;;;;13764:15:0;;;;:31;;7466:18:1;;13764:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13866:10:0;13853:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;13853:24:0;-1:-1:-1;13882:6:0;13853:28;:36::i;:::-;13839:10;13826:24;;;;:12;:24;;;;;:63;13914:11;;:23;;13930:6;13914:15;:23::i;:::-;13900:11;:37;13953:45;;13982:15;;13974:6;;13962:10;;13953:45;;;;;13598:408;:::o;19102:142::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;19156:14:::1;:21:::0;;-1:-1:-1;;19156:21:0::1;;;::::0;;19193:43:::1;::::0;19220:15:::1;::::0;19208:10:::1;::::0;19193:43:::1;::::0;19156:21;;19193:43:::1;19102:142::o:0;25181:113::-;25263:9;;:23;;;-1:-1:-1;;;25263:23:0;;;;25236:7;;-1:-1:-1;;;;;25263:9:0;;:21;;:23;;;;;;;;;;;;;;:9;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25256:30;;25181:113;:::o;21160:162::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21264:9:::1;::::0;:50:::1;::::0;-1:-1:-1;;;21264:50:0;;-1:-1:-1;;;;;8045:15:1;;;21264:50:0::1;::::0;::::1;8027:34:1::0;8097:15;;;8077:18;;;8070:43;8129:18;;;8122:34;;;21264:9:0;;::::1;::::0;:24:::1;::::0;7962:18:1;;21264:50:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21160:162:::0;;;:::o;22697:132::-;22739:8;:15;;-1:-1:-1;;22739:15:0;;;;;22765:9;;:29;;;-1:-1:-1;;;22765:29:0;;;;-1:-1:-1;;;;;22765:9:0;;;;:27;;:29;;;;;22739:15;;22765:29;;;;;;;;22739:15;22765:9;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22805:8:0;:16;;-1:-1:-1;;22805:16:0;;;-1:-1:-1;;22697:132:0:o;22837:152::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;22894:8:::1;:15:::0;;-1:-1:-1;;22894:15:0::1;::::0;::::1;::::0;;22920:9:::1;::::0;:34:::1;::::0;;-1:-1:-1;;;22920:34:0;;;;-1:-1:-1;;;;;22920:9:0;;::::1;::::0;:32:::1;::::0;:34:::1;::::0;;::::1;::::0;22894:15;;22920:34;;;;;;;;22894:15;22920:9;:34;::::1;;::::0;::::1;;;;::::0;::::1;19655: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;;;;;19739:21:0;::::1;;::::0;;;:11:::1;:21;::::0;;;;;:32;;-1:-1:-1;;19739:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19787:52;;19823:15:::1;::::0;19739:32;;19787:52:::1;::::0;::::1;19655:192:::0;;:::o;26570:103::-;26627:38;26639:10;26651:6;26659:5;26627:11;:38::i;:::-;26570:103;:::o;26680:106::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;26765:12:::1;::::0;26745:33:::1;::::0;:15:::1;::::0;:19:::1;:33::i;:::-;26734:8;:44:::0;26680:106::o;11259:103::-;-1:-1:-1;;;;;11342:18:0;11325:7;11342:18;;;:9;:18;;;;;;;11259:103::o;24927:125::-;25012:9;;:32;;;-1:-1:-1;;;25012:32:0;;;;24985:7;;-1:-1:-1;;;;;25012:9:0;;:30;;:32;;;;;;;;;;;;;;:9;:32;;;;;;;;;;;;;;20629:110;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20702:20:::1;:29:::0;20629:110::o;25060:113::-;25139:9;;:26;;;-1:-1:-1;;;25139:26:0;;;;25112:7;;-1:-1:-1;;;;;25139:9:0;;:24;;:26;;;;;;;;;;;;;;:9;:26;;;;;;;;;;;;;;14831:514;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;14915:13:::1;14931:43;14967:5;14931:23;14949:4;14931:13;11239:12:::0;;;11169:84;14931:13:::1;:17:::0;::::1;:23::i;:43::-;14915:59;;14985:17;15005:46;15044:5;15005:26;15023:7;15005:13;11239:12:::0;;;11169:84;15005:46:::1;14985:66;;15053:13;15069:31;15094:5;15069:20;15087:1;15069:13;11239:12:::0;;;11169:84;15069:31:::1;15053:47;;15128:5;15119;:14;;:36;;;;;15150:5;15137:9;:18;;15119:36;15111:102;;;::::0;-1:-1:-1;;;15111:102:0;;8369:2:1;15111: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;;15111:102:0::1;8167:417:1::0;15111:102:0::1;15224:12;:20:::0;;;15246:15:::1;:27:::0;;;15289:48:::1;::::0;15321:15:::1;::::0;15264:9;;15239:5;;15289:48:::1;::::0;-1:-1:-1;;15289:48:0::1;14904:441;;;14831:514:::0;;:::o;21031:121::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21110:9:::1;:34:::0;;-1:-1:-1;;;;;;21110:34:0::1;-1:-1:-1::0;;;;;21110:34:0;;;::::1;::::0;;;::::1;::::0;;21031:121::o;19855:150::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;19967:20:::1;::::0;19941:56:::1;::::0;-1:-1:-1;;;19941:56:0;;-1:-1:-1;;;;;19967:20:0;;::::1;19941:56;::::0;::::1;7493:51:1::0;7560:18;;;7553:34;;;19941:25:0;;::::1;::::0;::::1;::::0;7466:18:1;;19941:56:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19855:150:::0;;:::o;19252:395::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;19374:18:::1;:31:::0;;-1:-1:-1;;;;;;19374:31:0;;::::1;-1:-1:-1::0;;;;;19374:31:0;;::::1;::::0;;::::1;::::0;;;19407:18:::1;:31:::0;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;19440:20:::1;:35:::0;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;19486:23:0;;;:11:::1;:23:::0;;;;;;:30;;-1:-1:-1;;19486:30:0;;::::1;-1:-1:-1::0;19486:30:0;;::::1;::::0;;;19518:23;;;;;;;:30;;;;::::1;;::::0;;;19564:75;19623:15:::1;160:25:1::0;;19407:31:0;;19564:75:::1;::::0;133:18:1;19564:75:0::1;;;;;;;19252:395:::0;;;:::o;11916:138::-;11975:7;11992:60;12030:21;12048:1;12030:9;:21::i;:::-;11992:33;12009:15;8235:42;12009:9;:15::i;:::-;11992:12;;;:16;:33::i;:::-;:37;;:60::i;20425:196::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20527:11:::1;:20:::0;;-1:-1:-1;;20527:20:0::1;::::0;;::::1;;;;::::0;;20549:9:::1;::::0;:38:::1;::::0;-1:-1:-1;;;20549:38:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;20549:9:0;;::::1;::::0;:29:::1;::::0;133:18:1;;20549:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;20589:16:0::1;:24:::0;;;;-1:-1:-1;;;20425:196:0:o;24804:115::-;24900:9;;24855:7;;24882:29;;-1:-1:-1;;;;;24900:9:0;24882;:29::i;11785:125::-;-1:-1:-1;;;;;11887:20:0;;11848:7;11887:20;;;:12;:20;;;;;;;;;11865:9;:17;;;;;;:43;;:21;:43::i;25429:120::-;25510:9;;:31;;;-1:-1:-1;;;25510:31:0;;;;25483:7;;-1:-1:-1;;;;;25510:9:0;;:29;;:31;;;;;;;;;;;;;;:9;:31;;;;;;;;;;;;;;11368:139;11446:4;11453:40;11463:10;11475:9;11486:6;11453:9;:40::i;21845:122::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21921:9:::1;::::0;:38:::1;::::0;-1:-1:-1;;;21921:38:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;21921:9:0;;::::1;::::0;:29:::1;::::0;133:18:1;;21921:38:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21845:122:::0;:::o;13156:434::-;13275:10;13262:24;;;;:12;:24;;;;;;;;;13236:9;:21;;;;;;;:51;;:25;:51::i;:::-;13226:6;:61;;13218:121;;;;-1:-1:-1;;;13218:121:0;;9041:2:1;13218: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;;13218:121:0;8839:411:1;13218:121:0;13350:15;;:50;;-1:-1:-1;;;13350:50:0;;13381:10;13350:50;;;7493:51:1;7560:18;;;7553:34;;;-1:-1:-1;;;;;13350:15:0;;;;:30;;7466:18:1;;13350:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13451:10:0;13438:24;;;;:12;:24;;;;;;:36;;-1:-1:-1;13438:24:0;-1:-1:-1;13467:6:0;13438:28;:36::i;:::-;13424:10;13411:24;;;;:12;:24;;;;;:63;13499:11;;:23;;13515:6;13499:15;:23::i;:::-;13485:11;:37;13538:44;;13566:15;;13558:6;;13546:10;;13538:44;;;;;13156:434;:::o;21330:136::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21417:9:::1;::::0;:41:::1;::::0;-1:-1:-1;;;21417:41:0;;-1:-1:-1;;;;;7511:32:1;;;21417:41:0::1;::::0;::::1;7493:51:1::0;7560:18;;;7553:34;;;21417:9:0;;::::1;::::0;:22:::1;::::0;7466:18:1;;21417:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21330:136:::0;;:::o;21725:112::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21796:9:::1;::::0;:33:::1;::::0;-1:-1:-1;;;21796:33:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;21796:9:0;;::::1;::::0;:24:::1;::::0;133:18:1;;21796:33:0::1;14:177:1::0;14239: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;:::-;14431:12:::1;:25:::0;;;14458:12:::1;:25:::0;;;14485:14:::1;:29:::0;;;14516:9:::1;:19:::0;;;14537:6:::1;:13:::0;;;14561:8:::1;:17:::0;;;14580:7:::1;:15:::0;;;14597:11:::1;:20:::0;;;14648:11:::1;::::0;14636:23;::::1;::::0;::::1;::::0;:49:::1;;;14674:11;;14663:7;;:22;;14636:49;:79;;;;;14704:11;;14689;;:26;;14636:79;14628:119;;;::::0;-1:-1:-1;;;14628:119:0;;9457:2:1;14628:119:0::1;::::0;::::1;9439:21:1::0;9496:2;9476:18;;;9469:30;9535:29;9515:18;;;9508:57;9582:18;;14628:119:0::1;9255:351:1::0;14628:119:0::1;14799:15;14784:5;14776:6;14763:52;14791:6;14763:52;;;;160:25:1::0;;148:2;133:18;;14:177;14763:52:0::1;;;;;;;;14239:584:::0;;;;;;;;:::o;27131:136::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;27220:4:::1;:14:::0;;;::::1;;-1:-1:-1::0;;;27220:14:0::1;-1:-1:-1::0;;;;27220:14:0;;::::1;::::0;;;::::1;::::0;;;27236:12:::1;:23:::0;27131:136::o;20013:305::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20142:10:::1;:24:::0;;;20184:12:::1;::::0;:53:::1;::::0;20229:6:::1;::::0;20184:32:::1;::::0;20201:14;20184:16:::1;:32::i;:53::-;20168:13;:69:::0;20256:12:::1;::::0;:54:::1;::::0;20302:6:::1;::::0;20256:33:::1;::::0;20273:15;20256:16:::1;:33::i;:54::-;20239:14;:71:::0;-1:-1:-1;;;20013:305:0:o;21474:119::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;21534:9:::1;::::0;:51:::1;::::0;-1:-1:-1;;;21534:51:0;;21565:4:::1;21534:51;::::0;::::1;7493::1::0;21580:3:0::1;7560:18:1::0;;;7553:34;-1:-1:-1;;;;;21534:9:0;;::::1;::::0;:22:::1;::::0;7466:18:1;;21534:51:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21474:119::o:0;25302:::-;25385:9;;:28;;;-1:-1:-1;;;25385:28:0;;;;25358:7;;-1:-1:-1;;;;;25385: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;14014:217::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;14089:15:::1;:44:::0;;-1:-1:-1;;;;;;14089:44:0::1;-1:-1:-1::0;;;;;14089:44:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;14135:21:0;;;:11:::1;:21;::::0;;;;;:28;;-1:-1:-1;;14135:28:0::1;-1:-1:-1::0;14135:28:0::1;::::0;;14179:44;14207:15:::1;::::0;14089:44;14179::::1;::::0;::::1;14014:217:::0;:::o;20747:179::-;3957:4;3982:5;-1:-1:-1;;;;;3982:5:0;3869:10;3971:16;3853:38;;;;-1:-1:-1;;;3853:38:0;;;;;;;:::i;:::-;20821:11:::1;20835:45;20873:5;20835:25;20853:6;20835:13;11239:12:::0;;;11169:84;20835:45:::1;20891:9;::::0;:27:::1;::::0;-1:-1:-1;;;20891:27:0;;::::1;::::0;::::1;160:25:1::0;;;20821:59:0;;-1:-1:-1;;;;;;20891:9:0::1;::::0;:22:::1;::::0;133:18:1;;20891:27:0::1;14:177:1::0;21601: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;:::-;21674:9:::1;::::0;:35:::1;::::0;-1:-1:-1;;;21674:35:0;;::::1;::::0;::::1;160:25:1::0;;;-1:-1:-1;;;;;21674:9:0;;::::1;::::0;:26:::1;::::0;133:18:1;;21674:35:0::1;14:177:1::0;24347:335:0;-1:-1:-1;;;;;24440:19:0;;24432:68;;;;-1:-1:-1;;;24432:68:0;;10029:2:1;24432: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;;24432:68:0;9827:400:1;24432:68:0;-1:-1:-1;;;;;24519:21:0;;24511:68;;;;-1:-1:-1;;;24511:68:0;;10434:2:1;24511: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;;24511:68:0;10232:398:1;24511:68:0;-1:-1:-1;;;;;24590:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24642:32;;160:25:1;;;24642:32:0;;133:18:1;24642:32:0;;;;;;;24347:335;;;:::o;12416:732::-;12505:37;12516:6;12524:9;12535:6;12505:10;:37::i;:::-;12553:38;12573:6;12581:9;12553:19;:38::i;:::-;12602:39;12615:6;12623:9;12634:6;12602:12;:39::i;:::-;12652:41;12667:6;12675:9;12686:6;12652:14;:41::i;:::-;12704:43;12721:6;12729:9;12740:6;12704:16;:43::i;:::-;12758:27;12767:6;12775:9;12758:8;:27::i;:::-;12796:37;12807:6;12815:9;12826:6;12796:10;:37::i;:::-;-1:-1:-1;;;;;12864:17:0;;;;;;:9;:17;;;;;;:29;;12886:6;12864:21;:29::i;:::-;-1:-1:-1;;;;;12844:17:0;;;;;;:9;:17;;;;;:49;;;;12929:32;12854:6;12951:9;12929:13;:32::i;:::-;:78;;13001:6;12929:78;;;12964:34;12972:6;12980:9;12991:6;12964:7;:34::i;:::-;-1:-1:-1;;;;;13041:20:0;;;;;;:9;:20;;;;;;12904:103;;-1:-1:-1;13041:40:0;;12904:103;13041:24;:40::i;:::-;-1:-1:-1;;;;;13018:20:0;;;;;;;:9;:20;;;;;;;:63;;;;13097:43;;;;;;;;;;13125:14;160:25:1;;148:2;133:18;;14:177;13097:43:0;;;;;;;;12494:654;12416: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;25905:659::-;25991:12;:19;;-1:-1:-1;;25991:19:0;26006:4;25991:19;;;26021:259;;;;26032:19;26054:55;26097:11;;26054:38;26080:11;;26054:21;26064:10;;;;;;;;;-1:-1:-1;;;;;26064:10:0;26054:9;:21::i;:55::-;26032:77;;26137:6;26123:11;:20;26120:47;;;26154:11;26145:20;;26120:47;26209:10;;26177:19;;26199:21;;-1:-1:-1;;;;;26209:10:0;26199:9;:21::i;:::-;26177:43;;26249:6;26234:11;:21;26231:48;;26266:11;26257:20;;26231:48;26031:249;;26021:259;26302:9;;:21;;26316:6;26302:13;:21::i;:::-;26290:9;:33;26349:15;26334:12;:30;26393:15;;:31;;-1:-1:-1;26393:19:0;:31::i;:::-;26375:15;:49;26435:39;26444:6;26460:4;26467:6;26435:8;:39::i;:::-;26485:40;26495:6;8235:42;26518:6;26485:9;:40::i;:::-;-1:-1:-1;;26536:12:0;:20;;-1:-1:-1;;26536:20:0;;;-1:-1:-1;25905:659:0:o;933:82::-;991:7;1008:5;1012:1;1008;:5;:::i;12062:346::-;-1:-1:-1;;;;;12166:20:0;;12158:70;;;;-1:-1:-1;;;12158:70:0;;11627:2:1;12158: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;;12158:70:0;11425:401:1;12158:70:0;-1:-1:-1;;;;;12247:23:0;;12239:71;;;;-1:-1:-1;;;12239:71:0;;12033:2:1;12239: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;;12239:71:0;11831:399:1;12239:71:0;12339:17;12349:6;12339:9;:17::i;:::-;12329:6;:27;;12321:79;;;;-1:-1:-1;;;12321:79:0;;12437:2:1;12321: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;;12321:79:0;12235:404:1;15353:206:0;-1:-1:-1;;;;;15446:19:0;;;;;;:11;:19;;;;;;;;15445:20;:47;;;;-1:-1:-1;;;;;;15470:22:0;;;;;;:11;:22;;;;;;;;15469:23;15445:47;15442:110;;;15502:14;;;;;;;15494:56;;;;-1:-1:-1;;;15494:56:0;;12846:2:1;15494:56:0;;;12828:21:1;12885:2;12865:18;;;12858:30;12924:31;12904:18;;;12897:59;12973:18;;15494:56:0;12644:353:1;15494:56:0;15353:206;;:::o;16163:399::-;-1:-1:-1;;;;;16264:20:0;;16295:1;16264:20;;;:12;:20;;;;;;:33;16261:160;;-1:-1:-1;;;;;16345:17:0;;;;;;:9;:17;;;;;;;;;16319:12;:20;;;;;;;16308:32;;:6;;:10;:32::i;:::-;16307:55;;16299:120;;;;-1:-1:-1;;;16299:120:0;;13204:2:1;16299: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;;16299:120:0;13002:416:1;16299:120:0;16435:8;;;;;;;16431:124;;16463:12;;16453:6;:22;;:45;;;-1:-1:-1;;;;;;16479:19:0;;;;;;:11;:19;;;;;;;;16453:45;:71;;;-1:-1:-1;;;;;;16502:22:0;;;;;;:11;:22;;;;;;;;16453:71;16445:108;;;;-1:-1:-1;;;16445:108:0;;13625:2:1;16445:108:0;;;13607:21:1;13664:2;13644:18;;;13637:30;13703:26;13683:18;;;13676:54;13747:18;;16445:108:0;13423:348:1;15567:351:0;-1:-1:-1;;;;;15671:19:0;;;;;;:11;:19;;;;;;;;15670:20;:47;;;;-1:-1:-1;;;;;;15695:22:0;;;;;;:11;:22;;;;;;;;15694:23;15670:47;:77;;;;-1:-1:-1;15742:4:0;;-1:-1:-1;;;;;15721:26:0;;;15742:4;;15721:26;;15670:77;:107;;;;-1:-1:-1;;;;;;15751:26:0;;8235:42;15751:26;;15670:107;:120;;;;-1:-1:-1;15782:8:0;;;;;;;15781:9;15670:120;15667:244;;;15852:15;;-1:-1:-1;;;;;15815:20:0;;;;;;:9;:20;;;;;;:32;;15840:6;15815:24;:32::i;:::-;15814:53;;15806:103;;;;-1:-1:-1;;;15806:103:0;;13978:2:1;15806: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;;15806:103:0;13776:401:1;15926:229:0;16039:4;;-1:-1:-1;;;;;16026:17:0;;;16039:4;;16026:17;:41;;;;-1:-1:-1;;;;;;16048:19:0;;;;;;:11;:19;;;;;;;;16047:20;16026:41;:69;;;;;16081:14;;16071:6;:24;;16026:69;:82;;;;-1:-1:-1;16100:8:0;;;;16099:9;16026:82;:95;;;;-1:-1:-1;16113:8:0;;;;;;;16112:9;16026:95;16023:125;;;16144:1;16123:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;15926:229:0;;;:::o;18917:173::-;18993:33;19008:6;19016:9;18993:14;:33::i;:::-;18990:93;;;19028:29;19043:13;;19028:14;:29::i;:::-;19079:1;19059:9;:22;18917:173;;:::o;21975:505::-;22069:14;;;;;;;:38;;;;-1:-1:-1;;;;;;22088:19:0;;;;;;:11;:19;;;;;;;;22087:20;22069:38;:68;;;;-1:-1:-1;22132:4:0;;-1:-1:-1;;;;;22111:26:0;;;22132:4;;22111:26;22069:68;:102;;;;;22151:20;;22141:6;:30;;22069:102;:115;;;;-1:-1:-1;22176:8:0;;;;22175:9;22069:115;:128;;;;-1:-1:-1;22189:8:0;;;;;;;22188:9;22069:128;22066:164;;;22226:1;22199:15;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;22066:164:0;22243:14;;;;;;;:29;;;;-1:-1:-1;22261:11:0;;;;;;;22243:29;:75;;;;-1:-1:-1;22294:9:0;;22316:1;;22276:29;;-1:-1:-1;;;;;22294:9:0;22276;:29::i;:::-;:42;22243:75;:114;;;;;22341:16;;22322:15;;:35;;22243:114;:138;;;;-1:-1:-1;;;;;;22362:19:0;;;;;;:11;:19;;;;;;;;22361:20;22243:138;:168;;;;-1:-1:-1;22406:4:0;;-1:-1:-1;;;;;22385:26:0;;;22406:4;;22385:26;22243:168;:194;;;;-1:-1:-1;22429:8:0;;;;22428:9;22243:194;:207;;;;-1:-1:-1;22442:8:0;;;;;;;22441:9;22243:207;22240:233;;;22452:19;:17;:19::i;22997:173::-;-1:-1:-1;;;;;23103:19:0;;23078:4;23103:19;;;:11;:19;;;;;;;;23102:20;:47;;;;-1:-1:-1;;;;;;23127:22:0;;;;;;:11;:22;;;;;;;;23126:23;23102:47;:60;;;;-1:-1:-1;;23154:8:0;;;;;;;23153:9;;22997:173;-1:-1:-1;;22997:173:0:o;23454:568::-;23540:7;23596:1;23563:30;23575:6;23583:9;23563:11;:30::i;:::-;:34;:47;;;;-1:-1:-1;23602:8:0;;;;;;;23601:9;23563:47;23560:440;;;23622:17;23642:59;23670:30;23682:6;23690:9;23670:11;:30::i;:::-;23653:11;;23642:23;;:6;;:10;:23::i;:59::-;23757:4;23739:24;;;;:9;:24;;;;;;23622:79;;-1:-1:-1;23739:39:0;;23622:79;23739:28;:39::i;:::-;23730:4;23712:24;;;;:9;:24;;;;;;;:66;;;;23794:42;;-1:-1:-1;;;;;23794:42:0;;;;;;;23826:9;160:25:1;;148:2;133:18;;14:177;23794:42:0;;;;;;;;23850:9;;:22;23847:113;;23907:9;;23947;;23930:11;;23874:84;;23892:4;;-1:-1:-1;;;;;23907:9:0;;;;23919:38;;23947:9;23919:23;;:6;;:10;:23::i;:38::-;23874:9;:84::i;:::-;23977:21;:6;23988:9;23977:10;:21::i;:::-;23970:28;;;;;23560:440;-1:-1:-1;24008:6:0;23454:568;-1:-1:-1;;23454:568:0:o;18563:346::-;18645:4;18662:19;18712:13;;18684:24;18702:4;18684:9;:24::i;:::-;18744:8;;18684:41;-1:-1:-1;18684:41:0;;-1:-1:-1;18744:8:0;;18743:9;:24;;;;-1:-1:-1;18756:11:0;;;;18743:24;:42;;;;-1:-1:-1;18771:14:0;;;;;;;18743:42;:66;;;;-1:-1:-1;;;;;;18790:19:0;;;;;;:11;:19;;;;;;;;18789:20;18743:66;:100;;;;-1:-1:-1;18839:4:0;;-1:-1:-1;;;;;18826:17:0;;;18839:4;;18826:17;18743:100;:127;;;;;18860:10;;18847:9;;:23;;18743:127;:145;;;;;18874:14;18743:145;:158;;;;-1:-1:-1;18893:8:0;;;;;;;18892:9;18743:158;18736:165;18563:346;-1:-1:-1;;;;18563:346:0:o;16570:1175::-;8000:8;:15;;-1:-1:-1;;8000:15:0;8011:4;8000:15;;;16665:8:::1;::::0;8000;;16664:17:::1;::::0;16679:1:::1;16664:14;:17::i;:::-;16641:40;;16692:32;16727:42;16756:12;16727:24;16738:12;;16727:6;:10;;:24;;;;:::i;:42::-;16692:77:::0;-1:-1:-1;16780:14:0::1;16797:36;:6:::0;16692:77;16797:10:::1;:36::i;:::-;16780:53:::0;-1:-1:-1;16869:21:0::1;16901:24;16780:53:::0;16901:16:::1;:24::i;:::-;16936:20;16959:41;:21;16985:14:::0;16959:25:::1;:41::i;:::-;16936:64;;17011:19;17032:48;17049:30;17066:12;;17049;:16;;:30;;;;:::i;:::-;17032:12:::0;;:16:::1;:48::i;:::-;17011:69;;17091:29;17123;17139:12;;17123:11;:15;;:29;;;;:::i;:::-;17091:61:::0;-1:-1:-1;17166:34:0;;17163:123:::1;;17264:18;::::0;17202:81:::1;::::0;17215:24;;17241:21;;-1:-1:-1;;;;;17264:18:0::1;17202:12;:81::i;:::-;17345:12;::::0;17296:23:::1;::::0;17322:36:::1;::::0;:18:::1;:11:::0;17338:1:::1;17322:15;:18::i;:36::-;17296:62:::0;-1:-1:-1;17372:28:0;;17369:88:::1;;17410:18;::::0;17402:53:::1;::::0;-1:-1:-1;;;;;17410:18:0;;::::1;::::0;17402:53;::::1;;;::::0;17439:15;;17410:18:::1;17402:53:::0;17410:18;17402:53;17439:15;17410:18;17402:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17369:88;17510:6;::::0;17467:17:::1;::::0;17487:30:::1;::::0;:18:::1;:11:::0;17503:1:::1;17487:15;:18::i;:30::-;17467:50:::0;-1:-1:-1;17531:22:0;;17528:76:::1;;17571:9;::::0;17555:47:::1;::::0;-1:-1:-1;;;;;17571:9:0;;::::1;::::0;17555:47;::::1;;;::::0;17592:9;;17571::::1;17555:47:::0;17571:9;17555:47;17592:9;17571;17555:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17528:76;17632:21;17667:20:::0;;17664:74:::1;;17697:20;::::0;17689:47:::1;::::0;-1:-1:-1;;;;;17697:20:0;;::::1;::::0;17689:47;::::1;;;::::0;17728:7;;17697:20:::1;17689:47:::0;17697:20;17689:47;17728:7;17697:20;17689:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17664:74;-1:-1:-1::0;;8020:8:0;:16;;-1:-1:-1;;8020:16:0;;;-1:-1:-1;;;;;;;;;16570:1175:0:o;22488:201::-;22537:8;:15;;-1:-1:-1;;22537:15:0;;;;;22567:9;;22605:5;;22567:46;;;-1:-1:-1;;;22567:46:0;;;;-1:-1:-1;;;;;22567:9:0;;;;:32;;22605:5;22567:46;;;;;22537:15;;22567:46;;;;;;;;22537:15;22567:9;:46;;;;;;;;;;;;;;;;;;;;;;;;;;22563:62;22652:1;22626:15;:28;22665:8;:16;;-1:-1:-1;;22665:16:0;;;22488:201::o;23178:268::-;23293:4;;23257:7;;-1:-1:-1;;;;;23280:17:0;;;23293:4;;23280:17;:41;;;;;23319:1;23301:7;;:20;23280:41;23277:62;;;-1:-1:-1;23330:7:0;;23323:14;;23277:62;23362:4;;-1:-1:-1;;;;;23352:14:0;;;23362:4;;23352:14;:39;;;;;23389:1;23370:8;;:21;23352:39;23349:61;;;-1:-1:-1;23400:8:0;;23393:15;;23349:61;-1:-1:-1;23427:11:0;;23178:268;;;;:::o;18121:434::-;18211:16;;;18225:1;18211:16;;;;;;;;18187:21;;18211:16;;;;;;;;;;-1:-1:-1;18211:16:0;18187:40;;18256:4;18238;18243:1;18238:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18238:23:0;;;:7;;;;;;;;;;:23;;;;18282:6;;:13;;;-1:-1:-1;;;18282:13:0;;;;:6;;;;;:11;;:13;;;;;18238:7;;18282:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18272:4;18277:1;18272:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18272:23:0;;;:7;;;;;;;;;:23;18338:6;;18306:53;;18323:4;;18338:6;18347:11;18306:8;:53::i;:::-;18370:6;;:177;;-1:-1:-1;;;18370:177:0;;-1:-1:-1;;;;;18370:6:0;;;;:57;;:177;;18442:11;;18370:6;;18484:4;;18511;;18531:15;;18370:177;;;:::i;17753:360::-;17884:6;;17852:53;;17869:4;;-1:-1:-1;;;;;17884:6:0;17893:11;17852:8;:53::i;:::-;17916:6;;:189;;-1:-1:-1;;;17916:189:0;;17979:4;17916:189;;;16028:34:1;16078:18;;;16071:34;;;17916:6:0;16121:18:1;;;16114:34;;;16164:18;;;16157:34;-1:-1:-1;;;;;16228:15:1;;;16207:19;;;16200:44;18089:15:0;16260:19:1;;;16253:35;17916:6:0;;;;:22;;17946:9;;15962:19:1;;17916: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://af63f356887203bcdbac85a793e867e111de2e3419b10c489bf1428ae224dbdf
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.