ETH Price: $3,522.58 (+2.97%)
Gas: 4 Gwei

Contract

0x2f137F56Fe4CA5383d54B33532654705b81923e8
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer177567592023-07-23 15:39:11362 days ago1690126751IN
0x2f137F56...5b81923e8
0 ETH0.0018857230.57574861
Approve177567192023-07-23 15:31:11362 days ago1690126271IN
0x2f137F56...5b81923e8
0 ETH0.0017671738.11694442
Set Excluded Fro...177567102023-07-23 15:29:23362 days ago1690126163IN
0x2f137F56...5b81923e8
0 ETH0.0015206532.75863101
Set Excluded Fro...177512282023-07-22 21:04:23363 days ago1690059863IN
0x2f137F56...5b81923e8
0 ETH0.0008249117.77078561
Approve177511752023-07-22 20:53:47363 days ago1690059227IN
0x2f137F56...5b81923e8
0 ETH0.000734715.84704212
Set Excluded Fro...177511542023-07-22 20:49:35363 days ago1690058975IN
0x2f137F56...5b81923e8
0 ETH0.0006823214.69893442
Set Initializer177510842023-07-22 20:35:11363 days ago1690058111IN
0x2f137F56...5b81923e8
0 ETH0.0374563213.92373084
0x60006002177510822023-07-22 20:34:47363 days ago1690058087IN
 Create: JesusRaptorV2
0 ETH0.0488189313.60261757

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
JesusRaptorV2

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

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

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract JesusRaptorV2 is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 666_444_444_444_444;
    string constant private _name = "Jesus";
    string constant private _symbol = "RAPTOR V2";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    Fees public _taxRates = Fees({
        buyFee: 500,
        sellFee: 1000,
        transferFee: 0
    });

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0xB407F498F09A04d18abF5c2DC424DC3542AD9E46);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    
    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() external onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (!enabled) {
            lpPairs[pair] = false;
            initializer.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.");
            }
            require(!lpPairs[pair], "Pair already added to list.");
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            initializer.setLpPair(pair, true);
        }
    }

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

    function isExcludedFromFees(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

    function setExcludedFromProtection(address account, bool enabled) external onlyOwner {
        _isExcludedFromProtection[account] = enabled;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

    function removeSniper(address account) external onlyOwner {
        initializer.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        initializer.setProtections(_antiSnipe, _antiBlock);
    }

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setWallets(address payable marketing) external onlyOwner {
        require(marketing != address(0), "Cannot be zero address.");
        marketingWallet = payable(marketing);
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(presale, true);
        }
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(initializer)
            && to != address(initializer);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if (address(initializer) == address(0)){
                initializer = Initializer(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028190556008805460ff1916600117905560e06040526101f46080526103e860a05260c0526009805465ffffffffffff19166303e801f4178155600c8054600161ff0160a01b03191673b407f498f09a04d18abf5c2dc424dc3542ad9e46179055600a60108190556011805461ffff19169055601380546001600160a01b03191633179055620000939190620002b5565b620000a69066025e20b05fa71c620002cd565b601380546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620000fa6009600a620002b5565b6200010d9066025e20b05fa71c620002cd565b60405190815260200160405180910390a3601380546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905595549094168352600490915290208054909216179055620002e7565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001f7578160001904821115620001db57620001db620001a0565b80851615620001e957918102915b93841c9390800290620001bb565b509250929050565b6000826200021057506001620002af565b816200021f57506000620002af565b8160018114620002385760028114620002435762000263565b6001915050620002af565b60ff841115620002575762000257620001a0565b50506001821b620002af565b5060208310610133831016604e8410600b841016171562000288575081810a620002af565b620002948383620001b6565b8060001904821115620002ab57620002ab620001a0565b0290505b92915050565b6000620002c660ff841683620001ff565b9392505050565b8082028115828204841417620002af57620002af620001a0565b613ba380620002f76000396000f3fe6080604052600436106103435760003560e01c806350a8e016116101b0578063a9059cbb116100ec578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610987578063fb78680d1461099c578063fdb78c0e146109bc578063feadde9c146109dd57600080fd5b8063dd62ed3e14610901578063eafb5a3c14610947578063eb50e70e1461096757600080fd5b8063b3d514fb116100c6578063b3d514fb1461059d578063b7df8b36146108c7578063bfc2fc35146108e157600080fd5b8063a9059cbb14610887578063ab558e4d146108a7578063b1b08f711461059d57600080fd5b806375f0a87411610159578063893d20e811610133578063893d20e81461080d5780638a63bd9b1461082b5780638a8c523c1461084057806395d89b411461085557600080fd5b806375f0a874146107b857806378648edf146107d857806380c581d1146107ed57600080fd5b80635c24b0741161018a5780635c24b0741461074d57806370a082311461076d578063715018a6146107a357600080fd5b806350a8e016146106f8578063590ffdce146107175780635a6f09181461073757600080fd5b8063285777511161027f57806333251a0b116102285780634bbb93eb116102025780634bbb93eb1461065f5780634e718e481461067f5780634fb2e45d1461069f5780634fbee193146106bf57600080fd5b806333251a0b14610605578063452ed4f1146106255780634ada218b1461064557600080fd5b80632e8fa821116102595780632e8fa821146105b3578063313ce567146105c957806332cde664146105e557600080fd5b806328577751146105725780632b112e49146105885780632b28fc7a1461059d57600080fd5b806307dd79e0116102ec57806313b4a7f4116102c657806313b4a7f4146104fd57806318160ddd1461051d57806323b872dd146105325780632610eaca1461055257600080fd5b806307dd79e01461047a578063095ea7b3146104a45780630dcbcf1c146104c457600080fd5b8063069d955f1161031d578063069d955f146103c857806306fdde031461041e5780630758d9241461045557600080fd5b806303fd2a451461034f5780630445b66714610382578063044df726146103a657600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b5061036561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b50610398600d5481565b604051908152602001610379565b3480156103b257600080fd5b506103c66103c13660046134e8565b6109fd565b005b3480156103d457600080fd5b506009546103f99061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610379565b34801561042a57600080fd5b506040805180820190915260058152644a6573757360d81b60208201525b6040516103799190613521565b34801561046157600080fd5b50600a546103659061010090046001600160a01b031681565b34801561048657600080fd5b50600a546104949060ff1681565b6040519015158152602001610379565b3480156104b057600080fd5b506104946104bf366004613584565b610abb565b3480156104d057600080fd5b506104946104df3660046135b0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561050957600080fd5b506103c66105183660046135cd565b610ad2565b34801561052957600080fd5b50610398610c90565b34801561053e57600080fd5b5061049461054d3660046135fb565b610cb4565b34801561055e57600080fd5b506103c661056d366004613712565b610d2c565b34801561057e57600080fd5b5061039860105481565b34801561059457600080fd5b50610398610ee1565b3480156105a957600080fd5b506103986103e881565b3480156105bf57600080fd5b50610398600e5481565b3480156105d557600080fd5b5060405160098152602001610379565b3480156105f157600080fd5b506103c66106003660046137eb565b610f62565b34801561061157600080fd5b506103c66106203660046135b0565b6110b6565b34801561063157600080fd5b50600b54610365906001600160a01b031681565b34801561065157600080fd5b506011546104949060ff1681565b34801561066b57600080fd5b5061039861067a36600461382e565b611167565b34801561068b57600080fd5b506103c661069a36600461382e565b61119b565b3480156106ab57600080fd5b506103c66106ba3660046135b0565b611239565b3480156106cb57600080fd5b506104946106da3660046135b0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561070457600080fd5b5060115461049490610100900460ff1681565b34801561072357600080fd5b506103c6610732366004613847565b61143b565b34801561074357600080fd5b5061039860125481565b34801561075957600080fd5b506103c66107683660046135b0565b6114ae565b34801561077957600080fd5b506103986107883660046135b0565b6001600160a01b031660009081526020819052604090205490565b3480156107af57600080fd5b506103c661168c565b3480156107c457600080fd5b50600c54610365906001600160a01b031681565b3480156107e457600080fd5b506103c66117b1565b3480156107f957600080fd5b506103c6610808366004613847565b611808565b34801561081957600080fd5b506013546001600160a01b0316610365565b34801561083757600080fd5b506104946119f2565b34801561084c57600080fd5b506103c6611a62565b34801561086157600080fd5b506040805180820190915260098152682920a82a27a9102b1960b91b6020820152610448565b34801561089357600080fd5b506104946108a2366004613584565b611cb8565b3480156108b357600080fd5b506103c66108c23660046135b0565b611ccf565b3480156108d357600080fd5b50600f546104949060ff1681565b3480156108ed57600080fd5b506103c66108fc3660046134e8565b611e69565b34801561090d57600080fd5b5061039861091c3660046135cd565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561095357600080fd5b506103c66109623660046135b0565b611f14565b34801561097357600080fd5b506103c66109823660046135b0565b612315565b34801561099357600080fd5b506103c66123d5565b3480156109a857600080fd5b506103c66109b7366004613865565b6124ae565b3480156109c857600080fd5b50600c5461049490600160a81b900460ff1681565b3480156109e957600080fd5b506103c66109f8366004613847565b61277c565b6013546001600160a01b03163314610a4a5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e83398151915260448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610a9f57600080fd5b505af1158015610ab3573d6000803e3d6000fd5b505050505050565b6000610ac83384846127ef565b5060015b92915050565b6013546001600160a01b03163314610b1a5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60085460ff16610b2957600080fd5b6001600160a01b0382163014801590610b4b57506001600160a01b0381163014155b8015610b655750600b546001600160a01b03838116911614155b8015610b7f5750600b546001600160a01b03828116911614155b610bb95760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610a41565b806001600160a01b0316826001600160a01b031603610c1b576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610c1790829061143b565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610c8590839061143b565b610c1781600161143b565b6000610c9e6009600a613991565b610caf9066025e20b05fa71c6139a0565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d19576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d139084906139b7565b90915550505b610d248484846128e8565b949350505050565b6013546001600160a01b03163314610d745760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b8051825114610dc55760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610a41565b60005b82518161ffff161015610edc57610de16009600a613991565b828261ffff1681518110610df757610df76139ca565b6020026020010151610e0991906139a0565b336000908152602081905260409020541015610e675760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610a41565b610ec933848361ffff1681518110610e8157610e816139ca565b60200260200101516009600a610e979190613991565b858561ffff1681518110610ead57610ead6139ca565b6020026020010151610ebf91906139a0565b6000806001612c7c565b5080610ed4816139e0565b915050610dc8565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610f3b9190613a01565b610f476009600a613991565b610f589066025e20b05fa71c6139a0565b610caf91906139b7565b6013546001600160a01b03163314610faa5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b600a5460ff1615610ffd5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610a41565b6103e88361ffff161115801561101957506103e88261ffff1611155b801561102b57506103e88161ffff1611155b6110775760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610a41565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b031633146110fe5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561114c57600080fd5b505af1158015611160573d6000803e3d6000fd5b5050505050565b600b546001600160a01b0316600090815260208190526040812054612710906111919084906139a0565b610acc9190613a14565b6013546001600160a01b031633146111e35760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60968111156112345760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610a41565b601055565b6013546001600160a01b031633146112815760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6001600160a01b0381166112fd5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a41565b61deac196001600160a01b0382160161137e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a41565b601354611395906001600160a01b0316600061143b565b6113a081600161143b565b6013546001600160a01b0316600090815260208190526040902054156113e9576013546001600160a01b03166000818152602081905260409020546113e791908390610ebf565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b031633146114835760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146114f65760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60115460ff161561150657600080fd5b306001600160a01b0382160361155e5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610a41565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156115e4575060408051601f3d908101601f191682019092526115e191810190613a36565b60015b6115ed57600080fd5b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601354925461166a93831692919004166000196127ef565b600a54610edc90309061010090046001600160a01b03166000196127ef565b50565b6013546001600160a01b031633146116d45760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60115460ff1661174c5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610a41565b601354611763906001600160a01b0316600061143b565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146117f95760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b600a805460ff19166001179055565b6013546001600160a01b031633146118505760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b806118c3576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610a9f57600080fd5b6002541561192a576203f480600254426118dd91906139b7565b1161192a5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610a41565b6001600160a01b03821660009081526001602052604090205460ff16156119935760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610a41565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610a85565b6013546000906001600160a01b03163314611a3d5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b600a54611a5c90309061010090046001600160a01b03166000196127ef565b50600190565b6013546001600160a01b03163314611aaa5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60115460ff1615611afd5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a41565b601154610100900460ff16611b545760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610a41565b6011546201000090046001600160a01b0316611b84576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611bf657600080fd5b505af1925050508015611c07575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611c8a575060408051601f3d908101601f19168201909252611c8791810190613a65565b60015b15611c9957600d91909155600e555b6011805460ff1990811660011790915560088054909116905542601255565b6000611cc53384846128e8565b5060019392505050565b6013546001600160a01b03163314611d175760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b601154610100900460ff1615611d7f57306001600160a01b03821603611d7f5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610a41565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa9190613a89565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edc9190613aa2565b6013546001600160a01b03163314611eb15760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611f5c5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b601154610100900460ff1615611fb45760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610a41565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201d9190613abf565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e9190613abf565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fd9190613abf565b600b546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661229357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218c9190613abf565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fd9190613abf565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561224a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226e9190613abf565b600b80546001600160a01b0319166001600160a01b03929092169190911790556122af565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610edc9230929104166000196127ef565b6013546001600160a01b0316331461235d5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6001600160a01b0381166123b35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610a41565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b0316331461241d5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b601154610100900460ff16156124755760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610a41565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611689573d6000803e3d6000fd5b6013546001600160a01b031633146124f65760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b82846125046009600a613991565b6125159066025e20b05fa71c6139a0565b61251f91906139a0565b6125299190613a14565b600d55808261253a6009600a613991565b61254b9066025e20b05fa71c6139a0565b61255591906139a0565b61255f9190613a14565b600e819055600d5411156125bf5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610a41565b600b546001600160a01b0316600090815260208190526040902054612710906125e99060966139a0565b6125f39190613a14565b600e5411156126505760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610a41565b620f42406126606009600a613991565b6126719066025e20b05fa71c6139a0565b61267b9190613a14565b600e5410156126e35760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a41565b620f42406126f36009600a613991565b6127049066025e20b05fa71c6139a0565b61270e9190613a14565b600d5410156127765760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a41565b50505050565b6013546001600160a01b031633146127c45760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661283b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a41565b6001600160a01b0382166128875760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a41565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661294e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a41565b6001600160a01b0383166129b05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a41565b60008211612a125760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a41565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612a405760019250612a6e565b6001600160a01b03861660009081526001602052604090205460ff1615612a6a5760019150612a6e565b5060015b612a788787612f2f565b15612b795760115460ff16612b795780612ad45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a41565b6001600160a01b03871660009081526005602052604090205460ff16158015612b1657506001600160a01b03861660009081526005602052604090205460ff16155b15612b795760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610a41565b8115612c6357600c54600160a01b900460ff16612c6357600c54600160a81b900460ff168015612bc257506001600160a01b03861660009081526007602052604090205460ff16155b8015612be757506001600160a01b03871660009081526007602052604090205460ff16155b15612c635730600090815260208190526040902054600d548110612c6157600e54600f5460ff1615612c4b57601054600b546001600160a01b031660009081526020819052604090205461271091612c3e916139a0565b612c489190613a14565b90505b808210612c56578091505b612c5f82613046565b505b505b612c71878787868686612c7c565b979650505050505050565b6000612c888787612f2f565b15612d225760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612d0b575060408051601f3d908101601f19168201909252612d0891810190613aa2565b60015b612d1457600080fd5b905080612d2057600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612d6457506001600160a01b03871660009081526006602052604090205460ff165b15612d6d575060005b6001600160a01b03881660009081526020819052604081208054889290612d959084906139b7565b909155506000905081612da85786612db4565b612db48988888861328a565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612dea9190613a01565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e3691815260200190565b60405180910390a3601154610100900460ff16612f2057612e578989613396565b601154610100900460ff16158015612e745750612e748989612f2f565b8015612e9957506001600160a01b03891660009081526005602052604090205460ff16155b8015612ebe57506001600160a01b03881660009081526005602052604090205460ff16155b8015612ec8575083155b15612f205760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610a41565b50600198975050505050505050565b6013546000906001600160a01b03848116911614801590612f5e57506013546001600160a01b03838116911614155b8015612f7557506013546001600160a01b03163214155b8015612f9a57506001600160a01b03821660009081526004602052604090205460ff16155b8015612fbf57506001600160a01b03831660009081526004602052604090205460ff16155b8015612fd657506001600160a01b03821661dead14155b8015612fea57506001600160a01b03821615155b8015612fff57506001600160a01b0383163014155b801561301f57506011546001600160a01b03848116620100009092041614155b801561303f57506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146130bc57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106130f1576130f16139ca565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131889190613abf565b8160018151811061319b5761319b6139ca565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906131e8908590600090869030904290600401613adc565b600060405180830381600087803b15801561320257600080fd5b505af1925050508015613213575060015b61321d575061327a565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d806000811461326f576040519150601f19603f3d011682016040523d82523d6000602084013e613274565b606091505b50505050505b50600c805460ff60a01b19169055565b60008083156132a0575060095461ffff166132ca565b82156132b9575060095462010000900461ffff166132ca565b50600954640100000000900461ffff165b806000036132db5784915050610d24565b6011546201000090046001600160a01b0316301480156132fc575046606114155b1561330657506111945b600061271061331583886139a0565b61331f9190613a14565b9050801561338c573060009081526020819052604081208054839290613346908490613a01565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612c7181876139b7565b601154610100900460ff16156133fa5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610a41565b6134048282612f2f565b15801561341e5750600b546001600160a01b038281169116145b15610c17576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff001916610100179081905562010000900416613496576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611f08565b801515811461168957600080fd5b600080604083850312156134fb57600080fd5b8235613506816134da565b91506020830135613516816134da565b809150509250929050565b600060208083528351808285015260005b8181101561354e57858101830151858201604001528201613532565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168957600080fd5b6000806040838503121561359757600080fd5b82356135a28161356f565b946020939093013593505050565b6000602082840312156135c257600080fd5b813561303f8161356f565b600080604083850312156135e057600080fd5b82356135eb8161356f565b915060208301356135168161356f565b60008060006060848603121561361057600080fd5b833561361b8161356f565b9250602084013561362b8161356f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561367b5761367b61363c565b604052919050565b600067ffffffffffffffff82111561369d5761369d61363c565b5060051b60200190565b600082601f8301126136b857600080fd5b813560206136cd6136c883613683565b613652565b82815260059290921b840181019181810190868411156136ec57600080fd5b8286015b8481101561370757803583529183019183016136f0565b509695505050505050565b6000806040838503121561372557600080fd5b823567ffffffffffffffff8082111561373d57600080fd5b818501915085601f83011261375157600080fd5b813560206137616136c883613683565b82815260059290921b8401810191818101908984111561378057600080fd5b948201945b838610156137a75785356137988161356f565b82529482019490820190613785565b965050860135925050808211156137bd57600080fd5b506137ca858286016136a7565b9150509250929050565b803561ffff811681146137e657600080fd5b919050565b60008060006060848603121561380057600080fd5b613809846137d4565b9250613817602085016137d4565b9150613825604085016137d4565b90509250925092565b60006020828403121561384057600080fd5b5035919050565b6000806040838503121561385a57600080fd5b82356135068161356f565b6000806000806080858703121561387b57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156138e85781600019048211156138ce576138ce613897565b808516156138db57918102915b93841c93908002906138b2565b509250929050565b6000826138ff57506001610acc565b8161390c57506000610acc565b8160018114613922576002811461392c57613948565b6001915050610acc565b60ff84111561393d5761393d613897565b50506001821b610acc565b5060208310610133831016604e8410600b841016171561396b575081810a610acc565b61397583836138ad565b806000190482111561398957613989613897565b029392505050565b600061303f60ff8416836138f0565b8082028115828204841417610acc57610acc613897565b81810381811115610acc57610acc613897565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036139f7576139f7613897565b6001019392505050565b80820180821115610acc57610acc613897565b600082613a3157634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613a4957600080fd5b8251613a548161356f565b60208401519092506135168161356f565b60008060408385031215613a7857600080fd5b505080516020909101519092909150565b600060208284031215613a9b57600080fd5b5051919050565b600060208284031215613ab457600080fd5b815161303f816134da565b600060208284031215613ad157600080fd5b815161303f8161356f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b2c5784516001600160a01b031683529383019391830191600101613b07565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212200d1e3bedd81f4cb5c7c3163a5d9fe7bc808573a641b9e20b9da0ebd91d8fc9c064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103435760003560e01c806350a8e016116101b0578063a9059cbb116100ec578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610987578063fb78680d1461099c578063fdb78c0e146109bc578063feadde9c146109dd57600080fd5b8063dd62ed3e14610901578063eafb5a3c14610947578063eb50e70e1461096757600080fd5b8063b3d514fb116100c6578063b3d514fb1461059d578063b7df8b36146108c7578063bfc2fc35146108e157600080fd5b8063a9059cbb14610887578063ab558e4d146108a7578063b1b08f711461059d57600080fd5b806375f0a87411610159578063893d20e811610133578063893d20e81461080d5780638a63bd9b1461082b5780638a8c523c1461084057806395d89b411461085557600080fd5b806375f0a874146107b857806378648edf146107d857806380c581d1146107ed57600080fd5b80635c24b0741161018a5780635c24b0741461074d57806370a082311461076d578063715018a6146107a357600080fd5b806350a8e016146106f8578063590ffdce146107175780635a6f09181461073757600080fd5b8063285777511161027f57806333251a0b116102285780634bbb93eb116102025780634bbb93eb1461065f5780634e718e481461067f5780634fb2e45d1461069f5780634fbee193146106bf57600080fd5b806333251a0b14610605578063452ed4f1146106255780634ada218b1461064557600080fd5b80632e8fa821116102595780632e8fa821146105b3578063313ce567146105c957806332cde664146105e557600080fd5b806328577751146105725780632b112e49146105885780632b28fc7a1461059d57600080fd5b806307dd79e0116102ec57806313b4a7f4116102c657806313b4a7f4146104fd57806318160ddd1461051d57806323b872dd146105325780632610eaca1461055257600080fd5b806307dd79e01461047a578063095ea7b3146104a45780630dcbcf1c146104c457600080fd5b8063069d955f1161031d578063069d955f146103c857806306fdde031461041e5780630758d9241461045557600080fd5b806303fd2a451461034f5780630445b66714610382578063044df726146103a657600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b5061036561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b50610398600d5481565b604051908152602001610379565b3480156103b257600080fd5b506103c66103c13660046134e8565b6109fd565b005b3480156103d457600080fd5b506009546103f99061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610379565b34801561042a57600080fd5b506040805180820190915260058152644a6573757360d81b60208201525b6040516103799190613521565b34801561046157600080fd5b50600a546103659061010090046001600160a01b031681565b34801561048657600080fd5b50600a546104949060ff1681565b6040519015158152602001610379565b3480156104b057600080fd5b506104946104bf366004613584565b610abb565b3480156104d057600080fd5b506104946104df3660046135b0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561050957600080fd5b506103c66105183660046135cd565b610ad2565b34801561052957600080fd5b50610398610c90565b34801561053e57600080fd5b5061049461054d3660046135fb565b610cb4565b34801561055e57600080fd5b506103c661056d366004613712565b610d2c565b34801561057e57600080fd5b5061039860105481565b34801561059457600080fd5b50610398610ee1565b3480156105a957600080fd5b506103986103e881565b3480156105bf57600080fd5b50610398600e5481565b3480156105d557600080fd5b5060405160098152602001610379565b3480156105f157600080fd5b506103c66106003660046137eb565b610f62565b34801561061157600080fd5b506103c66106203660046135b0565b6110b6565b34801561063157600080fd5b50600b54610365906001600160a01b031681565b34801561065157600080fd5b506011546104949060ff1681565b34801561066b57600080fd5b5061039861067a36600461382e565b611167565b34801561068b57600080fd5b506103c661069a36600461382e565b61119b565b3480156106ab57600080fd5b506103c66106ba3660046135b0565b611239565b3480156106cb57600080fd5b506104946106da3660046135b0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561070457600080fd5b5060115461049490610100900460ff1681565b34801561072357600080fd5b506103c6610732366004613847565b61143b565b34801561074357600080fd5b5061039860125481565b34801561075957600080fd5b506103c66107683660046135b0565b6114ae565b34801561077957600080fd5b506103986107883660046135b0565b6001600160a01b031660009081526020819052604090205490565b3480156107af57600080fd5b506103c661168c565b3480156107c457600080fd5b50600c54610365906001600160a01b031681565b3480156107e457600080fd5b506103c66117b1565b3480156107f957600080fd5b506103c6610808366004613847565b611808565b34801561081957600080fd5b506013546001600160a01b0316610365565b34801561083757600080fd5b506104946119f2565b34801561084c57600080fd5b506103c6611a62565b34801561086157600080fd5b506040805180820190915260098152682920a82a27a9102b1960b91b6020820152610448565b34801561089357600080fd5b506104946108a2366004613584565b611cb8565b3480156108b357600080fd5b506103c66108c23660046135b0565b611ccf565b3480156108d357600080fd5b50600f546104949060ff1681565b3480156108ed57600080fd5b506103c66108fc3660046134e8565b611e69565b34801561090d57600080fd5b5061039861091c3660046135cd565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561095357600080fd5b506103c66109623660046135b0565b611f14565b34801561097357600080fd5b506103c66109823660046135b0565b612315565b34801561099357600080fd5b506103c66123d5565b3480156109a857600080fd5b506103c66109b7366004613865565b6124ae565b3480156109c857600080fd5b50600c5461049490600160a81b900460ff1681565b3480156109e957600080fd5b506103c66109f8366004613847565b61277c565b6013546001600160a01b03163314610a4a5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e83398151915260448201526064015b60405180910390fd5b60115460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610a9f57600080fd5b505af1158015610ab3573d6000803e3d6000fd5b505050505050565b6000610ac83384846127ef565b5060015b92915050565b6013546001600160a01b03163314610b1a5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60085460ff16610b2957600080fd5b6001600160a01b0382163014801590610b4b57506001600160a01b0381163014155b8015610b655750600b546001600160a01b03838116911614155b8015610b7f5750600b546001600160a01b03828116911614155b610bb95760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610a41565b806001600160a01b0316826001600160a01b031603610c1b576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610c1790829061143b565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610c8590839061143b565b610c1781600161143b565b6000610c9e6009600a613991565b610caf9066025e20b05fa71c6139a0565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d19576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d139084906139b7565b90915550505b610d248484846128e8565b949350505050565b6013546001600160a01b03163314610d745760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b8051825114610dc55760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610a41565b60005b82518161ffff161015610edc57610de16009600a613991565b828261ffff1681518110610df757610df76139ca565b6020026020010151610e0991906139a0565b336000908152602081905260409020541015610e675760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610a41565b610ec933848361ffff1681518110610e8157610e816139ca565b60200260200101516009600a610e979190613991565b858561ffff1681518110610ead57610ead6139ca565b6020026020010151610ebf91906139a0565b6000806001612c7c565b5080610ed4816139e0565b915050610dc8565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610f3b9190613a01565b610f476009600a613991565b610f589066025e20b05fa71c6139a0565b610caf91906139b7565b6013546001600160a01b03163314610faa5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b600a5460ff1615610ffd5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610a41565b6103e88361ffff161115801561101957506103e88261ffff1611155b801561102b57506103e88161ffff1611155b6110775760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610a41565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b031633146110fe5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6011546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561114c57600080fd5b505af1158015611160573d6000803e3d6000fd5b5050505050565b600b546001600160a01b0316600090815260208190526040812054612710906111919084906139a0565b610acc9190613a14565b6013546001600160a01b031633146111e35760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60968111156112345760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610a41565b601055565b6013546001600160a01b031633146112815760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6001600160a01b0381166112fd5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a41565b61deac196001600160a01b0382160161137e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610a41565b601354611395906001600160a01b0316600061143b565b6113a081600161143b565b6013546001600160a01b0316600090815260208190526040902054156113e9576013546001600160a01b03166000818152602081905260409020546113e791908390610ebf565b505b601380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6013546001600160a01b031633146114835760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146114f65760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60115460ff161561150657600080fd5b306001600160a01b0382160361155e5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610a41565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af19250505080156115e4575060408051601f3d908101601f191682019092526115e191810190613a36565b60015b6115ed57600080fd5b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff19169091179055601354925461166a93831692919004166000196127ef565b600a54610edc90309061010090046001600160a01b03166000196127ef565b50565b6013546001600160a01b031633146116d45760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60115460ff1661174c5760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610a41565b601354611763906001600160a01b0316600061143b565b601380546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146117f95760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b600a805460ff19166001179055565b6013546001600160a01b031633146118505760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b806118c3576001600160a01b03828116600081815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610a9f57600080fd5b6002541561192a576203f480600254426118dd91906139b7565b1161192a5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610a41565b6001600160a01b03821660009081526001602052604090205460ff16156119935760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610a41565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610a85565b6013546000906001600160a01b03163314611a3d5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b600a54611a5c90309061010090046001600160a01b03166000196127ef565b50600190565b6013546001600160a01b03163314611aaa5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b60115460ff1615611afd5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a41565b601154610100900460ff16611b545760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610a41565b6011546201000090046001600160a01b0316611b84576011805462010000600160b01b0319163062010000021790555b601154600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611bf657600080fd5b505af1925050508015611c07575060015b50601154600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611c8a575060408051601f3d908101601f19168201909252611c8791810190613a65565b60015b15611c9957600d91909155600e555b6011805460ff1990811660011790915560088054909116905542601255565b6000611cc53384846128e8565b5060019392505050565b6013546001600160a01b03163314611d175760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b601154610100900460ff1615611d7f57306001600160a01b03821603611d7f5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610a41565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611dd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfa9190613a89565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611e45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edc9190613aa2565b6013546001600160a01b03163314611eb15760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b600c805460ff60a81b1916600160a81b84151590810291909117909155600f805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611f5c5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b601154610100900460ff1615611fb45760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610a41565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201d9190613abf565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561206a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208e9190613abf565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fd9190613abf565b600b546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661229357816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218c9190613abf565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fd9190613abf565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561224a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226e9190613abf565b600b80546001600160a01b0319166001600160a01b03929092169190911790556122af565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154610edc9230929104166000196127ef565b6013546001600160a01b0316331461235d5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6001600160a01b0381166123b35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610a41565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b0316331461241d5760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b601154610100900460ff16156124755760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610a41565b6013546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611689573d6000803e3d6000fd5b6013546001600160a01b031633146124f65760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b82846125046009600a613991565b6125159066025e20b05fa71c6139a0565b61251f91906139a0565b6125299190613a14565b600d55808261253a6009600a613991565b61254b9066025e20b05fa71c6139a0565b61255591906139a0565b61255f9190613a14565b600e819055600d5411156125bf5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610a41565b600b546001600160a01b0316600090815260208190526040902054612710906125e99060966139a0565b6125f39190613a14565b600e5411156126505760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610a41565b620f42406126606009600a613991565b6126719066025e20b05fa71c6139a0565b61267b9190613a14565b600e5410156126e35760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a41565b620f42406126f36009600a613991565b6127049066025e20b05fa71c6139a0565b61270e9190613a14565b600d5410156127765760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610a41565b50505050565b6013546001600160a01b031633146127c45760405162461bcd60e51b81526020600482015260116024820152600080516020613b4e8339815191526044820152606401610a41565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b03831661283b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a41565b6001600160a01b0382166128875760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a41565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661294e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a41565b6001600160a01b0383166129b05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a41565b60008211612a125760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a41565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612a405760019250612a6e565b6001600160a01b03861660009081526001602052604090205460ff1615612a6a5760019150612a6e565b5060015b612a788787612f2f565b15612b795760115460ff16612b795780612ad45760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a41565b6001600160a01b03871660009081526005602052604090205460ff16158015612b1657506001600160a01b03861660009081526005602052604090205460ff16155b15612b795760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610a41565b8115612c6357600c54600160a01b900460ff16612c6357600c54600160a81b900460ff168015612bc257506001600160a01b03861660009081526007602052604090205460ff16155b8015612be757506001600160a01b03871660009081526007602052604090205460ff16155b15612c635730600090815260208190526040902054600d548110612c6157600e54600f5460ff1615612c4b57601054600b546001600160a01b031660009081526020819052604090205461271091612c3e916139a0565b612c489190613a14565b90505b808210612c56578091505b612c5f82613046565b505b505b612c71878787868686612c7c565b979650505050505050565b6000612c888787612f2f565b15612d225760115460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612d0b575060408051601f3d908101601f19168201909252612d0891810190613aa2565b60015b612d1457600080fd5b905080612d2057600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612d6457506001600160a01b03871660009081526006602052604090205460ff165b15612d6d575060005b6001600160a01b03881660009081526020819052604081208054889290612d959084906139b7565b909155506000905081612da85786612db4565b612db48988888861328a565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612dea9190613a01565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612e3691815260200190565b60405180910390a3601154610100900460ff16612f2057612e578989613396565b601154610100900460ff16158015612e745750612e748989612f2f565b8015612e9957506001600160a01b03891660009081526005602052604090205460ff16155b8015612ebe57506001600160a01b03881660009081526005602052604090205460ff16155b8015612ec8575083155b15612f205760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610a41565b50600198975050505050505050565b6013546000906001600160a01b03848116911614801590612f5e57506013546001600160a01b03838116911614155b8015612f7557506013546001600160a01b03163214155b8015612f9a57506001600160a01b03821660009081526004602052604090205460ff16155b8015612fbf57506001600160a01b03831660009081526004602052604090205460ff16155b8015612fd657506001600160a01b03821661dead14155b8015612fea57506001600160a01b03821615155b8015612fff57506001600160a01b0383163014155b801561301f57506011546001600160a01b03848116620100009092041614155b801561303f57506011546001600160a01b03838116620100009092041614155b9392505050565b600c805460ff60a01b1916600160a01b179055306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902054600019146130bc57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106130f1576130f16139ca565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131889190613abf565b8160018151811061319b5761319b6139ca565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906131e8908590600090869030904290600401613adc565b600060405180830381600087803b15801561320257600080fd5b505af1925050508015613213575060015b61321d575061327a565b600c546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d806000811461326f576040519150601f19603f3d011682016040523d82523d6000602084013e613274565b606091505b50505050505b50600c805460ff60a01b19169055565b60008083156132a0575060095461ffff166132ca565b82156132b9575060095462010000900461ffff166132ca565b50600954640100000000900461ffff165b806000036132db5784915050610d24565b6011546201000090046001600160a01b0316301480156132fc575046606114155b1561330657506111945b600061271061331583886139a0565b61331f9190613a14565b9050801561338c573060009081526020819052604081208054839290613346908490613a01565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612c7181876139b7565b601154610100900460ff16156133fa5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610a41565b6134048282612f2f565b15801561341e5750600b546001600160a01b038281169116145b15610c17576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556011805461ff001916610100179081905562010000900416613496576011805462010000600160b01b0319163062010000021790555b600c805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611f08565b801515811461168957600080fd5b600080604083850312156134fb57600080fd5b8235613506816134da565b91506020830135613516816134da565b809150509250929050565b600060208083528351808285015260005b8181101561354e57858101830151858201604001528201613532565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461168957600080fd5b6000806040838503121561359757600080fd5b82356135a28161356f565b946020939093013593505050565b6000602082840312156135c257600080fd5b813561303f8161356f565b600080604083850312156135e057600080fd5b82356135eb8161356f565b915060208301356135168161356f565b60008060006060848603121561361057600080fd5b833561361b8161356f565b9250602084013561362b8161356f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561367b5761367b61363c565b604052919050565b600067ffffffffffffffff82111561369d5761369d61363c565b5060051b60200190565b600082601f8301126136b857600080fd5b813560206136cd6136c883613683565b613652565b82815260059290921b840181019181810190868411156136ec57600080fd5b8286015b8481101561370757803583529183019183016136f0565b509695505050505050565b6000806040838503121561372557600080fd5b823567ffffffffffffffff8082111561373d57600080fd5b818501915085601f83011261375157600080fd5b813560206137616136c883613683565b82815260059290921b8401810191818101908984111561378057600080fd5b948201945b838610156137a75785356137988161356f565b82529482019490820190613785565b965050860135925050808211156137bd57600080fd5b506137ca858286016136a7565b9150509250929050565b803561ffff811681146137e657600080fd5b919050565b60008060006060848603121561380057600080fd5b613809846137d4565b9250613817602085016137d4565b9150613825604085016137d4565b90509250925092565b60006020828403121561384057600080fd5b5035919050565b6000806040838503121561385a57600080fd5b82356135068161356f565b6000806000806080858703121561387b57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156138e85781600019048211156138ce576138ce613897565b808516156138db57918102915b93841c93908002906138b2565b509250929050565b6000826138ff57506001610acc565b8161390c57506000610acc565b8160018114613922576002811461392c57613948565b6001915050610acc565b60ff84111561393d5761393d613897565b50506001821b610acc565b5060208310610133831016604e8410600b841016171561396b575081810a610acc565b61397583836138ad565b806000190482111561398957613989613897565b029392505050565b600061303f60ff8416836138f0565b8082028115828204841417610acc57610acc613897565b81810381811115610acc57610acc613897565b634e487b7160e01b600052603260045260246000fd5b600061ffff8083168181036139f7576139f7613897565b6001019392505050565b80820180821115610acc57610acc613897565b600082613a3157634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613a4957600080fd5b8251613a548161356f565b60208401519092506135168161356f565b60008060408385031215613a7857600080fd5b505080516020909101519092909150565b600060208284031215613a9b57600080fd5b5051919050565b600060208284031215613ab457600080fd5b815161303f816134da565b600060208284031215613ad157600080fd5b815161303f8161356f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613b2c5784516001600160a01b031683529383019391830191600101613b07565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212200d1e3bedd81f4cb5c7c3163a5d9fe7bc808573a641b9e20b9da0ebd91d8fc9c064736f6c63430008130033

Deployed Bytecode Sourcemap

4090:19480:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5440:73;;;;;;;;;;;;5471:42;5440:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5440:73:0;;;;;;;;5689:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5689:28:0;245:177:1;13230:153:0;;;;;;;;;;-1:-1:-1;13230:153:0;;;;;:::i;:::-;;:::i;:::-;;5026:108;;;;;;;;;;-1:-1:-1;5026:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5026:108:0;931:365:1;8965:80:0;;;;;;;;;;-1:-1:-1;9037:5:0;;;;;;;;;;;;-1:-1:-1;;;9037:5:0;;;;8965:80;;;;;;;:::i;5379:26::-;;;;;;;;;;-1:-1:-1;5379:26:0;;;;;;;-1:-1:-1;;;;;5379:26:0;;;5346;;;;;;;;;;-1:-1:-1;5346:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5346:26:0;2102:187:1;9573:161:0;;;;;;;;;;-1:-1:-1;9573:161:0;;;;;:::i;:::-;;:::i;12659:140::-;;;;;;;;;;-1:-1:-1;12659:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;12757:34:0;12733:4;12757:34;;;:25;:34;;;;;;;;;12659:140;15641:809;;;;;;;;;;-1:-1:-1;15641:809:0;;;;;:::i;:::-;;:::i;8700:83::-;;;;;;;;;;;;;:::i;10243:306::-;;;;;;;;;;-1:-1:-1;10243:306:0;;;;;:::i;:::-;;:::i;21282:447::-;;;;;;;;;;-1:-1:-1;21282:447:0;;;;;:::i;:::-;;:::i;5797:33::-;;;;;;;;;;;;;;;;12963:141;;;;;;;;;;;;;:::i;5143:42::-;;;;;;;;;;;;5181:4;5143:42;;5724:25;;;;;;;;;;;;;;;;8789:80;;;;;;;;;;-1:-1:-1;8789:80:0;;4838:1;6508:36:1;;6496:2;6481:18;8789:80:0;6366:184:1;13581:453:0;;;;;;;;;;-1:-1:-1;13581:453:0;;;;;:::i;:::-;;:::i;13112:110::-;;;;;;;;;;-1:-1:-1;13112:110:0;;;;;:::i;:::-;;:::i;5412:21::-;;;;;;;;;;-1:-1:-1;5412:21:0;;;;-1:-1:-1;;;;;5412:21:0;;;5837:34;;;;;;;;;;-1:-1:-1;5837:34:0;;;;;;;;14241:189;;;;;;;;;;-1:-1:-1;14241:189:0;;;;;:::i;:::-;;:::i;15145:217::-;;;;;;;;;;-1:-1:-1;15145:217:0;;;;;:::i;:::-;;:::i;7332:654::-;;;;;;;;;;-1:-1:-1;7332:654:0;;;;;:::i;:::-;;:::i;12382:127::-;;;;;;;;;;-1:-1:-1;12382:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;12473:28:0;12449:4;12473:28;;;:19;:28;;;;;;;;;12382:127;5878:36;;;;;;;;;;-1:-1:-1;5878:36:0;;;;;;;;;;;12517:134;;;;;;;;;;-1:-1:-1;12517:134:0;;;;;:::i;:::-;;:::i;5951:26::-;;;;;;;;;;;;;;;;11817:557;;;;;;;;;;-1:-1:-1;11817:557:0;;;;;:::i;:::-;;:::i;9275:117::-;;;;;;;;;;-1:-1:-1;9275:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;9368:16:0;9341:7;9368:16;;;;;;;;;;;;9275:117;7994:310;;;;;;;;;;;;;:::i;5520:92::-;;;;;;;;;;-1:-1:-1;5520:92:0;;;;-1:-1:-1;;;;;5520:92:0;;;13391:182;;;;;;;;;;;;;:::i;11245:564::-;;;;;;;;;;-1:-1:-1;11245:564:0;;;;;:::i;:::-;;:::i;9051:79::-;;;;;;;;;;-1:-1:-1;9121:6:0;;-1:-1:-1;;;;;9121:6:0;9051:79;;10060:175;;;;;;;;;;;;;:::i;20043:737::-;;;;;;;;;;;;;:::i;8875:84::-;;;;;;;;;;-1:-1:-1;8949:7:0;;;;;;;;;;;;-1:-1:-1;;;8949:7:0;;;;8875:84;;9400:165;;;;;;;;;;-1:-1:-1;9400:165:0;;;;;:::i;:::-;;:::i;20978:296::-;;;;;;;;;;-1:-1:-1;20978:296:0;;;;;:::i;:::-;;:::i;5756:34::-;;;;;;;;;;-1:-1:-1;5756:34:0;;;;;;;;15370:263;;;;;;;;;;-1:-1:-1;15370:263:0;;;;;:::i;:::-;;:::i;9136:133::-;;;;;;;;;;-1:-1:-1;9136:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9238:19:0;;;9220:7;9238:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9136:133;10557:680;;;;;;;;;;-1:-1:-1;10557:680:0;;;;;:::i;:::-;;:::i;14042:191::-;;;;;;;;;;-1:-1:-1;14042:191:0;;;;;:::i;:::-;;:::i;20788:182::-;;;;;;;;;;;;;:::i;14438:699::-;;;;;;;;;;-1:-1:-1;14438:699:0;;;;;:::i;:::-;;:::i;5643:39::-;;;;;;;;;;-1:-1:-1;5643:39:0;;;;-1:-1:-1;;;5643:39:0;;;;;;12807:148;;;;;;;;;;-1:-1:-1;12807:148:0;;;;;:::i;:::-;;:::i;13230:153::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;;;;;;;;;13325:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;13325:50:0;;9054:14:1;;9047:22;13325:50:0::1;::::0;::::1;9029:41:1::0;9113:14;;9106:22;9086:18;;;9079:50;13325:11:0;;;::::1;-1:-1:-1::0;;;;;13325:11:0::1;::::0;:26:::1;::::0;9002:18:1;;13325:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13230:153:::0;;:::o;9573:161::-;9650:4;9667:37;9676:10;9688:7;9697:6;9667:8;:37::i;:::-;-1:-1:-1;9722:4:0;9573:161;;;;;:::o;15641:809::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;15745:23:::1;::::0;::::1;;15737:32;;;::::0;::::1;;-1:-1:-1::0;;;;;15788:23:0;::::1;15806:4;15788:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;15833:24:0;::::1;15852:4;15833:24;;15788:69;:107;;;;-1:-1:-1::0;15879:6:0::1;::::0;-1:-1:-1;;;;;15879:16:0;;::::1;:6:::0;::::1;:16;;15788:107;:146;;;;-1:-1:-1::0;15917:6:0::1;::::0;-1:-1:-1;;;;;15917:17:0;;::::1;:6:::0;::::1;:17;;15788:146;15780:170;;;::::0;-1:-1:-1;;;15780:170:0;;9342:2:1;15780:170:0::1;::::0;::::1;9324:21:1::0;9381:2;9361:18;;;9354:30;-1:-1:-1;;;9400:18:1;;;9393:41;9451:18;;15780:170:0::1;9140:335:1::0;15780:170:0::1;15975:7;-1:-1:-1::0;;;;;15965:17:0::1;:6;-1:-1:-1::0;;;;;15965:17:0::1;::::0;15961:482:::1;;-1:-1:-1::0;;;;;15999:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;16028:4:::1;-1:-1:-1::0;;15999:33:0;;::::1;::::0;::::1;::::0;;;16047:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;16094:34:::1;::::0;15999:26;;16094:19:::1;:34::i;:::-;15641:809:::0;;:::o;15961:482::-:1;-1:-1:-1::0;;;;;16161:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;16189:4:::1;-1:-1:-1::0;;16161:32:0;;::::1;::::0;::::1;::::0;;;16208:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;16256:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;16302:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;16349:33:::1;::::0;16161:25;;16349:19:::1;:33::i;:::-;16397:34;16417:7;16426:4;16397:19;:34::i;8700:83::-:0;8755:7;4898:13;4838:1;4898:2;:13;:::i;:::-;4881:30;;4679:19;4881:30;:::i;:::-;8766:14;;8700:83;:::o;10243:306::-;-1:-1:-1;;;;;10364:19:0;;10343:4;10364:19;;;:11;:19;;;;;;;;10384:10;10364:31;;;;;;;;-1:-1:-1;;10364:52:0;10360:126;;-1:-1:-1;;;;;10433:19:0;;;;;;:11;:19;;;;;;;;10453:10;10433:31;;;;;;;:41;;10468:6;;10433:19;:41;;10468:6;;10433:41;:::i;:::-;;;;-1:-1:-1;;10360:126:0;10505:36;10515:6;10523:9;10534:6;10505:9;:36::i;:::-;10498:43;10243:306;-1:-1:-1;;;;10243:306:0:o;21282:447::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;21417:7:::1;:14;21398:8;:15;:33;21390:67;;;::::0;-1:-1:-1;;;21390:67:0;;11503:2:1;21390:67:0::1;::::0;::::1;11485:21:1::0;11542:2;11522:18;;;11515:30;11581:23;11561:18;;;11554:51;11622:18;;21390:67:0::1;11301:345:1::0;21390:67:0::1;21473:8;21468:254;21491:8;:15;21487:1;:19;;;21468:254;;;21572:13;4838:1;21572:2;:13;:::i;:::-;21561:7;21569:1;21561:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21546:10;9341:7:::0;9368:16;;;;;;;;;;;21536:49:::1;;21528:80;;;::::0;-1:-1:-1;;;21528:80:0;;11985:2:1;21528:80:0::1;::::0;::::1;11967:21:1::0;12024:2;12004:18;;;11997:30;12063:20;12043:18;;;12036:48;12101:18;;21528:80:0::1;11783:342:1::0;21528:80:0::1;21623:87;21640:10;21652:8;21661:1;21652:11;;;;;;;;;;:::i;:::-;;;;;;;4838:1;21676:2;:13;;;;:::i;:::-;21665:7;21673:1;21665:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21691:5;21698::::0;21705:4:::1;21623:16;:87::i;:::-;-1:-1:-1::0;21508:3:0;::::1;::::0;::::1;:::i;:::-;;;;21468:254;;;;21282:447:::0;;:::o;12963:141::-;13016:7;9368:16;;;;;;5471:42;9368:16;;;;13055:39;;9368:16;13055:39;:::i;:::-;4898:13;4838:1;4898:2;:13;:::i;:::-;4881:30;;4679:19;4881:30;:::i;:::-;13044:51;;;;:::i;13581:453::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;13689:14:::1;::::0;::::1;;13688:15;13680:45;;;::::0;-1:-1:-1;;;13680:45:0;;12664:2:1;13680:45:0::1;::::0;::::1;12646:21:1::0;12703:2;12683:18;;;12676:30;12742:19;12722:18;;;12715:47;12779:18;;13680:45:0::1;12462:341:1::0;13680:45:0::1;5181:4;13744:6;:21;;;;:65;;;;;5231:4;13786:7;:23;;;;13744:65;:117;;;;;5285:4;13830:11;:31;;;;13744:117;13736:170;;;::::0;-1:-1:-1;;;13736:170:0;;13010:2:1;13736:170:0::1;::::0;::::1;12992:21:1::0;13049:2;13029:18;;;13022:30;13088:25;13068:18;;;13061:53;13131:18;;13736:170:0::1;12808:347:1::0;13736:170:0::1;13917:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;13953:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;13991:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;13581:453::o;13112:110::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;13181:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;13181:33:0;;-1:-1:-1;;;;;178:55:1;;;13181:33:0::1;::::0;::::1;160:74:1::0;13181:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;13181:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13112:110:::0;:::o;14241:189::-;14370:6;;-1:-1:-1;;;;;14370:6:0;14332:7;9368:16;;;;;;;;;;;5332:5;;14360:41;;14380:21;;14360:41;:::i;:::-;14359:62;;;;:::i;15145:217::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;15275:3:::1;15249:22;:29;;15241:64;;;::::0;-1:-1:-1;;;15241:64:0;;13584:2:1;15241:64:0::1;::::0;::::1;13566:21:1::0;13623:2;13603:18;;;13596:30;13662:24;13642:18;;;13635:52;13704:18;;15241:64:0::1;13382:346:1::0;15241:64:0::1;15316:13;:38:::0;15145:217::o;7332:654::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;-1:-1:-1;;;;;7411:22:0;::::1;7403:96;;;::::0;-1:-1:-1;;;7403:96:0;;13935:2:1;7403:96:0::1;::::0;::::1;13917:21:1::0;13974:2;13954:18;;;13947:30;14013:34;13993:18;;;13986:62;14084:31;14064:18;;;14057:59;14133:19;;7403:96:0::1;13733:425:1::0;7403:96:0::1;-1:-1:-1::0;;;;;;;7518:16:0;::::1;::::0;7510:90:::1;;;::::0;-1:-1:-1;;;7510:90:0;;13935:2:1;7510:90:0::1;::::0;::::1;13917:21:1::0;13974:2;13954:18;;;13947:30;14013:34;13993:18;;;13986:62;14084:31;14064:18;;;14057:59;14133:19;;7510:90:0::1;13733:425:1::0;7510:90:0::1;7631:6;::::0;7611:34:::1;::::0;-1:-1:-1;;;;;7631:6:0::1;;7611:19;:34::i;:::-;7656:35;7676:8;7686:4;7656:19;:35::i;:::-;7726:6;::::0;-1:-1:-1;;;;;7726:6:0::1;7736:1;9368:16:::0;;;;;;;;;;;7716:21;7712:127:::1;;7771:6;::::0;-1:-1:-1;;;;;7771:6:0::1;9341:7:::0;9368:16;;;;;;;;;;;7754:73:::1;::::0;7771:6;7779:8;;7789:17:::1;9275:117:::0;7754:73:::1;;7712:127;7878:6;::::0;;-1:-1:-1;;;;;7895:17:0;;::::1;-1:-1:-1::0;;;;;;7895:17:0;::::1;::::0;::::1;::::0;;;7928:40:::1;::::0;7878:6;::::1;::::0;7895:17;7878:6;;7928:40:::1;::::0;7859:16:::1;::::0;7928:40:::1;7392:594;7332:654:::0;:::o;12517:134::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;-1:-1:-1;;;;;12605:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;12605:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12517:134::o;11817:557::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;11892:14:::1;::::0;::::1;;11891:15;11883:24;;;::::0;::::1;;11942:4;-1:-1:-1::0;;;;;11926:21:0;::::1;::::0;11918:48:::1;;;::::0;-1:-1:-1;;;11918:48:0;;14365:2:1;11918:48:0::1;::::0;::::1;14347:21:1::0;14404:2;14384:18;;;14377:30;14443:16;14423:18;;;14416:44;14477:18;;11918:48:0::1;14163:338:1::0;11918:48:0::1;11977:11;:31:::0;;-1:-1:-1;;;;;;11977:31:0::1;::::0;-1:-1:-1;;;;;11977:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12023:23:::1;::::0;;-1:-1:-1;;;12023:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12023:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12023:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12023:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12019:348;;12356:8;::::0;::::1;12019:348;12110:9;:29:::0;;-1:-1:-1;;12110:29:0::1;;-1:-1:-1::0;;;;;12110:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12141:6:::1;:22:::0;;-1:-1:-1;;;;;;12141:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12165:15:0;;;-1:-1:-1;12165:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12165:22:0::1;::::0;;::::1;::::0;;12212:6:::1;::::0;12228:9;;12203:55:::1;::::0;12212:6;::::1;::::0;12228:9;;::::1;;-1:-1:-1::0;;12203:8:0::1;:55::i;:::-;12305:9;::::0;12273:62:::1;::::0;12290:4:::1;::::0;12305:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12305:9:0::1;-1:-1:-1::0;;12273:8:0::1;:62::i;12019:348::-;11817:557:::0;:::o;7994:310::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;8061:14:::1;::::0;::::1;;8053:74;;;::::0;-1:-1:-1;;;8053:74:0;;15098:2:1;8053:74:0::1;::::0;::::1;15080:21:1::0;15137:2;15117:18;;;15110:30;15176:34;15156:18;;;15149:62;15247:17;15227:18;;;15220:45;15282:19;;8053:74:0::1;14896:411:1::0;8053:74:0::1;8158:6;::::0;8138:34:::1;::::0;-1:-1:-1;;;;;8158:6:0::1;;8138:19;:34::i;:::-;8202:6;::::0;;-1:-1:-1;;;;;;8219:19:0;::::1;::::0;;;8254:42:::1;::::0;-1:-1:-1;;;;;8202:6:0;;::::1;::::0;8183:16:::1;::::0;8202:6;;8254:42:::1;::::0;8183:16;;8254:42:::1;8042:262;7994:310::o:0;13391:182::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;13544:14:::1;:21:::0;;-1:-1:-1;;13544:21:0::1;13561:4;13544:21;::::0;;13391:182::o;11245:564::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;11327:7:::1;11322:480;;-1:-1:-1::0;;;;;11351:13:0;;::::1;11367:5;11351:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11351:21:0::1;::::0;;11387:11:::1;::::0;:34;;-1:-1:-1;;;11387:34:0;;::::1;::::0;::::1;15480:74:1::0;;;;15570:18;;;15563:50;;;;11387:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15453:18:1;;11387:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;11322:480;11458:17;::::0;:22;11454:135:::1;;11547:6;11527:17;;11509:15;:35;;;;:::i;:::-;:44;11501:72;;;::::0;-1:-1:-1;;;11501:72:0;;15826:2:1;11501:72:0::1;::::0;::::1;15808:21:1::0;15865:2;15845:18;;;15838:30;15904:17;15884:18;;;15877:45;15939:18;;11501:72:0::1;15624:339:1::0;11501:72:0::1;-1:-1:-1::0;;;;;11612:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;11611:14;11603:54;;;::::0;-1:-1:-1;;;11603:54:0;;16170:2:1;11603:54:0::1;::::0;::::1;16152:21:1::0;16209:2;16189:18;;;16182:30;16248:29;16228:18;;;16221:57;16295:18;;11603:54:0::1;15968:351:1::0;11603:54:0::1;-1:-1:-1::0;;;;;11672:13:0;;::::1;;::::0;;;11688:4:::1;11672:13;::::0;;;;;;;;:20;;-1:-1:-1;;11672:20:0::1;::::0;::::1;::::0;;11727:15:::1;11707:17;:35:::0;11757:11:::1;::::0;:33;;-1:-1:-1;;;11757:33:0;;::::1;::::0;::::1;15480:74:1::0;;;;15570:18;;;15563:50;11757:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15453:18:1;;11757:33:0::1;15312:307:1::0;10060:175:0;7186:6;;10126:4;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;10175:9:::1;::::0;10143:62:::1;::::0;10160:4:::1;::::0;10175:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10175:9:0::1;-1:-1:-1::0;;10143:8:0::1;:62::i;:::-;-1:-1:-1::0;10223:4:0::1;10060:175:::0;:::o;20043:737::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;20105:14:::1;::::0;::::1;;20104:15;20096:52;;;::::0;-1:-1:-1;;;20096:52:0;;16526:2:1;20096:52:0::1;::::0;::::1;16508:21:1::0;16565:2;16545:18;;;16538:30;16604:26;16584:18;;;16577:54;16648:18;;20096:52:0::1;16324:348:1::0;20096:52:0::1;20167:16;::::0;::::1;::::0;::::1;;;20159:53;;;::::0;-1:-1:-1;;;20159:53:0;;16879:2:1;20159:53:0::1;::::0;::::1;16861:21:1::0;16918:2;16898:18;;;16891:30;16957:26;16937:18;;;16930:54;17001:18;;20159:53:0::1;16677:348:1::0;20159:53:0::1;20235:11;::::0;;;::::1;-1:-1:-1::0;;;;;20235:11:0::1;20223:106;;20277:11;:40:::0;;-1:-1:-1;;;;;;20277:40:0::1;20311:4;20277:40:::0;::::1;;::::0;;20223:106:::1;20343:11;::::0;20365:6:::1;::::0;20343:87:::1;::::0;-1:-1:-1;;;20343:87:0;;-1:-1:-1;;;;;20365:6:0;;::::1;20343:87;::::0;::::1;17253:74:1::0;17375:10;20380:12:0::1;17363:23:1::0;17343:18;;;17336:51;17435:18;20402:15:0::1;17423:31:1::0;17403:18;;;17396:59;4838:1:0::1;17471:18:1::0;;;17464:45;20343:11:0;;;::::1;;::::0;:21:::1;::::0;17225:19:1;;20343:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;20456:11:0::1;::::0;20487:6:::1;::::0;-1:-1:-1;;;;;20487:6:0;;::::1;9341:7:::0;9368:16;;;;;;;;;;;;;20456:39;;-1:-1:-1;;;20456:39:0;;::::1;::::0;::::1;391:25:1::0;;;;20456:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;20456:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;20456:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;20456:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;20452:207:::0;::::1;;20567:13;:29:::0;;;;20611:10:::1;:27:::0;20452:207:::1;20669:14;:21:::0;;-1:-1:-1;;20669:21:0;;::::1;20686:4;20669:21;::::0;;;20701:23:::1;:31:::0;;;;::::1;::::0;;20757:15:::1;20743:11;:29:::0;20043:737::o;9400:165::-;9478:4;9495:40;9505:10;9517:9;9528:6;9495:9;:40::i;:::-;-1:-1:-1;9553:4:0;;9400:165;-1:-1:-1;;;9400:165:0:o;20978:296::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;21056:16:::1;::::0;::::1;::::0;::::1;;;21052:111;;;21114:4;-1:-1:-1::0;;;;;21097:22:0;::::1;::::0;21089:62:::1;;;::::0;-1:-1:-1;;;21089:62:0;;17972:2:1;21089:62:0::1;::::0;::::1;17954:21:1::0;18011:2;17991:18;;;17984:30;18050:29;18030:18;;;18023:57;18097:18;;21089:62:0::1;17770:351:1::0;21089:62:0::1;21227:6;::::0;21235:30:::1;::::0;-1:-1:-1;;;21235:30:0;;21259:4:::1;21235:30;::::0;::::1;160:74:1::0;21195:5:0;;-1:-1:-1;;;;;21212:14:0;;::::1;::::0;::::1;::::0;21227:6;;;::::1;::::0;21212:14;;21235:15:::1;::::0;133:18:1;;21235:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21212:54;::::0;-1:-1:-1;;;;;;21212:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18507:55:1;;;21212:54:0::1;::::0;::::1;18489:74:1::0;18579:18;;;18572:34;18462:18;;21212:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15370:263::-:0;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;15479:19:::1;:33:::0;;-1:-1:-1;;;;15479:33:0::1;-1:-1:-1::0;;;15479:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;15523:22:::1;:47:::0;;-1:-1:-1;;15523:47:0::1;::::0;::::1;;;::::0;;15586:39:::1;::::0;2242:41:1;;;15586:39:0::1;::::0;2230:2:1;2215:18;15586:39:0::1;;;;;;;;15370:263:::0;;:::o;10557:680::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;10637:16:::1;::::0;::::1;::::0;::::1;;;10636:17;10628:60;;;::::0;-1:-1:-1;;;10628:60:0;;19069:2:1;10628:60:0::1;::::0;::::1;19051:21:1::0;19108:2;19088:18;;;19081:30;19147:32;19127:18;;;19120:60;19197:18;;10628:60:0::1;18867:354:1::0;10628:60:0::1;10699:20;10732:9;10699:43;;10753:16;10783:10;-1:-1:-1::0;;;;;10783:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10772:40:0::1;;10821:4;10828:10;-1:-1:-1::0;;;;;10828:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10772:74;::::0;-1:-1:-1;;;;;;10772:74:0::1;::::0;;;;;;-1:-1:-1;;;;;19735:15:1;;;10772:74:0::1;::::0;::::1;19717:34:1::0;19787:15;;19767:18;;;19760:43;19629:18;;10772:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10865:6;::::0;-1:-1:-1;;;;;10865:6:0;;::::1;10875:5;10857:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;10857:23:0::1;::::0;;10753:93;;-1:-1:-1;10895:22:0;::::1;10891:200;;10954:10;-1:-1:-1::0;;;;;10954:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10943:43:0::1;;10995:4;11002:10;-1:-1:-1::0;;;;;11002:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10943:77;::::0;-1:-1:-1;;;;;;10943:77:0::1;::::0;;;;;;-1:-1:-1;;;;;19735:15:1;;;10943:77:0::1;::::0;::::1;19717:34:1::0;19787:15;;19767:18;;;19760:43;19629:18;;10943:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10934:6;:86:::0;;-1:-1:-1;;;;;;10934:86:0::1;-1:-1:-1::0;;;;;10934:86:0;;;::::1;::::0;;;::::1;::::0;;10891:200:::1;;;11062:6;:17:::0;;-1:-1:-1;;;;;;11062:17:0::1;-1:-1:-1::0;;;;;11062:17:0;::::1;;::::0;;10891:200:::1;11101:9;:22:::0;;-1:-1:-1;;11101:22:0::1;;-1:-1:-1::0;;;;;11101:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11142:6:::1;::::0;;::::1;-1:-1:-1::0;11134:15:0;;;-1:-1:-1;11134:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11134:22:0::1;::::0;;::::1;::::0;;11199:9;;11167:62:::1;::::0;11184:4:::1;::::0;11199:9;::::1;;-1:-1:-1::0;;11167:8:0::1;:62::i;14042:191::-:0;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;-1:-1:-1;;;;;14127:23:0;::::1;14119:59;;;::::0;-1:-1:-1;;;14119:59:0;;20016:2:1;14119:59:0::1;::::0;::::1;19998:21:1::0;20055:2;20035:18;;;20028:30;20094:25;20074:18;;;20067:53;20137:18;;14119:59:0::1;19814:347:1::0;14119:59:0::1;14189:15;:36:::0;;-1:-1:-1;;;;;;14189:36:0::1;-1:-1:-1::0;;;;;14189:36:0;;;::::1;::::0;;;::::1;::::0;;14042:191::o;20788:182::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;20855:16:::1;::::0;::::1;::::0;::::1;;;20854:17;20846:58;;;::::0;-1:-1:-1;;;20846:58:0;;20368:2:1;20846:58:0::1;::::0;::::1;20350:21:1::0;20407:2;20387:18;;;20380:30;20446;20426:18;;;20419:58;20494:18;;20846:58:0::1;20166:352:1::0;20846:58:0::1;20923:6;::::0;20915:47:::1;::::0;-1:-1:-1;;;;;20923:6:0;;::::1;::::0;20940:21:::1;20915:47:::0;::::1;;;::::0;20923:6:::1;20915:47:::0;20923:6;20915:47;20940:21;20923:6;20915:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;14438:699:::0;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;14638:16;14618;4898:13:::1;4838:1;4898:2;:13;:::i;:::-;4881:30;::::0;4679:19:::1;4881:30;:::i;:::-;14608:26;;;;:::i;:::-;14607:47;;;;:::i;:::-;14591:13;:63:::0;14706:13;14689;4898::::1;4838:1;4898:2;:13;:::i;:::-;4881:30;::::0;4679:19:::1;4881:30;:::i;:::-;14679:23;;;;:::i;:::-;14678:41;;;;:::i;:::-;14665:10;:54:::0;;;14738:13:::1;::::0;:27:::1;;14730:73;;;::::0;-1:-1:-1;;;14730:73:0;;20725:2:1;14730:73:0::1;::::0;::::1;20707:21:1::0;20764:2;20744:18;;;20737:30;20803:34;20783:18;;;20776:62;-1:-1:-1;;;20854:18:1;;;20847:31;20895:19;;14730:73:0::1;20523:397:1::0;14730:73:0::1;14847:6;::::0;-1:-1:-1;;;;;14847:6:0::1;9341:7:::0;9368:16;;;;;;;;;;;5332:5:::1;::::0;14837:23:::1;::::0;14857:3:::1;14837:23;:::i;:::-;14836:44;;;;:::i;:::-;14822:10;;:58;;14814:106;;;::::0;-1:-1:-1;;;14814:106:0;;21127:2:1;14814:106:0::1;::::0;::::1;21109:21:1::0;21166:2;21146:18;;;21139:30;21205:34;21185:18;;;21178:62;-1:-1:-1;;;21256:18:1;;;21249:33;21299:19;;14814:106:0::1;20925:399:1::0;14814:106:0::1;14963:9;4898:13;4838:1;4898:2;:13;:::i;:::-;4881:30;::::0;4679:19:::1;4881:30;:::i;:::-;14953:19;;;;:::i;:::-;14939:10;;:33;;14931:92;;;::::0;-1:-1:-1;;;14931:92:0;;21531:2:1;14931:92:0::1;::::0;::::1;21513:21:1::0;21570:2;21550:18;;;21543:30;21609:34;21589:18;;;21582:62;-1:-1:-1;;;21660:18:1;;;21653:44;21714:19;;14931:92:0::1;21329:410:1::0;14931:92:0::1;15069:9;4898:13;4838:1;4898:2;:13;:::i;:::-;4881:30;::::0;4679:19:::1;4881:30;:::i;:::-;15059:19;;;;:::i;:::-;15042:13;;:36;;15034:95;;;::::0;-1:-1:-1;;;15034:95:0;;21531:2:1;15034:95:0::1;::::0;::::1;21513:21:1::0;21570:2;21550:18;;;21543:30;21609:34;21589:18;;;21582:62;-1:-1:-1;;;21660:18:1;;;21653:44;21714:19;;15034:95:0::1;21329:410:1::0;15034:95:0::1;14438:699:::0;;;;:::o;12807:148::-;7186:6;;-1:-1:-1;;;;;7186:6:0;7196:10;7186:20;7178:50;;;;-1:-1:-1;;;7178:50:0;;8723:2:1;7178:50:0;;;8705:21:1;8762:2;8742:18;;;8735:30;-1:-1:-1;;;;;;;;;;;8781:18:1;;;8774:47;8838:18;;7178:50:0;8521:341:1;7178:50:0;-1:-1:-1;;;;;12903:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;12903:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12807:148::o;9742:310::-;-1:-1:-1;;;;;9837:20:0;;9829:52;;;;-1:-1:-1;;;9829:52:0;;21946:2:1;9829:52:0;;;21928:21:1;21985:2;21965:18;;;21958:30;-1:-1:-1;;;22004:18:1;;;21997:49;22063:18;;9829:52:0;21744:343:1;9829:52:0;-1:-1:-1;;;;;9900:21:0;;9892:53;;;;-1:-1:-1;;;9892:53:0;;21946:2:1;9892:53:0;;;21928:21:1;21985:2;21965:18;;;21958:30;-1:-1:-1;;;22004:18:1;;;21997:49;22063:18;;9892:53:0;21744:343:1;9892:53:0;-1:-1:-1;;;;;9958:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10011:33;;391:25:1;;;10011:33:0;;364:18:1;10011:33:0;;;;;;;9742:310;;;:::o;16912:1783::-;16991:4;-1:-1:-1;;;;;17016:18:0;;17008:68;;;;-1:-1:-1;;;17008:68:0;;22294:2:1;17008:68:0;;;22276:21:1;22333:2;22313:18;;;22306:30;22372:34;22352:18;;;22345:62;-1:-1:-1;;;22423:18:1;;;22416:35;22468:19;;17008:68:0;22092:401:1;17008:68:0;-1:-1:-1;;;;;17095:16:0;;17087:64;;;;-1:-1:-1;;;17087:64:0;;22700:2:1;17087:64:0;;;22682:21:1;22739:2;22719:18;;;22712:30;22778:34;22758:18;;;22751:62;-1:-1:-1;;;22829:18:1;;;22822:33;22872:19;;17087:64:0;22498:399:1;17087:64:0;17179:1;17170:6;:10;17162:64;;;;-1:-1:-1;;;17162:64:0;;23104:2:1;17162:64:0;;;23086:21:1;23143:2;23123:18;;;23116:30;23182:34;23162:18;;;23155:62;-1:-1:-1;;;23233:18:1;;;23226:39;23282:19;;17162:64:0;22902:405:1;17162:64:0;-1:-1:-1;;;;;17325:13:0;;17237:8;17325:13;;;:7;:13;;;;;;17237:8;;;;17325:13;;17321:162;;;17361:4;17355:10;;17321:162;;;-1:-1:-1;;;;;17387:11:0;;;;;;:7;:11;;;;;;;;17383:100;;;17422:4;17415:11;;17383:100;;;-1:-1:-1;17467:4:0;17383:100;17497:20;17508:4;17514:2;17497:10;:20::i;:::-;17493:371;;;17538:14;;;;17534:319;;17578:5;17573:265;;17608:34;;-1:-1:-1;;;17608:34:0;;23514:2:1;17608:34:0;;;23496:21:1;23553:2;23533:18;;;23526:30;23592:26;23572:18;;;23565:54;23636:18;;17608:34:0;23312:348:1;17573:265:0;-1:-1:-1;;;;;17673:31:0;;;;;;:25;:31;;;;;;;;17672:32;:66;;;;-1:-1:-1;;;;;;17709:29:0;;;;;;:25;:29;;;;;;;;17708:30;17672:66;17668:170;;;17763:55;;-1:-1:-1;;;17763:55:0;;23867:2:1;17763:55:0;;;23849:21:1;23906:2;23886:18;;;23879:30;23945:34;23925:18;;;23918:62;-1:-1:-1;;;23996:18:1;;;23989:43;24049:19;;17763:55:0;23665:409:1;17668:170:0;17880:4;17876:742;;;17906:6;;-1:-1:-1;;;17906:6:0;;;;17901:706;;17937:19;;-1:-1:-1;;;17937:19:0;;;;:64;;;;-1:-1:-1;;;;;;17981:20:0;;;;;;:16;:20;;;;;;;;17980:21;17937:64;:111;;;;-1:-1:-1;;;;;;18026:22:0;;;;;;:16;:22;;;;;;;;18025:23;17937:111;17933:659;;;18140:4;18091:28;9368:16;;;;;;;;;;;18197:13;;18173:37;;18169:404;;18257:10;;18298:22;;;;18294:97;;;18355:13;;18345:6;;-1:-1:-1;;;;;18345:6:0;9341:7;9368:16;;;;;;;;;;;5332:5;;18335:33;;;:::i;:::-;18334:54;;;;:::i;:::-;18324:64;;18294:97;18445:7;18421:20;:31;18417:72;;18479:7;18456:30;;18417:72;18515:34;18528:20;18515:12;:34::i;:::-;18212:361;18169:404;18068:524;17933:659;18635:52;18652:4;18658:2;18662:6;18670:3;18675:4;18681:5;18635:16;:52::i;:::-;18628:59;16912:1783;-1:-1:-1;;;;;;;16912:1783:0:o;21737:1055::-;21856:4;21877:20;21888:4;21894:2;21877:10;:20::i;:::-;21873:228;;;21932:11;;:39;;-1:-1:-1;;;21932:39:0;;-1:-1:-1;;;;;24360:15:1;;;21932:39:0;;;24342:34:1;24412:15;;;24392:18;;;24385:43;24444:18;;;24437:34;;;21901:12:0;;21932:11;;;;;:21;;24254:18:1;;21932:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;21932:39:0;;;;;;;;-1:-1:-1;;21932:39:0;;;;;;;;;;;;:::i;:::-;;;21928:122;;22039:8;;;21928:122;22022:5;-1:-1:-1;22068:7:0;22064:26;;22079:8;;;22064:26;21899:202;21873:228;-1:-1:-1;;;;;22145:25:0;;22111:12;22145:25;;;:19;:25;;;;;;22126:4;;22145:25;;;:52;;-1:-1:-1;;;;;;22174:23:0;;;;;;:19;:23;;;;;;;;22145:52;22141:99;;;-1:-1:-1;22223:5:0;22141:99;-1:-1:-1;;;;;22250:13:0;;:7;:13;;;;;;;;;;:23;;22267:6;;22250:7;:23;;22267:6;;22250:23;:::i;:::-;;;;-1:-1:-1;22284:22:0;;-1:-1:-1;22310:7:0;22309:55;;22358:6;22309:55;;;22321:34;22331:4;22337:6;22345:3;22350:4;22321:9;:34::i;:::-;22284:80;;22390:14;22375:7;:11;22383:2;-1:-1:-1;;;;;22375:11:0;-1:-1:-1;;;;;22375:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;22435:2;-1:-1:-1;;;;;22420:34:0;22429:4;-1:-1:-1;;;;;22420:34:0;;22439:14;22420:34;;;;391:25:1;;379:2;364:18;;245:177;22420:34:0;;;;;;;;22470:16;;;;;;;22465:298;;22503:28;22522:4;22528:2;22503:18;:28::i;:::-;22551:16;;;;;;;22550:17;:41;;;;;22571:20;22582:4;22588:2;22571:10;:20::i;:::-;22550:77;;;;-1:-1:-1;;;;;;22596:31:0;;;;;;:25;:31;;;;;;;;22595:32;22550:77;:111;;;;-1:-1:-1;;;;;;22632:29:0;;;;;;:25;:29;;;;;;;;22631:30;22550:111;:121;;;;;22666:5;22665:6;22550:121;22546:206;;;22692:44;;-1:-1:-1;;;22692:44:0;;24684:2:1;22692:44:0;;;24666:21:1;24723:2;24703:18;;;24696:30;24762:34;24742:18;;;24735:62;-1:-1:-1;;;24813:18:1;;;24806:32;24855:19;;22692:44:0;24482:398:1;22546:206:0;-1:-1:-1;22780:4:0;;21737:1055;-1:-1:-1;;;;;;;;21737:1055:0:o;16458:446::-;16559:6;;16527:4;;-1:-1:-1;;;;;16551:14:0;;;16559:6;;16551:14;;;;:43;;-1:-1:-1;16588:6:0;;-1:-1:-1;;;;;16582:12:0;;;16588:6;;16582:12;;16551:43;:79;;;;-1:-1:-1;16624:6:0;;-1:-1:-1;;;;;16624:6:0;16611:9;:19;;16551:79;:118;;;;-1:-1:-1;;;;;;16648:21:0;;;;;;:17;:21;;;;;;;;16647:22;16551:118;:159;;;;-1:-1:-1;;;;;;16687:23:0;;;;;;:17;:23;;;;;;;;16686:24;16551:159;:186;;;;-1:-1:-1;;;;;;16727:10:0;;5471:42;16727:10;;16551:186;:219;;;;-1:-1:-1;;;;;;16754:16:0;;;;16551:219;:257;;;;-1:-1:-1;;;;;;16787:21:0;;16803:4;16787:21;;16551:257;:302;;;;-1:-1:-1;16841:11:0;;-1:-1:-1;;;;;16825:28:0;;;16841:11;;;;;16825:28;;16551:302;:345;;;;-1:-1:-1;16884:11:0;;-1:-1:-1;;;;;16870:26:0;;;16884:11;;;;;16870:26;;16551:345;16544:352;16458:446;-1:-1:-1;;;16458:446:0:o;18703:761::-;6142:6;:13;;-1:-1:-1;;;;6142:13:0;-1:-1:-1;;;6142:13:0;;;18810:4:::1;6142:13:::0;18790:26;;;:11:::1;:26;::::0;;;;;;;18825:9:::1;::::0;6142:13;18825:9;::::1;-1:-1:-1::0;;;;;18825:9:0::1;18790:46:::0;;;;;;;;-1:-1:-1;;18790:67:0::1;18786:166;;18894:4;18874:26;::::0;;;:11:::1;:26;::::0;;;;;;;18909:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18909:9:0::1;18874:46:::0;;;;;;;-1:-1:-1;;18874:66:0;;18786:166:::1;18996:16;::::0;;19010:1:::1;18996:16:::0;;;;;::::1;::::0;;18972:21:::1;::::0;18996:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18996:16:0::1;18972:40;;19041:4;19023;19028:1;19023:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;19023:23:0::1;;;-1:-1:-1::0;;;;;19023:23:0::1;;;::::0;::::1;19067:9;;;;;;;;;-1:-1:-1::0;;;;;19067:9:0::1;-1:-1:-1::0;;;;;19067:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19057:4;19062:1;19057:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19057:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19100:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;19100:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;19175:20;;19210:1:::1;::::0;19226:4;;19253::::1;::::0;19273:15:::1;::::0;19100:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19096:246;;19324:7;;;19096:246;19390:15;::::0;:66:::1;::::0;19354:12:::1;::::0;-1:-1:-1;;;;;19390:15:0::1;::::0;19446:5:::1;::::0;19418:21:::1;::::0;19354:12;19390:66;19354:12;19390:66;19418:21;19390:15;19446:5;19390:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6166:1:0::1;-1:-1:-1::0;6178:6:0;:14;;-1:-1:-1;;;;6178:14:0;;;18703:761::o;22800:767::-;22888:7;22908:18;22941:3;22937:205;;;-1:-1:-1;22974:9:0;:16;;;22937:205;;;23012:4;23008:134;;;-1:-1:-1;23046:9:0;:17;;;;;;23008:134;;;-1:-1:-1;23109:9:0;:21;;;;;;23008:134;23156:10;23170:1;23156:15;23152:39;;23182:6;23175:13;;;;;23152:39;23213:11;;;;;-1:-1:-1;;;;;23213:11:0;23237:4;23205:37;:73;;;;;23259:13;23276:2;23259:19;;23205:73;23201:101;;;-1:-1:-1;23295:4:0;23201:101;23312:17;5332:5;23332:19;23341:10;23332:6;:19;:::i;:::-;:38;;;;:::i;:::-;23312:58;-1:-1:-1;23385:13:0;;23381:141;;23431:4;23415:7;:22;;;;;;;;;;:35;;23441:9;;23415:7;:35;;23441:9;;23415:35;:::i;:::-;;;;-1:-1:-1;;23470:40:0;;391:25:1;;;23493:4:0;;-1:-1:-1;;;;;23470:40:0;;;;;379:2:1;364:18;23470:40:0;;;;;;;23381:141;23541:18;23550:9;23541:6;:18;:::i;19472:563::-;19555:16;;;;;;;19554:17;19546:65;;;;-1:-1:-1;;;19546:65:0;;26328:2:1;19546:65:0;;;26310:21:1;26367:2;26347:18;;;26340:30;26406:34;26386:18;;;26379:62;-1:-1:-1;;;26457:18:1;;;26450:33;26500:19;;19546:65:0;26126:399:1;19546:65:0;19627:20;19638:4;19644:2;19627:10;:20::i;:::-;19626:21;:37;;;;-1:-1:-1;19657:6:0;;-1:-1:-1;;;;;19651:12:0;;;19657:6;;19651:12;19626:37;19622:406;;;-1:-1:-1;;;;;19680:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;19680:30:0;;;19706:4;19680:30;;;;;;19725:19;:25;;;;;:32;;;;;;;;;;19772:16;:23;;-1:-1:-1;;19772:23:0;19680:30;19772:23;;;;;19822:11;;;;19810:114;;19868:11;:40;;-1:-1:-1;;;;;;19868:40:0;19902:4;19868:40;;;;;19810:114;19938:19;:26;;-1:-1:-1;;;;19938:26:0;-1:-1:-1;;;19938:26:0;;;19984:32;;-1:-1:-1;2242:41:1;;19984:32:0;;2230:2:1;2215:18;19984:32:0;2102:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2294:154::-;-1:-1:-1;;;;;2373:5:1;2369:54;2362:5;2359:65;2349:93;;2438:1;2435;2428:12;2453:315;2521:6;2529;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2637:9;2624:23;2656:31;2681:5;2656:31;:::i;:::-;2706:5;2758:2;2743:18;;;;2730:32;;-1:-1:-1;;;2453:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:388::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;:::-;3278:5;-1:-1:-1;3335:2:1;3320:18;;3307:32;3348:33;3307:32;3348:33;:::i;3418:456::-;3495:6;3503;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;:::-;3418:456;;3810:7;;-1:-1:-1;;;3864:2:1;3849:18;;;;3836:32;;3418:456::o;3879:127::-;3940:10;3935:3;3931:20;3928:1;3921:31;3971:4;3968:1;3961:15;3995:4;3992:1;3985:15;4011:275;4082:2;4076:9;4147:2;4128:13;;-1:-1:-1;;4124:27:1;4112:40;;4182:18;4167:34;;4203:22;;;4164:62;4161:88;;;4229:18;;:::i;:::-;4265:2;4258:22;4011:275;;-1:-1:-1;4011:275:1:o;4291:183::-;4351:4;4384:18;4376:6;4373:30;4370:56;;;4406:18;;:::i;:::-;-1:-1:-1;4451:1:1;4447:14;4463:4;4443:25;;4291:183::o;4479:662::-;4533:5;4586:3;4579:4;4571:6;4567:17;4563:27;4553:55;;4604:1;4601;4594:12;4553:55;4640:6;4627:20;4666:4;4690:60;4706:43;4746:2;4706:43;:::i;:::-;4690:60;:::i;:::-;4784:15;;;4870:1;4866:10;;;;4854:23;;4850:32;;;4815:12;;;;4894:15;;;4891:35;;;4922:1;4919;4912:12;4891:35;4958:2;4950:6;4946:15;4970:142;4986:6;4981:3;4978:15;4970:142;;;5052:17;;5040:30;;5090:12;;;;5003;;4970:142;;;-1:-1:-1;5130:5:1;4479:662;-1:-1:-1;;;;;;4479:662:1:o;5146:1215::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5381:9;5368:23;5410:18;5451:2;5443:6;5440:14;5437:34;;;5467:1;5464;5457:12;5437:34;5505:6;5494:9;5490:22;5480:32;;5550:7;5543:4;5539:2;5535:13;5531:27;5521:55;;5572:1;5569;5562:12;5521:55;5608:2;5595:16;5630:4;5654:60;5670:43;5710:2;5670:43;:::i;5654:60::-;5748:15;;;5830:1;5826:10;;;;5818:19;;5814:28;;;5779:12;;;;5854:19;;;5851:39;;;5886:1;5883;5876:12;5851:39;5910:11;;;;5930:217;5946:6;5941:3;5938:15;5930:217;;;6026:3;6013:17;6043:31;6068:5;6043:31;:::i;:::-;6087:18;;5963:12;;;;6125;;;;5930:217;;;6166:5;-1:-1:-1;;6209:18:1;;6196:32;;-1:-1:-1;;6240:16:1;;;6237:36;;;6269:1;6266;6259:12;6237:36;;6292:63;6347:7;6336:8;6325:9;6321:24;6292:63;:::i;:::-;6282:73;;;5146:1215;;;;;:::o;6555:159::-;6622:20;;6682:6;6671:18;;6661:29;;6651:57;;6704:1;6701;6694:12;6651:57;6555:159;;;:::o;6719:328::-;6793:6;6801;6809;6862:2;6850:9;6841:7;6837:23;6833:32;6830:52;;;6878:1;6875;6868:12;6830:52;6901:28;6919:9;6901:28;:::i;:::-;6891:38;;6948:37;6981:2;6970:9;6966:18;6948:37;:::i;:::-;6938:47;;7004:37;7037:2;7026:9;7022:18;7004:37;:::i;:::-;6994:47;;6719:328;;;;;:::o;7052:180::-;7111:6;7164:2;7152:9;7143:7;7139:23;7135:32;7132:52;;;7180:1;7177;7170:12;7132:52;-1:-1:-1;7203:23:1;;7052:180;-1:-1:-1;7052:180:1:o;7237:382::-;7302:6;7310;7363:2;7351:9;7342:7;7338:23;7334:32;7331:52;;;7379:1;7376;7369:12;7331:52;7418:9;7405:23;7437:31;7462:5;7437:31;:::i;8131:385::-;8217:6;8225;8233;8241;8294:3;8282:9;8273:7;8269:23;8265:33;8262:53;;;8311:1;8308;8301:12;8262:53;-1:-1:-1;;8334:23:1;;;8404:2;8389:18;;8376:32;;-1:-1:-1;8455:2:1;8440:18;;8427:32;;8506:2;8491:18;8478:32;;-1:-1:-1;8131:385:1;-1:-1:-1;8131:385:1:o;9480:127::-;9541:10;9536:3;9532:20;9529:1;9522:31;9572:4;9569:1;9562:15;9596:4;9593:1;9586:15;9612:422;9701:1;9744:5;9701:1;9758:270;9779:7;9769:8;9766:21;9758:270;;;9838:4;9834:1;9830:6;9826:17;9820:4;9817:27;9814:53;;;9847:18;;:::i;:::-;9897:7;9887:8;9883:22;9880:55;;;9917:16;;;;9880:55;9996:22;;;;9956:15;;;;9758:270;;;9762:3;9612:422;;;;;:::o;10039:806::-;10088:5;10118:8;10108:80;;-1:-1:-1;10159:1:1;10173:5;;10108:80;10207:4;10197:76;;-1:-1:-1;10244:1:1;10258:5;;10197:76;10289:4;10307:1;10302:59;;;;10375:1;10370:130;;;;10282:218;;10302:59;10332:1;10323:10;;10346:5;;;10370:130;10407:3;10397:8;10394:17;10391:43;;;10414:18;;:::i;:::-;-1:-1:-1;;10470:1:1;10456:16;;10485:5;;10282:218;;10584:2;10574:8;10571:16;10565:3;10559:4;10556:13;10552:36;10546:2;10536:8;10533:16;10528:2;10522:4;10519:12;10515:35;10512:77;10509:159;;;-1:-1:-1;10621:19:1;;;10653:5;;10509:159;10700:34;10725:8;10719:4;10700:34;:::i;:::-;10770:6;10766:1;10762:6;10758:19;10749:7;10746:32;10743:58;;;10781:18;;:::i;:::-;10819:20;;10039:806;-1:-1:-1;;;10039:806:1:o;10850:140::-;10908:5;10937:47;10978:4;10968:8;10964:19;10958:4;10937:47;:::i;10995:168::-;11068:9;;;11099;;11116:15;;;11110:22;;11096:37;11086:71;;11137:18;;:::i;11168:128::-;11235:9;;;11256:11;;;11253:37;;;11270:18;;:::i;11651:127::-;11712:10;11707:3;11703:20;11700:1;11693:31;11743:4;11740:1;11733:15;11767:4;11764:1;11757:15;12130:197;12168:3;12196:6;12237:2;12230:5;12226:14;12264:2;12255:7;12252:15;12249:41;;12270:18;;:::i;:::-;12319:1;12306:15;;12130:197;-1:-1:-1;;;12130:197:1:o;12332:125::-;12397:9;;;12418:10;;;12415:36;;;12431:18;;:::i;13160:217::-;13200:1;13226;13216:132;;13270:10;13265:3;13261:20;13258:1;13251:31;13305:4;13302:1;13295:15;13333:4;13330:1;13323:15;13216:132;-1:-1:-1;13362:9:1;;13160:217::o;14506:385::-;14585:6;14593;14646:2;14634:9;14625:7;14621:23;14617:32;14614:52;;;14662:1;14659;14652:12;14614:52;14694:9;14688:16;14713:31;14738:5;14713:31;:::i;:::-;14813:2;14798:18;;14792:25;14763:5;;-1:-1:-1;14826:33:1;14792:25;14826:33;:::i;17520:245::-;17599:6;17607;17660:2;17648:9;17639:7;17635:23;17631:32;17628:52;;;17676:1;17673;17666:12;17628:52;-1:-1:-1;;17699:16:1;;17755:2;17740:18;;;17734:25;17699:16;;17734:25;;-1:-1:-1;17520:245:1:o;18126:184::-;18196:6;18249:2;18237:9;18228:7;18224:23;18220:32;18217:52;;;18265:1;18262;18255:12;18217:52;-1:-1:-1;18288:16:1;;18126:184;-1:-1:-1;18126:184:1:o;18617:245::-;18684:6;18737:2;18725:9;18716:7;18712:23;18708:32;18705:52;;;18753:1;18750;18743:12;18705:52;18785:9;18779:16;18804:28;18826:5;18804:28;:::i;19226:251::-;19296:6;19349:2;19337:9;19328:7;19324:23;19320:32;19317:52;;;19365:1;19362;19355:12;19317:52;19397:9;19391:16;19416:31;19441:5;19416:31;:::i;24885:1026::-;25147:4;25195:3;25184:9;25180:19;25226:6;25215:9;25208:25;25252:2;25290:6;25285:2;25274:9;25270:18;25263:34;25333:3;25328:2;25317:9;25313:18;25306:31;25357:6;25392;25386:13;25423:6;25415;25408:22;25461:3;25450:9;25446:19;25439:26;;25500:2;25492:6;25488:15;25474:29;;25521:1;25531:218;25545:6;25542:1;25539:13;25531:218;;;25610:13;;-1:-1:-1;;;;;25606:62:1;25594:75;;25724:15;;;;25689:12;;;;25567:1;25560:9;25531:218;;;-1:-1:-1;;;;;;;25805:55:1;;;;25800:2;25785:18;;25778:83;-1:-1:-1;;;25892:3:1;25877:19;25870:35;25766:3;24885:1026;-1:-1:-1;;;24885:1026:1:o

Swarm Source

ipfs://0d1e3bedd81f4cb5c7c3163a5d9fe7bc808573a641b9e20b9da0ebd91d8fc9c0

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.