ETH Price: $3,327.90 (-0.97%)

Token

If Youre Reading This Youre Still Early (IYRTYSE)
 

Overview

Max Total Supply

1,000,000,000 IYRTYSE

Holders

120

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,028,334.25664840785481943 IYRTYSE

Value
$0.00
0xDeCCF3C9BfF291E2741eD6E9290E59103fEd55cC
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
IYRTYSE

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-20
*/

// File: contracts/IYRTYSE.sol


                                                    
pragma solidity 0.8.7;

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

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

library EnumerableSet {

    struct Set {
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

            if (lastIndex != toDeleteIndex) {
                bytes32 lastValue = set._values[lastIndex];
                set._values[toDeleteIndex] = lastValue;
                set._indexes[lastValue] = valueIndex;
            }

            set._values.pop();

            delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        return set._values[index];
    }

    function _values(Set storage set) private view returns (bytes32[] memory) {
        return set._values;
    }


    // AddressSet

    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    /**
     * @dev Returns true if the value is in the set. O(1).
     */
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    /**
     * @dev Returns the number of values in the set. O(1).
     */
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    function values(AddressSet storage set) internal view returns (address[] memory) {
        bytes32[] memory store = _values(set._inner);
        address[] memory result;

        /// @solidity memory-safe-assembly
        assembly {
            result := store
        }

        return result;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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

interface IDexRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    
    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 addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

    function removeLiquidityETH(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountToken, uint amountETH);

}

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

interface IDexPair {

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

contract IYRTYSE is ERC20, Ownable {

    using EnumerableSet for EnumerableSet.AddressSet;
    uint256 public maxBuyAmount;
    uint256 public maxSellAmount;
    uint256 public maxWalletAmount;

    EnumerableSet.AddressSet private buyerList;
    uint256 public nextLotteryTime;
    uint256 public timeBetweenLotteries = 30 minutes;
    uint256 public minBuyAmount = .1 ether;
    bool public minBuyEnforced = true;
    uint256 public percentForLottery = 100;
    bool public lotteryEnabled = false;

    uint256 public lastBurnTimestamp;

    IDexRouter public dexRouter;
    address public lpPair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address operationsAddress;

    uint256 public tradingActiveBlock = 0; // 0 means trading is not active
    uint256 public blockForPenaltyEnd;
    mapping (address => bool) public restrictedWallet;
    uint256 public botsCaught;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
    
    uint256 public buyTotalFees;
    uint256 public buyOperationsFee;
    uint256 public buyLiquidityFee;
    uint256 public buyLotteryFee;

    uint256 public sellTotalFees;
    uint256 public sellOperationsFee;
    uint256 public sellLiquidityFee;
    uint256 public sellLotteryFee;

    uint256 public tokensForOperations;
    uint256 public tokensForLiquidity;
    uint256 public tokensForLottery;

    uint256 public FEE_DENOMINATOR = 10000;
    
    /******************/

    // exlcude from fees and max transaction amount
    mapping (address => bool) public _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading();

    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMaxBuyAmount(uint256 newAmount);

    event UpdatedMaxSellAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedOperationsAddress(address indexed oldWallet, address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event BuyBackTriggered(uint256 amount);

    event OwnerForcedSwapBack(uint256 timestamp);

    event CaughtBot(address sniper);

    event TransferForeignToken(address token, uint256 amount);

    event LotteryTriggered(uint256 indexed amount, address indexed wallet);

    constructor(address _newOwner) ERC20(unicode"If Youre Reading This Youre Still Early", unicode"IYRTYSE") {
        
        IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        dexRouter = _dexRouter;

        operationsAddress = address(_newOwner); 

        // create pair
        lpPair = IDexFactory(_dexRouter.factory()).createPair(address(this), _dexRouter.WETH());
        _excludeFromMaxTransaction(address(lpPair), true);
        _setAutomatedMarketMakerPair(address(lpPair), true);

        uint256 totalSupply = 1000000000* 1e18;
        
        maxBuyAmount = totalSupply * 1 / 1000;
        maxSellAmount = totalSupply * 1 / 1000;
        maxWalletAmount = totalSupply * 2 / 100;
        swapTokensAtAmount = totalSupply * 25 / 100000;

        buyOperationsFee = 0;
        buyLiquidityFee = 1000;
        buyLotteryFee = 0;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyLotteryFee;

        sellOperationsFee = 0;
        sellLiquidityFee = 9000;
        sellLotteryFee = 0;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellLotteryFee;

        
        _excludeFromMaxTransaction(msg.sender, true);
        _excludeFromMaxTransaction(operationsAddress, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);
        _excludeFromMaxTransaction(address(dexRouter), true);

        
        excludeFromFees(msg.sender, true);
        excludeFromFees(operationsAddress, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(dexRouter), true);

        _createInitialSupply(_newOwner, totalSupply);
        transferOwnership(_newOwner);
        
    }

    receive() external payable {}

    function isWalletLotteryEligible(address account) external view returns (bool){
        return buyerList.contains(account);
    }
    
    function enableTrading(uint256 blocksForPenalty) external onlyOwner {
        require(blockForPenaltyEnd == 0);
        tradingActive = true;
        swapEnabled = true;
        tradingActiveBlock = block.number;
        blockForPenaltyEnd = tradingActiveBlock + blocksForPenalty;
        nextLotteryTime = block.timestamp + timeBetweenLotteries;
        emit EnabledTrading();
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }

    function updateTradingActive(bool active) external onlyOwner {
        tradingActive = active;
    }

    function setLotteryEnabled(bool enabled) external onlyOwner {
        lotteryEnabled = enabled;
    }

    function manageRestrictedWallets(address[] calldata wallets, bool restricted) external onlyOwner {
        for(uint256 i = 0; i < wallets.length; i++){
            restrictedWallet[wallets[i]] = restricted;
        }
    }
    
    function updateMaxBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000) / (10 ** decimals()));
        maxBuyAmount = newNum * (10 ** decimals());
        emit UpdatedMaxBuyAmount(maxBuyAmount);
    }
    
    function updateMaxSellAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000) / (10 ** decimals()));
        maxSellAmount = newNum * (10 ** decimals());
        emit UpdatedMaxSellAmount(maxSellAmount);
    }

    function updateMaxWallet(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 100) / (10 ** decimals()));
        maxWalletAmount = newNum * (10 ** decimals());
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
  	    require(newAmount >= totalSupply() * 1 / 100000);
  	    require(newAmount <= totalSupply() * 1 / 1000);
  	    swapTokensAtAmount = newAmount;
  	}
    
    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
        require(wallets.length == amountsInTokens.length);
        require(wallets.length < 600); // allows for airdrop + launch at the same exact time, reducing delays and reducing sniper input.
        for(uint256 i = 0; i < wallets.length; i++){
            super._transfer(msg.sender, wallets[i], amountsInTokens[i]);
        }
    }
    
    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != lpPair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != lpPair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
        
        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function updateBuyFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _lotteryFee) external onlyOwner {
        buyOperationsFee = _operationsFee;
        buyLiquidityFee = _liquidityFee;
        buyLotteryFee = _lotteryFee;
        buyTotalFees = buyOperationsFee + buyLiquidityFee + buyLotteryFee;
        require(buyTotalFees <= 1500, "Must keep fees at 15% or less");
    }

    function updateSellFees(uint256 _operationsFee, uint256 _liquidityFee, uint256 _lotteryFee) external onlyOwner {
        sellOperationsFee = _operationsFee;
        sellLiquidityFee = _liquidityFee;
        sellLotteryFee = _lotteryFee;
        sellTotalFees = sellOperationsFee + sellLiquidityFee + sellLotteryFee;
        require(sellTotalFees <= 2000, "Must keep fees at 20% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "ERC20: transfer must be greater than 0");
        
        if(!tradingActive){
            require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
        }

        if(!earlyBuyPenaltyInEffect() && blockForPenaltyEnd > 0){
            require(!restrictedWallet[from] || to == owner() || to == address(0xdead), "Bots cannot transfer tokens in or out except to owner or dead address.");
        }
        
        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]){
                               
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxBuyAmount);
                        require(amount + balanceOf(to) <= maxWalletAmount);
                } 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxSellAmount);
                } 
                else if (!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWalletAmount);
                }
            }
        }

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

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

        if(lotteryEnabled){
            if(block.timestamp >= nextLotteryTime && address(this).balance >= 0.25 ether && buyerList.length() > 1){
                payoutRewards(to);
            }
            else {
                gasBurn();
            }
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
        
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // bot/sniper penalty.
            if((earlyBuyPenaltyInEffect() || (amount >= maxBuyAmount - .9 ether && blockForPenaltyEnd + 5 >= block.number)) && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0){
                
                if(!earlyBuyPenaltyInEffect()){
                    // reduce by 1 wei per max buy over what Uniswap will allow to revert bots as best as possible to limit erroneously blacklisted wallets. First bot will get in and be blacklisted, rest will be reverted (*cross fingers*)
                    maxBuyAmount -= 1;
                }

                if(!restrictedWallet[to]){
                    restrictedWallet[to] = true;
                    botsCaught += 1;
                    emit CaughtBot(to);
                }

                fees = amount * buyTotalFees / FEE_DENOMINATOR;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForLottery += fees * buyLotteryFee / buyTotalFees;
            }

            // on sell
            else if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees / FEE_DENOMINATOR;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForOperations += fees * sellOperationsFee / sellTotalFees;
                tokensForLottery += fees * sellLotteryFee / sellTotalFees;
            }

            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
        	    fees = amount * buyTotalFees / FEE_DENOMINATOR;
        	    tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForOperations += fees * buyOperationsFee / buyTotalFees;
                tokensForLottery += fees * buyLotteryFee / buyTotalFees;
                if(!minBuyEnforced || amount > getPurchaseAmount()){
                    if(!buyerList.contains(to)){
                        buyerList.add(to);
                    }
                }
            }
            
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
        	
        	amount -= fees;
        }

        super._transfer(from, to, amount);

        if(buyerList.contains(from) && takeFee){
            buyerList.remove(from);
        }
    }

    function earlyBuyPenaltyInEffect() public view returns (bool){
        return block.number < blockForPenaltyEnd;
    }

    // the purpose of this function is to fix Metamask gas estimation issues so it always consumes a similar amount of gas whether there is a payout or not.
    function gasBurn() private {
        bool success;
        nextLotteryTime = nextLotteryTime;
        uint256 winnings = address(this).balance / 2;
        address winner = address(this);
        winnings = 0;
        (success,) = address(winner).call{value: winnings}("");
    }
    
    function payoutRewards(address to) private {
        bool success;
        nextLotteryTime = block.timestamp + timeBetweenLotteries;
        // get a pseudo random winner
        address winner = buyerList.at(random(0, buyerList.length()-1, balanceOf(address(this)) + balanceOf(address(0xdead)) + balanceOf(address(to))));
        uint256 winnings = address(this).balance * percentForLottery / 100;
        (success,) = address(winner).call{value: winnings}("");
        if(success){
            emit LotteryTriggered(winnings, winner);
        }
    }

    function random(uint256 from, uint256 to, uint256 salty) private view returns (uint256) {
        uint256 seed = uint256(
            keccak256(
                abi.encodePacked(
                    block.timestamp + block.difficulty +
                    ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (block.timestamp)) +
                    block.gaslimit +
                    ((uint256(keccak256(abi.encodePacked(msg.sender)))) / (block.timestamp)) +
                    block.number +
                    salty
                )
            )
        );
        return seed % (to - from) + from;
    }

    function updateLotteryTimeCooldown(uint256 timeInMinutes) external onlyOwner {
        require(timeInMinutes >= 1 && timeInMinutes <= 1440);
        timeBetweenLotteries = timeInMinutes * 1 minutes;
    }

    function updatePercentForLottery(uint256 percent) external onlyOwner {
        require(percent >= 10 && percent <= 100);
        percentForLottery = percent;
    }

    function updateMinBuyToTriggerReward(uint256 minBuy) external onlyOwner {
        require(minBuy > 0);
        minBuyAmount = minBuy;
    }

    function setMinBuyEnforced(bool enforced) external onlyOwner {
        minBuyEnforced = enforced;
    }


    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

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

    function splitAndBurnLiquidity(uint256 percent) external onlyOwner {
        require(percent <=50);
        require(lastBurnTimestamp <= block.timestamp - 1 hours);
        lastBurnTimestamp = block.timestamp;
        uint256 lpBalance = IERC20(lpPair).balanceOf(address(this));
        uint256 tokenBalance = balanceOf(address(this));
        uint256 lpAmount = lpBalance * percent / 100;
        uint256 initialEthBalance = address(this).balance;

        // approve token transfer to cover all possible scenarios
        IERC20(lpPair).approve(address(dexRouter), lpAmount);

        // remove the liquidity
        dexRouter.removeLiquidityETH(
            address(this),
            lpAmount,
            1, // slippage is unavoidable
            1, // slippage is unavoidable
            address(this),
            block.timestamp
        );

        uint256 deltaTokenBalance = balanceOf(address(this)) - tokenBalance;
        if(deltaTokenBalance > 0){
            super._transfer(address(this), address(0xdead), deltaTokenBalance);
        }

        uint256 deltaEthBalance = address(this).balance - initialEthBalance;

        if(deltaEthBalance > 0){
            buyBackTokens(deltaEthBalance);
        }
    }

    function buyBackTokens(uint256 amountInWei) internal {
        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amountInWei}(
            0,
            path,
            address(0xdead),
            block.timestamp
        );
    }

    function swapBack() private {

        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForOperations + tokensForLottery;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 10){
            contractBalance = swapTokensAtAmount * 10;
        }

        bool success;
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance - liquidityTokens);
        
        uint256 ethBalance = address(this).balance - initialBalance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForOperations = ethBalance * tokensForOperations / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForLottery = ethBalance * tokensForLottery / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForOperations + ethForLottery;
            
        tokensForLiquidity = 0;
        tokensForOperations = 0;
        tokensForLottery = 0;
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        if(ethForOperations > 0){
            (success,) = address(operationsAddress).call{value: ethForOperations}("");
        }
        // remaining tokens stay for Lottery
    }

    function getPurchaseAmount() public view returns (uint256){
        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);
        
        uint256[] memory amounts = new uint256[](2);
        amounts = dexRouter.getAmountsOut(minBuyAmount, path);
        return amounts[1];
    }

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0));
        require(_token != address(this));
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(owner()).call{value: address(this).balance}("");
    }

    function setOperationsAddress(address _operationsAddress) external onlyOwner {
        require(_operationsAddress != address(0));
        address oldOperationsAddress = operationsAddress;
        operationsAddress = payable(_operationsAddress);
        emit UpdatedOperationsAddress(oldOperationsAddress, _operationsAddress);
    }

    // force Swap back if slippage issues.
    function forceSwapBack() external onlyOwner {
        require(balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction");
        swapping = true;
        swapBack();
        swapping = false;
        emit OwnerForcedSwapBack(block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBackTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sniper","type":"address"}],"name":"CaughtBot","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"address","name":"wallet","type":"address"}],"name":"LotteryTriggered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedOperationsAddress","type":"event"},{"inputs":[],"name":"FEE_DENOMINATOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"uint256[]","name":"amountsInTokens","type":"uint256[]"}],"name":"airdropToWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockForPenaltyEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earlyBuyPenaltyInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocksForPenalty","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPurchaseAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isWalletLotteryEligible","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBurnTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lotteryEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"restricted","type":"bool"}],"name":"manageRestrictedWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBuyEnforced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextLotteryTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLottery","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"restrictedWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLotteryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellOperationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLotteryEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enforced","type":"bool"}],"name":"setMinBuyEnforced","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operationsAddress","type":"address"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"splitAndBurnLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeBetweenLotteries","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLottery","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForOperations","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_lotteryFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeInMinutes","type":"uint256"}],"name":"updateLotteryTimeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minBuy","type":"uint256"}],"name":"updateMinBuyToTriggerReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"updatePercentForLottery","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_lotteryFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"active","type":"bool"}],"name":"updateTradingActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052610708600c5567016345785d8a0000600d55600e8054600160ff1991821681179092556064600f556010805490911690556000601655601a805462ffffff191690911790556127106026553480156200005c57600080fd5b5060405162004cff38038062004cff8339810160408190526200007f91620008fd565b60405180606001604052806027815260200162004c9860279139604051806040016040528060078152602001664959525459534560c81b8152508160039080519060200190620000d192919062000857565b508051620000e790600490602084019062000857565b5050506000620000fc620004f460201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062004cdf833981519152908290a35060128054737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03199182168117909255601580549091166001600160a01b0384161790556040805163c45a015560e01b81529051829163c45a0155916004808301926020929190829003018186803b158015620001af57600080fd5b505afa158015620001c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ea9190620008fd565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023357600080fd5b505afa15801562000248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026e9190620008fd565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002b757600080fd5b505af1158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f29190620008fd565b601380546001600160a01b0319166001600160a01b039290921691821790556200031e906001620004f8565b60135462000337906001600160a01b031660016200055b565b6b033b2e3c9fd0803ce80000006103e8620003548260016200096d565b6200036091906200094a565b6006556103e8620003738260016200096d565b6200037f91906200094a565b6007556064620003918260026200096d565b6200039d91906200094a565b600855620186a0620003b18260196200096d565b620003bd91906200094a565b6014556000601c8190556103e8601d819055601e829055620003e090826200092f565b620003ec91906200092f565b601b5560006020819055612328602181905560228290556200040f90826200092f565b6200041b91906200092f565b601f556200042b336001620004f8565b60155462000444906001600160a01b03166001620004f8565b62000451306001620004f8565b6200046061dead6001620004f8565b60125462000479906001600160a01b03166001620004f8565b62000486336001620005c7565b6015546200049f906001600160a01b03166001620005c7565b620004ac306001620005c7565b620004bb61dead6001620005c7565b601254620004d4906001600160a01b03166001620005c7565b620004e0838262000675565b620004eb836200075a565b505050620009e2565b3390565b6001600160a01b038216600081815260286020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602960205260409020805460ff19168215151790556200058b8282620004f8565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620006165760405162461bcd60e51b8152602060048201819052602482015260008051602062004cbf83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006cd5760405162461bcd60e51b815260206004820152601a60248201527f45524332303a20746f20746865207a65726f206164647265737300000000000060448201526064016200060d565b8060026000828254620006e191906200092f565b90915550506001600160a01b03821660009081526020819052604081208054839290620007109084906200092f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b03163314620007a55760405162461bcd60e51b8152602060048201819052602482015260008051602062004cbf83398151915260448201526064016200060d565b6001600160a01b0381166200080c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016200060d565b6005546040516001600160a01b0380841692169060008051602062004cdf83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b82805462000865906200098f565b90600052602060002090601f016020900481019282620008895760008555620008d4565b82601f10620008a457805160ff1916838001178555620008d4565b82800160010185558215620008d4579182015b82811115620008d4578251825591602001919060010190620008b7565b50620008e2929150620008e6565b5090565b5b80821115620008e25760008155600101620008e7565b6000602082840312156200091057600080fd5b81516001600160a01b03811681146200092857600080fd5b9392505050565b60008219821115620009455762000945620009cc565b500190565b6000826200096857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156200098a576200098a620009cc565b500290565b600181811c90821680620009a457607f821691505b60208210811415620009c657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6142a680620009f26000396000f3fe60806040526004361061044b5760003560e01c80638366e79a11610234578063d257b34f1161012e578063ee40166e116100b6578063f63743421161007a578063f637434214610ca1578063f66bf22914610cb7578063fb002c9714610ccd578063fbe8d4b714610ce3578063fd63914414610cfd57600080fd5b8063ee40166e14610c20578063f11a24d314610c36578063f2fde38b14610c4c578063f498cceb14610c6c578063f5648a4f14610c8c57600080fd5b8063dc3f0d0f116100fd578063dc3f0d0f14610b5e578063dc8ba8e614610b7e578063dd62ed3e14610b94578063e0bf7fd114610bda578063e2f4560514610c0a57600080fd5b8063d257b34f14610af2578063d73792a914610b12578063d85ba06314610b28578063da4f80e014610b3e57600080fd5b8063a9059cbb116101bc578063b62496f511610180578063b62496f514610a4d578063bbc0c74214610a7d578063c024666814610a9c578063c17b5b8c14610abc578063cd38890914610adc57600080fd5b8063a9059cbb146109cb578063a96444ed146109eb578063aa4bde2814610a01578063aba80fe814610a17578063ac8e332814610a2d57600080fd5b80638da5cb5b116102035780638da5cb5b1461094257806395d89b41146109605780639a7a23d614610975578063a457c2d714610995578063a62068ce146109b557600080fd5b80638366e79a146108d75780638671cb86146108f757806388e765ff146109175780638b28cd191461092d57600080fd5b80634f77f6c0116103455780636b0a894c116102cd5780637571336a116102915780637571336a1461084157806376af4d44146108615780637b20fd90146108775780638095d5641461089757806382aa7c68146108b757600080fd5b80636b0a894c146107c15780636ddd1713146107d757806370a08231146107f7578063715018a614610817578063751039fc1461082c57600080fd5b8063599035661161031457806359903566146107455780635a139dd41461076557806366d602ae1461077b5780636a486a8e146107915780636a63ce88146107a757600080fd5b80634f77f6c0146106d357806350e838e5146106e957806351f205e41461071957806358a6d5311461072e57600080fd5b80632583de65116103d3578063395093511161039757806339509351146106435780633d3d937d14610663578063452ed4f114610679578063499b8394146106995780634a62bb65146106b957600080fd5b80632583de65146105b1578063285b9747146105d15780632be32b61146105f1578063313ce5671461061157806334908e561461062d57600080fd5b806318160ddd1161041a57806318160ddd1461051a5780631a8145bb146105395780631c499ab01461054f5780632307b4411461057157806323b872dd1461059157600080fd5b806306fdde03146104575780630758d92414610482578063095ea7b3146104ba57806310d5de53146104ea57600080fd5b3661045257005b600080fd5b34801561046357600080fd5b5061046c610d1d565b6040516104799190613e5e565b60405180910390f35b34801561048e57600080fd5b506012546104a2906001600160a01b031681565b6040516001600160a01b039091168152602001610479565b3480156104c657600080fd5b506104da6104d5366004613aad565b610daf565b6040519015158152602001610479565b3480156104f657600080fd5b506104da6105053660046139cb565b60286020526000908152604090205460ff1681565b34801561052657600080fd5b506002545b604051908152602001610479565b34801561054557600080fd5b5061052b60245481565b34801561055b57600080fd5b5061056f61056a366004613cfa565b610dc6565b005b34801561057d57600080fd5b5061056f61058c366004613b5f565b610e8d565b34801561059d57600080fd5b506104da6105ac366004613a3e565b610f34565b3480156105bd57600080fd5b5061056f6105cc366004613cc0565b610fde565b3480156105dd57600080fd5b5061056f6105ec366004613cc0565b61101b565b3480156105fd57600080fd5b5061056f61060c366004613cfa565b611058565b34801561061d57600080fd5b5060405160128152602001610479565b34801561063957600080fd5b5061052b60225481565b34801561064f57600080fd5b506104da61065e366004613aad565b611110565b34801561066f57600080fd5b5061052b60115481565b34801561068557600080fd5b506013546104a2906001600160a01b031681565b3480156106a557600080fd5b5061056f6106b43660046139cb565b61114c565b3480156106c557600080fd5b50601a546104da9060ff1681565b3480156106df57600080fd5b5061052b60205481565b3480156106f557600080fd5b506104da6107043660046139cb565b60186020526000908152604090205460ff1681565b34801561072557600080fd5b5061056f6111db565b34801561073a57600080fd5b5060175443106104da565b34801561075157600080fd5b5061056f610760366004613cfa565b6112e4565b34801561077157600080fd5b5061052b601c5481565b34801561078757600080fd5b5061052b60075481565b34801561079d57600080fd5b5061052b601f5481565b3480156107b357600080fd5b506010546104da9060ff1681565b3480156107cd57600080fd5b5061052b60195481565b3480156107e357600080fd5b50601a546104da9062010000900460ff1681565b34801561080357600080fd5b5061052b6108123660046139cb565b61132e565b34801561082357600080fd5b5061056f611349565b34801561083857600080fd5b5061056f6113bd565b34801561084d57600080fd5b5061056f61085c366004613a7f565b61141c565b34801561086d57600080fd5b5061052b600b5481565b34801561088357600080fd5b5061056f610892366004613cfa565b6114e4565b3480156108a357600080fd5b5061056f6108b2366004613d50565b61153b565b3480156108c357600080fd5b5061056f6108d2366004613cfa565b6115df565b3480156108e357600080fd5b506104da6108f2366004613a05565b611677565b34801561090357600080fd5b5061056f610912366004613cfa565b611819565b34801561092357600080fd5b5061052b60065481565b34801561093957600080fd5b5061052b611a7e565b34801561094e57600080fd5b506005546001600160a01b03166104a2565b34801561096c57600080fd5b5061046c611c4d565b34801561098157600080fd5b5061056f610990366004613a7f565b611c5c565b3480156109a157600080fd5b506104da6109b0366004613aad565b611d50565b3480156109c157600080fd5b5061052b60175481565b3480156109d757600080fd5b506104da6109e6366004613aad565b611de9565b3480156109f757600080fd5b5061052b60255481565b348015610a0d57600080fd5b5061052b60085481565b348015610a2357600080fd5b5061052b600c5481565b348015610a3957600080fd5b5061056f610a48366004613ad9565b611df6565b348015610a5957600080fd5b506104da610a683660046139cb565b60296020526000908152604090205460ff1681565b348015610a8957600080fd5b50601a546104da90610100900460ff1681565b348015610aa857600080fd5b5061056f610ab7366004613a7f565b611e97565b348015610ac857600080fd5b5061056f610ad7366004613d50565b611f20565b348015610ae857600080fd5b5061052b601e5481565b348015610afe57600080fd5b5061056f610b0d366004613cfa565b611fc4565b348015610b1e57600080fd5b5061052b60265481565b348015610b3457600080fd5b5061052b601b5481565b348015610b4a57600080fd5b5061056f610b59366004613cc0565b61204e565b348015610b6a57600080fd5b5061056f610b79366004613cfa565b612092565b348015610b8a57600080fd5b5061052b600f5481565b348015610ba057600080fd5b5061052b610baf366004613a05565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610be657600080fd5b506104da610bf53660046139cb565b60276020526000908152604090205460ff1681565b348015610c1657600080fd5b5061052b60145481565b348015610c2c57600080fd5b5061052b60165481565b348015610c4257600080fd5b5061052b601d5481565b348015610c5857600080fd5b5061056f610c673660046139cb565b61214a565b348015610c7857600080fd5b5061056f610c87366004613cfa565b612235565b348015610c9857600080fd5b5061056f612271565b348015610cad57600080fd5b5061052b60215481565b348015610cc357600080fd5b5061052b600d5481565b348015610cd957600080fd5b5061052b60235481565b348015610cef57600080fd5b50600e546104da9060ff1681565b348015610d0957600080fd5b506104da610d183660046139cb565b6122f9565b606060038054610d2c90614172565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5890614172565b8015610da55780601f10610d7a57610100808354040283529160200191610da5565b820191906000526020600020905b815481529060010190602001808311610d8857829003601f168201915b5050505050905090565b6000610dbc338484612306565b5060015b92915050565b6005546001600160a01b03163314610df95760405162461bcd60e51b8152600401610df090613ef6565b60405180910390fd5b610e056012600a614091565b6064610e1060025490565b610e1b90600161413c565b610e25919061403a565b610e2f919061403a565b811015610e3b57600080fd5b610e476012600a614091565b610e51908261413c565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6005546001600160a01b03163314610eb75760405162461bcd60e51b8152600401610df090613ef6565b8051825114610ec557600080fd5b610258825110610ed457600080fd5b60005b8251811015610f2f57610f1d33848381518110610ef657610ef661421e565b6020026020010151848481518110610f1057610f1061421e565b602002602001015161242a565b80610f27816141ad565b915050610ed7565b505050565b6000610f4184848461257f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610fc65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610df0565b610fd38533858403612306565b506001949350505050565b6005546001600160a01b031633146110085760405162461bcd60e51b8152600401610df090613ef6565b6010805460ff1916911515919091179055565b6005546001600160a01b031633146110455760405162461bcd60e51b8152600401610df090613ef6565b600e805460ff1916911515919091179055565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610df090613ef6565b61108e6012600a614091565b6103e861109a60025490565b6110a590600161413c565b6110af919061403a565b6110b9919061403a565b8110156110c557600080fd5b6110d16012600a614091565b6110db908261413c565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610e82565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610dbc918590611147908690614022565b612306565b6005546001600160a01b031633146111765760405162461bcd60e51b8152600401610df090613ef6565b6001600160a01b03811661118957600080fd5b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f7ca7635f300826fd9b00d220e329ea4449f513ab4783722289bdfa6ab575335390600090a35050565b6005546001600160a01b031633146112055760405162461bcd60e51b8152600401610df090613ef6565b6014546112113061132e565b1015611287576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610df0565b6013805460ff60a01b1916600160a01b1790556112a2612f1a565b6013805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461130e5760405162461bcd60e51b8152600401610df090613ef6565b600a8110158015611320575060648111155b61132957600080fd5b600f55565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146113735760405162461bcd60e51b8152600401610df090613ef6565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113e75760405162461bcd60e51b8152600401610df090613ef6565b601a805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146114465760405162461bcd60e51b8152600401610df090613ef6565b806114b9576013546001600160a01b03838116911614156114b95760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610df0565b6001600160a01b03919091166000908152602860205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461150e5760405162461bcd60e51b8152600401610df090613ef6565b6001811015801561152157506105a08111155b61152a57600080fd5b61153581603c61413c565b600c5550565b6005546001600160a01b031633146115655760405162461bcd60e51b8152600401610df090613ef6565b601c839055601d829055601e8190558061157f8385614022565b6115899190614022565b601b8190556105dc1015610f2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610df0565b6005546001600160a01b031633146116095760405162461bcd60e51b8152600401610df090613ef6565b6017541561161657600080fd5b601a805462ffff00191662010100179055436016819055611638908290614022565b601755600c546116489042614022565b600b556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546000906001600160a01b031633146116a45760405162461bcd60e51b8152600401610df090613ef6565b6001600160a01b0383166116b757600080fd5b6001600160a01b0383163014156116cd57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117479190613d13565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561179557600080fd5b505af11580156117a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cd9190613cdd565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146118435760405162461bcd60e51b8152600401610df090613ef6565b603281111561185157600080fd5b61185d610e104261415b565b601154111561186b57600080fd5b426011556013546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156118b357600080fd5b505afa1580156118c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118eb9190613d13565b905060006118f83061132e565b905060006064611908858561413c565b611912919061403a565b60135460125460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052929350479291169063095ea7b390604401602060405180830381600087803b15801561196757600080fd5b505af115801561197b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199f9190613cdd565b50601254604051629d473b60e21b81526001600160a01b03909116906302751cec906119da9030908690600190819084904290600401613dee565b6040805180830381600087803b1580156119f357600080fd5b505af1158015611a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2b9190613d2c565b5050600083611a393061132e565b611a43919061415b565b90508015611a5857611a583061dead8361242a565b6000611a64834761415b565b90508015611a7557611a75816130e6565b50505050505050565b604080516002808252606082018352600092839291906020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611ae757600080fd5b505afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f91906139e8565b81600081518110611b3257611b3261421e565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611b6657611b6661421e565b6001600160a01b0392909216602092830291909101820152604080516002808252606082018352600093919290918301908036833701905050601254600d5460405163d06ca61f60e01b81529293506001600160a01b039091169163d06ca61f91611bd5918690600401613f70565b60006040518083038186803b158015611bed57600080fd5b505afa158015611c01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c299190810190613c28565b905080600181518110611c3e57611c3e61421e565b60200260200101519250505090565b606060048054610d2c90614172565b6005546001600160a01b03163314611c865760405162461bcd60e51b8152600401610df090613ef6565b6013546001600160a01b0383811691161415611d0a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610df0565b611d14828261323f565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611dd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610df0565b611ddf3385858403612306565b5060019392505050565b6000610dbc33848461257f565b6005546001600160a01b03163314611e205760405162461bcd60e51b8152600401610df090613ef6565b60005b82811015611e91578160186000868685818110611e4257611e4261421e565b9050602002016020810190611e5791906139cb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611e89816141ad565b915050611e23565b50505050565b6005546001600160a01b03163314611ec15760405162461bcd60e51b8152600401610df090613ef6565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611f4a5760405162461bcd60e51b8152600401610df090613ef6565b60208390556021829055602281905580611f648385614022565b611f6e9190614022565b601f8190556107d01015610f2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610df0565b6005546001600160a01b03163314611fee5760405162461bcd60e51b8152600401610df090613ef6565b620186a0611ffb60025490565b61200690600161413c565b612010919061403a565b81101561201c57600080fd5b6103e861202860025490565b61203390600161413c565b61203d919061403a565b81111561204957600080fd5b601455565b6005546001600160a01b031633146120785760405162461bcd60e51b8152600401610df090613ef6565b601a80549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146120bc5760405162461bcd60e51b8152600401610df090613ef6565b6120c86012600a614091565b6103e86120d460025490565b6120df90600161413c565b6120e9919061403a565b6120f3919061403a565b8110156120ff57600080fd5b61210b6012600a614091565b612115908261413c565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e82565b6005546001600160a01b031633146121745760405162461bcd60e51b8152600401610df090613ef6565b6001600160a01b0381166121d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610df0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461225f5760405162461bcd60e51b8152600401610df090613ef6565b6000811161226c57600080fd5b600d55565b6005546001600160a01b0316331461229b5760405162461bcd60e51b8152600401610df090613ef6565b60006122af6005546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114611e91576040519150601f19603f3d011682016040523d82523d6000602084013e611e91565b6000610dc060098361326d565b6001600160a01b0383166123685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610df0565b6001600160a01b0382166123c95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610df0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124505760405162461bcd60e51b8152600401610df090613f2b565b6001600160a01b0382166124765760405162461bcd60e51b8152600401610df090613eb3565b6001600160a01b038316600090815260208190526040902054818110156124ee5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610df0565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612525908490614022565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161257191815260200190565b60405180910390a350505050565b6001600160a01b0383166125a55760405162461bcd60e51b8152600401610df090613f2b565b6001600160a01b0382166125cb5760405162461bcd60e51b8152600401610df090613eb3565b6000811161262a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e73666572206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608401610df0565b601a54610100900460ff166126bd576001600160a01b03831660009081526027602052604090205460ff168061267857506001600160a01b03821660009081526027602052604090205460ff165b6126bd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610df0565b60175443101580156126d157506000601754115b156127a1576001600160a01b03831660009081526018602052604090205460ff16158061270b57506005546001600160a01b038381169116145b8061272057506001600160a01b03821661dead145b6127a15760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610df0565b601a5460ff1615612963576005546001600160a01b038481169116148015906127d857506005546001600160a01b03838116911614155b80156127ec57506001600160a01b03821615155b801561280357506001600160a01b03821661dead14155b801561282857506001600160a01b03831660009081526027602052604090205460ff16155b801561284d57506001600160a01b03821660009081526027602052604090205460ff16155b15612963576001600160a01b03831660009081526029602052604090205460ff16801561289357506001600160a01b03821660009081526028602052604090205460ff16155b156128cd576006548111156128a757600080fd5b6008546128b38361132e565b6128bd9083614022565b11156128c857600080fd5b612963565b6001600160a01b03821660009081526029602052604090205460ff16801561290e57506001600160a01b03831660009081526028602052604090205460ff16155b15612922576007548111156128c857600080fd5b6001600160a01b03821660009081526028602052604090205460ff166129635760085461294e8361132e565b6129589083614022565b111561296357600080fd5b600061296e3061132e565b6014549091508110801590819061298d5750601a5462010000900460ff165b80156129a35750601354600160a01b900460ff16155b80156129c857506001600160a01b03851660009081526029602052604090205460ff16155b80156129ed57506001600160a01b03851660009081526027602052604090205460ff16155b8015612a1257506001600160a01b03841660009081526027602052604090205460ff16155b15612a40576013805460ff60a01b1916600160a01b179055612a32612f1a565b6013805460ff60a01b191690555b60105460ff1615612a9557600b544210158015612a6557506703782dace9d900004710155b8015612a7a57506001612a786009613292565b115b15612a8d57612a888461329c565b612a95565b612a956133c3565b6001600160a01b03851660009081526027602052604090205460019060ff1680612ad757506001600160a01b03851660009081526027602052604090205460ff165b15612ae0575060005b60008115612ee157601754431080612b265750670c7d713b49da0000600654612b09919061415b565b8510158015612b265750436017546005612b239190614022565b10155b8015612b4a57506001600160a01b03871660009081526029602052604090205460ff165b8015612b6f57506001600160a01b03861660009081526029602052604090205460ff16155b8015612b7d57506000601b54115b15612cf2576017544310612ba457600160066000828254612b9e919061415b565b90915550505b6001600160a01b03861660009081526018602052604090205460ff16612c3f576001600160a01b0386166000908152601860205260408120805460ff191660019081179091556019805491929091612bfd908490614022565b90915550506040516001600160a01b03871681527fc69d77aec5786ffcf6525c771a49f6299726bb8f4a25ae2723602cd7a28fc1dd9060200160405180910390a15b602654601b54612c4f908761413c565b612c59919061403a565b9050601b54601d5482612c6c919061413c565b612c76919061403a565b60246000828254612c879190614022565b9091555050601b54601c54612c9c908361413c565b612ca6919061403a565b60236000828254612cb79190614022565b9091555050601b54601e54612ccc908361413c565b612cd6919061403a565b60256000828254612ce79190614022565b90915550612ec39050565b6001600160a01b03861660009081526029602052604090205460ff168015612d1c57506000601f54115b15612dae57602654601f54612d31908761413c565b612d3b919061403a565b9050601f5460215482612d4e919061413c565b612d58919061403a565b60246000828254612d699190614022565b9091555050601f54602054612d7e908361413c565b612d88919061403a565b60236000828254612d999190614022565b9091555050601f54602254612ccc908361413c565b6001600160a01b03871660009081526029602052604090205460ff168015612dd857506000601b54115b15612ec357602654601b54612ded908761413c565b612df7919061403a565b9050601b54601d5482612e0a919061413c565b612e14919061403a565b60246000828254612e259190614022565b9091555050601b54601c54612e3a908361413c565b612e44919061403a565b60236000828254612e559190614022565b9091555050601b54601e54612e6a908361413c565b612e74919061403a565b60256000828254612e859190614022565b9091555050600e5460ff161580612ea25750612e9f611a7e565b85115b15612ec357612eb260098761326d565b612ec357612ec1600987613424565b505b8015612ed457612ed487308361242a565b612ede818661415b565b94505b612eec87878761242a565b612ef760098861326d565b8015612f005750815b15611a7557612f10600988613439565b5050505050505050565b6000612f253061132e565b90506000602554602354602454612f3c9190614022565b612f469190614022565b9050811580612f53575080155b15612f5c575050565b601454612f6a90600a61413c565b821115612f8257601454612f7f90600a61413c565b91505b60008060028360245486612f96919061413c565b612fa0919061403a565b612faa919061403a565b905047612fbf612fba838761415b565b61344e565b6000612fcb824761415b565b9050600081905060006002602454612fe3919061403a565b612fed908861415b565b602354612ffa908561413c565b613004919061403a565b905060006002602454613017919061403a565b613021908961415b565b60255461302e908661413c565b613038919061403a565b90506130448183614022565b61304e908461415b565b6000602481905560238190556025559250851580159061306e5750600083115b1561307d5761307d86846135af565b81156130db576015546040516001600160a01b03909116908390600081818185875af1925050503d80600081146130d0576040519150601f19603f3d011682016040523d82523d6000602084013e6130d5565b606091505b50909750505b505050505050505050565b6040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561314b57600080fd5b505afa15801561315f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061318391906139e8565b816000815181106131965761319661421e565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106131ca576131ca61421e565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590849061321290600090869061dead904290600401613e29565b6000604051808303818588803b15801561322b57600080fd5b505af1158015611a75573d6000803e3d6000fd5b6001600160a01b0382166000908152602960205260409020805460ff1916821515179055611d14828261365d565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b6000610dc0825490565b6000600c54426132ac9190614022565b600b55600061330c6133048260016132c46009613292565b6132ce919061415b565b6132d78761132e565b6132e261dead61132e565b6132eb3061132e565b6132f59190614022565b6132ff9190614022565b6136c0565b6009906137e1565b905060006064600f5447613320919061413c565b61332a919061403a565b9050816001600160a01b03168160405160006040518083038185875af1925050503d8060008114613377576040519150601f19603f3d011682016040523d82523d6000602084013e61337c565b606091505b50909350508215611e91576040516001600160a01b0383169082907fbd73dd3a978f545a338a5be0f5f49671a6a8dd2c5d8ba117281ff20ad917c93b90600090a350505050565b6000806133d160024761403a565b50506040516000903090819083908181818181875af1925050503d8060008114613417576040519150601f19603f3d011682016040523d82523d6000602084013e61341c565b606091505b505050505050565b600061328b836001600160a01b0384166137ed565b600061328b836001600160a01b03841661383c565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106134835761348361421e565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156134d757600080fd5b505afa1580156134eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350f91906139e8565b816001815181106135225761352261421e565b6001600160a01b0392831660209182029290920101526012546135489130911684612306565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790613581908590600090869030904290600401613f91565b600060405180830381600087803b15801561359b57600080fd5b505af115801561341c573d6000803e3d6000fd5b6012546135c79030906001600160a01b031684612306565b60125460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906136049030908790600090819084904290600401613dee565b6060604051808303818588803b15801561361d57600080fd5b505af1158015613631573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136569190613d7c565b5050505050565b6001600160a01b038216600081815260286020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040516bffffffffffffffffffffffff193360601b16602082015260009081908390439042906034016040516020818303038152906040528051906020012060001c61370c919061403a565b6040516bffffffffffffffffffffffff194160601b166020820152459042906034016040516020818303038152906040528051906020012060001c613751919061403a565b61375b4442614022565b6137659190614022565b61376f9190614022565b6137799190614022565b6137839190614022565b61378d9190614022565b60405160200161379f91815260200190565b60408051601f1981840301815291905280516020909101209050846137c4818661415b565b6137ce90836141c8565b6137d89190614022565b95945050505050565b600061328b838361392f565b600081815260018301602052604081205461383457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610dc0565b506000610dc0565b6000818152600183016020526040812054801561392557600061386060018361415b565b85549091506000906138749060019061415b565b90508181146138d95760008660000182815481106138945761389461421e565b90600052602060002001549050808760000184815481106138b7576138b761421e565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806138ea576138ea614208565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610dc0565b6000915050610dc0565b60008260000182815481106139465761394661421e565b9060005260206000200154905092915050565b600082601f83011261396a57600080fd5b8135602061397f61397a83613ffe565b613fcd565b80838252828201915082860187848660051b890101111561399f57600080fd5b60005b858110156139be578135845292840192908401906001016139a2565b5090979650505050505050565b6000602082840312156139dd57600080fd5b813561328b8161424a565b6000602082840312156139fa57600080fd5b815161328b8161424a565b60008060408385031215613a1857600080fd5b8235613a238161424a565b91506020830135613a338161424a565b809150509250929050565b600080600060608486031215613a5357600080fd5b8335613a5e8161424a565b92506020840135613a6e8161424a565b929592945050506040919091013590565b60008060408385031215613a9257600080fd5b8235613a9d8161424a565b91506020830135613a3381614262565b60008060408385031215613ac057600080fd5b8235613acb8161424a565b946020939093013593505050565b600080600060408486031215613aee57600080fd5b833567ffffffffffffffff80821115613b0657600080fd5b818601915086601f830112613b1a57600080fd5b813581811115613b2957600080fd5b8760208260051b8501011115613b3e57600080fd5b60209283019550935050840135613b5481614262565b809150509250925092565b60008060408385031215613b7257600080fd5b823567ffffffffffffffff80821115613b8a57600080fd5b818501915085601f830112613b9e57600080fd5b81356020613bae61397a83613ffe565b8083825282820191508286018a848660051b8901011115613bce57600080fd5b600096505b84871015613bfa578035613be68161424a565b835260019690960195918301918301613bd3565b5096505086013592505080821115613c1157600080fd5b50613c1e85828601613959565b9150509250929050565b60006020808385031215613c3b57600080fd5b825167ffffffffffffffff811115613c5257600080fd5b8301601f81018513613c6357600080fd5b8051613c7161397a82613ffe565b80828252848201915084840188868560051b8701011115613c9157600080fd5b600094505b83851015613cb4578051835260019490940193918501918501613c96565b50979650505050505050565b600060208284031215613cd257600080fd5b813561328b81614262565b600060208284031215613cef57600080fd5b815161328b81614262565b600060208284031215613d0c57600080fd5b5035919050565b600060208284031215613d2557600080fd5b5051919050565b60008060408385031215613d3f57600080fd5b505080516020909101519092909150565b600080600060608486031215613d6557600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215613d9157600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015613de35781516001600160a01b031687529582019590820190600101613dbe565b509495945050505050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b848152608060208201526000613e426080830186613daa565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015613e8b57858101830151858201604001528201613e6f565b81811115613e9d576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b828152604060208201526000613f896040830184613daa565b949350505050565b85815284602082015260a060408201526000613fb060a0830186613daa565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ff657613ff6614234565b604052919050565b600067ffffffffffffffff82111561401857614018614234565b5060051b60200190565b60008219821115614035576140356141dc565b500190565b600082614049576140496141f2565b500490565b600181815b8085111561408957816000190482111561406f5761406f6141dc565b8085161561407c57918102915b93841c9390800290614053565b509250929050565b600061328b60ff8416836000826140aa57506001610dc0565b816140b757506000610dc0565b81600181146140cd57600281146140d7576140f3565b6001915050610dc0565b60ff8411156140e8576140e86141dc565b50506001821b610dc0565b5060208310610133831016604e8410600b8410161715614116575081810a610dc0565b614120838361404e565b8060001904821115614134576141346141dc565b029392505050565b6000816000190483118215151615614156576141566141dc565b500290565b60008282101561416d5761416d6141dc565b500390565b600181811c9082168061418657607f821691505b602082108114156141a757634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156141c1576141c16141dc565b5060010190565b6000826141d7576141d76141f2565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461425f57600080fd5b50565b801515811461425f57600080fdfea26469706673582212205a162d89125a0384c4d6b0a43f9cbad028bd2374ec291bbca1608187a6e6d5ec64736f6c63430008070033496620596f7572652052656164696e67205468697320596f757265205374696c6c204561726c794f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000ca5b047b37b52c50771b604d8ab8b441c5cc4e6a

Deployed Bytecode

0x60806040526004361061044b5760003560e01c80638366e79a11610234578063d257b34f1161012e578063ee40166e116100b6578063f63743421161007a578063f637434214610ca1578063f66bf22914610cb7578063fb002c9714610ccd578063fbe8d4b714610ce3578063fd63914414610cfd57600080fd5b8063ee40166e14610c20578063f11a24d314610c36578063f2fde38b14610c4c578063f498cceb14610c6c578063f5648a4f14610c8c57600080fd5b8063dc3f0d0f116100fd578063dc3f0d0f14610b5e578063dc8ba8e614610b7e578063dd62ed3e14610b94578063e0bf7fd114610bda578063e2f4560514610c0a57600080fd5b8063d257b34f14610af2578063d73792a914610b12578063d85ba06314610b28578063da4f80e014610b3e57600080fd5b8063a9059cbb116101bc578063b62496f511610180578063b62496f514610a4d578063bbc0c74214610a7d578063c024666814610a9c578063c17b5b8c14610abc578063cd38890914610adc57600080fd5b8063a9059cbb146109cb578063a96444ed146109eb578063aa4bde2814610a01578063aba80fe814610a17578063ac8e332814610a2d57600080fd5b80638da5cb5b116102035780638da5cb5b1461094257806395d89b41146109605780639a7a23d614610975578063a457c2d714610995578063a62068ce146109b557600080fd5b80638366e79a146108d75780638671cb86146108f757806388e765ff146109175780638b28cd191461092d57600080fd5b80634f77f6c0116103455780636b0a894c116102cd5780637571336a116102915780637571336a1461084157806376af4d44146108615780637b20fd90146108775780638095d5641461089757806382aa7c68146108b757600080fd5b80636b0a894c146107c15780636ddd1713146107d757806370a08231146107f7578063715018a614610817578063751039fc1461082c57600080fd5b8063599035661161031457806359903566146107455780635a139dd41461076557806366d602ae1461077b5780636a486a8e146107915780636a63ce88146107a757600080fd5b80634f77f6c0146106d357806350e838e5146106e957806351f205e41461071957806358a6d5311461072e57600080fd5b80632583de65116103d3578063395093511161039757806339509351146106435780633d3d937d14610663578063452ed4f114610679578063499b8394146106995780634a62bb65146106b957600080fd5b80632583de65146105b1578063285b9747146105d15780632be32b61146105f1578063313ce5671461061157806334908e561461062d57600080fd5b806318160ddd1161041a57806318160ddd1461051a5780631a8145bb146105395780631c499ab01461054f5780632307b4411461057157806323b872dd1461059157600080fd5b806306fdde03146104575780630758d92414610482578063095ea7b3146104ba57806310d5de53146104ea57600080fd5b3661045257005b600080fd5b34801561046357600080fd5b5061046c610d1d565b6040516104799190613e5e565b60405180910390f35b34801561048e57600080fd5b506012546104a2906001600160a01b031681565b6040516001600160a01b039091168152602001610479565b3480156104c657600080fd5b506104da6104d5366004613aad565b610daf565b6040519015158152602001610479565b3480156104f657600080fd5b506104da6105053660046139cb565b60286020526000908152604090205460ff1681565b34801561052657600080fd5b506002545b604051908152602001610479565b34801561054557600080fd5b5061052b60245481565b34801561055b57600080fd5b5061056f61056a366004613cfa565b610dc6565b005b34801561057d57600080fd5b5061056f61058c366004613b5f565b610e8d565b34801561059d57600080fd5b506104da6105ac366004613a3e565b610f34565b3480156105bd57600080fd5b5061056f6105cc366004613cc0565b610fde565b3480156105dd57600080fd5b5061056f6105ec366004613cc0565b61101b565b3480156105fd57600080fd5b5061056f61060c366004613cfa565b611058565b34801561061d57600080fd5b5060405160128152602001610479565b34801561063957600080fd5b5061052b60225481565b34801561064f57600080fd5b506104da61065e366004613aad565b611110565b34801561066f57600080fd5b5061052b60115481565b34801561068557600080fd5b506013546104a2906001600160a01b031681565b3480156106a557600080fd5b5061056f6106b43660046139cb565b61114c565b3480156106c557600080fd5b50601a546104da9060ff1681565b3480156106df57600080fd5b5061052b60205481565b3480156106f557600080fd5b506104da6107043660046139cb565b60186020526000908152604090205460ff1681565b34801561072557600080fd5b5061056f6111db565b34801561073a57600080fd5b5060175443106104da565b34801561075157600080fd5b5061056f610760366004613cfa565b6112e4565b34801561077157600080fd5b5061052b601c5481565b34801561078757600080fd5b5061052b60075481565b34801561079d57600080fd5b5061052b601f5481565b3480156107b357600080fd5b506010546104da9060ff1681565b3480156107cd57600080fd5b5061052b60195481565b3480156107e357600080fd5b50601a546104da9062010000900460ff1681565b34801561080357600080fd5b5061052b6108123660046139cb565b61132e565b34801561082357600080fd5b5061056f611349565b34801561083857600080fd5b5061056f6113bd565b34801561084d57600080fd5b5061056f61085c366004613a7f565b61141c565b34801561086d57600080fd5b5061052b600b5481565b34801561088357600080fd5b5061056f610892366004613cfa565b6114e4565b3480156108a357600080fd5b5061056f6108b2366004613d50565b61153b565b3480156108c357600080fd5b5061056f6108d2366004613cfa565b6115df565b3480156108e357600080fd5b506104da6108f2366004613a05565b611677565b34801561090357600080fd5b5061056f610912366004613cfa565b611819565b34801561092357600080fd5b5061052b60065481565b34801561093957600080fd5b5061052b611a7e565b34801561094e57600080fd5b506005546001600160a01b03166104a2565b34801561096c57600080fd5b5061046c611c4d565b34801561098157600080fd5b5061056f610990366004613a7f565b611c5c565b3480156109a157600080fd5b506104da6109b0366004613aad565b611d50565b3480156109c157600080fd5b5061052b60175481565b3480156109d757600080fd5b506104da6109e6366004613aad565b611de9565b3480156109f757600080fd5b5061052b60255481565b348015610a0d57600080fd5b5061052b60085481565b348015610a2357600080fd5b5061052b600c5481565b348015610a3957600080fd5b5061056f610a48366004613ad9565b611df6565b348015610a5957600080fd5b506104da610a683660046139cb565b60296020526000908152604090205460ff1681565b348015610a8957600080fd5b50601a546104da90610100900460ff1681565b348015610aa857600080fd5b5061056f610ab7366004613a7f565b611e97565b348015610ac857600080fd5b5061056f610ad7366004613d50565b611f20565b348015610ae857600080fd5b5061052b601e5481565b348015610afe57600080fd5b5061056f610b0d366004613cfa565b611fc4565b348015610b1e57600080fd5b5061052b60265481565b348015610b3457600080fd5b5061052b601b5481565b348015610b4a57600080fd5b5061056f610b59366004613cc0565b61204e565b348015610b6a57600080fd5b5061056f610b79366004613cfa565b612092565b348015610b8a57600080fd5b5061052b600f5481565b348015610ba057600080fd5b5061052b610baf366004613a05565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610be657600080fd5b506104da610bf53660046139cb565b60276020526000908152604090205460ff1681565b348015610c1657600080fd5b5061052b60145481565b348015610c2c57600080fd5b5061052b60165481565b348015610c4257600080fd5b5061052b601d5481565b348015610c5857600080fd5b5061056f610c673660046139cb565b61214a565b348015610c7857600080fd5b5061056f610c87366004613cfa565b612235565b348015610c9857600080fd5b5061056f612271565b348015610cad57600080fd5b5061052b60215481565b348015610cc357600080fd5b5061052b600d5481565b348015610cd957600080fd5b5061052b60235481565b348015610cef57600080fd5b50600e546104da9060ff1681565b348015610d0957600080fd5b506104da610d183660046139cb565b6122f9565b606060038054610d2c90614172565b80601f0160208091040260200160405190810160405280929190818152602001828054610d5890614172565b8015610da55780601f10610d7a57610100808354040283529160200191610da5565b820191906000526020600020905b815481529060010190602001808311610d8857829003601f168201915b5050505050905090565b6000610dbc338484612306565b5060015b92915050565b6005546001600160a01b03163314610df95760405162461bcd60e51b8152600401610df090613ef6565b60405180910390fd5b610e056012600a614091565b6064610e1060025490565b610e1b90600161413c565b610e25919061403a565b610e2f919061403a565b811015610e3b57600080fd5b610e476012600a614091565b610e51908261413c565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc906020015b60405180910390a150565b6005546001600160a01b03163314610eb75760405162461bcd60e51b8152600401610df090613ef6565b8051825114610ec557600080fd5b610258825110610ed457600080fd5b60005b8251811015610f2f57610f1d33848381518110610ef657610ef661421e565b6020026020010151848481518110610f1057610f1061421e565b602002602001015161242a565b80610f27816141ad565b915050610ed7565b505050565b6000610f4184848461257f565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610fc65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610df0565b610fd38533858403612306565b506001949350505050565b6005546001600160a01b031633146110085760405162461bcd60e51b8152600401610df090613ef6565b6010805460ff1916911515919091179055565b6005546001600160a01b031633146110455760405162461bcd60e51b8152600401610df090613ef6565b600e805460ff1916911515919091179055565b6005546001600160a01b031633146110825760405162461bcd60e51b8152600401610df090613ef6565b61108e6012600a614091565b6103e861109a60025490565b6110a590600161413c565b6110af919061403a565b6110b9919061403a565b8110156110c557600080fd5b6110d16012600a614091565b6110db908261413c565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de4100990602001610e82565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610dbc918590611147908690614022565b612306565b6005546001600160a01b031633146111765760405162461bcd60e51b8152600401610df090613ef6565b6001600160a01b03811661118957600080fd5b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f7ca7635f300826fd9b00d220e329ea4449f513ab4783722289bdfa6ab575335390600090a35050565b6005546001600160a01b031633146112055760405162461bcd60e51b8152600401610df090613ef6565b6014546112113061132e565b1015611287576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610df0565b6013805460ff60a01b1916600160a01b1790556112a2612f1a565b6013805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a1565b6005546001600160a01b0316331461130e5760405162461bcd60e51b8152600401610df090613ef6565b600a8110158015611320575060648111155b61132957600080fd5b600f55565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146113735760405162461bcd60e51b8152600401610df090613ef6565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146113e75760405162461bcd60e51b8152600401610df090613ef6565b601a805460ff191690556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146114465760405162461bcd60e51b8152600401610df090613ef6565b806114b9576013546001600160a01b03838116911614156114b95760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610df0565b6001600160a01b03919091166000908152602860205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461150e5760405162461bcd60e51b8152600401610df090613ef6565b6001811015801561152157506105a08111155b61152a57600080fd5b61153581603c61413c565b600c5550565b6005546001600160a01b031633146115655760405162461bcd60e51b8152600401610df090613ef6565b601c839055601d829055601e8190558061157f8385614022565b6115899190614022565b601b8190556105dc1015610f2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420313525206f72206c6573730000006044820152606401610df0565b6005546001600160a01b031633146116095760405162461bcd60e51b8152600401610df090613ef6565b6017541561161657600080fd5b601a805462ffff00191662010100179055436016819055611638908290614022565b601755600c546116489042614022565b600b556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a150565b6005546000906001600160a01b031633146116a45760405162461bcd60e51b8152600401610df090613ef6565b6001600160a01b0383166116b757600080fd5b6001600160a01b0383163014156116cd57600080fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a082319060240160206040518083038186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117479190613d13565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb90604401602060405180830381600087803b15801561179557600080fd5b505af11580156117a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117cd9190613cdd565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146118435760405162461bcd60e51b8152600401610df090613ef6565b603281111561185157600080fd5b61185d610e104261415b565b601154111561186b57600080fd5b426011556013546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b1580156118b357600080fd5b505afa1580156118c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118eb9190613d13565b905060006118f83061132e565b905060006064611908858561413c565b611912919061403a565b60135460125460405163095ea7b360e01b81526001600160a01b03918216600482015260248101849052929350479291169063095ea7b390604401602060405180830381600087803b15801561196757600080fd5b505af115801561197b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199f9190613cdd565b50601254604051629d473b60e21b81526001600160a01b03909116906302751cec906119da9030908690600190819084904290600401613dee565b6040805180830381600087803b1580156119f357600080fd5b505af1158015611a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2b9190613d2c565b5050600083611a393061132e565b611a43919061415b565b90508015611a5857611a583061dead8361242a565b6000611a64834761415b565b90508015611a7557611a75816130e6565b50505050505050565b604080516002808252606082018352600092839291906020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b158015611ae757600080fd5b505afa158015611afb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1f91906139e8565b81600081518110611b3257611b3261421e565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611b6657611b6661421e565b6001600160a01b0392909216602092830291909101820152604080516002808252606082018352600093919290918301908036833701905050601254600d5460405163d06ca61f60e01b81529293506001600160a01b039091169163d06ca61f91611bd5918690600401613f70565b60006040518083038186803b158015611bed57600080fd5b505afa158015611c01573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c299190810190613c28565b905080600181518110611c3e57611c3e61421e565b60200260200101519250505090565b606060048054610d2c90614172565b6005546001600160a01b03163314611c865760405162461bcd60e51b8152600401610df090613ef6565b6013546001600160a01b0383811691161415611d0a5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610df0565b611d14828261323f565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015611dd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610df0565b611ddf3385858403612306565b5060019392505050565b6000610dbc33848461257f565b6005546001600160a01b03163314611e205760405162461bcd60e51b8152600401610df090613ef6565b60005b82811015611e91578160186000868685818110611e4257611e4261421e565b9050602002016020810190611e5791906139cb565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611e89816141ad565b915050611e23565b50505050565b6005546001600160a01b03163314611ec15760405162461bcd60e51b8152600401610df090613ef6565b6001600160a01b038216600081815260276020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611f4a5760405162461bcd60e51b8152600401610df090613ef6565b60208390556021829055602281905580611f648385614022565b611f6e9190614022565b601f8190556107d01015610f2f5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323025206f72206c6573730000006044820152606401610df0565b6005546001600160a01b03163314611fee5760405162461bcd60e51b8152600401610df090613ef6565b620186a0611ffb60025490565b61200690600161413c565b612010919061403a565b81101561201c57600080fd5b6103e861202860025490565b61203390600161413c565b61203d919061403a565b81111561204957600080fd5b601455565b6005546001600160a01b031633146120785760405162461bcd60e51b8152600401610df090613ef6565b601a80549115156101000261ff0019909216919091179055565b6005546001600160a01b031633146120bc5760405162461bcd60e51b8152600401610df090613ef6565b6120c86012600a614091565b6103e86120d460025490565b6120df90600161413c565b6120e9919061403a565b6120f3919061403a565b8110156120ff57600080fd5b61210b6012600a614091565b612115908261413c565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e82565b6005546001600160a01b031633146121745760405162461bcd60e51b8152600401610df090613ef6565b6001600160a01b0381166121d95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610df0565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461225f5760405162461bcd60e51b8152600401610df090613ef6565b6000811161226c57600080fd5b600d55565b6005546001600160a01b0316331461229b5760405162461bcd60e51b8152600401610df090613ef6565b60006122af6005546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114611e91576040519150601f19603f3d011682016040523d82523d6000602084013e611e91565b6000610dc060098361326d565b6001600160a01b0383166123685760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610df0565b6001600160a01b0382166123c95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610df0565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166124505760405162461bcd60e51b8152600401610df090613f2b565b6001600160a01b0382166124765760405162461bcd60e51b8152600401610df090613eb3565b6001600160a01b038316600090815260208190526040902054818110156124ee5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610df0565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612525908490614022565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161257191815260200190565b60405180910390a350505050565b6001600160a01b0383166125a55760405162461bcd60e51b8152600401610df090613f2b565b6001600160a01b0382166125cb5760405162461bcd60e51b8152600401610df090613eb3565b6000811161262a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e73666572206d75737420626520677265617465722060448201526507468616e20360d41b6064820152608401610df0565b601a54610100900460ff166126bd576001600160a01b03831660009081526027602052604090205460ff168061267857506001600160a01b03821660009081526027602052604090205460ff165b6126bd5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610df0565b60175443101580156126d157506000601754115b156127a1576001600160a01b03831660009081526018602052604090205460ff16158061270b57506005546001600160a01b038381169116145b8061272057506001600160a01b03821661dead145b6127a15760405162461bcd60e51b815260206004820152604660248201527f426f74732063616e6e6f74207472616e7366657220746f6b656e7320696e206f60448201527f72206f75742065786365707420746f206f776e6572206f722064656164206164606482015265323932b9b99760d11b608482015260a401610df0565b601a5460ff1615612963576005546001600160a01b038481169116148015906127d857506005546001600160a01b03838116911614155b80156127ec57506001600160a01b03821615155b801561280357506001600160a01b03821661dead14155b801561282857506001600160a01b03831660009081526027602052604090205460ff16155b801561284d57506001600160a01b03821660009081526027602052604090205460ff16155b15612963576001600160a01b03831660009081526029602052604090205460ff16801561289357506001600160a01b03821660009081526028602052604090205460ff16155b156128cd576006548111156128a757600080fd5b6008546128b38361132e565b6128bd9083614022565b11156128c857600080fd5b612963565b6001600160a01b03821660009081526029602052604090205460ff16801561290e57506001600160a01b03831660009081526028602052604090205460ff16155b15612922576007548111156128c857600080fd5b6001600160a01b03821660009081526028602052604090205460ff166129635760085461294e8361132e565b6129589083614022565b111561296357600080fd5b600061296e3061132e565b6014549091508110801590819061298d5750601a5462010000900460ff165b80156129a35750601354600160a01b900460ff16155b80156129c857506001600160a01b03851660009081526029602052604090205460ff16155b80156129ed57506001600160a01b03851660009081526027602052604090205460ff16155b8015612a1257506001600160a01b03841660009081526027602052604090205460ff16155b15612a40576013805460ff60a01b1916600160a01b179055612a32612f1a565b6013805460ff60a01b191690555b60105460ff1615612a9557600b544210158015612a6557506703782dace9d900004710155b8015612a7a57506001612a786009613292565b115b15612a8d57612a888461329c565b612a95565b612a956133c3565b6001600160a01b03851660009081526027602052604090205460019060ff1680612ad757506001600160a01b03851660009081526027602052604090205460ff165b15612ae0575060005b60008115612ee157601754431080612b265750670c7d713b49da0000600654612b09919061415b565b8510158015612b265750436017546005612b239190614022565b10155b8015612b4a57506001600160a01b03871660009081526029602052604090205460ff165b8015612b6f57506001600160a01b03861660009081526029602052604090205460ff16155b8015612b7d57506000601b54115b15612cf2576017544310612ba457600160066000828254612b9e919061415b565b90915550505b6001600160a01b03861660009081526018602052604090205460ff16612c3f576001600160a01b0386166000908152601860205260408120805460ff191660019081179091556019805491929091612bfd908490614022565b90915550506040516001600160a01b03871681527fc69d77aec5786ffcf6525c771a49f6299726bb8f4a25ae2723602cd7a28fc1dd9060200160405180910390a15b602654601b54612c4f908761413c565b612c59919061403a565b9050601b54601d5482612c6c919061413c565b612c76919061403a565b60246000828254612c879190614022565b9091555050601b54601c54612c9c908361413c565b612ca6919061403a565b60236000828254612cb79190614022565b9091555050601b54601e54612ccc908361413c565b612cd6919061403a565b60256000828254612ce79190614022565b90915550612ec39050565b6001600160a01b03861660009081526029602052604090205460ff168015612d1c57506000601f54115b15612dae57602654601f54612d31908761413c565b612d3b919061403a565b9050601f5460215482612d4e919061413c565b612d58919061403a565b60246000828254612d699190614022565b9091555050601f54602054612d7e908361413c565b612d88919061403a565b60236000828254612d999190614022565b9091555050601f54602254612ccc908361413c565b6001600160a01b03871660009081526029602052604090205460ff168015612dd857506000601b54115b15612ec357602654601b54612ded908761413c565b612df7919061403a565b9050601b54601d5482612e0a919061413c565b612e14919061403a565b60246000828254612e259190614022565b9091555050601b54601c54612e3a908361413c565b612e44919061403a565b60236000828254612e559190614022565b9091555050601b54601e54612e6a908361413c565b612e74919061403a565b60256000828254612e859190614022565b9091555050600e5460ff161580612ea25750612e9f611a7e565b85115b15612ec357612eb260098761326d565b612ec357612ec1600987613424565b505b8015612ed457612ed487308361242a565b612ede818661415b565b94505b612eec87878761242a565b612ef760098861326d565b8015612f005750815b15611a7557612f10600988613439565b5050505050505050565b6000612f253061132e565b90506000602554602354602454612f3c9190614022565b612f469190614022565b9050811580612f53575080155b15612f5c575050565b601454612f6a90600a61413c565b821115612f8257601454612f7f90600a61413c565b91505b60008060028360245486612f96919061413c565b612fa0919061403a565b612faa919061403a565b905047612fbf612fba838761415b565b61344e565b6000612fcb824761415b565b9050600081905060006002602454612fe3919061403a565b612fed908861415b565b602354612ffa908561413c565b613004919061403a565b905060006002602454613017919061403a565b613021908961415b565b60255461302e908661413c565b613038919061403a565b90506130448183614022565b61304e908461415b565b6000602481905560238190556025559250851580159061306e5750600083115b1561307d5761307d86846135af565b81156130db576015546040516001600160a01b03909116908390600081818185875af1925050503d80600081146130d0576040519150601f19603f3d011682016040523d82523d6000602084013e6130d5565b606091505b50909750505b505050505050505050565b6040805160028082526060820183526000926020830190803683375050601254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b15801561314b57600080fd5b505afa15801561315f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061318391906139e8565b816000815181106131965761319661421e565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106131ca576131ca61421e565b6001600160a01b03928316602091820292909201015260125460405163b6f9de9560e01b815291169063b6f9de9590849061321290600090869061dead904290600401613e29565b6000604051808303818588803b15801561322b57600080fd5b505af1158015611a75573d6000803e3d6000fd5b6001600160a01b0382166000908152602960205260409020805460ff1916821515179055611d14828261365d565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b6000610dc0825490565b6000600c54426132ac9190614022565b600b55600061330c6133048260016132c46009613292565b6132ce919061415b565b6132d78761132e565b6132e261dead61132e565b6132eb3061132e565b6132f59190614022565b6132ff9190614022565b6136c0565b6009906137e1565b905060006064600f5447613320919061413c565b61332a919061403a565b9050816001600160a01b03168160405160006040518083038185875af1925050503d8060008114613377576040519150601f19603f3d011682016040523d82523d6000602084013e61337c565b606091505b50909350508215611e91576040516001600160a01b0383169082907fbd73dd3a978f545a338a5be0f5f49671a6a8dd2c5d8ba117281ff20ad917c93b90600090a350505050565b6000806133d160024761403a565b50506040516000903090819083908181818181875af1925050503d8060008114613417576040519150601f19603f3d011682016040523d82523d6000602084013e61341c565b606091505b505050505050565b600061328b836001600160a01b0384166137ed565b600061328b836001600160a01b03841661383c565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106134835761348361421e565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156134d757600080fd5b505afa1580156134eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350f91906139e8565b816001815181106135225761352261421e565b6001600160a01b0392831660209182029290920101526012546135489130911684612306565b60125460405163791ac94760e01b81526001600160a01b039091169063791ac94790613581908590600090869030904290600401613f91565b600060405180830381600087803b15801561359b57600080fd5b505af115801561341c573d6000803e3d6000fd5b6012546135c79030906001600160a01b031684612306565b60125460405163f305d71960e01b81526001600160a01b039091169063f305d7199083906136049030908790600090819084904290600401613dee565b6060604051808303818588803b15801561361d57600080fd5b505af1158015613631573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906136569190613d7c565b5050505050565b6001600160a01b038216600081815260286020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6040516bffffffffffffffffffffffff193360601b16602082015260009081908390439042906034016040516020818303038152906040528051906020012060001c61370c919061403a565b6040516bffffffffffffffffffffffff194160601b166020820152459042906034016040516020818303038152906040528051906020012060001c613751919061403a565b61375b4442614022565b6137659190614022565b61376f9190614022565b6137799190614022565b6137839190614022565b61378d9190614022565b60405160200161379f91815260200190565b60408051601f1981840301815291905280516020909101209050846137c4818661415b565b6137ce90836141c8565b6137d89190614022565b95945050505050565b600061328b838361392f565b600081815260018301602052604081205461383457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610dc0565b506000610dc0565b6000818152600183016020526040812054801561392557600061386060018361415b565b85549091506000906138749060019061415b565b90508181146138d95760008660000182815481106138945761389461421e565b90600052602060002001549050808760000184815481106138b7576138b761421e565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806138ea576138ea614208565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610dc0565b6000915050610dc0565b60008260000182815481106139465761394661421e565b9060005260206000200154905092915050565b600082601f83011261396a57600080fd5b8135602061397f61397a83613ffe565b613fcd565b80838252828201915082860187848660051b890101111561399f57600080fd5b60005b858110156139be578135845292840192908401906001016139a2565b5090979650505050505050565b6000602082840312156139dd57600080fd5b813561328b8161424a565b6000602082840312156139fa57600080fd5b815161328b8161424a565b60008060408385031215613a1857600080fd5b8235613a238161424a565b91506020830135613a338161424a565b809150509250929050565b600080600060608486031215613a5357600080fd5b8335613a5e8161424a565b92506020840135613a6e8161424a565b929592945050506040919091013590565b60008060408385031215613a9257600080fd5b8235613a9d8161424a565b91506020830135613a3381614262565b60008060408385031215613ac057600080fd5b8235613acb8161424a565b946020939093013593505050565b600080600060408486031215613aee57600080fd5b833567ffffffffffffffff80821115613b0657600080fd5b818601915086601f830112613b1a57600080fd5b813581811115613b2957600080fd5b8760208260051b8501011115613b3e57600080fd5b60209283019550935050840135613b5481614262565b809150509250925092565b60008060408385031215613b7257600080fd5b823567ffffffffffffffff80821115613b8a57600080fd5b818501915085601f830112613b9e57600080fd5b81356020613bae61397a83613ffe565b8083825282820191508286018a848660051b8901011115613bce57600080fd5b600096505b84871015613bfa578035613be68161424a565b835260019690960195918301918301613bd3565b5096505086013592505080821115613c1157600080fd5b50613c1e85828601613959565b9150509250929050565b60006020808385031215613c3b57600080fd5b825167ffffffffffffffff811115613c5257600080fd5b8301601f81018513613c6357600080fd5b8051613c7161397a82613ffe565b80828252848201915084840188868560051b8701011115613c9157600080fd5b600094505b83851015613cb4578051835260019490940193918501918501613c96565b50979650505050505050565b600060208284031215613cd257600080fd5b813561328b81614262565b600060208284031215613cef57600080fd5b815161328b81614262565b600060208284031215613d0c57600080fd5b5035919050565b600060208284031215613d2557600080fd5b5051919050565b60008060408385031215613d3f57600080fd5b505080516020909101519092909150565b600080600060608486031215613d6557600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215613d9157600080fd5b8351925060208401519150604084015190509250925092565b600081518084526020808501945080840160005b83811015613de35781516001600160a01b031687529582019590820190600101613dbe565b509495945050505050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b848152608060208201526000613e426080830186613daa565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b81811015613e8b57858101830151858201604001528201613e6f565b81811115613e9d576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b828152604060208201526000613f896040830184613daa565b949350505050565b85815284602082015260a060408201526000613fb060a0830186613daa565b6001600160a01b0394909416606083015250608001529392505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ff657613ff6614234565b604052919050565b600067ffffffffffffffff82111561401857614018614234565b5060051b60200190565b60008219821115614035576140356141dc565b500190565b600082614049576140496141f2565b500490565b600181815b8085111561408957816000190482111561406f5761406f6141dc565b8085161561407c57918102915b93841c9390800290614053565b509250929050565b600061328b60ff8416836000826140aa57506001610dc0565b816140b757506000610dc0565b81600181146140cd57600281146140d7576140f3565b6001915050610dc0565b60ff8411156140e8576140e86141dc565b50506001821b610dc0565b5060208310610133831016604e8410600b8410161715614116575081810a610dc0565b614120838361404e565b8060001904821115614134576141346141dc565b029392505050565b6000816000190483118215151615614156576141566141dc565b500290565b60008282101561416d5761416d6141dc565b500390565b600181811c9082168061418657607f821691505b602082108114156141a757634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156141c1576141c16141dc565b5060010190565b6000826141d7576141d76141f2565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461425f57600080fd5b50565b801515811461425f57600080fdfea26469706673582212205a162d89125a0384c4d6b0a43f9cbad028bd2374ec291bbca1608187a6e6d5ec64736f6c63430008070033

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

000000000000000000000000ca5b047b37b52c50771b604d8ab8b441c5cc4e6a

-----Decoded View---------------
Arg [0] : _newOwner (address): 0xCa5B047B37b52c50771B604d8aB8B441C5CC4e6A

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ca5b047b37b52c50771b604d8ab8b441c5cc4e6a


Deployed Bytecode Sourcemap

12451:22961:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4703:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13013:27;;;;;;;;;;-1:-1:-1;13013:27:0;;;;-1:-1:-1;;;;;13013:27:0;;;;;;-1:-1:-1;;;;;8907:32:1;;;8889:51;;8877:2;8862:18;13013:27:0;8743:203:1;5617:169:0;;;;;;;;;;-1:-1:-1;5617:169:0;;;;;:::i;:::-;;:::i;:::-;;;10908:14:1;;10901:22;10883:41;;10871:2;10856:18;5617:169:0;10743:187:1;14120:64:0;;;;;;;;;;-1:-1:-1;14120:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5024:108;;;;;;;;;;-1:-1:-1;5112:12:0;;5024:108;;;19253:25:1;;;19241:2;19226:18;5024:108:0;19107:177:1;13849:33:0;;;;;;;;;;;;;;;;18805:255;;;;;;;;;;-1:-1:-1;18805:255:0;;;;;:::i;:::-;;:::i;:::-;;19590:450;;;;;;;;;;-1:-1:-1;19590:450:0;;;;;:::i;:::-;;:::i;5794:492::-;;;;;;;;;;-1:-1:-1;5794:492:0;;;;;:::i;:::-;;:::i;17932:103::-;;;;;;;;;;-1:-1:-1;17932:103:0;;;;;:::i;:::-;;:::i;29319:105::-;;;;;;;;;;-1:-1:-1;29319:105:0;;;;;:::i;:::-;;:::i;18281:250::-;;;;;;;;;;-1:-1:-1;18281:250:0;;;;;:::i;:::-;;:::i;4923:93::-;;;;;;;;;;-1:-1:-1;4923:93:0;;5006:2;20355:36:1;;20343:2;20328:18;4923:93:0;20213:184:1;13770:29:0;;;;;;;;;;;;;;;;6294:215;;;;;;;;;;-1:-1:-1;6294:215:0;;;;;:::i;:::-;;:::i;12972:32::-;;;;;;;;;;;;;;;;13047:21;;;;;;;;;;-1:-1:-1;13047:21:0;;;;-1:-1:-1;;;;;13047:21:0;;;34709:336;;;;;;;;;;-1:-1:-1;34709:336:0;;;;;:::i;:::-;;:::i;13388:33::-;;;;;;;;;;-1:-1:-1;13388:33:0;;;;;;;;13693:32;;;;;;;;;;;;;;;;13298:49;;;;;;;;;;-1:-1:-1;13298:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35097:312;;;;;;;;;;;;;:::i;26986:120::-;;;;;;;;;;-1:-1:-1;27080:18:0;;27065:12;:33;26986:120;;28995:166;;;;;;;;;;-1:-1:-1;28995:166:0;;;;;:::i;:::-;;:::i;13546:31::-;;;;;;;;;;;;;;;;12584:28;;;;;;;;;;;;;;;;13658;;;;;;;;;;;;;;;;12929:34;;;;;;;;;;-1:-1:-1;12929:34:0;;;;;;;;13354:25;;;;;;;;;;;;;;;;13468:31;;;;;;;;;;-1:-1:-1;13468:31:0;;;;;;;;;;;5140:127;;;;;;;;;;-1:-1:-1;5140:127:0;;;;;:::i;:::-;;:::i;8779:150::-;;;;;;;;;;;;;:::i;17699:115::-;;;;;;;;;;;;;:::i;20052:260::-;;;;;;;;;;-1:-1:-1;20052:260:0;;;;;:::i;:::-;;:::i;12707:30::-;;;;;;;;;;;;;;;;28780:207;;;;;;;;;;-1:-1:-1;28780:207:0;;;;;:::i;:::-;;:::i;20879:391::-;;;;;;;;;;-1:-1:-1;20879:391:0;;;;;:::i;:::-;;:::i;17252:::-;;;;;;;;;;-1:-1:-1;17252:391:0;;;;;:::i;:::-;;:::i;34112:394::-;;;;;;;;;;-1:-1:-1;34112:394:0;;;;;:::i;:::-;;:::i;30534:1254::-;;;;;;;;;;-1:-1:-1;30534:1254:0;;;;;:::i;:::-;;:::i;12550:27::-;;;;;;;;;;;;;;;;33760:344;;;;;;;;;;;;;:::i;8565:79::-;;;;;;;;;;-1:-1:-1;8630:6:0;;-1:-1:-1;;;;;8630:6:0;8565:79;;4811:104;;;;;;;;;;;;;:::i;20320:295::-;;;;;;;;;;-1:-1:-1;20320:295:0;;;;;:::i;:::-;;:::i;6517:413::-;;;;;;;;;;-1:-1:-1;6517:413:0;;;;;:::i;:::-;;:::i;13258:33::-;;;;;;;;;;;;;;;;5275:175;;;;;;;;;;-1:-1:-1;5275:175:0;;;;;:::i;:::-;;:::i;13889:31::-;;;;;;;;;;;;;;;;12619:30;;;;;;;;;;;;;;;;12744:48;;;;;;;;;;;;;;;;18043:226;;;;;;;;;;-1:-1:-1;18043:226:0;;;;;:::i;:::-;;:::i;14342:58::-;;;;;;;;;;-1:-1:-1;14342:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13428:33;;;;;;;;;;-1:-1:-1;13428:33:0;;;;;;;;;;;21686:182;;;;;;;;;;-1:-1:-1;21686:182:0;;;;;:::i;:::-;;:::i;21278:400::-;;;;;;;;;;-1:-1:-1;21278:400:0;;;;;:::i;:::-;;:::i;13621:28::-;;;;;;;;;;;;;;;;19130:233;;;;;;;;;;-1:-1:-1;19130:233:0;;;;;:::i;:::-;;:::i;13929:38::-;;;;;;;;;;;;;;;;13512:27;;;;;;;;;;;;;;;;17822:102;;;;;;;;;;-1:-1:-1;17822:102:0;;;;;:::i;:::-;;:::i;18543:254::-;;;;;;;;;;-1:-1:-1;18543:254:0;;;;;:::i;:::-;;:::i;12884:38::-;;;;;;;;;;;;;;;;5458:151;;;;;;;;;;-1:-1:-1;5458:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;5574:18:0;;;5547:7;5574:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;5458:151;14061:52;;;;;;;;;;-1:-1:-1;14061:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13105:33;;;;;;;;;;;;;;;;13181:37;;;;;;;;;;;;;;;;13584:30;;;;;;;;;;;;;;;;8937:244;;;;;;;;;;-1:-1:-1;8937:244:0;;;;;:::i;:::-;;:::i;29169:142::-;;;;;;;;;;-1:-1:-1;29169:142:0;;;;;:::i;:::-;;:::i;34544:157::-;;;;;;;;;;;;;:::i;13732:31::-;;;;;;;;;;;;;;;;12799:38;;;;;;;;;;;;;;;;13808:34;;;;;;;;;;;;;;;;12844:33;;;;;;;;;;-1:-1:-1;12844:33:0;;;;;;;;17109:131;;;;;;;;;;-1:-1:-1;17109:131:0;;;;;:::i;:::-;;:::i;4703:100::-;4757:13;4790:5;4783:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4703:100;:::o;5617:169::-;5700:4;5717:39;229:10;5740:7;5749:6;5717:8;:39::i;:::-;-1:-1:-1;5774:4:0;5617:169;;;;;:::o;18805:255::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;;;;;;;;;18923:16:::1;5006:2:::0;18923::::1;:16;:::i;:::-;18915:3;18895:13;5112:12:::0;;;5024:108;18895:13:::1;:17;::::0;18911:1:::1;18895:17;:::i;:::-;:23;;;;:::i;:::-;18894:46;;;;:::i;:::-;18884:6;:56;;18876:65;;;::::0;::::1;;18980:16;5006:2:::0;18980::::1;:16;:::i;:::-;18970:27;::::0;:6;:27:::1;:::i;:::-;18952:15;:45:::0;;;19013:39:::1;::::0;19253:25:1;;;19013:39:0::1;::::0;19241:2:1;19226:18;19013:39:0::1;;;;;;;;18805:255:::0;:::o;19590:450::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;19732:15:::1;:22;19714:7;:14;:40;19706:49;;;::::0;::::1;;19791:3;19774:7;:14;:20;19766:29;;;::::0;::::1;;19908:9;19904:129;19927:7;:14;19923:1;:18;19904:129;;;19962:59;19978:10;19990:7;19998:1;19990:10;;;;;;;;:::i;:::-;;;;;;;20002:15;20018:1;20002:18;;;;;;;;:::i;:::-;;;;;;;19962:15;:59::i;:::-;19943:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19904:129;;;;19590:450:::0;;:::o;5794:492::-;5934:4;5951:36;5961:6;5969:9;5980:6;5951:9;:36::i;:::-;-1:-1:-1;;;;;6027:19:0;;6000:24;6027:19;;;:11;:19;;;;;;;;229:10;6027:33;;;;;;;;6079:26;;;;6071:79;;;;-1:-1:-1;;;6071:79:0;;16843:2:1;6071:79:0;;;16825:21:1;16882:2;16862:18;;;16855:30;16921:34;16901:18;;;16894:62;-1:-1:-1;;;16972:18:1;;;16965:38;17020:19;;6071:79:0;16641:404:1;6071:79:0;6186:57;6195:6;229:10;6236:6;6217:16;:25;6186:8;:57::i;:::-;-1:-1:-1;6274:4:0;;5794:492;-1:-1:-1;;;;5794:492:0:o;17932:103::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;18003:14:::1;:24:::0;;-1:-1:-1;;18003:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17932:103::o;29319:105::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;29391:14:::1;:25:::0;;-1:-1:-1;;29391:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29319:105::o;18281:250::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;18403:16:::1;5006:2:::0;18403::::1;:16;:::i;:::-;18394:4;18374:13;5112:12:::0;;;5024:108;18374:13:::1;:17;::::0;18390:1:::1;18374:17;:::i;:::-;:24;;;;:::i;:::-;18373:47;;;;:::i;:::-;18363:6;:57;;18355:66;;;::::0;::::1;;18457:16;5006:2:::0;18457::::1;:16;:::i;:::-;18447:27;::::0;:6;:27:::1;:::i;:::-;18432:12;:42:::0;;;18490:33:::1;::::0;19253:25:1;;;18490:33:0::1;::::0;19241:2:1;19226:18;18490:33:0::1;19107:177:1::0;6294:215:0;229:10;6382:4;6431:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6431:34:0;;;;;;;;;;6382:4;;6399:80;;6422:7;;6431:47;;6468:10;;6431:47;:::i;:::-;6399:8;:80::i;34709:336::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34805:32:0;::::1;34797:41;;;::::0;::::1;;34880:17;::::0;;-1:-1:-1;;;;;34908:47:0;;::::1;-1:-1:-1::0;;;;;;34908:47:0;::::1;::::0;::::1;::::0;;;34971:66:::1;::::0;34880:17;::::1;::::0;34908:47;34880:17;;34971:66:::1;::::0;34849:28:::1;::::0;34971:66:::1;34786:259;34709:336:::0;:::o;35097:312::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;35188:18:::1;;35160:24;35178:4;35160:9;:24::i;:::-;:46;;35152:123;;;::::0;;-1:-1:-1;;;35152:123:0;;16052:2:1;35152:123:0::1;::::0;::::1;16034:21:1::0;16071:18;;;16064:30;;;;16130:34;16110:18;;;16103:62;16201:34;16181:18;;;16174:62;16253:19;;35152:123:0::1;15850:428:1::0;35152:123:0::1;35286:8;:15:::0;;-1:-1:-1;;;;35286:15:0::1;-1:-1:-1::0;;;35286:15:0::1;::::0;;35312:10:::1;:8;:10::i;:::-;35333:8;:16:::0;;-1:-1:-1;;;;35333:16:0::1;::::0;;35365:36:::1;::::0;35385:15:::1;19253:25:1::0;;35365:36:0::1;::::0;19241:2:1;19226:18;35365:36:0::1;;;;;;;35097:312::o:0;28995:166::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;29094:2:::1;29083:7;:13;;:31;;;;;29111:3;29100:7;:14;;29083:31;29075:40;;;::::0;::::1;;29126:17;:27:::0;28995:166::o;5140:127::-;-1:-1:-1;;;;;5241:18:0;5214:7;5241:18;;;;;;;;;;;;5140:127::o;8779:150::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;8872:6:::1;::::0;8851:40:::1;::::0;8888:1:::1;::::0;-1:-1:-1;;;;;8872:6:0::1;::::0;8851:40:::1;::::0;8888:1;;8851:40:::1;8902:6;:19:::0;;-1:-1:-1;;;;;;8902:19:0::1;::::0;;8779:150::o;17699:115::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;17753:14:::1;:22:::0;;-1:-1:-1;;17753:22:0::1;::::0;;17791:15:::1;::::0;::::1;::::0;17770:5:::1;::::0;17791:15:::1;17699:115::o:0;20052:260::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;20148:4:::1;20144:104;;20186:6;::::0;-1:-1:-1;;;;;20176:16:0;;::::1;20186:6:::0;::::1;20176:16;;20168:68;;;::::0;-1:-1:-1;;;20168:68:0;;14404:2:1;20168:68:0::1;::::0;::::1;14386:21:1::0;14443:2;14423:18;;;14416:30;14482:34;14462:18;;;14455:62;-1:-1:-1;;;14533:18:1;;;14526:37;14580:19;;20168:68:0::1;14202:403:1::0;20168:68:0::1;-1:-1:-1::0;;;;;20258:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;20258:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20052:260::o;28780:207::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;28893:1:::1;28876:13;:18;;:43;;;;;28915:4;28898:13;:21;;28876:43;28868:52;;;::::0;::::1;;28954:25;:13:::0;28970:9:::1;28954:25;:::i;:::-;28931:20;:48:::0;-1:-1:-1;28780:207:0:o;20879:391::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;21000:16:::1;:33:::0;;;21044:15:::1;:31:::0;;;21086:13:::1;:27:::0;;;21102:11;21139:34:::1;21062:13:::0;21019:14;21139:34:::1;:::i;:::-;:50;;;;:::i;:::-;21124:12;:65:::0;;;21224:4:::1;-1:-1:-1::0;21208:20:0::1;21200:62;;;::::0;-1:-1:-1;;;21200:62:0;;12885:2:1;21200:62:0::1;::::0;::::1;12867:21:1::0;12924:2;12904:18;;;12897:30;12963:31;12943:18;;;12936:59;13012:18;;21200:62:0::1;12683:353:1::0;17252:391:0;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;17339:18:::1;::::0;:23;17331:32:::1;;;::::0;::::1;;17374:13;:20:::0;;-1:-1:-1;;17405:18:0;;;;;17455:12:::1;17434:18;:33:::0;;;17499:37:::1;::::0;17520:16;;17499:37:::1;:::i;:::-;17478:18;:58:::0;17583:20:::1;::::0;17565:38:::1;::::0;:15:::1;:38;:::i;:::-;17547:15;:56:::0;17619:16:::1;::::0;::::1;::::0;;;::::1;17252:391:::0;:::o;34112:394::-;8692:6;;34199:10;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34230:20:0;::::1;34222:29;;;::::0;::::1;;-1:-1:-1::0;;;;;34270:23:0;::::1;34288:4;34270:23;;34262:32;;;::::0;::::1;;34332:39;::::0;-1:-1:-1;;;34332:39:0;;34365:4:::1;34332:39;::::0;::::1;8889:51:1::0;34305:24:0::1;::::0;-1:-1:-1;;;;;34332:24:0;::::1;::::0;::::1;::::0;8862:18:1;;34332:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34390:46;::::0;-1:-1:-1;;;34390:46:0;;-1:-1:-1;;;;;9432:32:1;;;34390:46:0::1;::::0;::::1;9414:51:1::0;9481:18;;;9474:34;;;34305:66:0;;-1:-1:-1;34390:23:0;;::::1;::::0;::::1;::::0;9387:18:1;;34390:46:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34452;::::0;;-1:-1:-1;;;;;9432:32:1;;9414:51;;9496:2;9481:18;;9474:34;;;34382:54:0;;-1:-1:-1;34452:46:0::1;::::0;9387:18:1;34452:46:0::1;;;;;;;34211:295;34112:394:::0;;;;:::o;30534:1254::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;30630:2:::1;30620:7;:12;;30612:21;;;::::0;::::1;;30673:25;30691:7;30673:15;:25;:::i;:::-;30652:17;;:46;;30644:55;;;::::0;::::1;;30730:15;30710:17;:35:::0;30783:6:::1;::::0;30776:39:::1;::::0;-1:-1:-1;;;30776:39:0;;30809:4:::1;30776:39;::::0;::::1;8889:51:1::0;30756:17:0::1;::::0;-1:-1:-1;;;;;30783:6:0::1;::::0;30776:24:::1;::::0;8862:18:1;;30776:39:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30756:59;;30826:20;30849:24;30867:4;30849:9;:24::i;:::-;30826:47:::0;-1:-1:-1;30884:16:0::1;30925:3;30903:19;30915:7:::0;30903:9;:19:::1;:::i;:::-;:25;;;;:::i;:::-;31075:6;::::0;31099:9:::1;::::0;31068:52:::1;::::0;-1:-1:-1;;;31068:52:0;;-1:-1:-1;;;;;31099:9:0;;::::1;31068:52;::::0;::::1;9414:51:1::0;9481:18;;;9474:34;;;30884:44:0;;-1:-1:-1;30967:21:0::1;::::0;31075:6;::::1;::::0;31068:22:::1;::::0;9387:18:1;;31068:52:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;31166:9:0::1;::::0;:234:::1;::::0;-1:-1:-1;;;31166:234:0;;-1:-1:-1;;;;;31166:9:0;;::::1;::::0;:28:::1;::::0;:234:::1;::::0;31217:4:::1;::::0;31237:8;;31166:9;;;;31217:4;;31374:15:::1;::::0;31166:234:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;31413:25;31468:12;31441:24;31459:4;31441:9;:24::i;:::-;:39;;;;:::i;:::-;31413:67:::0;-1:-1:-1;31494:21:0;;31491:118:::1;;31531:66;31555:4;31570:6;31579:17;31531:15;:66::i;:::-;31621:23;31647:41;31671:17:::0;31647:21:::1;:41;:::i;:::-;31621:67:::0;-1:-1:-1;31704:19:0;;31701:80:::1;;31739:30;31753:15;31739:13;:30::i;:::-;30601:1187;;;;;;30534:1254:::0;:::o;33760:344::-;33853:16;;;33867:1;33853:16;;;;;;;;33810:7;;;;33853:16;33867:1;33853:16;;;;;;;;-1:-1:-1;;33890:9:0;;:16;;;-1:-1:-1;;;33890:16:0;;;;33829:40;;-1:-1:-1;;;;;;33890:9:0;;;;:14;;-1:-1:-1;33890:16:0;;;;;;;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33880:4;33885:1;33880:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;33880:26:0;;;-1:-1:-1;;;;;33880:26:0;;;;;33935:4;33917;33922:1;33917:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;33917:23:0;;;;:7;;;;;;;;;;:23;33988:16;;;34002:1;33988:16;;;;;;;;33961:24;;33988:16;;34002:1;;33988:16;;;;;;;;;-1:-1:-1;;34025:9:0;;34049:12;;34025:43;;-1:-1:-1;;;34025:43:0;;33961;;-1:-1:-1;;;;;;34025:9:0;;;;:23;;:43;;34063:4;;34025:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34025:43:0;;;;;;;;;;;;:::i;:::-;34015:53;;34086:7;34094:1;34086:10;;;;;;;;:::i;:::-;;;;;;;34079:17;;;;33760:344;:::o;4811:104::-;4867:13;4900:7;4893:14;;;;;:::i;20320:295::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;20429:6:::1;::::0;-1:-1:-1;;;;;20421:14:0;;::::1;20429:6:::0;::::1;20421:14;;20413:84;;;::::0;-1:-1:-1;;;20413:84:0;;14812:2:1;20413:84:0::1;::::0;::::1;14794:21:1::0;14851:2;14831:18;;;14824:30;14890:34;14870:18;;;14863:62;14961:27;14941:18;;;14934:55;15006:19;;20413:84:0::1;14610:421:1::0;20413:84:0::1;20510:41;20539:4;20545:5;20510:28;:41::i;:::-;20567:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;20567:40:0;::::1;::::0;::::1;::::0;;;::::1;20320:295:::0;;:::o;6517:413::-;229:10;6610:4;6654:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6654:34:0;;;;;;;;;;6707:35;;;;6699:85;;;;-1:-1:-1;;;6699:85:0;;18903:2:1;6699:85:0;;;18885:21:1;18942:2;18922:18;;;18915:30;18981:34;18961:18;;;18954:62;-1:-1:-1;;;19032:18:1;;;19025:35;19077:19;;6699:85:0;18701:401:1;6699:85:0;6820:67;229:10;6843:7;6871:15;6852:16;:34;6820:8;:67::i;:::-;-1:-1:-1;6918:4:0;;6517:413;-1:-1:-1;;;6517:413:0:o;5275:175::-;5361:4;5378:42;229:10;5402:9;5413:6;5378:9;:42::i;18043:226::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;18155:9:::1;18151:111;18170:18:::0;;::::1;18151:111;;;18240:10;18209:16;:28;18226:7;;18234:1;18226:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18209:28:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;18209:28:0;:41;;-1:-1:-1;;18209:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18190:3;::::1;::::0;::::1;:::i;:::-;;;;18151:111;;;;18043:226:::0;;;:::o;21686:182::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21771:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;21771:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;21826:34;;10883:41:1;;;21826:34:0::1;::::0;10856:18:1;21826:34:0::1;;;;;;;21686:182:::0;;:::o;21278:400::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;21400:17:::1;:34:::0;;;21445:16:::1;:32:::0;;;21488:14:::1;:28:::0;;;21505:11;21543:36:::1;21464:13:::0;21420:14;21543:36:::1;:::i;:::-;:53;;;;:::i;:::-;21527:13;:69:::0;;;21632:4:::1;-1:-1:-1::0;21615:21:0::1;21607:63;;;::::0;-1:-1:-1;;;21607:63:0;;16485:2:1;21607:63:0::1;::::0;::::1;16467:21:1::0;16524:2;16504:18;;;16497:30;16563:31;16543:18;;;16536:59;16612:18;;21607:63:0::1;16283:353:1::0;19130:233:0;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;19253:6:::1;19233:13;5112:12:::0;;;5024:108;19233:13:::1;:17;::::0;19249:1:::1;19233:17;:::i;:::-;:26;;;;:::i;:::-;19220:9;:39;;19212:48;;;::::0;::::1;;19311:4;19291:13;5112:12:::0;;;5024:108;19291:13:::1;:17;::::0;19307:1:::1;19291:17;:::i;:::-;:24;;;;:::i;:::-;19278:9;:37;;19270:46;;;::::0;::::1;;19326:18;:30:::0;19130:233::o;17822:102::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;17894:13:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;17894:22:0;;::::1;::::0;;;::::1;::::0;;17822:102::o;18543:254::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;18666:16:::1;5006:2:::0;18666::::1;:16;:::i;:::-;18657:4;18637:13;5112:12:::0;;;5024:108;18637:13:::1;:17;::::0;18653:1:::1;18637:17;:::i;:::-;:24;;;;:::i;:::-;18636:47;;;;:::i;:::-;18626:6;:57;;18618:66;;;::::0;::::1;;18721:16;5006:2:::0;18721::::1;:16;:::i;:::-;18711:27;::::0;:6;:27:::1;:::i;:::-;18695:13;:43:::0;;;18754:35:::1;::::0;19253:25:1;;;18754:35:0::1;::::0;19241:2:1;19226:18;18754:35:0::1;19107:177:1::0;8937:244:0;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9026:22:0;::::1;9018:73;;;::::0;-1:-1:-1;;;9018:73:0;;13594:2:1;9018:73:0::1;::::0;::::1;13576:21:1::0;13633:2;13613:18;;;13606:30;13672:34;13652:18;;;13645:62;-1:-1:-1;;;13723:18:1;;;13716:36;13769:19;;9018:73:0::1;13392:402:1::0;9018:73:0::1;9128:6;::::0;9107:38:::1;::::0;-1:-1:-1;;;;;9107:38:0;;::::1;::::0;9128:6:::1;::::0;9107:38:::1;::::0;9128:6:::1;::::0;9107:38:::1;9156:6;:17:::0;;-1:-1:-1;;;;;;9156:17:0::1;-1:-1:-1::0;;;;;9156:17:0;;;::::1;::::0;;;::::1;::::0;;8937:244::o;29169:142::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;29269:1:::1;29260:6;:10;29252:19;;;::::0;::::1;;29282:12;:21:::0;29169:142::o;34544:157::-;8692:6;;-1:-1:-1;;;;;8692:6:0;229:10;8692:22;8684:67;;;;-1:-1:-1;;;8684:67:0;;;;;;;:::i;:::-;34602:12:::1;34646:7;8630:6:::0;;-1:-1:-1;;;;;8630:6:0;;8565:79;34646:7:::1;-1:-1:-1::0;;;;;34638:21:0::1;34667;34638:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17109:131:::0;17182:4;17205:27;:9;17224:7;17205:18;:27::i;7854:380::-;-1:-1:-1;;;;;7990:19:0;;7982:68;;;;-1:-1:-1;;;7982:68:0;;18498:2:1;7982:68:0;;;18480:21:1;18537:2;18517:18;;;18510:30;18576:34;18556:18;;;18549:62;-1:-1:-1;;;18627:18:1;;;18620:34;18671:19;;7982:68:0;18296:400:1;7982:68:0;-1:-1:-1;;;;;8069:21:0;;8061:68;;;;-1:-1:-1;;;8061:68:0;;14001:2:1;8061:68:0;;;13983:21:1;14040:2;14020:18;;;14013:30;14079:34;14059:18;;;14052:62;-1:-1:-1;;;14130:18:1;;;14123:32;14172:19;;8061:68:0;13799:398:1;8061:68:0;-1:-1:-1;;;;;8142:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8194:32;;19253:25:1;;;8194:32:0;;19226:18:1;8194:32:0;;;;;;;7854:380;;;:::o;6938:614::-;-1:-1:-1;;;;;7078:20:0;;7070:70;;;;-1:-1:-1;;;7070:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7159:23:0;;7151:71;;;;-1:-1:-1;;;7151:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7259:17:0;;7235:21;7259:17;;;;;;;;;;;7295:23;;;;7287:74;;;;-1:-1:-1;;;7287:74:0;;15645:2:1;7287:74:0;;;15627:21:1;15684:2;15664:18;;;15657:30;15723:34;15703:18;;;15696:62;-1:-1:-1;;;15774:18:1;;;15767:36;15820:19;;7287:74:0;15443:402:1;7287:74:0;-1:-1:-1;;;;;7397:17:0;;;:9;:17;;;;;;;;;;;7417:22;;;7397:42;;7461:20;;;;;;;;:30;;7433:6;;7397:9;7461:30;;7433:6;;7461:30;:::i;:::-;;;;;;;;7526:9;-1:-1:-1;;;;;7509:35:0;7518:6;-1:-1:-1;;;;;7509:35:0;;7537:6;7509:35;;;;19253:25:1;;19241:2;19226:18;;19107:177;7509:35:0;;;;;;;;7059:493;6938:614;;;:::o;21876:5102::-;-1:-1:-1;;;;;21976:18:0;;21968:68;;;;-1:-1:-1;;;21968:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22055:16:0;;22047:64;;;;-1:-1:-1;;;22047:64:0;;;;;;;:::i;:::-;22139:1;22130:6;:10;22122:61;;;;-1:-1:-1;;;22122:61:0;;15238:2:1;22122:61:0;;;15220:21:1;15277:2;15257:18;;;15250:30;15316:34;15296:18;;;15289:62;-1:-1:-1;;;15367:18:1;;;15360:36;15413:19;;22122:61:0;15036:402:1;22122:61:0;22208:13;;;;;;;22204:132;;-1:-1:-1;;;;;22245:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;22274:23:0;;;;;;:19;:23;;;;;;;;22245:52;22237:87;;;;-1:-1:-1;;;22237:87:0;;13243:2:1;22237:87:0;;;13225:21:1;13282:2;13262:18;;;13255:30;-1:-1:-1;;;13301:18:1;;;13294:52;13363:18;;22237:87:0;13041:346:1;22237:87:0;27080:18;;27065:12;:33;22351:26;:52;;;;;22402:1;22381:18;;:22;22351:52;22348:231;;;-1:-1:-1;;;;;22428:22:0;;;;;;:16;:22;;;;;;;;22427:23;;:40;;-1:-1:-1;8630:6:0;;-1:-1:-1;;;;;22454:13:0;;;8630:6;;22454:13;22427:40;:65;;;-1:-1:-1;;;;;;22471:21:0;;22485:6;22471:21;22427:65;22419:148;;;;-1:-1:-1;;;22419:148:0;;17613:2:1;22419:148:0;;;17595:21:1;17652:2;17632:18;;;17625:30;17691:34;17671:18;;;17664:62;17762:34;17742:18;;;17735:62;-1:-1:-1;;;17813:19:1;;;17806:37;17860:19;;22419:148:0;17411:474:1;22419:148:0;22602:14;;;;22599:878;;;8630:6;;-1:-1:-1;;;;;22636:15:0;;;8630:6;;22636:15;;;;:32;;-1:-1:-1;8630:6:0;;-1:-1:-1;;;;;22655:13:0;;;8630:6;;22655:13;;22636:32;:52;;;;-1:-1:-1;;;;;;22672:16:0;;;;22636:52;:77;;;;-1:-1:-1;;;;;;22692:21:0;;22706:6;22692:21;;22636:77;:107;;;;-1:-1:-1;;;;;;22718:25:0;;;;;;:19;:25;;;;;;;;22717:26;22636:107;:135;;;;-1:-1:-1;;;;;;22748:23:0;;;;;;:19;:23;;;;;;;;22747:24;22636:135;22632:834;;;-1:-1:-1;;;;;22856:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;22892:35:0;;;;;;:31;:35;;;;;;;;22891:36;22856:71;22852:599;;;22974:12;;22964:6;:22;;22956:31;;;;;;23048:15;;23031:13;23041:2;23031:9;:13::i;:::-;23022:22;;:6;:22;:::i;:::-;:41;;23014:50;;;;;;22852:599;;;-1:-1:-1;;;;;23141:29:0;;;;;;:25;:29;;;;;;;;:71;;;;-1:-1:-1;;;;;;23175:37:0;;;;;;:31;:37;;;;;;;;23174:38;23141:71;23137:314;;;23259:13;;23249:6;:23;;23241:32;;;;;23137:314;-1:-1:-1;;;;;23322:35:0;;;;;;:31;:35;;;;;;;;23317:134;;23415:15;;23398:13;23408:2;23398:9;:13::i;:::-;23389:22;;:6;:22;:::i;:::-;:41;;23381:50;;;;;;23489:28;23520:24;23538:4;23520:9;:24::i;:::-;23604:18;;23489:55;;-1:-1:-1;23580:42:0;;;;;;;23638:22;;-1:-1:-1;23649:11:0;;;;;;;23638:22;:35;;;;-1:-1:-1;23665:8:0;;-1:-1:-1;;;23665:8:0;;;;23664:9;23638:35;:71;;;;-1:-1:-1;;;;;;23678:31:0;;;;;;:25;:31;;;;;;;;23677:32;23638:71;:101;;;;-1:-1:-1;;;;;;23714:25:0;;;;;;:19;:25;;;;;;;;23713:26;23638:101;:129;;;;-1:-1:-1;;;;;;23744:23:0;;;;;;:19;:23;;;;;;;;23743:24;23638:129;23635:232;;;23784:8;:15;;-1:-1:-1;;;;23784:15:0;-1:-1:-1;;;23784:15:0;;;23814:10;:8;:10::i;:::-;23839:8;:16;;-1:-1:-1;;;;23839:16:0;;;23635:232;23882:14;;;;23879:262;;;23934:15;;23915;:34;;:73;;;;;23978:10;23953:21;:35;;23915:73;:99;;;;;24013:1;23992:18;:9;:16;:18::i;:::-;:22;23915:99;23912:218;;;24034:17;24048:2;24034:13;:17::i;:::-;23912:218;;;24105:9;:7;:9::i;:::-;-1:-1:-1;;;;;24271:25:0;;24153:12;24271:25;;;:19;:25;;;;;;24168:4;;24271:25;;;:52;;-1:-1:-1;;;;;;24300:23:0;;;;;;:19;:23;;;;;;;;24271:52;24268:99;;;-1:-1:-1;24350:5:0;24268:99;24387:12;24491:7;24488:2337;;;27080:18;;27065:12;:33;24554:106;;;;24609:8;24594:12;;:23;;;;:::i;:::-;24584:6;:33;;:75;;;;;24647:12;24621:18;;24642:1;24621:22;;;;:::i;:::-;:38;;24584:75;24553:143;;;;-1:-1:-1;;;;;;24665:31:0;;;;;;:25;:31;;;;;;;;24553:143;:177;;;;-1:-1:-1;;;;;;24701:29:0;;;;;;:25;:29;;;;;;;;24700:30;24553:177;:197;;;;;24749:1;24734:12;;:16;24553:197;24550:2106;;;27080:18;;27065:12;:33;24788:330;;25097:1;25081:12;;:17;;;;;;;:::i;:::-;;;;-1:-1:-1;;24788:330:0;-1:-1:-1;;;;;25142:20:0;;;;;;:16;:20;;;;;;;;25138:174;;-1:-1:-1;;;;;25186:20:0;;;;;;:16;:20;;;;;:27;;-1:-1:-1;;25186:27:0;25209:4;25186:27;;;;;;25236:10;:15;;25209:4;;25236:10;;:15;;25209:4;;25236:15;:::i;:::-;;;;-1:-1:-1;;25279:13:0;;-1:-1:-1;;;;;8907:32:1;;8889:51;;25279:13:0;;8877:2:1;8862:18;25279:13:0;;;;;;;25138:174;25363:15;;25348:12;;25339:21;;:6;:21;:::i;:::-;:39;;;;:::i;:::-;25332:46;;25441:12;;25423:15;;25416:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;25394:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;25521:12:0;;25502:16;;25495:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;25472:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;25595:12:0;;25579:13;;25572:20;;:4;:20;:::i;:::-;:35;;;;:::i;:::-;25552:16;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;24550:2106:0;;-1:-1:-1;24550:2106:0;;-1:-1:-1;;;;;25672:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;25721:1;25705:13;;:17;25672:50;25668:988;;;25774:15;;25758:13;;25749:22;;:6;:22;:::i;:::-;:40;;;;:::i;:::-;25742:47;;25856:13;;25837:16;;25830:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;25808:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;25938:13:0;;25918:17;;25911:24;;:4;:24;:::i;:::-;:40;;;;:::i;:::-;25888:19;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;26014:13:0;;25997:14;;25990:21;;:4;:21;:::i;25668:988::-;-1:-1:-1;;;;;26090:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;26140:1;26125:12;;:16;26090:51;26087:569;;;26190:15;;26175:12;;26166:21;;:6;:21;:::i;:::-;:39;;;;:::i;:::-;26159:46;;26268:12;;26250:15;;26243:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;26221:18;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;26348:12:0;;26329:16;;26322:23;;:4;:23;:::i;:::-;:38;;;;:::i;:::-;26299:19;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;26422:12:0;;26406:13;;26399:20;;:4;:20;:::i;:::-;:35;;;;:::i;:::-;26379:16;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;26457:14:0;;;;26456:15;;:47;;;26484:19;:17;:19::i;:::-;26475:6;:28;26456:47;26453:188;;;26531:22;:9;26550:2;26531:18;:22::i;:::-;26527:95;;26581:17;:9;26595:2;26581:13;:17::i;:::-;;26527:95;26687:8;;26684:93;;26719:42;26735:4;26749;26756;26719:15;:42::i;:::-;26799:14;26809:4;26799:14;;:::i;:::-;;;24488:2337;26837:33;26853:4;26859:2;26863:6;26837:15;:33::i;:::-;26886:24;:9;26905:4;26886:18;:24::i;:::-;:35;;;;;26914:7;26886:35;26883:88;;;26937:22;:9;26954:4;26937:16;:22::i;:::-;;21955:5023;;;;21876:5102;;;:::o;32186:1566::-;32227:23;32253:24;32271:4;32253:9;:24::i;:::-;32227:50;;32288:25;32359:16;;32337:19;;32316:18;;:40;;;;:::i;:::-;:59;;;;:::i;:::-;32288:87;-1:-1:-1;32399:20:0;;;:46;;-1:-1:-1;32423:22:0;;32399:46;32396:60;;;32448:7;;32186:1566::o;32396:60::-;32489:18;;:23;;32510:2;32489:23;:::i;:::-;32471:15;:41;32468:113;;;32546:18;;:23;;32567:2;32546:23;:::i;:::-;32528:41;;32468:113;32593:12;32675:23;32760:1;32740:17;32719:18;;32701:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;32675:86;-1:-1:-1;32807:21:0;32839:51;32856:33;32675:86;32856:15;:33;:::i;:::-;32839:16;:51::i;:::-;32911:18;32932:38;32956:14;32932:21;:38;:::i;:::-;32911:59;;32981:23;33007:10;32981:36;;33030:24;33133:1;33114:18;;:20;;;;:::i;:::-;33093:42;;:17;:42;:::i;:::-;33070:19;;33057:32;;:10;:32;:::i;:::-;:79;;;;:::i;:::-;33030:106;;33147:21;33244:1;33225:18;;:20;;;;:::i;:::-;33204:42;;:17;:42;:::i;:::-;33184:16;;33171:29;;:10;:29;:::i;:::-;:76;;;;:::i;:::-;33147:100;-1:-1:-1;33279:32:0;33147:100;33279:16;:32;:::i;:::-;33260:51;;;;:::i;:::-;33357:1;33336:18;:22;;;33369:19;:23;;;33403:16;:20;33260:51;-1:-1:-1;33447:19:0;;;;;:42;;;33488:1;33470:15;:19;33447:42;33444:119;;;33505:46;33518:15;33535;33505:12;:46::i;:::-;33578:20;;33575:124;;33635:17;;33627:60;;-1:-1:-1;;;;;33635:17:0;;;;33666:16;;33627:60;;;;33666:16;33635:17;33627:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33614:73:0;;-1:-1:-1;;33575:124:0;32214:1538;;;;;;;;;32186:1566::o;31796:382::-;31884:16;;;31898:1;31884:16;;;;;;;;31860:21;;31884:16;;;;;;;;-1:-1:-1;;31921:9:0;;:16;;;-1:-1:-1;;;31921:16:0;;;;31860:40;;-1:-1:-1;;;;;;31921:9:0;;;;:14;;-1:-1:-1;31921:16:0;;;;;;;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31911:4;31916:1;31911:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;31911:26:0;;;-1:-1:-1;;;;;31911:26:0;;;;;31966:4;31948;31953:1;31948:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31948:23:0;;;:7;;;;;;;;;:23;31984:9;;:186;;-1:-1:-1;;;31984:186:0;;:9;;;:60;;32052:11;;31984:186;;:9;;32095:4;;32122:6;;32144:15;;31984:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20623:248;-1:-1:-1;;;;;20706:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;20706:39:0;;;;;;;20766;20706:31;:39;20766:26;:39::i;2593:167::-;-1:-1:-1;;;;;2727:23:0;;2673:4;1707:19;;;:12;;;:19;;;;;;:24;;2697:55;2690:62;2593:167;-1:-1:-1;;;2593:167:0:o;2846:117::-;2909:7;2936:19;2944:3;1830:18;;1747:109;27570:562;27624:12;27683:20;;27665:15;:38;;;;:::i;:::-;27647:15;:56;27753:14;27770:125;27783:111;27753:14;27812:1;27793:18;:9;:16;:18::i;:::-;:20;;;;:::i;:::-;27871:22;27889:2;27871:9;:22::i;:::-;27842:26;27860:6;27842:9;:26::i;:::-;27815:24;27833:4;27815:9;:24::i;:::-;:53;;;;:::i;:::-;:78;;;;:::i;:::-;27783:6;:111::i;:::-;27770:9;;:12;:125::i;:::-;27753:142;;27906:16;27969:3;27949:17;;27925:21;:41;;;;:::i;:::-;:47;;;;:::i;:::-;27906:66;;28004:6;-1:-1:-1;;;;;27996:20:0;28024:8;27996:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27983:54:0;;-1:-1:-1;;28048:77:0;;;;28079:34;;-1:-1:-1;;;;;28079:34:0;;;28096:8;;28079:34;;;;;27613:519;;;27570:562;:::o;27272:286::-;27310:12;;27396:25;27420:1;27396:21;:25;:::i;:::-;-1:-1:-1;;27509:41:0;;27432:14;;27457:4;;;;27432:14;;;27509:41;27432:14;27509:41;27432:14;27457:4;27509:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27272:286:0:o;2189:152::-;2259:4;2283:50;2288:3;-1:-1:-1;;;;;2308:23:0;;2283:4;:50::i;2349:158::-;2422:4;2446:53;2454:3;-1:-1:-1;;;;;2474:23:0;;2446:7;:53::i;29434:573::-;29586:16;;;29600:1;29586:16;;;;;;;;29562:21;;29586:16;;;;;;;;;;-1:-1:-1;29586:16:0;29562:40;;29631:4;29613;29618:1;29613:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29613:23:0;;;:7;;;;;;;;;;:23;;;;29657:9;;:16;;;-1:-1:-1;;;29657:16:0;;;;:9;;;;;:14;;:16;;;;;29613:7;;29657:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29647:4;29652:1;29647:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;29647:26:0;;;:7;;;;;;;;;:26;29718:9;;29686:56;;29703:4;;29718:9;29730:11;29686:8;:56::i;:::-;29781:9;;:218;;-1:-1:-1;;;29781:218:0;;-1:-1:-1;;;;;29781:9:0;;;;:60;;:218;;29856:11;;29781:9;;29926:4;;29953;;29973:15;;29781:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30019:507;30199:9;;30167:56;;30184:4;;-1:-1:-1;;;;;30199:9:0;30211:11;30167:8;:56::i;:::-;30266:9;;:252;;-1:-1:-1;;;30266:252:0;;-1:-1:-1;;;;;30266:9:0;;;;:25;;30299:9;;30266:252;;30332:4;;30352:11;;30266:9;;;;30332:4;;30492:15;;30266:252;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;30019:507;;:::o;19375:207::-;-1:-1:-1;;;;;19463:39:0;;;;;;:31;:39;;;;;;;;;:52;;-1:-1:-1;;19463:52:0;;;;;;;;;;19531:43;;9119:51:1;;;9186:18;;;9179:50;19531:43:0;;9092:18:1;19531:43:0;;;;;;;19375:207;;:::o;28140:632::-;28559:28;;-1:-1:-1;;28576:10:0;8011:2:1;8007:15;8003:53;28559:28:0;;;7991:66:1;28219:7:0;;;;28671:5;;28635:12;;28594:15;;8073:12:1;;28559:28:0;;;;;;;;;;;;28549:39;;;;;;28541:48;;28540:70;;;;:::i;:::-;28421:32;;-1:-1:-1;;28438:14:0;8011:2:1;8007:15;8003:53;28421:32:0;;;7991:66:1;28501:14:0;;28460:15;;8073:12:1;;28421:32:0;;;;;;;;;;;;28411:43;;;;;;28403:52;;28402:74;;;;:::i;:::-;28343:34;28361:16;28343:15;:34;:::i;:::-;:134;;;;:::i;:::-;:172;;;;:::i;:::-;:268;;;;:::i;:::-;:304;;;;:::i;:::-;:333;;;;:::i;:::-;28304:391;;;;;;8685:19:1;;8729:2;8720:12;;8556:182;28304:391:0;;;;-1:-1:-1;;28304:391:0;;;;;;;;;28276:434;;28304:391;28276:434;;;;;-1:-1:-1;28760:4:0;28747:9;28760:4;28747:2;:9;:::i;:::-;28739:18;;:4;:18;:::i;:::-;:25;;;;:::i;:::-;28732:32;28140:632;-1:-1:-1;;;;;28140:632:0:o;2971:158::-;3045:7;3096:22;3100:3;3112:5;3096:3;:22::i;630:291::-;693:4;1707:19;;;:12;;;:19;;;;;;710:204;;-1:-1:-1;753:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;813:18;;791:19;;;:12;;;:19;;;;;;:40;;;;846:11;;710:204;-1:-1:-1;897:5:0;890:12;;929:673;995:4;1033:19;;;:12;;;:19;;;;;;1069:15;;1065:530;;1101:21;1125:14;1138:1;1125:10;:14;:::i;:::-;1174:18;;1101:38;;-1:-1:-1;1154:17:0;;1174:22;;1195:1;;1174:22;:::i;:::-;1154:42;;1230:13;1217:9;:26;1213:221;;1264:17;1284:3;:11;;1296:9;1284:22;;;;;;;;:::i;:::-;;;;;;;;;1264:42;;1354:9;1325:3;:11;;1337:13;1325:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;1382:23;;;:12;;;:23;;;;;:36;;;1213:221;1450:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1491:3;:12;;:19;1504:5;1491:19;;;;;;;;;;;1484:26;;;1534:4;1527:11;;;;;;;1065:530;1578:5;1571:12;;;;;1864:120;1931:7;1958:3;:11;;1970:5;1958:18;;;;;;;;:::i;:::-;;;;;;;;;1951:25;;1864:120;;;;:::o;14:673:1:-;68:5;121:3;114:4;106:6;102:17;98:27;88:55;;139:1;136;129:12;88:55;175:6;162:20;201:4;225:60;241:43;281:2;241:43;:::i;:::-;225:60;:::i;:::-;307:3;331:2;326:3;319:15;359:2;354:3;350:12;343:19;;394:2;386:6;382:15;446:3;441:2;435;432:1;428:10;420:6;416:23;412:32;409:41;406:61;;;463:1;460;453:12;406:61;485:1;495:163;509:2;506:1;503:9;495:163;;;566:17;;554:30;;604:12;;;;636;;;;527:1;520:9;495:163;;;-1:-1:-1;676:5:1;;14:673;-1:-1:-1;;;;;;;14:673:1:o;692:247::-;751:6;804:2;792:9;783:7;779:23;775:32;772:52;;;820:1;817;810:12;772:52;859:9;846:23;878:31;903:5;878:31;:::i;944:251::-;1014:6;1067:2;1055:9;1046:7;1042:23;1038:32;1035:52;;;1083:1;1080;1073:12;1035:52;1115:9;1109:16;1134:31;1159:5;1134:31;:::i;1200:388::-;1268:6;1276;1329:2;1317:9;1308:7;1304:23;1300:32;1297:52;;;1345:1;1342;1335:12;1297:52;1384:9;1371:23;1403:31;1428:5;1403:31;:::i;:::-;1453:5;-1:-1:-1;1510:2:1;1495:18;;1482:32;1523:33;1482:32;1523:33;:::i;:::-;1575:7;1565:17;;;1200:388;;;;;:::o;1593:456::-;1670:6;1678;1686;1739:2;1727:9;1718:7;1714:23;1710:32;1707:52;;;1755:1;1752;1745:12;1707:52;1794:9;1781:23;1813:31;1838:5;1813:31;:::i;:::-;1863:5;-1:-1:-1;1920:2:1;1905:18;;1892:32;1933:33;1892:32;1933:33;:::i;:::-;1593:456;;1985:7;;-1:-1:-1;;;2039:2:1;2024:18;;;;2011:32;;1593:456::o;2054:382::-;2119:6;2127;2180:2;2168:9;2159:7;2155:23;2151:32;2148:52;;;2196:1;2193;2186:12;2148:52;2235:9;2222:23;2254:31;2279:5;2254:31;:::i;:::-;2304:5;-1:-1:-1;2361:2:1;2346:18;;2333:32;2374:30;2333:32;2374:30;:::i;2441:315::-;2509:6;2517;2570:2;2558:9;2549:7;2545:23;2541:32;2538:52;;;2586:1;2583;2576:12;2538:52;2625:9;2612:23;2644:31;2669:5;2644:31;:::i;:::-;2694:5;2746:2;2731:18;;;;2718:32;;-1:-1:-1;;;2441:315:1:o;2761:750::-;2853:6;2861;2869;2922:2;2910:9;2901:7;2897:23;2893:32;2890:52;;;2938:1;2935;2928:12;2890:52;2978:9;2965:23;3007:18;3048:2;3040:6;3037:14;3034:34;;;3064:1;3061;3054:12;3034:34;3102:6;3091:9;3087:22;3077:32;;3147:7;3140:4;3136:2;3132:13;3128:27;3118:55;;3169:1;3166;3159:12;3118:55;3209:2;3196:16;3235:2;3227:6;3224:14;3221:34;;;3251:1;3248;3241:12;3221:34;3306:7;3299:4;3289:6;3286:1;3282:14;3278:2;3274:23;3270:34;3267:47;3264:67;;;3327:1;3324;3317:12;3264:67;3358:4;3350:13;;;;-1:-1:-1;3382:6:1;-1:-1:-1;;3423:20:1;;3410:34;3453:28;3410:34;3453:28;:::i;:::-;3500:5;3490:15;;;2761:750;;;;;:::o;3516:1226::-;3634:6;3642;3695:2;3683:9;3674:7;3670:23;3666:32;3663:52;;;3711:1;3708;3701:12;3663:52;3751:9;3738:23;3780:18;3821:2;3813:6;3810:14;3807:34;;;3837:1;3834;3827:12;3807:34;3875:6;3864:9;3860:22;3850:32;;3920:7;3913:4;3909:2;3905:13;3901:27;3891:55;;3942:1;3939;3932:12;3891:55;3978:2;3965:16;4000:4;4024:60;4040:43;4080:2;4040:43;:::i;4024:60::-;4106:3;4130:2;4125:3;4118:15;4158:2;4153:3;4149:12;4142:19;;4189:2;4185;4181:11;4237:7;4232:2;4226;4223:1;4219:10;4215:2;4211:19;4207:28;4204:41;4201:61;;;4258:1;4255;4248:12;4201:61;4280:1;4271:10;;4290:238;4304:2;4301:1;4298:9;4290:238;;;4375:3;4362:17;4392:31;4417:5;4392:31;:::i;:::-;4436:18;;4322:1;4315:9;;;;;4474:12;;;;4506;;4290:238;;;-1:-1:-1;4547:5:1;-1:-1:-1;;4590:18:1;;4577:32;;-1:-1:-1;;4621:16:1;;;4618:36;;;4650:1;4647;4640:12;4618:36;;4673:63;4728:7;4717:8;4706:9;4702:24;4673:63;:::i;:::-;4663:73;;;3516:1226;;;;;:::o;4747:892::-;4842:6;4873:2;4916;4904:9;4895:7;4891:23;4887:32;4884:52;;;4932:1;4929;4922:12;4884:52;4965:9;4959:16;4998:18;4990:6;4987:30;4984:50;;;5030:1;5027;5020:12;4984:50;5053:22;;5106:4;5098:13;;5094:27;-1:-1:-1;5084:55:1;;5135:1;5132;5125:12;5084:55;5164:2;5158:9;5187:60;5203:43;5243:2;5203:43;:::i;5187:60::-;5269:3;5293:2;5288:3;5281:15;5321:2;5316:3;5312:12;5305:19;;5352:2;5348;5344:11;5400:7;5395:2;5389;5386:1;5382:10;5378:2;5374:19;5370:28;5367:41;5364:61;;;5421:1;5418;5411:12;5364:61;5443:1;5434:10;;5453:156;5467:2;5464:1;5461:9;5453:156;;;5524:10;;5512:23;;5485:1;5478:9;;;;;5555:12;;;;5587;;5453:156;;;-1:-1:-1;5628:5:1;4747:892;-1:-1:-1;;;;;;;4747:892:1:o;5644:241::-;5700:6;5753:2;5741:9;5732:7;5728:23;5724:32;5721:52;;;5769:1;5766;5759:12;5721:52;5808:9;5795:23;5827:28;5849:5;5827:28;:::i;5890:245::-;5957:6;6010:2;5998:9;5989:7;5985:23;5981:32;5978:52;;;6026:1;6023;6016:12;5978:52;6058:9;6052:16;6077:28;6099:5;6077:28;:::i;6140:180::-;6199:6;6252:2;6240:9;6231:7;6227:23;6223:32;6220:52;;;6268:1;6265;6258:12;6220:52;-1:-1:-1;6291:23:1;;6140:180;-1:-1:-1;6140:180:1:o;6325:184::-;6395:6;6448:2;6436:9;6427:7;6423:23;6419:32;6416:52;;;6464:1;6461;6454:12;6416:52;-1:-1:-1;6487:16:1;;6325:184;-1:-1:-1;6325:184:1:o;6514:245::-;6593:6;6601;6654:2;6642:9;6633:7;6629:23;6625:32;6622:52;;;6670:1;6667;6660:12;6622:52;-1:-1:-1;;6693:16:1;;6749:2;6734:18;;;6728:25;6693:16;;6728:25;;-1:-1:-1;6514:245:1:o;6764:316::-;6841:6;6849;6857;6910:2;6898:9;6889:7;6885:23;6881:32;6878:52;;;6926:1;6923;6916:12;6878:52;-1:-1:-1;;6949:23:1;;;7019:2;7004:18;;6991:32;;-1:-1:-1;7070:2:1;7055:18;;;7042:32;;6764:316;-1:-1:-1;6764:316:1:o;7085:306::-;7173:6;7181;7189;7242:2;7230:9;7221:7;7217:23;7213:32;7210:52;;;7258:1;7255;7248:12;7210:52;7287:9;7281:16;7271:26;;7337:2;7326:9;7322:18;7316:25;7306:35;;7381:2;7370:9;7366:18;7360:25;7350:35;;7085:306;;;;;:::o;7396:461::-;7449:3;7487:5;7481:12;7514:6;7509:3;7502:19;7540:4;7569:2;7564:3;7560:12;7553:19;;7606:2;7599:5;7595:14;7627:1;7637:195;7651:6;7648:1;7645:13;7637:195;;;7716:13;;-1:-1:-1;;;;;7712:39:1;7700:52;;7772:12;;;;7807:15;;;;7748:1;7666:9;7637:195;;;-1:-1:-1;7848:3:1;;7396:461;-1:-1:-1;;;;;7396:461:1:o;9519:607::-;-1:-1:-1;;;;;9878:15:1;;;9860:34;;9925:2;9910:18;;9903:34;;;;9968:2;9953:18;;9946:34;;;;10011:2;9996:18;;9989:34;;;;10060:15;;;10054:3;10039:19;;10032:44;9840:3;10092:19;;10085:35;;;;9809:3;9794:19;;9519:607::o;11162:510::-;11433:6;11422:9;11415:25;11476:3;11471:2;11460:9;11456:18;11449:31;11396:4;11497:57;11549:3;11538:9;11534:19;11526:6;11497:57;:::i;:::-;-1:-1:-1;;;;;11590:32:1;;;;11585:2;11570:18;;11563:60;-1:-1:-1;11654:2:1;11639:18;11632:34;11489:65;11162:510;-1:-1:-1;;11162:510:1:o;11677:597::-;11789:4;11818:2;11847;11836:9;11829:21;11879:6;11873:13;11922:6;11917:2;11906:9;11902:18;11895:34;11947:1;11957:140;11971:6;11968:1;11965:13;11957:140;;;12066:14;;;12062:23;;12056:30;12032:17;;;12051:2;12028:26;12021:66;11986:10;;11957:140;;;12115:6;12112:1;12109:13;12106:91;;;12185:1;12180:2;12171:6;12160:9;12156:22;12152:31;12145:42;12106:91;-1:-1:-1;12258:2:1;12237:15;-1:-1:-1;;12233:29:1;12218:45;;;;12265:2;12214:54;;11677:597;-1:-1:-1;;;11677:597:1:o;12279:399::-;12481:2;12463:21;;;12520:2;12500:18;;;12493:30;12559:34;12554:2;12539:18;;12532:62;-1:-1:-1;;;12625:2:1;12610:18;;12603:33;12668:3;12653:19;;12279:399::o;17050:356::-;17252:2;17234:21;;;17271:18;;;17264:30;17330:34;17325:2;17310:18;;17303:62;17397:2;17382:18;;17050:356::o;17890:401::-;18092:2;18074:21;;;18131:2;18111:18;;;18104:30;18170:34;18165:2;18150:18;;18143:62;-1:-1:-1;;;18236:2:1;18221:18;;18214:35;18281:3;18266:19;;17890:401::o;19289:332::-;19496:6;19485:9;19478:25;19539:2;19534;19523:9;19519:18;19512:30;19459:4;19559:56;19611:2;19600:9;19596:18;19588:6;19559:56;:::i;:::-;19551:64;19289:332;-1:-1:-1;;;;19289:332:1:o;19626:582::-;19925:6;19914:9;19907:25;19968:6;19963:2;19952:9;19948:18;19941:34;20011:3;20006:2;19995:9;19991:18;19984:31;19888:4;20032:57;20084:3;20073:9;20069:19;20061:6;20032:57;:::i;:::-;-1:-1:-1;;;;;20125:32:1;;;;20120:2;20105:18;;20098:60;-1:-1:-1;20189:3:1;20174:19;20167:35;20024:65;19626:582;-1:-1:-1;;;19626:582:1:o;20402:275::-;20473:2;20467:9;20538:2;20519:13;;-1:-1:-1;;20515:27:1;20503:40;;20573:18;20558:34;;20594:22;;;20555:62;20552:88;;;20620:18;;:::i;:::-;20656:2;20649:22;20402:275;;-1:-1:-1;20402:275:1:o;20682:183::-;20742:4;20775:18;20767:6;20764:30;20761:56;;;20797:18;;:::i;:::-;-1:-1:-1;20842:1:1;20838:14;20854:4;20834:25;;20682:183::o;20870:128::-;20910:3;20941:1;20937:6;20934:1;20931:13;20928:39;;;20947:18;;:::i;:::-;-1:-1:-1;20983:9:1;;20870:128::o;21003:120::-;21043:1;21069;21059:35;;21074:18;;:::i;:::-;-1:-1:-1;21108:9:1;;21003:120::o;21128:422::-;21217:1;21260:5;21217:1;21274:270;21295:7;21285:8;21282:21;21274:270;;;21354:4;21350:1;21346:6;21342:17;21336:4;21333:27;21330:53;;;21363:18;;:::i;:::-;21413:7;21403:8;21399:22;21396:55;;;21433:16;;;;21396:55;21512:22;;;;21472:15;;;;21274:270;;;21278:3;21128:422;;;;;:::o;21555:140::-;21613:5;21642:47;21683:4;21673:8;21669:19;21663:4;21749:5;21779:8;21769:80;;-1:-1:-1;21820:1:1;21834:5;;21769:80;21868:4;21858:76;;-1:-1:-1;21905:1:1;21919:5;;21858:76;21950:4;21968:1;21963:59;;;;22036:1;22031:130;;;;21943:218;;21963:59;21993:1;21984:10;;22007:5;;;22031:130;22068:3;22058:8;22055:17;22052:43;;;22075:18;;:::i;:::-;-1:-1:-1;;22131:1:1;22117:16;;22146:5;;21943:218;;22245:2;22235:8;22232:16;22226:3;22220:4;22217:13;22213:36;22207:2;22197:8;22194:16;22189:2;22183:4;22180:12;22176:35;22173:77;22170:159;;;-1:-1:-1;22282:19:1;;;22314:5;;22170:159;22361:34;22386:8;22380:4;22361:34;:::i;:::-;22431:6;22427:1;22423:6;22419:19;22410:7;22407:32;22404:58;;;22442:18;;:::i;:::-;22480:20;;21700:806;-1:-1:-1;;;21700:806:1:o;22511:168::-;22551:7;22617:1;22613;22609:6;22605:14;22602:1;22599:21;22594:1;22587:9;22580:17;22576:45;22573:71;;;22624:18;;:::i;:::-;-1:-1:-1;22664:9:1;;22511:168::o;22684:125::-;22724:4;22752:1;22749;22746:8;22743:34;;;22757:18;;:::i;:::-;-1:-1:-1;22794:9:1;;22684:125::o;22814:380::-;22893:1;22889:12;;;;22936;;;22957:61;;23011:4;23003:6;22999:17;22989:27;;22957:61;23064:2;23056:6;23053:14;23033:18;23030:38;23027:161;;;23110:10;23105:3;23101:20;23098:1;23091:31;23145:4;23142:1;23135:15;23173:4;23170:1;23163:15;23027:161;;22814:380;;;:::o;23199:135::-;23238:3;-1:-1:-1;;23259:17:1;;23256:43;;;23279:18;;:::i;:::-;-1:-1:-1;23326:1:1;23315:13;;23199:135::o;23339:112::-;23371:1;23397;23387:35;;23402:18;;:::i;:::-;-1:-1:-1;23436:9:1;;23339:112::o;23456:127::-;23517:10;23512:3;23508:20;23505:1;23498:31;23548:4;23545:1;23538:15;23572:4;23569:1;23562:15;23588:127;23649:10;23644:3;23640:20;23637:1;23630:31;23680:4;23677:1;23670:15;23704:4;23701:1;23694:15;23720:127;23781:10;23776:3;23772:20;23769:1;23762:31;23812:4;23809:1;23802:15;23836:4;23833:1;23826:15;23852:127;23913:10;23908:3;23904:20;23901:1;23894:31;23944:4;23941:1;23934:15;23968:4;23965:1;23958:15;23984:127;24045:10;24040:3;24036:20;24033:1;24026:31;24076:4;24073:1;24066:15;24100:4;24097:1;24090:15;24116:131;-1:-1:-1;;;;;24191:31:1;;24181:42;;24171:70;;24237:1;24234;24227:12;24171:70;24116:131;:::o;24252:118::-;24338:5;24331:13;24324:21;24317:5;24314:32;24304:60;;24360:1;24357;24350:12

Swarm Source

ipfs://5a162d89125a0384c4d6b0a43f9cbad028bd2374ec291bbca1608187a6e6d5ec
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.