ETH Price: $3,416.57 (+1.28%)

Token

Gamecrypt (GAMECRYPT)
 

Overview

Max Total Supply

100,000,000,000 GAMECRYPT

Holders

494

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
10 GAMECRYPT

Value
$0.00
0x0af232f14fad0f43c558657a7836558bf4acb1dd
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:
GAMECRYPT

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-20
*/

/**
  Telegram: https://t.me/Gamecrypt
*/

// SPDX-License-Identifier: NOLICENSE

pragma solidity ^0.8.7;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external 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;
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}


contract GAMECRYPT is Context, IERC20, Ownable {
    using Address for address payable;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) public allowedTransfer;
    mapping (address => bool) private _isBlacklisted;

    address[] private _excluded;

    bool public tradingEnabled;
    bool public swapEnabled;
    bool private swapping;
    
    
    
    //Anti Dump
    mapping(address => uint256) private _lastSell;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 60 seconds;
    
    modifier antiBot(address account){
        require(tradingEnabled || allowedTransfer[account], "Trading not enabled yet");
        _;
    }

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 18;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 1e11 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public swapTokensAtAmount = 100_000_000 * 10**18;
    uint256 public maxBuyLimit = 1_000_000_000 * 10**18;
    uint256 public maxSellLimit = 500_000_000 * 10**18;
    uint256 public maxWalletLimit = 2_000_000_000 * 10**18;
    
    uint256 public genesis_block;
    
    address public marketingWallet = 0x67834E7FD4cf846aA91a7BDacB6fA6FdFeEd617C;
    address public devWallet = 0x90667312eBae98b1E03b3D17118Df871f5C7d7F6;
    address public gamedevWallet = 0x4336E56E43a36745b5d344f076e0824cC2847f27;


    string private constant _name = "Gamecrypt";
    string private constant _symbol = "GAMECRYPT";

    struct Taxes {
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
        uint256 gamedev;
    }

    Taxes public taxes = Taxes(2, 4, 4, 1, 2);
    Taxes public sellTaxes = Taxes(2, 4, 4, 1, 2);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity; 
        uint256 dev;
        uint256 gamedev;
    }
    
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 rDev;
      uint256 rGamedev;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
      uint256 tDev;
      uint256 tGamedev;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor (address routerAddress) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingWallet] = true;
        _isExcludedFromFee[devWallet] = true;
        _isExcludedFromFee[gamedevWallet] = true;
        
        allowedTransfer[address(this)] = true;
        allowedTransfer[owner()] = true;
        allowedTransfer[pair] = true;
        allowedTransfer[marketingWallet] = true;
        allowedTransfer[devWallet] = true;
        allowedTransfer[gamedevWallet] = true;

        emit Transfer(address(0), owner(), _tTotal);
    }

    //std ERC20:
    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;
    }

    //override ERC20:
    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public override antiBot(sender) returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public  antiBot(msg.sender) returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public  antiBot(msg.sender) returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }
    
    function transfer(address recipient, uint256 amount) public override antiBot(msg.sender) returns (bool)
    { 
      _transfer(msg.sender, recipient, amount);
      return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount;
        }
    }


    function setTradingStatus(bool state) external onlyOwner{
        tradingEnabled = state;
        swapEnabled = state;
        if(state == true && genesis_block == 0) genesis_block = block.number;
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    //@dev kept original RFI naming -> "reward" as in reflection
    function excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }


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

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


    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _dev, uint256 _gamedev) public onlyOwner {
       taxes = Taxes(_rfi,_marketing,_liquidity,_dev,_gamedev);
        emit FeesChanged();
    }
    
    function setSellTaxes(uint256 _rfi, uint256 _marketing, uint256 _liquidity, uint256 _dev, uint256 _gamedev) public onlyOwner {
       sellTaxes = Taxes(_rfi,_marketing,_liquidity,_dev,_gamedev);
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tMarketing;
        }
        _rOwned[address(this)] +=rMarketing;
    }
    
    function _takeDev(uint256 rDev, uint256 tDev) private {
        totFeesPaid.dev +=tDev;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tDev;
        }
        _rOwned[address(this)] +=rDev;
    }

    function _takeGamedev(uint256 rGamedev, uint256 tGamedev) private {
        totFeesPaid.gamedev +=tGamedev;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tGamedev;
        }
        _rOwned[address(this)] +=rGamedev;
    }
    
    function _getValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSell);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi, to_return.rMarketing, to_return.rLiquidity) = _getRValues1(to_return, tAmount, takeFee, _getRate());
        (to_return.rDev,to_return.rGamedev) = _getRValues2(to_return, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSell) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        Taxes memory temp;
        if(isSell) temp = sellTaxes;
        else temp = taxes;
        
        s.tRfi = tAmount*temp.rfi/100;
        s.tMarketing = tAmount*temp.marketing/100;
        s.tLiquidity = tAmount*temp.liquidity/100;
        s.tDev = tAmount*temp.dev/100;
        s.tGamedev = tAmount*temp.gamedev/100;
        s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity-s.tDev-s.tGamedev;
        return s;
    }

    function _getRValues1(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rMarketing, uint256 rLiquidity){
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        uint256 rDev = s.tDev*currentRate;
        uint256 rGamedev = s.tGamedev*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity-rDev-rGamedev;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }
    
    function _getRValues2(valuesFromGetValues memory s, bool takeFee, uint256 currentRate) private pure returns (uint256 rDev, uint256 rGamedev) {

        if(!takeFee) {
          return(0,0);
        }

        rDev = s.tDev*currentRate;
        rGamedev = s.tGamedev*currentRate;
        return (rDev,rGamedev);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        require(!_isBlacklisted[from] && !_isBlacklisted[to], "You are a bot");
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            require(tradingEnabled, "Trading not active");
        }
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && block.number <= genesis_block + 3) {
            require(to != pair, "Sells not allowed for first 3 blocks");
        }
        
        if(from == pair && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxBuyLimit, "You are exceeding maxBuyLimit");
            require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
        }
        
        if(from != pair && !_isExcludedFromFee[to] && !_isExcludedFromFee[from] && !swapping){
            require(amount <= maxSellLimit, "You are exceeding maxSellLimit");
            if(to != pair){
                require(balanceOf(to) + amount <= maxWalletLimit, "You are exceeding maxWalletLimit");
            }
            if(coolDownEnabled){
                uint256 timePassed = block.timestamp - _lastSell[from];
                require(timePassed >= coolDownTime, "Cooldown enabled");
                _lastSell[from] = block.timestamp;
            }
        }
        
        
        if(balanceOf(from) - amount <= 10 *  10**decimals()) amount -= (10 * 10**decimals() + amount - balanceOf(from));
        
       
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            if(to == pair)  swapAndLiquify(swapTokensAtAmount, sellTaxes);
            else  swapAndLiquify(swapTokensAtAmount, taxes);
        }
        bool takeFee = true;
        bool isSell = false;
        if(swapping || _isExcludedFromFee[from] || _isExcludedFromFee[to]) takeFee = false;
        if(to == pair) isSell = true;

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


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSell) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSell);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
            emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing + s.tDev + s.tGamedev);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0) _takeMarketing(s.rMarketing, s.tMarketing);
        if(s.rDev > 0 || s.tDev > 0) _takeDev(s.rDev, s.tDev);
        if(s.rGamedev > 0 || s.tGamedev > 0) _takeGamedev(s.rGamedev, s.tGamedev);
        emit Transfer(sender, recipient, s.tTransferAmount);
        
    }

    function swapAndLiquify(uint256 contractBalance, Taxes memory temp) private lockTheSwap{
        uint256 denominator = (temp.liquidity + temp.marketing + temp.dev + temp.gamedev) * 2;
        uint256 tokensToAddLiquidityWith = contractBalance * temp.liquidity / denominator;
        uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;

        swapTokensForBNB(toSwap);

        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - temp.liquidity);
        uint256 bnbToAddLiquidityWith = unitBalance * temp.liquidity;

        if(bnbToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
        }

        uint256 marketingAmt = unitBalance * 2 * temp.marketing;
        if(marketingAmt > 0){
            payable(marketingWallet).sendValue(marketingAmt);
        }
        uint256 devAmt = unitBalance * 2 * temp.dev;
        if(devAmt > 0){
            payable(devWallet).sendValue(devAmt);
        }
         uint256 gamedevAmt = unitBalance * 2 * temp.gamedev;
        if(gamedevAmt > 0){
            payable(gamedevWallet).sendValue(gamedevAmt);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner(),
            block.timestamp
        );
    }

    function swapTokensForBNB(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function bulkExcludeFee(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isExcludedFromFee[accounts[i]] = state;
        }
    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        marketingWallet = newWallet;
    }
    
    function updateDevWallet(address newWallet) external onlyOwner{
        devWallet = newWallet;
    }

    function updateGamedevWallet(address newWallet) external onlyOwner{
        gamedevWallet = newWallet;
    }

    
    function updateCooldown(bool state, uint256 time) external onlyOwner{
        coolDownTime = time * 1 seconds;
        coolDownEnabled = state;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }
    
    function updateIsBlacklisted(address account, bool state) external onlyOwner{
        _isBlacklisted[account] = state;
    }
    
    function bulkIsBlacklisted(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i =0; i < accounts.length; i++){
            _isBlacklisted[accounts[i]] = state;

        }
    }
    
    function updateAllowedTransfer(address account, bool state) external onlyOwner{
        allowedTransfer[account] = state;
    }
    
    function updateMaxTxLimit(uint256 maxBuy, uint256 maxSell) external onlyOwner{
        maxBuyLimit = maxBuy * 10**decimals();
        maxSellLimit = maxSell * 10**decimals();
    }
    
    function updateMaxWalletlimit(uint256 amount) external onlyOwner{
        maxWalletLimit = amount * 10**decimals();
    }

    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    //Use this in case BNB are sent to the contract by mistake
    function rescueBNB(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient BNB balance");
        payable(msg.sender).transfer(weiAmount);
    }
    

    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"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":[],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExcludeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gamedevWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"genesis_block","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"gamedev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_gamedev","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_gamedev","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"gamedev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"gamedev","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateAllowedTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"updateCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateGamedevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateIsBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"},{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"updateMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff19166001179055603c600c55620000246012600a62000a1c565b620000359064174876e80062000add565b600f819055620000489060001962000b37565b620000569060001962000aff565b6010556a52b7d2dcc80cd2e40000006011556b033b2e3c9fd0803ce80000006012556b019d971e4fe8401e740000006013556b06765c793fa10079d0000000601455601680546001600160a01b03199081167367834e7fd4cf846aa91a7bdacb6fa6fdfeed617c179091556017805482167390667312ebae98b1e03b3d17118df871f5c7d7f617905560188054909116734336e56e43a36745b5d344f076e0824cc2847f271790556040805160a080820183526002808352600460208085018290528486018290526001606080870182905260809687018590526019859055601a849055601b849055601c829055601d8590558751958601885284865285830184905296850183905295840186905292909301819052601e819055601f8390559190556021919091556022553480156200018f57600080fd5b506040516200466038038062004660833981016040819052620001b29162000991565b620001bd3362000567565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001fe57600080fd5b505afa15801562000213573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000239919062000991565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200028257600080fd5b505afa15801562000297573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bd919062000991565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200030657600080fd5b505af11580156200031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000341919062000991565b600d80546001600160a01b038086166001600160a01b031992831617909255600e805492841692909116821790559091506200037d90620005b7565b60105460016000620003976000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120939093553083526004918290528220805460ff1916600190811790915591620003e66000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601654821681526004845282812080548616600190811790915560175483168252838220805487168217905560185490921681528281208054861683179055308152600693849052918220805490941681179093556200047c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e548216815260069093528183208054851660019081179091556016548216845282842080548616821790556017548216845282842080548616821790556018549091168352912080549092161790556200050e6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040516200055691815260200190565b60405180910390a350505062000b90565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620006175760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff1615620006825760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016200060e565b6001600160a01b03811660009081526001602052604090205415620006df576001600160a01b038116600090815260016020526040902054620006c59062000745565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000601054821115620007ae5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016200060e565b6000620007ba620007cf565b9050620007c88184620009bc565b9392505050565b60008080620007dd620007f5565b9092509050620007ee8183620009bc565b9250505090565b601054600f546000918291825b6008548110156200095d5782600160006008848154811062000828576200082862000b7a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062000897575081600260006008848154811062000870576200087062000b7a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15620008ae57601054600f54945094505050509091565b6001600060088381548110620008c857620008c862000b7a565b60009182526020808320909101546001600160a01b03168352820192909252604001902054620008f9908462000aff565b9250600260006008838154811062000915576200091562000b7a565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000946908362000aff565b915080620009548162000b19565b91505062000802565b50600f54601054620009709190620009bc565b8210156200098857601054600f549350935050509091565b90939092509050565b600060208284031215620009a457600080fd5b81516001600160a01b0381168114620007c857600080fd5b600082620009ce57620009ce62000b64565b500490565b600181815b8085111562000a14578160001904821115620009f857620009f862000b4e565b8085161562000a0657918102915b93841c9390800290620009d8565b509250929050565b6000620007c860ff84168360008262000a385750600162000ad7565b8162000a475750600062000ad7565b816001811462000a60576002811462000a6b5762000a8b565b600191505062000ad7565b60ff84111562000a7f5762000a7f62000b4e565b50506001821b62000ad7565b5060208310610133831016604e8410600b841016171562000ab0575081810a62000ad7565b62000abc8383620009d3565b806000190482111562000ad35762000ad362000b4e565b0290505b92915050565b600081600019048311821515161562000afa5762000afa62000b4e565b500290565b60008282101562000b145762000b1462000b4e565b500390565b600060001982141562000b305762000b3062000b4e565b5060010190565b60008262000b495762000b4962000b64565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b613ac08062000ba06000396000f3fe6080604052600436106103855760003560e01c806370a08231116101d1578063a9059cbb11610102578063dd62ed3e116100a0578063ee36e3591161006f578063ee36e35914610afa578063f2fde38b14610b14578063f66895a314610b34578063f887ea4014610b5b57600080fd5b8063dd62ed3e14610a5e578063e2f4560514610aa4578063e517f2b914610aba578063ea2f0b3714610ada57600080fd5b8063c791fc54116100dc578063c791fc54146109e8578063d257b34f14610a08578063d2ce0db214610a28578063d8672e5114610a3e57600080fd5b8063a9059cbb14610988578063aacebbe3146109a8578063b5c57145146109c857600080fd5b80638e2839ff1161016f57806395d89b411161014957806395d89b41146108ef5780639ba5e4d514610921578063a457c2d714610948578063a8aa1b311461096857600080fd5b80638e2839ff1461088f5780638ea5220f146108af578063924de9b7146108cf57600080fd5b806375f0a874116101ab57806375f0a874146107e057806388f820201461081857806389634889146108515780638da5cb5b1461087157600080fd5b806370a082311461075c578063715018a61461077c578063728f8eea1461079157600080fd5b8063437823ec116102b657806359759f6111610254578063652e2f0411610223578063652e2f04146106fb57806366a88d96146107115780636aa5b37f146107275780636ddd17131461073d57600080fd5b806359759f611461066b5780635b24ea5e1461068b5780635fcefa42146106ab57806362695eae146106cb57600080fd5b806347c230921161029057806347c23092146105d85780634ada218b146105f857806352390c02146106125780635342acb41461063257600080fd5b8063437823ec14610578578063441b1d30146105985780634549b039146105b857600080fd5b8063274a533c116103235780633685d419116102fd5780633685d419146104f8578063379ba1d914610518578063395093511461053857806340b28c2f1461055857600080fd5b8063274a533c146104a65780632d838119146104bc578063313ce567146104dc57600080fd5b80631767e7fb1161035f5780631767e7fb1461042757806318160ddd146104475780631816467f1461046657806323b872dd1461048657600080fd5b806306fdde0314610391578063095ea7b3146103d557806313f97a8e1461040557600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b5060408051808201909152600981526811d85b5958dc9e5c1d60ba1b60208201525b6040516103cc9190613764565b60405180910390f35b3480156103e157600080fd5b506103f56103f0366004613539565b610b7b565b60405190151581526020016103cc565b34801561041157600080fd5b50610425610420366004613565565b610be3565b005b34801561043357600080fd5b50610425610442366004613457565b610c79565b34801561045357600080fd5b50600f545b6040519081526020016103cc565b34801561047257600080fd5b50610425610481366004613457565b610cc5565b34801561049257600080fd5b506103f56104a13660046134ca565b610d11565b3480156104b257600080fd5b5061045860155481565b3480156104c857600080fd5b506104586104d736600461369b565b610e0b565b3480156104e857600080fd5b50604051601281526020016103cc565b34801561050457600080fd5b50610425610513366004613457565b610e8f565b34801561052457600080fd5b50610425610533366004613643565b611046565b34801561054457600080fd5b506103f5610553366004613539565b6110ac565b34801561056457600080fd5b50610425610573366004613491565b61112c565b34801561058457600080fd5b50610425610593366004613457565b611184565b3480156105a457600080fd5b506104256105b336600461369b565b6111d2565b3480156105c457600080fd5b506104586105d33660046136b4565b611279565b3480156105e457600080fd5b506104256105f33660046134ca565b61130d565b34801561060457600080fd5b506009546103f59060ff1681565b34801561061e57600080fd5b5061042561062d366004613457565b6113bf565b34801561063e57600080fd5b506103f561064d366004613457565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561067757600080fd5b506104256106863660046136d9565b611512565b34801561069757600080fd5b506104256106a636600461350b565b611579565b3480156106b757600080fd5b506104256106c6366004613729565b6115ce565b3480156106d757600080fd5b506103f56106e6366004613457565b60066020526000908152604090205460ff1681565b34801561070757600080fd5b5061045860135481565b34801561071d57600080fd5b5061045860145481565b34801561073357600080fd5b5061045860125481565b34801561074957600080fd5b506009546103f590610100900460ff1681565b34801561076857600080fd5b50610458610777366004613457565b611666565b34801561078857600080fd5b506104256116c5565b34801561079d57600080fd5b50601954601a54601b54601c54601d546107b8949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103cc565b3480156107ec57600080fd5b50601654610800906001600160a01b031681565b6040516001600160a01b0390911681526020016103cc565b34801561082457600080fd5b506103f5610833366004613457565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561085d57600080fd5b50601854610800906001600160a01b031681565b34801561087d57600080fd5b506000546001600160a01b0316610800565b34801561089b57600080fd5b506104256108aa366004613565565b6116fb565b3480156108bb57600080fd5b50601754610800906001600160a01b031681565b3480156108db57600080fd5b506104256108ea366004613643565b61178c565b3480156108fb57600080fd5b5060408051808201909152600981526811d0535150d496541560ba1b60208201526103bf565b34801561092d57600080fd5b506023546024546025546026546027546107b8949392919085565b34801561095457600080fd5b506103f5610963366004613539565b6117d0565b34801561097457600080fd5b50600e54610800906001600160a01b031681565b34801561099457600080fd5b506103f56109a3366004613539565b6118b6565b3480156109b457600080fd5b506104256109c3366004613457565b61190b565b3480156109d457600080fd5b506104256109e336600461350b565b611957565b3480156109f457600080fd5b50610425610a03366004613729565b6119ac565b348015610a1457600080fd5b50610425610a2336600461369b565b611a45565b348015610a3457600080fd5b50610458600c5481565b348015610a4a57600080fd5b50610425610a5936600461369b565b611a8b565b348015610a6a57600080fd5b50610458610a79366004613491565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab057600080fd5b5061045860115481565b348015610ac657600080fd5b50610425610ad536600461367d565b611ad1565b348015610ae657600080fd5b50610425610af5366004613457565b611b1d565b348015610b0657600080fd5b50600b546103f59060ff1681565b348015610b2057600080fd5b50610425610b2f366004613457565b611b68565b348015610b4057600080fd5b50601e54601f546020546021546022546107b8949392919085565b348015610b6757600080fd5b50600d54610800906001600160a01b031681565b600954600090339060ff1680610ba957506001600160a01b03811660009081526006602052604090205460ff165b610bce5760405162461bcd60e51b8152600401610bc5906137ee565b60405180910390fd5b610bd9338585611c00565b5060019392505050565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b8152600401610bc5906137b9565b60005b8251811015610c74578160076000858481518110610c3057610c30613a3b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c6c816139f4565b915050610c10565b505050565b6000546001600160a01b03163314610ca35760405162461bcd60e51b8152600401610bc5906137b9565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610cef5760405162461bcd60e51b8152600401610bc5906137b9565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600954600090849060ff1680610d3f57506001600160a01b03811660009081526006602052604090205460ff165b610d5b5760405162461bcd60e51b8152600401610bc5906137ee565b610d66858585611d24565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610deb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bc5565b610dff8633610dfa87856139dd565b611c00565b50600195945050505050565b6000601054821115610e725760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610bc5565b6000610e7c6125b0565b9050610e8881846138ae565b9392505050565b6000546001600160a01b03163314610eb95760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03811660009081526005602052604090205460ff16610f215760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610bc5565b60005b60085481101561104257816001600160a01b031660088281548110610f4b57610f4b613a3b565b6000918252602090912001546001600160a01b031614156110305760088054610f76906001906139dd565b81548110610f8657610f86613a3b565b600091825260209091200154600880546001600160a01b039092169183908110610fb257610fb2613a3b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600880548061100a5761100a613a25565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061103a816139f4565b915050610f24565b5050565b6000546001600160a01b031633146110705760405162461bcd60e51b8152600401610bc5906137b9565b6009805461ffff191661ff001983151590811691909117610100820217909155600114801561109f5750601554155b156110a957436015555b50565b600954600090339060ff16806110da57506001600160a01b03811660009081526006602052604090205460ff165b6110f65760405162461bcd60e51b8152600401610bc5906137ee565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610bd991908690610dfa908790613896565b6000546001600160a01b031633146111565760405162461bcd60e51b8152600401610bc5906137b9565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146111ae5760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146111fc5760405162461bcd60e51b8152600401610bc5906137b9565b8047101561124c5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610bc5565b604051339082156108fc029083906000818181858888f19350505050158015611042573d6000803e3d6000fd5b6000600f548311156112cd5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610bc5565b816112eb5760006112e184600160006125d3565b5191506113079050565b60006112fa84600160006125d3565b6020015191506113079050565b92915050565b6000546001600160a01b031633146113375760405162461bcd60e51b8152600401610bc5906137b9565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561138157600080fd5b505af1158015611395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b99190613660565b50505050565b6000546001600160a01b031633146113e95760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03811660009081526005602052604090205460ff16156114525760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610bc5565b6001600160a01b038116600090815260016020526040902054156114ac576001600160a01b03811660009081526001602052604090205461149290610e0b565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b0316331461153c5760405162461bcd60e51b8152600401610bc5906137b9565b6115486012600a613913565b61155290836139be565b60125561155d601290565b61156890600a613913565b61157290826139be565b6013555050565b6000546001600160a01b031633146115a35760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115f85760405162461bcd60e51b8152600401610bc5906137b9565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff16156116a357506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461130790610e0b565b6000546001600160a01b031633146116ef5760405162461bcd60e51b8152600401610bc5906137b9565b6116f96000612634565b565b6000546001600160a01b031633146117255760405162461bcd60e51b8152600401610bc5906137b9565b60005b8251811015610c7457816004600085848151811061174857611748613a3b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611784816139f4565b915050611728565b6000546001600160a01b031633146117b65760405162461bcd60e51b8152600401610bc5906137b9565b600980549115156101000261ff0019909216919091179055565b600954600090339060ff16806117fe57506001600160a01b03811660009081526006602052604090205460ff165b61181a5760405162461bcd60e51b8152600401610bc5906137ee565b3360009081526003602090815260408083206001600160a01b03881684529091529020548381101561189c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bc5565b6118ab3386610dfa87856139dd565b506001949350505050565b600954600090339060ff16806118e457506001600160a01b03811660009081526006602052604090205460ff165b6119005760405162461bcd60e51b8152600401610bc5906137ee565b610bd9338585611d24565b6000546001600160a01b031633146119355760405162461bcd60e51b8152600401610bc5906137b9565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119815760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119d65760405162461bcd60e51b8152600401610bc5906137b9565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611a6f5760405162461bcd60e51b8152600401610bc5906137b9565b611a7b6012600a613913565b611a8590826139be565b60115550565b6000546001600160a01b03163314611ab55760405162461bcd60e51b8152600401610bc5906137b9565b611ac16012600a613913565b611acb90826139be565b60145550565b6000546001600160a01b03163314611afb5760405162461bcd60e51b8152600401610bc5906137b9565b611b068160016139be565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b03163314611b475760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611b925760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b038116611bf75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bc5565b6110a981612634565b6001600160a01b038316611c625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc5565b6001600160a01b038216611cc35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc5565b6001600160a01b038216611dea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc5565b60008111611e4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bc5565b611e5583611666565b811115611ebe5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610bc5565b6001600160a01b03831660009081526007602052604090205460ff16158015611f0057506001600160a01b03821660009081526007602052604090205460ff16155b611f3c5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610bc5565b6001600160a01b03831660009081526004602052604090205460ff16158015611f7e57506001600160a01b03821660009081526004602052604090205460ff16155b15611fca5760095460ff16611fca5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610bc5565b6001600160a01b03831660009081526004602052604090205460ff1615801561200c57506001600160a01b03821660009081526004602052604090205460ff16155b80156120255750601554612021906003613896565b4311155b1561209457600e546001600160a01b03838116911614156120945760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610bc5565b600e546001600160a01b0384811691161480156120ca57506001600160a01b03821660009081526004602052604090205460ff16155b80156120df575060095462010000900460ff16155b1561219b576012548111156121365760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610bc5565b6014548161214384611666565b61214d9190613896565b111561219b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bc5565b600e546001600160a01b038481169116148015906121d257506001600160a01b03821660009081526004602052604090205460ff16155b80156121f757506001600160a01b03831660009081526004602052604090205460ff16155b801561220c575060095462010000900460ff16155b1561236f576013548111156122635760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610bc5565b600e546001600160a01b038381169116146122dd576014548161228584611666565b61228f9190613896565b11156122dd5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bc5565b600b5460ff161561236f576001600160a01b0383166000908152600a602052604081205461230b90426139dd565b9050600c548110156123525760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610bc5565b506001600160a01b0383166000908152600a602052604090204290555b61237b6012600a613913565b61238690600a6139be565b8161239085611666565b61239a91906139dd565b116123e1576123a883611666565b816123b56012600a613913565b6123c090600a6139be565b6123ca9190613896565b6123d491906139dd565b6123de90826139dd565b90505b60006011546123ef30611666565b600954911115915062010000900460ff161580156124145750600954610100900460ff165b801561241d5750805b80156124375750600e546001600160a01b03858116911614155b801561245c57506001600160a01b03841660009081526004602052604090205460ff16155b801561248157506001600160a01b03831660009081526004602052604090205460ff16155b1561251f57600e546001600160a01b03848116911614156124e1576011546040805160a081018252601e548152601f546020808301919091525491810191909152602154606082015260225460808201526124dc9190612684565b61251f565b6011546040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d54608082015261251f9190612684565b60095460019060009062010000900460ff168061255457506001600160a01b03861660009081526004602052604090205460ff165b8061257757506001600160a01b03851660009081526004602052604090205460ff165b1561258157600091505b600e546001600160a01b038681169116141561259b575060015b6125a8868686858561282a565b505050505050565b60008060006125bd612b39565b90925090506125cc81836138ae565b9250505090565b6125db6133d4565b6125e6848484612cbc565b90506125fb8185856125f66125b0565b612e79565b60808601526060850152604084015260208301528152612623818461261e6125b0565b612f4a565b60c083015260a08201529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff0000191662010000179055608081015160608201516020830151604084015160009392916126b791613896565b6126c19190613896565b6126cb9190613896565b6126d69060026139be565b90506000818360400151856126eb91906139be565b6126f591906138ae565b9050600061270382866139dd565b90504761270f82612f8c565b600061271b82476139dd565b9050600086604001518661272f91906139dd565b61273990836138ae565b9050600087604001518261274d91906139be565b9050801561275f5761275f86826130ed565b60208801516000906127728460026139be565b61277c91906139be565b9050801561279a5760165461279a906001600160a01b0316826131d1565b60608901516000906127ad8560026139be565b6127b791906139be565b905080156127d5576017546127d5906001600160a01b0316826131d1565b60808a01516000906127e88660026139be565b6127f291906139be565b9050801561281057601854612810906001600160a01b0316826131d1565b50506009805462ff00001916905550505050505050505050565b60006128378484846125d3565b6001600160a01b03871660009081526005602052604090205490915060ff1615612899576001600160a01b03861660009081526002602052604090205461287f9085906139dd565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156128fc5760e08101516001600160a01b0386166000908152600260205260409020546128e29190613896565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461292191906139dd565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546129589190613896565b6001600160a01b038616600090815260016020526040908190209190915581015115158061298b57506000816101000151115b156129a3576129a381604001518261010001516132ea565b6000816080015111806129bb57506000816101400151115b15612a50576129d3816080015182610140015161331f565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101800151846101600151856101200151866101400151612a2a9190613896565b612a349190613896565b612a3e9190613896565b60405190815260200160405180910390a35b600081606001511180612a6857506000816101200151115b15612a8057612a808160600151826101200151613395565b60008160a001511180612a9857506000816101600151115b15612ab057612ab08160a001518261016001516133aa565b60008160c001511180612ac857506000816101800151115b15612ae057612ae08160c001518261018001516133bf565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e00151604051612b2991815260200190565b60405180910390a3505050505050565b601054600f546000918291825b600854811015612c8b57826001600060088481548110612b6857612b68613a3b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612bd35750816002600060088481548110612bac57612bac613a3b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612be957601054600f54945094505050509091565b6001600060088381548110612c0057612c00613a3b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612c2f90846139dd565b92506002600060088381548110612c4857612c48613a3b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612c7790836139dd565b915080612c83816139f4565b915050612b46565b50600f54601054612c9c91906138ae565b821015612cb357601054600f549350935050509091565b90939092509050565b612cc46133d4565b82612cd55760e08101849052610e88565b612d076040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612d4657506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612d79565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612d8890876139be565b612d9291906138ae565b6101008301526020810151606490612daa90876139be565b612db491906138ae565b6101208301526040810151606490612dcc90876139be565b612dd691906138ae565b6101408301526060810151606490612dee90876139be565b612df891906138ae565b6101608301526080810151606490612e1090876139be565b612e1a91906138ae565b6101808301819052610160830151610140840151610120850151610100860151612e44908a6139dd565b612e4e91906139dd565b612e5891906139dd565b612e6291906139dd565b612e6c91906139dd565b60e0830152509392505050565b600080808080612e8986896139be565b945086612ea157508392506000915081905080612f3f565b85896101000151612eb291906139be565b925085896101200151612ec591906139be565b915085896101400151612ed891906139be565b90506000868a6101600151612eed91906139be565b90506000878b6101800151612f0291906139be565b905080828486612f12898c6139dd565b612f1c91906139dd565b612f2691906139dd565b612f3091906139dd565b612f3a91906139dd565b955050505b945094509450945094565b60008083612f5d57506000905080612f84565b82856101600151612f6e91906139be565b915082856101800151612f8191906139be565b90505b935093915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fc157612fc1613a3b565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561301557600080fd5b505afa158015613029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304d9190613474565b8160018151811061306057613060613a3b565b6001600160a01b039283166020918202929092010152600d546130869130911684611c00565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906130bf908590600090869030904290600401613825565b600060405180830381600087803b1580156130d957600080fd5b505af11580156125a8573d6000803e3d6000fd5b600d546131059030906001600160a01b031684611c00565b600d546001600160a01b031663f305d71982308560008061312e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131ca91906136fb565b5050505050565b804710156132215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bc5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461326e576040519150601f19603f3d011682016040523d82523d6000602084013e613273565b606091505b5050905080610c745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bc5565b81601060008282546132fc91906139dd565b909155505060238054829190600090613316908490613896565b90915550505050565b80602360020160008282546133349190613896565b90915550503060009081526005602052604090205460ff1615613376573060009081526002602052604081208054839290613370908490613896565b90915550505b3060009081526001602052604081208054849290613316908490613896565b80602360010160008282546133349190613896565b80602360030160008282546133349190613896565b80602360040160008282546133349190613896565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b803561344781613a67565b919050565b803561344781613a7c565b60006020828403121561346957600080fd5b8135610e8881613a67565b60006020828403121561348657600080fd5b8151610e8881613a67565b600080604083850312156134a457600080fd5b82356134af81613a67565b915060208301356134bf81613a67565b809150509250929050565b6000806000606084860312156134df57600080fd5b83356134ea81613a67565b925060208401356134fa81613a67565b929592945050506040919091013590565b6000806040838503121561351e57600080fd5b823561352981613a67565b915060208301356134bf81613a7c565b6000806040838503121561354c57600080fd5b823561355781613a67565b946020939093013593505050565b6000806040838503121561357857600080fd5b823567ffffffffffffffff8082111561359057600080fd5b818501915085601f8301126135a457600080fd5b81356020828211156135b8576135b8613a51565b8160051b604051601f19603f830116810181811086821117156135dd576135dd613a51565b604052838152828101945085830182870184018b10156135fc57600080fd5b600096505b84871015613626576136128161343c565b865260019690960195948301948301613601565b509650613636905087820161344c565b9450505050509250929050565b60006020828403121561365557600080fd5b8135610e8881613a7c565b60006020828403121561367257600080fd5b8151610e8881613a7c565b6000806040838503121561369057600080fd5b823561355781613a7c565b6000602082840312156136ad57600080fd5b5035919050565b600080604083850312156136c757600080fd5b8235915060208301356134bf81613a7c565b600080604083850312156136ec57600080fd5b50508035926020909101359150565b60008060006060848603121561371057600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561374157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561379157858101830151858201604001528201613775565b818111156137a3576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156138755784516001600160a01b031683529383019391830191600101613850565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156138a9576138a9613a0f565b500190565b6000826138cb57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561390b5781600019048211156138f1576138f1613a0f565b808516156138fe57918102915b93841c93908002906138d5565b509250929050565b6000610e8860ff84168360008261392c57506001611307565b8161393957506000611307565b816001811461394f576002811461395957613975565b6001915050611307565b60ff84111561396a5761396a613a0f565b50506001821b611307565b5060208310610133831016604e8410600b8410161715613998575081810a611307565b6139a283836138d0565b80600019048211156139b6576139b6613a0f565b029392505050565b60008160001904831182151516156139d8576139d8613a0f565b500290565b6000828210156139ef576139ef613a0f565b500390565b6000600019821415613a0857613a08613a0f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146110a957600080fd5b80151581146110a957600080fdfea264697066735822122027343faa604f72436b4338f21ec65c985fab7da5b1d15802f9125479de9d1f4d64736f6c634300080700330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106103855760003560e01c806370a08231116101d1578063a9059cbb11610102578063dd62ed3e116100a0578063ee36e3591161006f578063ee36e35914610afa578063f2fde38b14610b14578063f66895a314610b34578063f887ea4014610b5b57600080fd5b8063dd62ed3e14610a5e578063e2f4560514610aa4578063e517f2b914610aba578063ea2f0b3714610ada57600080fd5b8063c791fc54116100dc578063c791fc54146109e8578063d257b34f14610a08578063d2ce0db214610a28578063d8672e5114610a3e57600080fd5b8063a9059cbb14610988578063aacebbe3146109a8578063b5c57145146109c857600080fd5b80638e2839ff1161016f57806395d89b411161014957806395d89b41146108ef5780639ba5e4d514610921578063a457c2d714610948578063a8aa1b311461096857600080fd5b80638e2839ff1461088f5780638ea5220f146108af578063924de9b7146108cf57600080fd5b806375f0a874116101ab57806375f0a874146107e057806388f820201461081857806389634889146108515780638da5cb5b1461087157600080fd5b806370a082311461075c578063715018a61461077c578063728f8eea1461079157600080fd5b8063437823ec116102b657806359759f6111610254578063652e2f0411610223578063652e2f04146106fb57806366a88d96146107115780636aa5b37f146107275780636ddd17131461073d57600080fd5b806359759f611461066b5780635b24ea5e1461068b5780635fcefa42146106ab57806362695eae146106cb57600080fd5b806347c230921161029057806347c23092146105d85780634ada218b146105f857806352390c02146106125780635342acb41461063257600080fd5b8063437823ec14610578578063441b1d30146105985780634549b039146105b857600080fd5b8063274a533c116103235780633685d419116102fd5780633685d419146104f8578063379ba1d914610518578063395093511461053857806340b28c2f1461055857600080fd5b8063274a533c146104a65780632d838119146104bc578063313ce567146104dc57600080fd5b80631767e7fb1161035f5780631767e7fb1461042757806318160ddd146104475780631816467f1461046657806323b872dd1461048657600080fd5b806306fdde0314610391578063095ea7b3146103d557806313f97a8e1461040557600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b5060408051808201909152600981526811d85b5958dc9e5c1d60ba1b60208201525b6040516103cc9190613764565b60405180910390f35b3480156103e157600080fd5b506103f56103f0366004613539565b610b7b565b60405190151581526020016103cc565b34801561041157600080fd5b50610425610420366004613565565b610be3565b005b34801561043357600080fd5b50610425610442366004613457565b610c79565b34801561045357600080fd5b50600f545b6040519081526020016103cc565b34801561047257600080fd5b50610425610481366004613457565b610cc5565b34801561049257600080fd5b506103f56104a13660046134ca565b610d11565b3480156104b257600080fd5b5061045860155481565b3480156104c857600080fd5b506104586104d736600461369b565b610e0b565b3480156104e857600080fd5b50604051601281526020016103cc565b34801561050457600080fd5b50610425610513366004613457565b610e8f565b34801561052457600080fd5b50610425610533366004613643565b611046565b34801561054457600080fd5b506103f5610553366004613539565b6110ac565b34801561056457600080fd5b50610425610573366004613491565b61112c565b34801561058457600080fd5b50610425610593366004613457565b611184565b3480156105a457600080fd5b506104256105b336600461369b565b6111d2565b3480156105c457600080fd5b506104586105d33660046136b4565b611279565b3480156105e457600080fd5b506104256105f33660046134ca565b61130d565b34801561060457600080fd5b506009546103f59060ff1681565b34801561061e57600080fd5b5061042561062d366004613457565b6113bf565b34801561063e57600080fd5b506103f561064d366004613457565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561067757600080fd5b506104256106863660046136d9565b611512565b34801561069757600080fd5b506104256106a636600461350b565b611579565b3480156106b757600080fd5b506104256106c6366004613729565b6115ce565b3480156106d757600080fd5b506103f56106e6366004613457565b60066020526000908152604090205460ff1681565b34801561070757600080fd5b5061045860135481565b34801561071d57600080fd5b5061045860145481565b34801561073357600080fd5b5061045860125481565b34801561074957600080fd5b506009546103f590610100900460ff1681565b34801561076857600080fd5b50610458610777366004613457565b611666565b34801561078857600080fd5b506104256116c5565b34801561079d57600080fd5b50601954601a54601b54601c54601d546107b8949392919085565b604080519586526020860194909452928401919091526060830152608082015260a0016103cc565b3480156107ec57600080fd5b50601654610800906001600160a01b031681565b6040516001600160a01b0390911681526020016103cc565b34801561082457600080fd5b506103f5610833366004613457565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561085d57600080fd5b50601854610800906001600160a01b031681565b34801561087d57600080fd5b506000546001600160a01b0316610800565b34801561089b57600080fd5b506104256108aa366004613565565b6116fb565b3480156108bb57600080fd5b50601754610800906001600160a01b031681565b3480156108db57600080fd5b506104256108ea366004613643565b61178c565b3480156108fb57600080fd5b5060408051808201909152600981526811d0535150d496541560ba1b60208201526103bf565b34801561092d57600080fd5b506023546024546025546026546027546107b8949392919085565b34801561095457600080fd5b506103f5610963366004613539565b6117d0565b34801561097457600080fd5b50600e54610800906001600160a01b031681565b34801561099457600080fd5b506103f56109a3366004613539565b6118b6565b3480156109b457600080fd5b506104256109c3366004613457565b61190b565b3480156109d457600080fd5b506104256109e336600461350b565b611957565b3480156109f457600080fd5b50610425610a03366004613729565b6119ac565b348015610a1457600080fd5b50610425610a2336600461369b565b611a45565b348015610a3457600080fd5b50610458600c5481565b348015610a4a57600080fd5b50610425610a5936600461369b565b611a8b565b348015610a6a57600080fd5b50610458610a79366004613491565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610ab057600080fd5b5061045860115481565b348015610ac657600080fd5b50610425610ad536600461367d565b611ad1565b348015610ae657600080fd5b50610425610af5366004613457565b611b1d565b348015610b0657600080fd5b50600b546103f59060ff1681565b348015610b2057600080fd5b50610425610b2f366004613457565b611b68565b348015610b4057600080fd5b50601e54601f546020546021546022546107b8949392919085565b348015610b6757600080fd5b50600d54610800906001600160a01b031681565b600954600090339060ff1680610ba957506001600160a01b03811660009081526006602052604090205460ff165b610bce5760405162461bcd60e51b8152600401610bc5906137ee565b60405180910390fd5b610bd9338585611c00565b5060019392505050565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b8152600401610bc5906137b9565b60005b8251811015610c74578160076000858481518110610c3057610c30613a3b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610c6c816139f4565b915050610c10565b505050565b6000546001600160a01b03163314610ca35760405162461bcd60e51b8152600401610bc5906137b9565b601880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610cef5760405162461bcd60e51b8152600401610bc5906137b9565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b600954600090849060ff1680610d3f57506001600160a01b03811660009081526006602052604090205460ff165b610d5b5760405162461bcd60e51b8152600401610bc5906137ee565b610d66858585611d24565b6001600160a01b038516600090815260036020908152604080832033845290915290205483811015610deb5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610bc5565b610dff8633610dfa87856139dd565b611c00565b50600195945050505050565b6000601054821115610e725760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610bc5565b6000610e7c6125b0565b9050610e8881846138ae565b9392505050565b6000546001600160a01b03163314610eb95760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03811660009081526005602052604090205460ff16610f215760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610bc5565b60005b60085481101561104257816001600160a01b031660088281548110610f4b57610f4b613a3b565b6000918252602090912001546001600160a01b031614156110305760088054610f76906001906139dd565b81548110610f8657610f86613a3b565b600091825260209091200154600880546001600160a01b039092169183908110610fb257610fb2613a3b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff19169055600880548061100a5761100a613a25565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061103a816139f4565b915050610f24565b5050565b6000546001600160a01b031633146110705760405162461bcd60e51b8152600401610bc5906137b9565b6009805461ffff191661ff001983151590811691909117610100820217909155600114801561109f5750601554155b156110a957436015555b50565b600954600090339060ff16806110da57506001600160a01b03811660009081526006602052604090205460ff165b6110f65760405162461bcd60e51b8152600401610bc5906137ee565b3360008181526003602090815260408083206001600160a01b0389168452909152902054610bd991908690610dfa908790613896565b6000546001600160a01b031633146111565760405162461bcd60e51b8152600401610bc5906137b9565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6000546001600160a01b031633146111ae5760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146111fc5760405162461bcd60e51b8152600401610bc5906137b9565b8047101561124c5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610bc5565b604051339082156108fc029083906000818181858888f19350505050158015611042573d6000803e3d6000fd5b6000600f548311156112cd5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610bc5565b816112eb5760006112e184600160006125d3565b5191506113079050565b60006112fa84600160006125d3565b6020015191506113079050565b92915050565b6000546001600160a01b031633146113375760405162461bcd60e51b8152600401610bc5906137b9565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561138157600080fd5b505af1158015611395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b99190613660565b50505050565b6000546001600160a01b031633146113e95760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03811660009081526005602052604090205460ff16156114525760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610bc5565b6001600160a01b038116600090815260016020526040902054156114ac576001600160a01b03811660009081526001602052604090205461149290610e0b565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6000546001600160a01b0316331461153c5760405162461bcd60e51b8152600401610bc5906137b9565b6115486012600a613913565b61155290836139be565b60125561155d601290565b61156890600a613913565b61157290826139be565b6013555050565b6000546001600160a01b031633146115a35760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115f85760405162461bcd60e51b8152600401610bc5906137b9565b6040805160a08101825286815260208101869052808201859052606081018490526080018290526019869055601a859055601b849055601c839055601d829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6001600160a01b03811660009081526005602052604081205460ff16156116a357506001600160a01b031660009081526002602052604090205490565b6001600160a01b03821660009081526001602052604090205461130790610e0b565b6000546001600160a01b031633146116ef5760405162461bcd60e51b8152600401610bc5906137b9565b6116f96000612634565b565b6000546001600160a01b031633146117255760405162461bcd60e51b8152600401610bc5906137b9565b60005b8251811015610c7457816004600085848151811061174857611748613a3b565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611784816139f4565b915050611728565b6000546001600160a01b031633146117b65760405162461bcd60e51b8152600401610bc5906137b9565b600980549115156101000261ff0019909216919091179055565b600954600090339060ff16806117fe57506001600160a01b03811660009081526006602052604090205460ff165b61181a5760405162461bcd60e51b8152600401610bc5906137ee565b3360009081526003602090815260408083206001600160a01b03881684529091529020548381101561189c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610bc5565b6118ab3386610dfa87856139dd565b506001949350505050565b600954600090339060ff16806118e457506001600160a01b03811660009081526006602052604090205460ff165b6119005760405162461bcd60e51b8152600401610bc5906137ee565b610bd9338585611d24565b6000546001600160a01b031633146119355760405162461bcd60e51b8152600401610bc5906137b9565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146119815760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146119d65760405162461bcd60e51b8152600401610bc5906137b9565b6040805160a0810182528681526020808201879052818301869052606082018590526080909101839052601e879055601f86905584905560218390556022829055517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b03163314611a6f5760405162461bcd60e51b8152600401610bc5906137b9565b611a7b6012600a613913565b611a8590826139be565b60115550565b6000546001600160a01b03163314611ab55760405162461bcd60e51b8152600401610bc5906137b9565b611ac16012600a613913565b611acb90826139be565b60145550565b6000546001600160a01b03163314611afb5760405162461bcd60e51b8152600401610bc5906137b9565b611b068160016139be565b600c5550600b805460ff1916911515919091179055565b6000546001600160a01b03163314611b475760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611b925760405162461bcd60e51b8152600401610bc5906137b9565b6001600160a01b038116611bf75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bc5565b6110a981612634565b6001600160a01b038316611c625760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bc5565b6001600160a01b038216611cc35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bc5565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611d885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bc5565b6001600160a01b038216611dea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bc5565b60008111611e4c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bc5565b611e5583611666565b811115611ebe5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610bc5565b6001600160a01b03831660009081526007602052604090205460ff16158015611f0057506001600160a01b03821660009081526007602052604090205460ff16155b611f3c5760405162461bcd60e51b815260206004820152600d60248201526c165bdd48185c99481848189bdd609a1b6044820152606401610bc5565b6001600160a01b03831660009081526004602052604090205460ff16158015611f7e57506001600160a01b03821660009081526004602052604090205460ff16155b15611fca5760095460ff16611fca5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b6044820152606401610bc5565b6001600160a01b03831660009081526004602052604090205460ff1615801561200c57506001600160a01b03821660009081526004602052604090205460ff16155b80156120255750601554612021906003613896565b4311155b1561209457600e546001600160a01b03838116911614156120945760405162461bcd60e51b8152602060048201526024808201527f53656c6c73206e6f7420616c6c6f77656420666f72206669727374203320626c6044820152636f636b7360e01b6064820152608401610bc5565b600e546001600160a01b0384811691161480156120ca57506001600160a01b03821660009081526004602052604090205460ff16155b80156120df575060095462010000900460ff16155b1561219b576012548111156121365760405162461bcd60e51b815260206004820152601d60248201527f596f752061726520657863656564696e67206d61784275794c696d69740000006044820152606401610bc5565b6014548161214384611666565b61214d9190613896565b111561219b5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bc5565b600e546001600160a01b038481169116148015906121d257506001600160a01b03821660009081526004602052604090205460ff16155b80156121f757506001600160a01b03831660009081526004602052604090205460ff16155b801561220c575060095462010000900460ff16155b1561236f576013548111156122635760405162461bcd60e51b815260206004820152601e60248201527f596f752061726520657863656564696e67206d617853656c6c4c696d697400006044820152606401610bc5565b600e546001600160a01b038381169116146122dd576014548161228584611666565b61228f9190613896565b11156122dd5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d69746044820152606401610bc5565b600b5460ff161561236f576001600160a01b0383166000908152600a602052604081205461230b90426139dd565b9050600c548110156123525760405162461bcd60e51b815260206004820152601060248201526f10dbdbdb191bdddb88195b98589b195960821b6044820152606401610bc5565b506001600160a01b0383166000908152600a602052604090204290555b61237b6012600a613913565b61238690600a6139be565b8161239085611666565b61239a91906139dd565b116123e1576123a883611666565b816123b56012600a613913565b6123c090600a6139be565b6123ca9190613896565b6123d491906139dd565b6123de90826139dd565b90505b60006011546123ef30611666565b600954911115915062010000900460ff161580156124145750600954610100900460ff165b801561241d5750805b80156124375750600e546001600160a01b03858116911614155b801561245c57506001600160a01b03841660009081526004602052604090205460ff16155b801561248157506001600160a01b03831660009081526004602052604090205460ff16155b1561251f57600e546001600160a01b03848116911614156124e1576011546040805160a081018252601e548152601f546020808301919091525491810191909152602154606082015260225460808201526124dc9190612684565b61251f565b6011546040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d54608082015261251f9190612684565b60095460019060009062010000900460ff168061255457506001600160a01b03861660009081526004602052604090205460ff165b8061257757506001600160a01b03851660009081526004602052604090205460ff165b1561258157600091505b600e546001600160a01b038681169116141561259b575060015b6125a8868686858561282a565b505050505050565b60008060006125bd612b39565b90925090506125cc81836138ae565b9250505090565b6125db6133d4565b6125e6848484612cbc565b90506125fb8185856125f66125b0565b612e79565b60808601526060850152604084015260208301528152612623818461261e6125b0565b612f4a565b60c083015260a08201529392505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6009805462ff0000191662010000179055608081015160608201516020830151604084015160009392916126b791613896565b6126c19190613896565b6126cb9190613896565b6126d69060026139be565b90506000818360400151856126eb91906139be565b6126f591906138ae565b9050600061270382866139dd565b90504761270f82612f8c565b600061271b82476139dd565b9050600086604001518661272f91906139dd565b61273990836138ae565b9050600087604001518261274d91906139be565b9050801561275f5761275f86826130ed565b60208801516000906127728460026139be565b61277c91906139be565b9050801561279a5760165461279a906001600160a01b0316826131d1565b60608901516000906127ad8560026139be565b6127b791906139be565b905080156127d5576017546127d5906001600160a01b0316826131d1565b60808a01516000906127e88660026139be565b6127f291906139be565b9050801561281057601854612810906001600160a01b0316826131d1565b50506009805462ff00001916905550505050505050505050565b60006128378484846125d3565b6001600160a01b03871660009081526005602052604090205490915060ff1615612899576001600160a01b03861660009081526002602052604090205461287f9085906139dd565b6001600160a01b0387166000908152600260205260409020555b6001600160a01b03851660009081526005602052604090205460ff16156128fc5760e08101516001600160a01b0386166000908152600260205260409020546128e29190613896565b6001600160a01b0386166000908152600260205260409020555b80516001600160a01b03871660009081526001602052604090205461292191906139dd565b6001600160a01b03808816600090815260016020908152604080832094909455840151918816815291909120546129589190613896565b6001600160a01b038616600090815260016020526040908190209190915581015115158061298b57506000816101000151115b156129a3576129a381604001518261010001516132ea565b6000816080015111806129bb57506000816101400151115b15612a50576129d3816080015182610140015161331f565b306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101800151846101600151856101200151866101400151612a2a9190613896565b612a349190613896565b612a3e9190613896565b60405190815260200160405180910390a35b600081606001511180612a6857506000816101200151115b15612a8057612a808160600151826101200151613395565b60008160a001511180612a9857506000816101600151115b15612ab057612ab08160a001518261016001516133aa565b60008160c001511180612ac857506000816101800151115b15612ae057612ae08160c001518261018001516133bf565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e00151604051612b2991815260200190565b60405180910390a3505050505050565b601054600f546000918291825b600854811015612c8b57826001600060088481548110612b6857612b68613a3b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612bd35750816002600060088481548110612bac57612bac613a3b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612be957601054600f54945094505050509091565b6001600060088381548110612c0057612c00613a3b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612c2f90846139dd565b92506002600060088381548110612c4857612c48613a3b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612c7790836139dd565b915080612c83816139f4565b915050612b46565b50600f54601054612c9c91906138ae565b821015612cb357601054600f549350935050509091565b90939092509050565b612cc46133d4565b82612cd55760e08101849052610e88565b612d076040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8215612d4657506040805160a081018252601e548152601f54602080830191909152549181019190915260215460608201526022546080820152612d79565b506040805160a0810182526019548152601a546020820152601b5491810191909152601c546060820152601d5460808201525b8051606490612d8890876139be565b612d9291906138ae565b6101008301526020810151606490612daa90876139be565b612db491906138ae565b6101208301526040810151606490612dcc90876139be565b612dd691906138ae565b6101408301526060810151606490612dee90876139be565b612df891906138ae565b6101608301526080810151606490612e1090876139be565b612e1a91906138ae565b6101808301819052610160830151610140840151610120850151610100860151612e44908a6139dd565b612e4e91906139dd565b612e5891906139dd565b612e6291906139dd565b612e6c91906139dd565b60e0830152509392505050565b600080808080612e8986896139be565b945086612ea157508392506000915081905080612f3f565b85896101000151612eb291906139be565b925085896101200151612ec591906139be565b915085896101400151612ed891906139be565b90506000868a6101600151612eed91906139be565b90506000878b6101800151612f0291906139be565b905080828486612f12898c6139dd565b612f1c91906139dd565b612f2691906139dd565b612f3091906139dd565b612f3a91906139dd565b955050505b945094509450945094565b60008083612f5d57506000905080612f84565b82856101600151612f6e91906139be565b915082856101800151612f8191906139be565b90505b935093915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fc157612fc1613a3b565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561301557600080fd5b505afa158015613029573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061304d9190613474565b8160018151811061306057613060613a3b565b6001600160a01b039283166020918202929092010152600d546130869130911684611c00565b600d5460405163791ac94760e01b81526001600160a01b039091169063791ac947906130bf908590600090869030904290600401613825565b600060405180830381600087803b1580156130d957600080fd5b505af11580156125a8573d6000803e3d6000fd5b600d546131059030906001600160a01b031684611c00565b600d546001600160a01b031663f305d71982308560008061312e6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561319157600080fd5b505af11580156131a5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131ca91906136fb565b5050505050565b804710156132215760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610bc5565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461326e576040519150601f19603f3d011682016040523d82523d6000602084013e613273565b606091505b5050905080610c745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610bc5565b81601060008282546132fc91906139dd565b909155505060238054829190600090613316908490613896565b90915550505050565b80602360020160008282546133349190613896565b90915550503060009081526005602052604090205460ff1615613376573060009081526002602052604081208054839290613370908490613896565b90915550505b3060009081526001602052604081208054849290613316908490613896565b80602360010160008282546133349190613896565b80602360030160008282546133349190613896565b80602360040160008282546133349190613896565b604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b803561344781613a67565b919050565b803561344781613a7c565b60006020828403121561346957600080fd5b8135610e8881613a67565b60006020828403121561348657600080fd5b8151610e8881613a67565b600080604083850312156134a457600080fd5b82356134af81613a67565b915060208301356134bf81613a67565b809150509250929050565b6000806000606084860312156134df57600080fd5b83356134ea81613a67565b925060208401356134fa81613a67565b929592945050506040919091013590565b6000806040838503121561351e57600080fd5b823561352981613a67565b915060208301356134bf81613a7c565b6000806040838503121561354c57600080fd5b823561355781613a67565b946020939093013593505050565b6000806040838503121561357857600080fd5b823567ffffffffffffffff8082111561359057600080fd5b818501915085601f8301126135a457600080fd5b81356020828211156135b8576135b8613a51565b8160051b604051601f19603f830116810181811086821117156135dd576135dd613a51565b604052838152828101945085830182870184018b10156135fc57600080fd5b600096505b84871015613626576136128161343c565b865260019690960195948301948301613601565b509650613636905087820161344c565b9450505050509250929050565b60006020828403121561365557600080fd5b8135610e8881613a7c565b60006020828403121561367257600080fd5b8151610e8881613a7c565b6000806040838503121561369057600080fd5b823561355781613a7c565b6000602082840312156136ad57600080fd5b5035919050565b600080604083850312156136c757600080fd5b8235915060208301356134bf81613a7c565b600080604083850312156136ec57600080fd5b50508035926020909101359150565b60008060006060848603121561371057600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561374157600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561379157858101830151858201604001528201613775565b818111156137a3576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f54726164696e67206e6f7420656e61626c656420796574000000000000000000604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156138755784516001600160a01b031683529383019391830191600101613850565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156138a9576138a9613a0f565b500190565b6000826138cb57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b8085111561390b5781600019048211156138f1576138f1613a0f565b808516156138fe57918102915b93841c93908002906138d5565b509250929050565b6000610e8860ff84168360008261392c57506001611307565b8161393957506000611307565b816001811461394f576002811461395957613975565b6001915050611307565b60ff84111561396a5761396a613a0f565b50506001821b611307565b5060208310610133831016604e8410600b8410161715613998575081810a611307565b6139a283836138d0565b80600019048211156139b6576139b6613a0f565b029392505050565b60008160001904831182151516156139d8576139d8613a0f565b500290565b6000828210156139ef576139ef613a0f565b500390565b6000600019821415613a0857613a08613a0f565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146110a957600080fd5b80151581146110a957600080fdfea264697066735822122027343faa604f72436b4338f21ec65c985fab7da5b1d15802f9125479de9d1f4d64736f6c63430008070033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

3246:22024:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7089:83;;;;;;;;;;-1:-1:-1;7159:5:0;;;;;;;;;;;;-1:-1:-1;;;7159:5:0;;;;7089:83;;;;;;;:::i;:::-;;;;;;;;7849:181;;;;;;;;;;-1:-1:-1;7849:181:0;;;;;:::i;:::-;;:::i;:::-;;;7368:14:1;;7361:22;7343:41;;7331:2;7316:18;7849:181:0;7203:187:1;23943:209:0;;;;;;;;;;-1:-1:-1;23943:209:0;;;;;:::i;:::-;;:::i;:::-;;23270:110;;;;;;;;;;-1:-1:-1;23270:110:0;;;;;:::i;:::-;;:::i;7385:95::-;;;;;;;;;;-1:-1:-1;7465:7:0;;7385:95;;;17881:25:1;;;17869:2;17854:18;7385:95:0;17735:177:1;23160:102:0;;;;;;;;;;-1:-1:-1;23160:102:0;;;;;:::i;:::-;;:::i;8038:430::-;;;;;;;;;;-1:-1:-1;8038:430:0;;;;;:::i;:::-;;:::i;4712:28::-;;;;;;;;;;;;;;;;10131:248;;;;;;;;;;-1:-1:-1;10131:248:0;;;;;:::i;:::-;;:::i;7271:83::-;;;;;;;;;;-1:-1:-1;7271:83:0;;4296:2;19512:36:1;;19500:2;19485:18;7271:83:0;19370:184:1;10794:475:0;;;;;;;;;;-1:-1:-1;10794:475:0;;;;;:::i;:::-;;:::i;9917:206::-;;;;;;;;;;-1:-1:-1;9917:206:0;;;;;:::i;:::-;;:::i;8476:228::-;;;;;;;;;;-1:-1:-1;8476:228:0;;;;;:::i;:::-;;:::i;24631:154::-;;;;;;;;;;-1:-1:-1;24631:154:0;;;;;:::i;:::-;;:::i;11279:111::-;;;;;;;;;;-1:-1:-1;11279:111:0;;;;;:::i;:::-;;:::i;24861:196::-;;;;;;;;;;-1:-1:-1;24861:196:0;;;;;:::i;:::-;;:::i;9437:470::-;;;;;;;;;;-1:-1:-1;9437:470:0;;;;;:::i;:::-;;:::i;25071:154::-;;;;;;;;;;-1:-1:-1;25071:154:0;;;;;:::i;:::-;;:::i;3783:26::-;;;;;;;;;;-1:-1:-1;3783:26:0;;;;;;;;10453:333;;;;;;;;;;-1:-1:-1;10453:333:0;;;;;:::i;:::-;;:::i;11518:123::-;;;;;;;;;;-1:-1:-1;11518:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;11606:27:0;11582:4;11606:27;;;:18;:27;;;;;;;;;11518:123;24305:183;;;;;;;;;;-1:-1:-1;24305:183:0;;;;;:::i;:::-;;:::i;23805:126::-;;;;;;;;;;-1:-1:-1;23805:126:0;;;;;:::i;:::-;;:::i;11649:223::-;;;;;;;;;;-1:-1:-1;11649:223:0;;;;;:::i;:::-;;:::i;3635:48::-;;;;;;;;;;-1:-1:-1;3635:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;4588:50;;;;;;;;;;;;;;;;4645:54;;;;;;;;;;;;;;;;4530:51;;;;;;;;;;;;;;;;3816:23;;;;;;;;;;-1:-1:-1;3816:23:0;;;;;;;;;;;7488:198;;;;;;;;;;-1:-1:-1;7488:198:0;;;;;:::i;:::-;;:::i;1675:94::-;;;;;;;;;;;;;:::i;5255:41::-;;;;;;;;;;-1:-1:-1;5255:41:0;;;;;;;;;;;;;;;;;;;;;;19161:25:1;;;19217:2;19202:18;;19195:34;;;;19245:18;;;19238:34;;;;19303:2;19288:18;;19281:34;19346:3;19331:19;;19324:35;19148:3;19133:19;5255:41:0;18902:463:1;4753:75:0;;;;;;;;;;-1:-1:-1;4753:75:0;;;;-1:-1:-1;;;;;4753:75:0;;;;;;-1:-1:-1;;;;;6268:32:1;;;6250:51;;6238:2;6223:18;4753:75:0;6104:203:1;9309:120:0;;;;;;;;;;-1:-1:-1;9309:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;9401:20:0;9377:4;9401:20;;;:11;:20;;;;;;;;;9309:120;4911:73;;;;;;;;;;-1:-1:-1;4911:73:0;;;;-1:-1:-1;;;;;4911:73:0;;;1452:87;;;;;;;;;;-1:-1:-1;1498:7:0;1525:6;-1:-1:-1;;;;;1525:6:0;1452:87;;22817:209;;;;;;;;;;-1:-1:-1;22817:209:0;;;;;:::i;:::-;;:::i;4835:69::-;;;;;;;;;;-1:-1:-1;4835:69:0;;;;-1:-1:-1;;;;;4835:69:0;;;23692:101;;;;;;;;;;-1:-1:-1;23692:101:0;;;;;:::i;:::-;;:::i;7178:87::-;;;;;;;;;;-1:-1:-1;7250:7:0;;;;;;;;;;;;-1:-1:-1;;;7250:7:0;;;;7178:87;;5528:36;;;;;;;;;;-1:-1:-1;5528:36:0;;;;;;;;;;;;;;;;;;8712:390;;;;;;;;;;-1:-1:-1;8712:390:0;;;;;:::i;:::-;;:::i;4233:19::-;;;;;;;;;;-1:-1:-1;4233:19:0;;;;-1:-1:-1;;;;;4233:19:0;;;9114:187;;;;;;;;;;-1:-1:-1;9114:187:0;;;;;:::i;:::-;;:::i;23034:114::-;;;;;;;;;;-1:-1:-1;23034:114:0;;;;;:::i;:::-;;:::i;24164:129::-;;;;;;;;;;-1:-1:-1;24164:129:0;;;;;:::i;:::-;;:::i;11884:231::-;;;;;;;;;;-1:-1:-1;11884:231:0;;;;;:::i;:::-;;:::i;23554:130::-;;;;;;;;;;-1:-1:-1;23554:130:0;;;;;:::i;:::-;;:::i;4002:40::-;;;;;;;;;;;;;;;;24500:123;;;;;;;;;;-1:-1:-1;24500:123:0;;;;;:::i;:::-;;:::i;7698:143::-;;;;;;;;;;-1:-1:-1;7698:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7806:18:0;;;7779:7;7806:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7698:143;4467:56;;;;;;;;;;;;;;;;23394:152;;;;;;;;;;-1:-1:-1;23394:152:0;;;;;:::i;:::-;;:::i;11398:110::-;;;;;;;;;;-1:-1:-1;11398:110:0;;;;;:::i;:::-;;:::i;3961:34::-;;;;;;;;;;-1:-1:-1;3961:34:0;;;;;;;;1777:192;;;;;;;;;;-1:-1:-1;1777:192:0;;;;;:::i;:::-;;:::i;5303:45::-;;;;;;;;;;-1:-1:-1;5303:45:0;;;;;;;;;;;;;;;;;;4205:21;;;;;;;;;;-1:-1:-1;4205:21:0;;;;-1:-1:-1;;;;;4205:21:0;;;7849:181;4107:14;;7944:4;;7924:10;;4107:14;;;:42;;-1:-1:-1;;;;;;4125:24:0;;;;;;:15;:24;;;;;;;;4107:42;4099:78;;;;-1:-1:-1;;;4099:78:0;;;;;;;:::i;:::-;;;;;;;;;7961:39:::1;953:10:::0;7984:7:::1;7993:6;7961:8;:39::i;:::-;-1:-1:-1::0;8018:4:0::1;::::0;7849:181;-1:-1:-1;;;7849:181:0:o;23943:209::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;24042:9:::1;24038:107;24060:8;:15;24056:1;:19;24038:107;;;24126:5;24096:14;:27;24111:8;24120:1;24111:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24096:27:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24096:27:0;:35;;-1:-1:-1;;24096:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24077:3;::::1;::::0;::::1;:::i;:::-;;;;24038:107;;;;23943:209:::0;;:::o;23270:110::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;23347:13:::1;:25:::0;;-1:-1:-1;;;;;;23347:25:0::1;-1:-1:-1::0;;;;;23347:25:0;;;::::1;::::0;;;::::1;::::0;;23270:110::o;23160:102::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;23233:9:::1;:21:::0;;-1:-1:-1;;;;;;23233:21:0::1;-1:-1:-1::0;;;;;23233:21:0;;;::::1;::::0;;;::::1;::::0;;23160:102::o;8038:430::-;4107:14;;8152:4;;8135:6;;4107:14;;;:42;;-1:-1:-1;;;;;;4125:24:0;;;;;;:15;:24;;;;;;;;4107:42;4099:78;;;;-1:-1:-1;;;4099:78:0;;;;;;;:::i;:::-;8169:36:::1;8179:6;8187:9;8198:6;8169:9;:36::i;:::-;-1:-1:-1::0;;;;;8245:19:0;::::1;8218:24;8245:19:::0;;;:11:::1;:19;::::0;;;;;;;953:10;8245:33;;;;;;;;8297:26;;::::1;;8289:79;;;::::0;-1:-1:-1;;;8289:79:0;;14142:2:1;8289:79:0::1;::::0;::::1;14124:21:1::0;14181:2;14161:18;;;14154:30;14220:34;14200:18;;;14193:62;-1:-1:-1;;;14271:18:1;;;14264:38;14319:19;;8289:79:0::1;13940:404:1::0;8289:79:0::1;8379:57;8388:6:::0;953:10;8410:25:::1;8429:6:::0;8410:16;:25:::1;:::i;:::-;8379:8;:57::i;:::-;-1:-1:-1::0;8456:4:0::1;::::0;8038:430;-1:-1:-1;;;;;8038:430:0:o;10131:248::-;10197:7;10236;;10225;:18;;10217:73;;;;-1:-1:-1;;;10217:73:0;;9949:2:1;10217:73:0;;;9931:21:1;9988:2;9968:18;;;9961:30;10027:34;10007:18;;;10000:62;-1:-1:-1;;;10078:18:1;;;10071:40;10128:19;;10217:73:0;9747:406:1;10217:73:0;10301:19;10324:10;:8;:10::i;:::-;10301:33;-1:-1:-1;10352:19:0;10301:33;10352:7;:19;:::i;:::-;10345:26;10131:248;-1:-1:-1;;;10131:248:0:o;10794:475::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10876:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10868:56;;;::::0;-1:-1:-1;;;10868:56:0;;12719:2:1;10868:56:0::1;::::0;::::1;12701:21:1::0;12758:2;12738:18;;;12731:30;12797:25;12777:18;;;12770:53;12840:18;;10868:56:0::1;12517:347:1::0;10868:56:0::1;10940:9;10935:327;10959:9;:16:::0;10955:20;::::1;10935:327;;;11017:7;-1:-1:-1::0;;;;;11001:23:0::1;:9;11011:1;11001:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;11001:12:0::1;:23;10997:254;;;11060:9;11070:16:::0;;:20:::1;::::0;11089:1:::1;::::0;11070:20:::1;:::i;:::-;11060:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;11045:9:::1;:12:::0;;-1:-1:-1;;;;;11060:31:0;;::::1;::::0;11055:1;;11045:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;11045:46:0::1;-1:-1:-1::0;;;;;11045:46:0;;::::1;;::::0;;11110:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;11149:11:::1;:20:::0;;;;:28;;-1:-1:-1;;11149:28:0::1;::::0;;11196:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;11196:15:0;;;;;-1:-1:-1;;;;;;11196:15:0::1;::::0;;;;;10935:327:::1;10794:475:::0;:::o;10997:254::-:1;10977:3:::0;::::1;::::0;::::1;:::i;:::-;;;;10935:327;;;;10794:475:::0;:::o;9917:206::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;9984:14:::1;:22:::0;;-1:-1:-1;;10017:19:0;-1:-1:-1;;9984:22:0;::::1;;10017:19:::0;;;;;;;9984:22:::1;10017:19:::0;::::1;;::::0;;;-1:-1:-1;10050:13:0::1;:35:::0;::::1;;;-1:-1:-1::0;10067:13:0::1;::::0;:18;10050:35:::1;10047:68;;;10103:12;10087:13;:28:::0;10047:68:::1;9917:206:::0;:::o;8476:228::-;4107:14;;8577:4;;8556:10;;4107:14;;;:42;;-1:-1:-1;;;;;;4125:24:0;;;;;;:15;:24;;;;;;;;4107:42;4099:78;;;;-1:-1:-1;;;4099:78:0;;;;;;;:::i;:::-;953:10;8626:25:::1;::::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8626:34:0;::::1;::::0;;;;;;;;8594:80:::1;::::0;953:10;8617:7;;8626:47:::1;::::0;8663:10;;8626:47:::1;:::i;24631:154::-:0;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;24725:6:::1;:27:::0;;-1:-1:-1;;;;;24725:27:0;;::::1;-1:-1:-1::0;;;;;;24725:27:0;;::::1;;::::0;;;24763:4:::1;:14:::0;;;;;::::1;::::0;::::1;;::::0;;24631:154::o;11279:111::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11348:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;11348:34:0::1;11378:4;11348:34;::::0;;11279:111::o;24861:196::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;24961:9:::1;24936:21;:34;;24928:71;;;::::0;-1:-1:-1;;;24928:71:0;;13789:2:1;24928:71:0::1;::::0;::::1;13771:21:1::0;13828:2;13808:18;;;13801:30;13867:26;13847:18;;;13840:54;13911:18;;24928:71:0::1;13587:348:1::0;24928:71:0::1;25010:39;::::0;25018:10:::1;::::0;25010:39;::::1;;;::::0;25039:9;;25010:39:::1;::::0;;;25039:9;25018:10;25010:39;::::1;;;;;;;;;;;;;::::0;::::1;;;;9437:470:::0;9527:7;9566;;9555;:18;;9547:62;;;;-1:-1:-1;;;9547:62:0;;13429:2:1;9547:62:0;;;13411:21:1;13468:2;13448:18;;;13441:30;13507:33;13487:18;;;13480:61;13558:18;;9547:62:0;13227:355:1;9547:62:0;9625:17;9620:280;;9659:28;9690:32;9701:7;9710:4;9716:5;9690:10;:32::i;:::-;9744:9;;-1:-1:-1;9737:16:0;;-1:-1:-1;9737:16:0;9620:280;9786:28;9817:32;9828:7;9837:4;9843:5;9817:10;:32::i;:::-;9871:17;;;;-1:-1:-1;9864:24:0;;-1:-1:-1;9864:24:0;9620:280;9437:470;;;;:::o;25071:154::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;25176:41:::1;::::0;-1:-1:-1;;;25176:41:0;;-1:-1:-1;;;;;6504:32:1;;;25176:41:0::1;::::0;::::1;6486:51:1::0;6553:18;;;6546:34;;;25176:27:0;::::1;::::0;::::1;::::0;6459:18:1;;25176:41:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25071:154:::0;;;:::o;10453:333::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10536:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;10535:21;10527:61;;;::::0;-1:-1:-1;;;10527:61:0;;11170:2:1;10527:61:0::1;::::0;::::1;11152:21:1::0;11209:2;11189:18;;;11182:30;11248:29;11228:18;;;11221:57;11295:18;;10527:61:0::1;10968:351:1::0;10527:61:0::1;-1:-1:-1::0;;;;;10602:16:0;::::1;10621:1;10602:16:::0;;;:7:::1;:16;::::0;;;;;:20;10599:108:::1;;-1:-1:-1::0;;;;;10678:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;10658:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;10639:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;10599:108:::1;-1:-1:-1::0;;;;;10717:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;10717:27:0::1;10740:4;10717:27:::0;;::::1;::::0;;;10755:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;10755:23:0::1;::::0;;::::1;::::0;;10453:333::o;24305:183::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;24416:14:::1;4296:2:::0;24416::::1;:14;:::i;:::-;24407:23;::::0;:6;:23:::1;:::i;:::-;24393:11;:37:::0;24470:10:::1;4296:2:::0;;7271:83;24470:10:::1;24466:14;::::0;:2:::1;:14;:::i;:::-;24456:24;::::0;:7;:24:::1;:::i;:::-;24441:12;:39:::0;-1:-1:-1;;24305:183:0:o;23805:126::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23892:23:0;;;::::1;;::::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;23892:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23805:126::o;11649:223::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;11788:47:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;11780:5:::1;:55:::0;;;;;;;;;;;;;;;;;;;11851:13;::::1;::::0;-1:-1:-1;;11851:13:0::1;11649:223:::0;;;;;:::o;7488:198::-;-1:-1:-1;;;;;7578:20:0;;7554:7;7578:20;;;:11;:20;;;;;;;;7574:49;;;-1:-1:-1;;;;;;7607:16:0;;;;;:7;:16;;;;;;;7488:198::o;7574:49::-;-1:-1:-1;;;;;7661:16:0;;;;;;:7;:16;;;;;;7641:37;;:19;:37::i;1675:94::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;1740:21:::1;1758:1;1740:9;:21::i;:::-;1675:94::o:0;22817:209::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;22913:9:::1;22909:110;22932:8;:15;22928:1;:19;22909:110;;;23002:5;22968:18;:31;22987:8;22996:1;22987:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;22968:31:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;22968:31:0;:39;;-1:-1:-1;;22968:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22949:3;::::1;::::0;::::1;:::i;:::-;;;;22909:110;;23692:101:::0;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;23763:11:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;23763:22:0;;::::1;::::0;;;::::1;::::0;;23692:101::o;8712:390::-;4107:14;;8818:4;;8797:10;;4107:14;;;:42;;-1:-1:-1;;;;;;4125:24:0;;;;;;:15;:24;;;;;;;;4107:42;4099:78;;;;-1:-1:-1;;;4099:78:0;;;;;;;:::i;:::-;953:10;8835:24:::1;8862:25:::0;;;:11:::1;:25;::::0;;;;;;;-1:-1:-1;;;;;8862:34:0;::::1;::::0;;;;;;;;8915:35;;::::1;;8907:85;;;::::0;-1:-1:-1;;;8907:85:0;;17531:2:1;8907:85:0::1;::::0;::::1;17513:21:1::0;17570:2;17550:18;;;17543:30;17609:34;17589:18;;;17582:62;-1:-1:-1;;;17660:18:1;;;17653:35;17705:19;;8907:85:0::1;17329:401:1::0;8907:85:0::1;9003:67;953:10:::0;9026:7;9035:34:::1;9054:15:::0;9035:16;:34:::1;:::i;9003:67::-;-1:-1:-1::0;9090:4:0::1;::::0;8712:390;-1:-1:-1;;;;8712:390:0:o;9114:187::-;4107:14;;9212:4;;9191:10;;4107:14;;;:42;;-1:-1:-1;;;;;;4125:24:0;;;;;;:15;:24;;;;;;;;4107:42;4099:78;;;;-1:-1:-1;;;4099:78:0;;;;;;;:::i;:::-;9233:40:::1;9243:10;9255:9;9266:6;9233:9;:40::i;23034:114::-:0;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;23113:15:::1;:27:::0;;-1:-1:-1;;;;;;23113:27:0::1;-1:-1:-1::0;;;;;23113:27:0;;;::::1;::::0;;;::::1;::::0;;23034:114::o;24164:129::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24253:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;24253:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24164:129::o;11884:231::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;12031:47:::1;::::0;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;12019:9:::1;:59:::0;;;;;;;;;;;;;;;;;;12094:13;::::1;::::0;-1:-1:-1;;12094:13:0::1;11884:231:::0;;;;;:::o;23554:130::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;23663:13:::1;4296:2;23663;:13;:::i;:::-;23654:22;::::0;:6;:22:::1;:::i;:::-;23633:18;:43:::0;-1:-1:-1;23554:130:0:o;24500:123::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;24601:14:::1;4296:2:::0;24601::::1;:14;:::i;:::-;24592:23;::::0;:6;:23:::1;:::i;:::-;24575:14;:40:::0;-1:-1:-1;24500:123:0:o;23394:152::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;23488:16:::1;:4:::0;23495:9:::1;23488:16;:::i;:::-;23473:12;:31:::0;-1:-1:-1;23515:15:0::1;:23:::0;;-1:-1:-1;;23515:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23394:152::o;11398:110::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11465:27:0::1;11495:5;11465:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;11465:35:0::1;::::0;;11398:110::o;1777:192::-;1498:7;1525:6;-1:-1:-1;;;;;1525:6:0;953:10;1587:23;1579:68;;;;-1:-1:-1;;;1579:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1866:22:0;::::1;1858:73;;;::::0;-1:-1:-1;;;1858:73:0;;10360:2:1;1858:73:0::1;::::0;::::1;10342:21:1::0;10399:2;10379:18;;;10372:30;10438:34;10418:18;;;10411:62;-1:-1:-1;;;10489:18:1;;;10482:36;10535:19;;1858:73:0::1;10158:402:1::0;1858:73:0::1;1942:19;1952:8;1942:9;:19::i;16330:335::-:0;-1:-1:-1;;;;;16423:19:0;;16415:68;;;;-1:-1:-1;;;16415:68:0;;16073:2:1;16415:68:0;;;16055:21:1;16112:2;16092:18;;;16085:30;16151:34;16131:18;;;16124:62;-1:-1:-1;;;16202:18:1;;;16195:34;16246:19;;16415:68:0;15871:400:1;16415:68:0;-1:-1:-1;;;;;16502:21:0;;16494:68;;;;-1:-1:-1;;;16494:68:0;;10767:2:1;16494:68:0;;;10749:21:1;10806:2;10786:18;;;10779:30;10845:34;10825:18;;;10818:62;-1:-1:-1;;;10896:18:1;;;10889:32;10938:19;;16494:68:0;10565:398:1;16494:68:0;-1:-1:-1;;;;;16573:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16625:32;;17881:25:1;;;16625:32:0;;17854:18:1;16625:32:0;;;;;;;16330:335;;;:::o;16673:2449::-;-1:-1:-1;;;;;16761:18:0;;16753:68;;;;-1:-1:-1;;;16753:68:0;;15667:2:1;16753:68:0;;;15649:21:1;15706:2;15686:18;;;15679:30;15745:34;15725:18;;;15718:62;-1:-1:-1;;;15796:18:1;;;15789:35;15841:19;;16753:68:0;15465:401:1;16753:68:0;-1:-1:-1;;;;;16840:16:0;;16832:64;;;;-1:-1:-1;;;16832:64:0;;8422:2:1;16832:64:0;;;8404:21:1;8461:2;8441:18;;;8434:30;8500:34;8480:18;;;8473:62;-1:-1:-1;;;8551:18:1;;;8544:33;8594:19;;16832:64:0;8220:399:1;16832:64:0;16924:1;16915:6;:10;16907:64;;;;-1:-1:-1;;;16907:64:0;;14912:2:1;16907:64:0;;;14894:21:1;14951:2;14931:18;;;14924:30;14990:34;14970:18;;;14963:62;-1:-1:-1;;;15041:18:1;;;15034:39;15090:19;;16907:64:0;14710:405:1;16907:64:0;17000:15;17010:4;17000:9;:15::i;:::-;16990:6;:25;;16982:86;;;;-1:-1:-1;;;16982:86:0;;9531:2:1;16982:86:0;;;9513:21:1;9570:2;9550:18;;;9543:30;9609:34;9589:18;;;9582:62;-1:-1:-1;;;9660:18:1;;;9653:47;9717:19;;16982:86:0;9329:413:1;16982:86:0;-1:-1:-1;;;;;17088:20:0;;;;;;:14;:20;;;;;;;;17087:21;:44;;;;-1:-1:-1;;;;;;17113:18:0;;;;;;:14;:18;;;;;;;;17112:19;17087:44;17079:70;;;;-1:-1:-1;;;17079:70:0;;16830:2:1;17079:70:0;;;16812:21:1;16869:2;16849:18;;;16842:30;-1:-1:-1;;;16888:18:1;;;16881:43;16941:18;;17079:70:0;16628:337:1;17079:70:0;-1:-1:-1;;;;;17174:24:0;;;;;;:18;:24;;;;;;;;17173:25;:52;;;;-1:-1:-1;;;;;;17203:22:0;;;;;;:18;:22;;;;;;;;17202:23;17173:52;17170:128;;;17249:14;;;;17241:45;;;;-1:-1:-1;;;17241:45:0;;9184:2:1;17241:45:0;;;9166:21:1;9223:2;9203:18;;;9196:30;-1:-1:-1;;;9242:18:1;;;9235:48;9300:18;;17241:45:0;8982:342:1;17241:45:0;-1:-1:-1;;;;;17322:24:0;;;;;;:18;:24;;;;;;;;17321:25;:52;;;;-1:-1:-1;;;;;;17351:22:0;;;;;;:18;:22;;;;;;;;17350:23;17321:52;:89;;;;-1:-1:-1;17393:13:0;;:17;;17409:1;17393:17;:::i;:::-;17377:12;:33;;17321:89;17318:180;;;17441:4;;-1:-1:-1;;;;;17435:10:0;;;17441:4;;17435:10;;17427:59;;;;-1:-1:-1;;;17427:59:0;;11887:2:1;17427:59:0;;;11869:21:1;11926:2;11906:18;;;11899:30;11965:34;11945:18;;;11938:62;-1:-1:-1;;;12016:18:1;;;12009:34;12060:19;;17427:59:0;11685:400:1;17427:59:0;17529:4;;-1:-1:-1;;;;;17521:12:0;;;17529:4;;17521:12;:39;;;;-1:-1:-1;;;;;;17538:22:0;;;;;;:18;:22;;;;;;;;17537:23;17521:39;:52;;;;-1:-1:-1;17565:8:0;;;;;;;17564:9;17521:52;17518:246;;;17607:11;;17597:6;:21;;17589:63;;;;-1:-1:-1;;;17589:63:0;;8826:2:1;17589:63:0;;;8808:21:1;8865:2;8845:18;;;8838:30;8904:31;8884:18;;;8877:59;8953:18;;17589:63:0;8624:353:1;17589:63:0;17701:14;;17691:6;17675:13;17685:2;17675:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17667:85;;;;-1:-1:-1;;;17667:85:0;;11526:2:1;17667:85:0;;;11508:21:1;;;11545:18;;;11538:30;11604:34;11584:18;;;11577:62;11656:18;;17667:85:0;11324:356:1;17667:85:0;17795:4;;-1:-1:-1;;;;;17787:12:0;;;17795:4;;17787:12;;;;:39;;-1:-1:-1;;;;;;17804:22:0;;;;;;:18;:22;;;;;;;;17803:23;17787:39;:68;;;;-1:-1:-1;;;;;;17831:24:0;;;;;;:18;:24;;;;;;;;17830:25;17787:68;:81;;;;-1:-1:-1;17860:8:0;;;;;;;17859:9;17787:81;17784:573;;;17902:12;;17892:6;:22;;17884:65;;;;-1:-1:-1;;;17884:65:0;;17172:2:1;17884:65:0;;;17154:21:1;17211:2;17191:18;;;17184:30;17250:32;17230:18;;;17223:60;17300:18;;17884:65:0;16970:354:1;17884:65:0;17973:4;;-1:-1:-1;;;;;17967:10:0;;;17973:4;;17967:10;17964:134;;18031:14;;18021:6;18005:13;18015:2;18005:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17997:85;;;;-1:-1:-1;;;17997:85:0;;11526:2:1;17997:85:0;;;11508:21:1;;;11545:18;;;11538:30;11604:34;11584:18;;;11577:62;11656:18;;17997:85:0;11324:356:1;17997:85:0;18115:15;;;;18112:234;;;-1:-1:-1;;;;;18189:15:0;;18150:18;18189:15;;;:9;:15;;;;;;18171:33;;:15;:33;:::i;:::-;18150:54;;18245:12;;18231:10;:26;;18223:55;;;;-1:-1:-1;;;18223:55:0;;15322:2:1;18223:55:0;;;15304:21:1;15361:2;15341:18;;;15334:30;-1:-1:-1;;;15380:18:1;;;15373:46;15436:18;;18223:55:0;15120:340:1;18223:55:0;-1:-1:-1;;;;;;18297:15:0;;;;;;:9;:15;;;;;18315;18297:33;;18112:234;18424:14;4296:2;18424;:14;:::i;:::-;18418:20;;:2;:20;:::i;:::-;18408:6;18390:15;18400:4;18390:9;:15::i;:::-;:24;;;;:::i;:::-;:48;18387:111;;18482:15;18492:4;18482:9;:15::i;:::-;18473:6;18456:14;4296:2;18456;:14;:::i;:::-;18451:19;;:2;:19;:::i;:::-;:28;;;;:::i;:::-;:46;;;;:::i;:::-;18440:58;;;;:::i;:::-;;;18387:111;18528:12;18571:18;;18543:24;18561:4;18543:9;:24::i;:::-;18604:8;;-1:-1:-1;;18543:46:0;;-1:-1:-1;18604:8:0;;;;;18603:9;:24;;;;-1:-1:-1;18616:11:0;;;;;;;18603:24;:35;;;;;18631:7;18603:35;:51;;;;-1:-1:-1;18650:4:0;;-1:-1:-1;;;;;18642:12:0;;;18650:4;;18642:12;;18603:51;:80;;;;-1:-1:-1;;;;;;18659:24:0;;;;;;:18;:24;;;;;;;;18658:25;18603:80;:107;;;;-1:-1:-1;;;;;;18688:22:0;;;;;;:18;:22;;;;;;;;18687:23;18603:107;18600:261;;;18735:4;;-1:-1:-1;;;;;18729:10:0;;;18735:4;;18729:10;18726:123;;;18757:18;;18742:45;;;;;;;;18777:9;18742:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18757:18;18742:14;:45::i;:::-;18726:123;;;18823:18;;18808:41;;;;;;;;18843:5;18808:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18823:18;18808:14;:41::i;:::-;18934:8;;18886:4;;18871:12;;18934:8;;;;;;:36;;-1:-1:-1;;;;;;18946:24:0;;;;;;:18;:24;;;;;;;;18934:36;:62;;;-1:-1:-1;;;;;;18974:22:0;;;;;;:18;:22;;;;;;;;18934:62;18931:82;;;19008:5;18998:15;;18931:82;19033:4;;-1:-1:-1;;;;;19027:10:0;;;19033:4;;19027:10;19024:28;;;-1:-1:-1;19048:4:0;19024:28;19065:49;19080:4;19086:2;19090:6;19098:7;19107:6;19065:14;:49::i;:::-;16742:2380;;;16673:2449;;;:::o;15616:158::-;15657:7;15678:15;15695;15714:19;:17;:19::i;:::-;15677:56;;-1:-1:-1;15677:56:0;-1:-1:-1;15751:15:0;15677:56;;15751:15;:::i;:::-;15744:22;;;;15616:158;:::o;13374:485::-;13460:36;;:::i;:::-;13521:37;13533:7;13542;13551:6;13521:11;:37::i;:::-;13509:49;;13678:53;13691:9;13702:7;13711;13720:10;:8;:10::i;:::-;13678:12;:53::i;:::-;13654:20;;;13569:162;13632:20;;;13569:162;13616:14;;;13569:162;13589:25;;;13569:162;;;13780:44;13570:9;13804:7;13813:10;:8;:10::i;:::-;13780:12;:44::i;:::-;13758:18;;;13742:82;13743:14;;;13742:82;13374:485;;;;;:::o;1977:173::-;2033:16;2052:6;;-1:-1:-1;;;;;2069:17:0;;;-1:-1:-1;;;;;;2069:17:0;;;;;;2102:40;;2052:6;;;;;;;2102:40;;2033:16;2102:40;2022:128;1977:173;:::o;20415:1317::-;6069:8;:15;;-1:-1:-1;;6069:15:0;;;;;20581:12:::1;::::0;::::1;::::0;20570:8:::1;::::0;::::1;::::0;20553:14:::1;::::0;::::1;::::0;20536::::1;::::0;::::1;::::0;6069:15;;20581:12;20570:8;20536:31:::1;::::0;::::1;:::i;:::-;:42;;;;:::i;:::-;:57;;;;:::i;:::-;20535:63;::::0;20597:1:::1;20535:63;:::i;:::-;20513:85;;20609:32;20679:11;20662:4;:14;;;20644:15;:32;;;;:::i;:::-;:46;;;;:::i;:::-;20609:81:::0;-1:-1:-1;20701:14:0::1;20718:42;20609:81:::0;20718:15;:42:::1;:::i;:::-;20701:59:::0;-1:-1:-1;20798:21:0::1;20832:24;20701:59:::0;20832:16:::1;:24::i;:::-;20869:20;20892:38;20916:14:::0;20892:21:::1;:38;:::i;:::-;20869:61;;20941:19;20992:4;:14;;;20978:11;:28;;;;:::i;:::-;20962:45;::::0;:12;:45:::1;:::i;:::-;20941:66;;21018:29;21064:4;:14;;;21050:11;:28;;;;:::i;:::-;21018:60:::0;-1:-1:-1;21094:25:0;;21091:158:::1;;21176:61;21189:24;21215:21;21176:12;:61::i;:::-;21302:14;::::0;::::1;::::0;21261:20:::1;::::0;21284:15:::1;:11:::0;21298:1:::1;21284:15;:::i;:::-;:32;;;;:::i;:::-;21261:55:::0;-1:-1:-1;21330:16:0;;21327:95:::1;;21370:15;::::0;21362:48:::1;::::0;-1:-1:-1;;;;;21370:15:0::1;21397:12:::0;21362:34:::1;:48::i;:::-;21467:8;::::0;::::1;::::0;21432:14:::1;::::0;21449:15:::1;:11:::0;21463:1:::1;21449:15;:::i;:::-;:26;;;;:::i;:::-;21432:43:::0;-1:-1:-1;21489:10:0;;21486:77:::1;;21523:9;::::0;21515:36:::1;::::0;-1:-1:-1;;;;;21523:9:0::1;21544:6:::0;21515:28:::1;:36::i;:::-;21613:12;::::0;::::1;::::0;21574:18:::1;::::0;21595:15:::1;:11:::0;21609:1:::1;21595:15;:::i;:::-;:30;;;;:::i;:::-;21574:51:::0;-1:-1:-1;21639:14:0;;21636:89:::1;;21677:13;::::0;21669:44:::1;::::0;-1:-1:-1;;;;;21677:13:0::1;21702:10:::0;21669:32:::1;:44::i;:::-;-1:-1:-1::0;;6107:8:0;:16;;-1:-1:-1;;6107:16:0;;;-1:-1:-1;;;;;;;;;;20415:1317:0:o;19205:1202::-;19329:28;19360:36;19371:7;19380;19389:6;19360:10;:36::i;:::-;-1:-1:-1;;;;;19413:19:0;;;;;;:11;:19;;;;;;19329:67;;-1:-1:-1;19413:19:0;;19409:115;;;-1:-1:-1;;;;;19489:15:0;;;;;;:7;:15;;;;;;:23;;19505:7;;19489:23;:::i;:::-;-1:-1:-1;;;;;19471:15:0;;;;;;:7;:15;;;;;:41;19409:115;-1:-1:-1;;;;;19538:22:0;;;;;;:11;:22;;;;;;;;19534:130;;;19635:17;;;;-1:-1:-1;;;;;19616:18:0;;;;;;:7;:18;;;;;;:36;;19635:17;19616:36;:::i;:::-;-1:-1:-1;;;;;19595:18:0;;;;;;:7;:18;;;;;:57;19534:130;19710:9;;-1:-1:-1;;;;;19694:15:0;;19710:9;19694:15;;;:7;:15;;;;;;:25;;19710:9;19694:25;:::i;:::-;-1:-1:-1;;;;;19676:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;19770:17;;;19751:18;;;;;;;;;;:36;;19770:17;19751:36;:::i;:::-;-1:-1:-1;;;;;19730:18:0;;;;;;:7;:18;;;;;;;:57;;;;19811:6;;;:10;;;:24;;;19834:1;19825;:6;;;:10;19811:24;19808:56;;;19837:27;19849:1;:6;;;19857:1;:6;;;19837:11;:27::i;:::-;19893:1;19878;:12;;;:16;:36;;;;19913:1;19898;:12;;;:16;19878:36;19875:211;;;19931:41;19946:1;:12;;;19959:1;:12;;;19931:14;:41::i;:::-;20017:4;-1:-1:-1;;;;;19992:82:0;20001:6;-1:-1:-1;;;;;19992:82:0;;20063:1;:10;;;20054:1;:6;;;20039:1;:12;;;20024:1;:12;;;:27;;;;:::i;:::-;:36;;;;:::i;:::-;:49;;;;:::i;:::-;19992:82;;17881:25:1;;;17869:2;17854:18;19992:82:0;;;;;;;19875:211;20114:1;20099;:12;;;:16;:36;;;;20134:1;20119;:12;;;:16;20099:36;20096:83;;;20137:42;20152:1;:12;;;20166:1;:12;;;20137:14;:42::i;:::-;20202:1;20193;:6;;;:10;:24;;;;20216:1;20207;:6;;;:10;20193:24;20190:53;;;20219:24;20228:1;:6;;;20236:1;:6;;;20219:8;:24::i;:::-;20270:1;20257;:10;;;:14;:32;;;;20288:1;20275;:10;;;:14;20257:32;20254:73;;;20291:36;20304:1;:10;;;20316:1;:10;;;20291:12;:36::i;:::-;20360:9;-1:-1:-1;;;;;20343:46:0;20352:6;-1:-1:-1;;;;;20343:46:0;;20371:1;:17;;;20343:46;;;;17881:25:1;;17869:2;17854:18;;17735:177;20343:46:0;;;;;;;;19316:1091;19205:1202;;;;;:::o;15782:540::-;15879:7;;15915;;15832;;;;;15933:279;15957:9;:16;15953:20;;15933:279;;;16023:7;15999;:21;16007:9;16017:1;16007:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16007:12:0;15999:21;;;;;;;;;;;;;:31;;:66;;;16058:7;16034;:21;16042:9;16052:1;16042:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16042:12:0;16034:21;;;;;;;;;;;;;:31;15999:66;15995:97;;;16075:7;;16084;;16067:25;;;;;;;15782:540;;:::o;15995:97::-;16125:7;:21;16133:9;16143:1;16133:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16133:12:0;16125:21;;;;;;;;;;;;;16117:29;;:7;:29;:::i;:::-;16107:39;;16179:7;:21;16187:9;16197:1;16187:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;16187:12:0;16179:21;;;;;;;;;;;;;16171:29;;:7;:29;:::i;:::-;16161:39;-1:-1:-1;15975:3:0;;;;:::i;:::-;;;;15933:279;;;;16244:7;;16236;;:15;;;;:::i;:::-;16226:7;:25;16222:56;;;16261:7;;16270;;16253:25;;;;;;15782:540;;:::o;16222:56::-;16297:7;;16306;;-1:-1:-1;15782:540:0;-1:-1:-1;15782:540:0:o;13867:667::-;13954:28;;:::i;:::-;14001:7;13997:86;;14023:17;;;:27;;;14063:8;;13997:86;14093:17;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14093:17:0;14124:6;14121:55;;;-1:-1:-1;14132:16:0;;;;;;;;14139:9;14132:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14121:55;;;-1:-1:-1;14164:12:0;;;;;;;;14171:5;14164:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14121:55;14214:8;;14223:3;;14206:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;14197:6;;;:29;14260:14;;;;14275:3;;14252:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14237:12;;;:41;14312:14;;;;14327:3;;14304:22;;:7;:22;:::i;:::-;:26;;;;:::i;:::-;14289:12;;;:41;14358:8;;;;14367:3;;14350:16;;:7;:16;:::i;:::-;:20;;;;:::i;:::-;14341:6;;;:29;14402:12;;;;14415:3;;14394:20;;:7;:20;:::i;:::-;:24;;;;:::i;:::-;14381:10;;;:37;;;14490:6;;;;14477:12;;;;14464;;;;14457:6;;;;14449:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;:47;;;;:::i;:::-;:58;;;;:::i;:::-;14429:17;;;:78;-1:-1:-1;13867:667:0;;;;;:::o;14542:729::-;14668:15;;;;;14783:19;14791:11;14783:7;:19;:::i;:::-;14773:29;;14819:7;14815:69;;-1:-1:-1;14848:7:0;;-1:-1:-1;14866:1:0;;-1:-1:-1;14866:1:0;;-1:-1:-1;14866:1:0;14841:31;;14815:69;14910:11;14903:1;:6;;;:18;;;;:::i;:::-;14896:25;;14958:11;14945:1;:12;;;:24;;;;:::i;:::-;14932:37;;15006:11;14993:1;:12;;;:24;;;;:::i;:::-;14980:37;;15028:12;15050:11;15043:1;:6;;;:18;;;;:::i;:::-;15028:33;;15072:16;15102:11;15091:1;:10;;;:22;;;;:::i;:::-;15072:41;-1:-1:-1;15072:41:0;15178:4;15167:10;15156;15143:12;15151:4;15143:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:39;;;;:::i;:::-;:48;;;;:::i;:::-;15124:67;;15202:61;;14542:729;;;;;;;;;;:::o;15283:325::-;15392:12;15406:16;15441:7;15437:49;;-1:-1:-1;15470:1:0;;-1:-1:-1;15470:1:0;15463:11;;15437:49;15512:11;15505:1;:6;;;:18;;;;:::i;:::-;15498:25;;15556:11;15545:1;:10;;;:22;;;;:::i;:::-;15534:33;;15283:325;;;;;;;:::o;22243:562::-;22393:16;;;22407:1;22393:16;;;;;;;;22369:21;;22393:16;;;;;;;;;;-1:-1:-1;22393:16:0;22369:40;;22438:4;22420;22425:1;22420:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22420:23:0;;;:7;;;;;;;;;;:23;;;;22464:6;;:13;;;-1:-1:-1;;;22464:13:0;;;;:6;;;;;:11;;:13;;;;;22420:7;;22464:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22454:4;22459:1;22454:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22454:23:0;;;:7;;;;;;;;;:23;22522:6;;22490:53;;22507:4;;22522:6;22531:11;22490:8;:53::i;:::-;22582:6;;:215;;-1:-1:-1;;;22582:215:0;;-1:-1:-1;;;;;22582:6:0;;;;:57;;:215;;22654:11;;22582:6;;22724:4;;22751;;22771:15;;22582:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21740:495;21920:6;;21888:53;;21905:4;;-1:-1:-1;;;;;21920:6:0;21929:11;21888:8;:53::i;:::-;21984:6;;-1:-1:-1;;;;;21984:6:0;:22;22014:9;22047:4;22067:11;21984:6;;22179:7;1498;1525:6;-1:-1:-1;;;;;1525:6:0;;1452:87;22179:7;21984:243;;;;;;-1:-1:-1;;;;;;21984:243:0;;;-1:-1:-1;;;;;6950:15:1;;;21984:243:0;;;6932:34:1;6982:18;;;6975:34;;;;7025:18;;;7018:34;;;;7068:18;;;7061:34;7132:15;;;7111:19;;;7104:44;22201:15:0;7164:19:1;;;7157:35;6866:19;;21984:243:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21740:495;;:::o;2920:317::-;3035:6;3010:21;:31;;3002:73;;;;-1:-1:-1;;;3002:73:0;;13071:2:1;3002:73:0;;;13053:21:1;13110:2;13090:18;;;13083:30;13149:31;13129:18;;;13122:59;13198:18;;3002:73:0;12869:353:1;3002:73:0;3089:12;3107:9;-1:-1:-1;;;;;3107:14:0;3129:6;3107:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3088:52;;;3159:7;3151:78;;;;-1:-1:-1;;;3151:78:0;;12292:2:1;3151:78:0;;;12274:21:1;12331:2;12311:18;;;12304:30;12370:34;12350:18;;;12343:62;12441:28;12421:18;;;12414:56;12487:19;;3151:78:0;12090:422:1;12123:123:0;12201:4;12191:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;12216:11:0;:22;;12234:4;;12216:11;:15;;:22;;12234:4;;12216:22;:::i;:::-;;;;-1:-1:-1;;;;12123:123:0:o;12254:284::-;12361:10;12337:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;12407:4:0;12387:26;;;;:11;:26;;;;;;;;12384:101;;;12455:4;12439:22;;;;:7;:22;;;;;:34;;12463:10;;12439:22;:34;;12463:10;;12439:34;:::i;:::-;;;;-1:-1:-1;;12384:101:0;12511:4;12495:22;;;;:7;:22;;;;;:35;;12520:10;;12495:22;:35;;12520:10;;12495:35;:::i;12546:284::-;12653:10;12629:11;:21;;;:34;;;;;;;:::i;12842:242::-;12925:4;12907:11;:15;;;:22;;;;;;;:::i;13092:270::-;13191:8;13169:11;:19;;;:30;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:128::-;218:20;;247:28;218:20;247:28;:::i;286:247::-;345:6;398:2;386:9;377:7;373:23;369:32;366:52;;;414:1;411;404:12;366:52;453:9;440:23;472:31;497:5;472:31;:::i;538:251::-;608:6;661:2;649:9;640:7;636:23;632:32;629:52;;;677:1;674;667:12;629:52;709:9;703:16;728:31;753:5;728:31;:::i;794:388::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;978:9;965:23;997:31;1022:5;997:31;:::i;:::-;1047:5;-1:-1:-1;1104:2:1;1089:18;;1076:32;1117:33;1076:32;1117:33;:::i;:::-;1169:7;1159:17;;;794:388;;;;;:::o;1187:456::-;1264:6;1272;1280;1333:2;1321:9;1312:7;1308:23;1304:32;1301:52;;;1349:1;1346;1339:12;1301:52;1388:9;1375:23;1407:31;1432:5;1407:31;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:33;1486:32;1527:33;:::i;:::-;1187:456;;1579:7;;-1:-1:-1;;;1633:2:1;1618:18;;;;1605:32;;1187:456::o;1648:382::-;1713:6;1721;1774:2;1762:9;1753:7;1749:23;1745:32;1742:52;;;1790:1;1787;1780:12;1742:52;1829:9;1816:23;1848:31;1873:5;1848:31;:::i;:::-;1898:5;-1:-1:-1;1955:2:1;1940:18;;1927:32;1968:30;1927:32;1968:30;:::i;2035:315::-;2103:6;2111;2164:2;2152:9;2143:7;2139:23;2135:32;2132:52;;;2180:1;2177;2170:12;2132:52;2219:9;2206:23;2238:31;2263:5;2238:31;:::i;:::-;2288:5;2340:2;2325:18;;;;2312:32;;-1:-1:-1;;;2035:315:1:o;2355:1202::-;2445:6;2453;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;2562:9;2549:23;2591:18;2632:2;2624:6;2621:14;2618:34;;;2648:1;2645;2638:12;2618:34;2686:6;2675:9;2671:22;2661:32;;2731:7;2724:4;2720:2;2716:13;2712:27;2702:55;;2753:1;2750;2743:12;2702:55;2789:2;2776:16;2811:4;2834:2;2830;2827:10;2824:36;;;2840:18;;:::i;:::-;2886:2;2883:1;2879:10;2918:2;2912:9;2981:2;2977:7;2972:2;2968;2964:11;2960:25;2952:6;2948:38;3036:6;3024:10;3021:22;3016:2;3004:10;3001:18;2998:46;2995:72;;;3047:18;;:::i;:::-;3083:2;3076:22;3133:18;;;3167:15;;;;-1:-1:-1;3202:11:1;;;3232;;;3228:20;;3225:33;-1:-1:-1;3222:53:1;;;3271:1;3268;3261:12;3222:53;3293:1;3284:10;;3303:169;3317:2;3314:1;3311:9;3303:169;;;3374:23;3393:3;3374:23;:::i;:::-;3362:36;;3335:1;3328:9;;;;;3418:12;;;;3450;;3303:169;;;-1:-1:-1;3491:6:1;-1:-1:-1;3516:35:1;;-1:-1:-1;3532:18:1;;;3516:35;:::i;:::-;3506:45;;;;;;2355:1202;;;;;:::o;3562:241::-;3618:6;3671:2;3659:9;3650:7;3646:23;3642:32;3639:52;;;3687:1;3684;3677:12;3639:52;3726:9;3713:23;3745:28;3767:5;3745:28;:::i;3808:245::-;3875:6;3928:2;3916:9;3907:7;3903:23;3899:32;3896:52;;;3944:1;3941;3934:12;3896:52;3976:9;3970:16;3995:28;4017:5;3995:28;:::i;4058:309::-;4123:6;4131;4184:2;4172:9;4163:7;4159:23;4155:32;4152:52;;;4200:1;4197;4190:12;4152:52;4239:9;4226:23;4258:28;4280:5;4258:28;:::i;4372:180::-;4431:6;4484:2;4472:9;4463:7;4459:23;4455:32;4452:52;;;4500:1;4497;4490:12;4452:52;-1:-1:-1;4523:23:1;;4372:180;-1:-1:-1;4372:180:1:o;4557:309::-;4622:6;4630;4683:2;4671:9;4662:7;4658:23;4654:32;4651:52;;;4699:1;4696;4689:12;4651:52;4735:9;4722:23;4712:33;;4795:2;4784:9;4780:18;4767:32;4808:28;4830:5;4808:28;:::i;4871:248::-;4939:6;4947;5000:2;4988:9;4979:7;4975:23;4971:32;4968:52;;;5016:1;5013;5006:12;4968:52;-1:-1:-1;;5039:23:1;;;5109:2;5094:18;;;5081:32;;-1:-1:-1;4871:248:1:o;5124:306::-;5212:6;5220;5228;5281:2;5269:9;5260:7;5256:23;5252:32;5249:52;;;5297:1;5294;5287:12;5249:52;5326:9;5320:16;5310:26;;5376:2;5365:9;5361:18;5355:25;5345:35;;5420:2;5409:9;5405:18;5399:25;5389:35;;5124:306;;;;;:::o;5435:454::-;5530:6;5538;5546;5554;5562;5615:3;5603:9;5594:7;5590:23;5586:33;5583:53;;;5632:1;5629;5622:12;5583:53;-1:-1:-1;;5655:23:1;;;5725:2;5710:18;;5697:32;;-1:-1:-1;5776:2:1;5761:18;;5748:32;;5827:2;5812:18;;5799:32;;-1:-1:-1;5878:3:1;5863:19;5850:33;;-1:-1:-1;5435:454:1;-1:-1:-1;5435:454:1:o;7618:597::-;7730:4;7759:2;7788;7777:9;7770:21;7820:6;7814:13;7863:6;7858:2;7847:9;7843:18;7836:34;7888:1;7898:140;7912:6;7909:1;7906:13;7898:140;;;8007:14;;;8003:23;;7997:30;7973:17;;;7992:2;7969:26;7962:66;7927:10;;7898:140;;;8056:6;8053:1;8050:13;8047:91;;;8126:1;8121:2;8112:6;8101:9;8097:22;8093:31;8086:42;8047:91;-1:-1:-1;8199:2:1;8178:15;-1:-1:-1;;8174:29:1;8159:45;;;;8206:2;8155:54;;7618:597;-1:-1:-1;;;7618:597:1:o;14349:356::-;14551:2;14533:21;;;14570:18;;;14563:30;14629:34;14624:2;14609:18;;14602:62;14696:2;14681:18;;14349:356::o;16276:347::-;16478:2;16460:21;;;16517:2;16497:18;;;16490:30;16556:25;16551:2;16536:18;;16529:53;16614:2;16599:18;;16276:347::o;17917:980::-;18179:4;18227:3;18216:9;18212:19;18258:6;18247:9;18240:25;18284:2;18322:6;18317:2;18306:9;18302:18;18295:34;18365:3;18360:2;18349:9;18345:18;18338:31;18389:6;18424;18418:13;18455:6;18447;18440:22;18493:3;18482:9;18478:19;18471:26;;18532:2;18524:6;18520:15;18506:29;;18553:1;18563:195;18577:6;18574:1;18571:13;18563:195;;;18642:13;;-1:-1:-1;;;;;18638:39:1;18626:52;;18733:15;;;;18698:12;;;;18674:1;18592:9;18563:195;;;-1:-1:-1;;;;;;;18814:32:1;;;;18809:2;18794:18;;18787:60;-1:-1:-1;;;18878:3:1;18863:19;18856:35;18775:3;17917:980;-1:-1:-1;;;17917:980:1:o;19559:128::-;19599:3;19630:1;19626:6;19623:1;19620:13;19617:39;;;19636:18;;:::i;:::-;-1:-1:-1;19672:9:1;;19559:128::o;19692:217::-;19732:1;19758;19748:132;;19802:10;19797:3;19793:20;19790:1;19783:31;19837:4;19834:1;19827:15;19865:4;19862:1;19855:15;19748:132;-1:-1:-1;19894:9:1;;19692:217::o;19914:422::-;20003:1;20046:5;20003:1;20060:270;20081:7;20071:8;20068:21;20060:270;;;20140:4;20136:1;20132:6;20128:17;20122:4;20119:27;20116:53;;;20149:18;;:::i;:::-;20199:7;20189:8;20185:22;20182:55;;;20219:16;;;;20182:55;20298:22;;;;20258:15;;;;20060:270;;;20064:3;19914:422;;;;;:::o;20341:140::-;20399:5;20428:47;20469:4;20459:8;20455:19;20449:4;20535:5;20565:8;20555:80;;-1:-1:-1;20606:1:1;20620:5;;20555:80;20654:4;20644:76;;-1:-1:-1;20691:1:1;20705:5;;20644:76;20736:4;20754:1;20749:59;;;;20822:1;20817:130;;;;20729:218;;20749:59;20779:1;20770:10;;20793:5;;;20817:130;20854:3;20844:8;20841:17;20838:43;;;20861:18;;:::i;:::-;-1:-1:-1;;20917:1:1;20903:16;;20932:5;;20729:218;;21031:2;21021:8;21018:16;21012:3;21006:4;21003:13;20999:36;20993:2;20983:8;20980:16;20975:2;20969:4;20966:12;20962:35;20959:77;20956:159;;;-1:-1:-1;21068:19:1;;;21100:5;;20956:159;21147:34;21172:8;21166:4;21147:34;:::i;:::-;21217:6;21213:1;21209:6;21205:19;21196:7;21193:32;21190:58;;;21228:18;;:::i;:::-;21266:20;;20486:806;-1:-1:-1;;;20486:806:1:o;21297:168::-;21337:7;21403:1;21399;21395:6;21391:14;21388:1;21385:21;21380:1;21373:9;21366:17;21362:45;21359:71;;;21410:18;;:::i;:::-;-1:-1:-1;21450:9:1;;21297:168::o;21470:125::-;21510:4;21538:1;21535;21532:8;21529:34;;;21543:18;;:::i;:::-;-1:-1:-1;21580:9:1;;21470:125::o;21600:135::-;21639:3;-1:-1:-1;;21660:17:1;;21657:43;;;21680:18;;:::i;:::-;-1:-1:-1;21727:1:1;21716:13;;21600:135::o;21740:127::-;21801:10;21796:3;21792:20;21789:1;21782:31;21832:4;21829:1;21822:15;21856:4;21853:1;21846:15;21872:127;21933:10;21928:3;21924:20;21921:1;21914:31;21964:4;21961:1;21954:15;21988:4;21985:1;21978:15;22004:127;22065:10;22060:3;22056:20;22053:1;22046:31;22096:4;22093:1;22086:15;22120:4;22117:1;22110:15;22136:127;22197:10;22192:3;22188:20;22185:1;22178:31;22228:4;22225:1;22218:15;22252:4;22249:1;22242:15;22268:131;-1:-1:-1;;;;;22343:31:1;;22333:42;;22323:70;;22389:1;22386;22379:12;22404:118;22490:5;22483:13;22476:21;22469:5;22466:32;22456:60;;22512:1;22509;22502:12

Swarm Source

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