ETH Price: $3,454.86 (+1.65%)

Contract

0x92Be5c5E6dF24Bc5a54B2f157118Eee48AE91F46
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer214046542024-12-15 1:31:479 days ago1734226307IN
0x92Be5c5E...48AE91F46
0 ETH0.000444829.10279789
Transfer214044902024-12-15 0:58:479 days ago1734224327IN
0x92Be5c5E...48AE91F46
0 ETH0.000370477.58130927
Transfer214032892024-12-14 20:58:239 days ago1734209903IN
0x92Be5c5E...48AE91F46
0 ETH0.000457369.36631351
Approve202701572024-07-09 16:33:59168 days ago1720542839IN
0x92Be5c5E...48AE91F46
0 ETH0.000379698.14733848
Approve198614192024-05-13 13:33:35225 days ago1715607215IN
0x92Be5c5E...48AE91F46
0 ETH0.0005165811.09878267
Approve198614002024-05-13 13:29:47225 days ago1715606987IN
0x92Be5c5E...48AE91F46
0 ETH0.0005633512.10360183
Approve198613902024-05-13 13:27:47225 days ago1715606867IN
0x92Be5c5E...48AE91F46
0 ETH0.000703315.09111298
Approve198613902024-05-13 13:27:47225 days ago1715606867IN
0x92Be5c5E...48AE91F46
0 ETH0.000703315.09111298
Approve192044312024-02-11 11:09:23317 days ago1707649763IN
0x92Be5c5E...48AE91F46
0 ETH0.0010081221.65959514
Transfer192044232024-02-11 11:07:47317 days ago1707649667IN
0x92Be5c5E...48AE91F46
0 ETH0.0017358522.6576905
Approve190818412024-01-25 6:27:35334 days ago1706164055IN
0x92Be5c5E...48AE91F46
0 ETH0.0004887110.5
Approve190573752024-01-21 19:47:35338 days ago1705866455IN
0x92Be5c5E...48AE91F46
0 ETH0.0008271417.89122723
Approve190407652024-01-19 11:59:47340 days ago1705665587IN
0x92Be5c5E...48AE91F46
0 ETH0.001110923.8677901
Approve187615262023-12-11 7:38:35379 days ago1702280315IN
0x92Be5c5E...48AE91F46
0 ETH0.0005791721.98493905
Approve187600972023-12-11 2:51:11379 days ago1702263071IN
0x92Be5c5E...48AE91F46
0 ETH0.0016104361.13090678
Approve187600972023-12-11 2:51:11379 days ago1702263071IN
0x92Be5c5E...48AE91F46
0 ETH0.0028211361.00542259
Approve187507842023-12-09 19:35:47381 days ago1702150547IN
0x92Be5c5E...48AE91F46
0 ETH0.0013470328.94120429
Approve187505512023-12-09 18:48:47381 days ago1702147727IN
0x92Be5c5E...48AE91F46
0 ETH0.0013442529.03104202
Approve187499752023-12-09 16:51:23381 days ago1702140683IN
0x92Be5c5E...48AE91F46
0 ETH0.0025346554.38696535
Approve187499712023-12-09 16:50:23381 days ago1702140623IN
0x92Be5c5E...48AE91F46
0 ETH0.0023095149.5561919
Approve182338942023-09-28 11:20:11453 days ago1695900011IN
0x92Be5c5E...48AE91F46
0 ETH0.000323636.9983744
Approve182337832023-09-28 10:57:59453 days ago1695898679IN
0x92Be5c5E...48AE91F46
0 ETH0.000349477.55913621
Approve182326612023-09-28 7:10:11453 days ago1695885011IN
0x92Be5c5E...48AE91F46
0 ETH0.000444489.61177639
Approve182326492023-09-28 7:07:47453 days ago1695884867IN
0x92Be5c5E...48AE91F46
0 ETH0.0005066310.95565831
Approve182326382023-09-28 7:05:23453 days ago1695884723IN
0x92Be5c5E...48AE91F46
0 ETH0.000439519.50673883
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
181226502023-09-12 20:31:59469 days ago1694550719
0x92Be5c5E...48AE91F46
0.00177597 ETH
181226502023-09-12 20:31:59469 days ago1694550719
0x92Be5c5E...48AE91F46
0.00177597 ETH
181226502023-09-12 20:31:59469 days ago1694550719
0x92Be5c5E...48AE91F46
0.00532791 ETH
181226502023-09-12 20:31:59469 days ago1694550719
0x92Be5c5E...48AE91F46
0.00044399 ETH
181226502023-09-12 20:31:59469 days ago1694550719
0x92Be5c5E...48AE91F46
0.0093231 ETH
181134832023-09-11 13:42:59470 days ago1694439779
0x92Be5c5E...48AE91F46
0.00470674 ETH
181134832023-09-11 13:42:59470 days ago1694439779
0x92Be5c5E...48AE91F46
0.00470674 ETH
181134832023-09-11 13:42:59470 days ago1694439779
0x92Be5c5E...48AE91F46
0.01412023 ETH
181134832023-09-11 13:42:59470 days ago1694439779
0x92Be5c5E...48AE91F46
0.00000074 ETH
181134832023-09-11 13:42:59470 days ago1694439779
0x92Be5c5E...48AE91F46
0.00117668 ETH
181134832023-09-11 13:42:59470 days ago1694439779
0x92Be5c5E...48AE91F46
0.02470874 ETH
180531472023-09-03 2:59:47478 days ago1693709987
0x92Be5c5E...48AE91F46
0.0057543 ETH
180531472023-09-03 2:59:47478 days ago1693709987
0x92Be5c5E...48AE91F46
0.0057543 ETH
180531472023-09-03 2:59:47478 days ago1693709987
0x92Be5c5E...48AE91F46
0.0172629 ETH
180531472023-09-03 2:59:47478 days ago1693709987
0x92Be5c5E...48AE91F46
0.00000166 ETH
180531472023-09-03 2:59:47478 days ago1693709987
0x92Be5c5E...48AE91F46
0.00143857 ETH
180531472023-09-03 2:59:47478 days ago1693709987
0x92Be5c5E...48AE91F46
0.03020786 ETH
180531372023-09-03 2:57:47478 days ago1693709867
0x92Be5c5E...48AE91F46
0.00613814 ETH
180531372023-09-03 2:57:47478 days ago1693709867
0x92Be5c5E...48AE91F46
0.00613814 ETH
180531372023-09-03 2:57:47478 days ago1693709867
0x92Be5c5E...48AE91F46
0.01841443 ETH
180531372023-09-03 2:57:47478 days ago1693709867
0x92Be5c5E...48AE91F46
0.00000221 ETH
180531372023-09-03 2:57:47478 days ago1693709867
0x92Be5c5E...48AE91F46
0.00153453 ETH
180531372023-09-03 2:57:47478 days ago1693709867
0x92Be5c5E...48AE91F46
0.03222051 ETH
180509742023-09-02 19:41:35479 days ago1693683695
0x92Be5c5E...48AE91F46
0.00881661 ETH
180509742023-09-02 19:41:35479 days ago1693683695
0x92Be5c5E...48AE91F46
0.00881661 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
InfowarsInu

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-11
*/

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

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

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

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

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

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

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

contract InfowarsInu is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
   
    uint256 constant private startingSupply = 1_487_300_000;
    string constant private _name = "Infowars Inu";
    string constant private _symbol = "IWINU";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;


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

    struct Ratios {
        uint16 liquidity;
        uint16 coalition;
        uint16 benevolent;
        uint16 storyteller;
        uint16 publication;
        uint16 infoWars;
        uint16 burn;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        liquidity: 70,
        coalition: 420,
        benevolent: 70,
        storyteller: 70,
        publication: 70,
        infoWars: 70,
        burn: 70,
        totalSwap: 840
    });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant public maxRoundtripTax = 2500;
    uint256 constant masterTaxDivisor = 10000;

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable coalition;
        address payable benevolent;
        address payable storyteller;
        address payable publication;
        address payable infoWars;
    }

    TaxWallets public _taxWallets = TaxWallets({
        coalition: payable(0x97712aB104a7f68979685A06a9D773274A52BeeB),
        benevolent: payable(0xeb0c4652c0FC7dc5AC6382BCA01ef55c84BF987E),
        storyteller: payable(0x1c8bd599D4c26F0Ed39E225AB404a3b7287C7A6F),
        publication: payable(0xA12f1939a118E69dAF04e602A9CcaC7D7B67aC9A),
        infoWars: payable(0xA12f1939a118E69dAF04e602A9CcaC7D7B67aC9A)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxWalletSize = 7_500_000 * 10**_decimals;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;
    uint256 public launchStamp;

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

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

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

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else if (block.chainid == 42161) {
            dexRouter = IRouter02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
        } else {
            revert();
        }


        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

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

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

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

    address private _owner;

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

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

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

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        protections = Protections(initializer);
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

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

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

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

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

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

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

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

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

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

    function setRatios(uint16 liquidity, uint16 coalition, uint16 publication, uint16 benevolent, uint16 storyteller, uint16 infoWars, uint16 burn) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.coalition = coalition;
        _ratios.publication = publication;
        _ratios.benevolent = benevolent;
        _ratios.storyteller = storyteller;
        _ratios.infoWars = infoWars;
        _ratios.burn = burn;
        _ratios.totalSwap = coalition + publication + benevolent + storyteller + infoWars + liquidity;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap + _ratios.burn <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable infoWars,
                        address payable coalition,
                        address payable publication, 
                        address payable benevolent, 
                        address payable storyteller
                       ) external onlyOwner {
        require(coalition != address(0) 
               && publication != address(0) 
               && benevolent != address(0)
               && storyteller != address(0) 
               && infoWars != address(0), "Cannot be zero address.");
        _taxWallets.coalition = payable(coalition);
        _taxWallets.publication = payable(publication);
        _taxWallets.benevolent = payable(benevolent);
        _taxWallets.storyteller = payable(storyteller);
        _taxWallets.infoWars = payable(infoWars);
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 100), "Max Wallet amt must be above 1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    function getMaxWallet() external view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }

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

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

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

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

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

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

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

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                DEAD,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 coalitionBalance = (amtBalance * ratios.coalition) / ratios.totalSwap;
        uint256 benevolentBalance = (amtBalance * ratios.benevolent) / ratios.totalSwap;
        uint256 publicationBalance = (amtBalance * ratios.publication) / ratios.totalSwap;
        uint256 infoWarsBalance = (amtBalance * ratios.infoWars) / ratios.totalSwap;
        uint256 storytellerBalance = amtBalance - (coalitionBalance + benevolentBalance + publicationBalance + infoWarsBalance);
        if (ratios.coalition > 0) {
            (success,) = _taxWallets.coalition.call{value: coalitionBalance, gas: 55000}("");
        }
        if (ratios.benevolent > 0) {
            (success,) = _taxWallets.benevolent.call{value: benevolentBalance, gas: 55000}("");
        }
        if (ratios.publication > 0) {
            (success,) = _taxWallets.publication.call{value: publicationBalance, gas: 55000}("");
        }
        if (ratios.storyteller > 0) {
            (success,) = _taxWallets.storyteller.call{value: storytellerBalance, gas: 55000}("");
        }
        if (ratios.infoWars > 0) {
            (success,) = _taxWallets.infoWars.call{value: infoWarsBalance, gas: 55000}("");
        }
    }

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

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

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

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

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

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

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        Ratios memory ratios = _ratios;
        uint256 total = ratios.totalSwap + ratios.burn;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(protections) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 burnAmount = feeAmount * ratios.burn / total;
        uint256 swapAmt = feeAmount - burnAmount;
        if (swapAmt > 0) {
            _tOwned[address(this)] += swapAmt;
            emit Transfer(from, address(this), swapAmt);
        }
        if (burnAmount > 0) {
            _tOwned[DEAD] += burnAmount;
            emit Transfer(from, DEAD, burnAmount);
        }

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"coalition","type":"uint16"},{"internalType":"uint16","name":"benevolent","type":"uint16"},{"internalType":"uint16","name":"storyteller","type":"uint16"},{"internalType":"uint16","name":"publication","type":"uint16"},{"internalType":"uint16","name":"infoWars","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"coalition","type":"address"},{"internalType":"address payable","name":"benevolent","type":"address"},{"internalType":"address payable","name":"storyteller","type":"address"},{"internalType":"address payable","name":"publication","type":"address"},{"internalType":"address payable","name":"infoWars","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"coalition","type":"uint16"},{"internalType":"uint16","name":"publication","type":"uint16"},{"internalType":"uint16","name":"benevolent","type":"uint16"},{"internalType":"uint16","name":"storyteller","type":"uint16"},{"internalType":"uint16","name":"infoWars","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"infoWars","type":"address"},{"internalType":"address payable","name":"coalition","type":"address"},{"internalType":"address payable","name":"publication","type":"address"},{"internalType":"address payable","name":"benevolent","type":"address"},{"internalType":"address payable","name":"storyteller","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600060028190556101a4608081905260a081905260c0919091526008805465ffffffffffff19166301a401a4179055604660e0819052610100919091526101208190526101408190526101608190526101808190526101a0526103486101c052600980546f03480046004600460046004601a400466001600160801b03199091161781556102806040527397712ab104a7f68979685a06a9d773274a52beeb6101e081905273eb0c4652c0fc7dc5ac6382bca01ef55c84bf987e610200819052731c8bd599d4c26f0ed39e225ab404a3b7287c7a6f61022081905273a12f1939a118e69daf04e602a9ccac7d7b67ac9a610240819052610260819052600c80546001600160a01b03199081169095179055600d80548516909317909255600e805484169091179055600f8054831682179055601080549092161790556011805461ff0019169055600a6015819055620001599190620008ab565b6200016890627270e0620008c3565b6016556017805461ffff19169055601980546001600160a01b03191633179055620001966009600a620008ab565b620001a6906358a665a0620008c3565b601980546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001fa6009600a620008ab565b6200020a906358a665a0620008c3565b60405190815260200160405180910390a3466038036200025257600a8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e0017905562000391565b466061036200028957600a8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d10017905562000391565b4660011480620002995750466004145b80620002a55750466003145b80620002b15750466005145b15620002e557600a8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d0017905562000391565b4661a86a036200031d57600a8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d40017905562000391565b4660fa036200035457600a8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c290017905562000391565b4661a4b1036200038c57600a8054610100600160a81b031916741b02da8cb0d097eb8d57a175b88c7d8b479975060017905562000391565b600080fd5b600a60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200040b9190620008dd565b6001600160a01b031663c9c65396600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200046d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004939190620008dd565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015620004e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005069190620008dd565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601954600a546200056092918216916101009091041660001962000695565b600a546200058190309061010090046001600160a01b031660001962000695565b601980546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf9805490921617905562000908565b6001600160a01b038316620006e75760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620007355760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401620006de565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007ed578160001904821115620007d157620007d162000796565b80851615620007df57918102915b93841c9390800290620007b1565b509250929050565b6000826200080657506001620008a5565b816200081557506000620008a5565b81600181146200082e5760028114620008395762000859565b6001915050620008a5565b60ff8411156200084d576200084d62000796565b50506001821b620008a5565b5060208310610133831016604e8410600b84101617156200087e575081810a620008a5565b6200088a8383620007ac565b8060001904821115620008a157620008a162000796565b0290505b92915050565b6000620008bc60ff841683620007f5565b9392505050565b8082028115828204841417620008a557620008a562000796565b600060208284031215620008f057600080fd5b81516001600160a01b0381168114620008bc57600080fd5b61470a80620009186000396000f3fe6080604052600436106103855760003560e01c80634fbee193116101d157806395d89b4111610102578063cf847706116100a0578063f94aa1b41161006f578063f94aa1b414610b1c578063fb78680d14610b8f578063fdb78c0e14610baf578063feadde9c14610bce57600080fd5b8063cf847706146109ea578063dd62ed3e14610aa1578063eafb5a3c14610ae7578063ee5d9c2d14610b0757600080fd5b8063b1b08f71116100dc578063b1b08f71146105fb578063b3d514fb146105fb578063b7df8b36146109b0578063bfc2fc35146109ca57600080fd5b806395d89b4114610942578063a9059cbb14610970578063ab558e4d1461099057600080fd5b8063715018a61161016f578063825287911161014957806382528791146108da578063893d20e8146108fa5780638a63bd9b146109185780638a8c523c1461092d57600080fd5b8063715018a61461089057806378648edf146108a557806380c581d1146108ba57600080fd5b80635a6f0918116101ab5780635a6f0918146107eb5780635c24b074146108015780635cce86cd1461082157806370a082311461085a57600080fd5b80634fbee1931461077357806350a8e016146107ac578063590ffdce146107cb57600080fd5b806328577751116102b657806336fddb04116102545780634ada218b116102235780634ada218b146106f95780634bbb93eb146107135780634e718e48146107335780634fb2e45d1461075357600080fd5b806336fddb0414610683578063384535dc146106a3578063452ed4f1146106c357806346ea7ac8146106e357600080fd5b80632e8fa821116102905780632e8fa82114610611578063313ce5671461062757806332cde6641461064357806333251a0b1461066357600080fd5b806328577751146105d05780632b112e49146105e65780632b28fc7a146105fb57600080fd5b8063095ea7b31161032357806318160ddd116102fd57806318160ddd1461055b57806323b872dd1461057057806326003957146105905780632610eaca146105b057600080fd5b8063095ea7b3146104ed5780630dcbcf1c1461050d5780630fa604e41461054657600080fd5b8063069d955f1161035f578063069d955f1461040a57806306fdde03146104605780630758d9241461049e57806307dd79e0146104c357600080fd5b806303fd2a45146103915780630445b667146103c4578063044df726146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60125481565b6040519081526020016103bb565b3480156103f457600080fd5b50610408610403366004613efa565b610bee565b005b34801561041657600080fd5b5060085461043b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561046c57600080fd5b5060408051808201909152600c81526b496e666f7761727320496e7560a01b60208201525b6040516103bb9190613f33565b3480156104aa57600080fd5b50600a546103a79061010090046001600160a01b031681565b3480156104cf57600080fd5b50600a546104dd9060ff1681565b60405190151581526020016103bb565b3480156104f957600080fd5b506104dd610508366004613f96565b610cac565b34801561051957600080fd5b506104dd610528366004613fc2565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055257600080fd5b506103da610cc3565b34801561056757600080fd5b506103da610ce3565b34801561057c57600080fd5b506104dd61058b366004613fdf565b610cff565b34801561059c57600080fd5b506104086105ab366004614020565b610d77565b3480156105bc57600080fd5b506104086105cb366004614118565b610ec0565b3480156105dc57600080fd5b506103da60155481565b3480156105f257600080fd5b506103da611075565b34801561060757600080fd5b506103da6107d081565b34801561061d57600080fd5b506103da60135481565b34801561063357600080fd5b50604051600981526020016103bb565b34801561064f57600080fd5b5061040861065e3660046141f1565b6110f3565b34801561066f57600080fd5b5061040861067e366004613fc2565b6112a6565b34801561068f57600080fd5b5061040861069e366004614234565b611357565b3480156106af57600080fd5b506104086106be366004614252565b6113ca565b3480156106cf57600080fd5b50600b546103a7906001600160a01b031681565b3480156106ef57600080fd5b506103da6109c481565b34801561070557600080fd5b506017546104dd9060ff1681565b34801561071f57600080fd5b506103da61072e3660046142d8565b6115fe565b34801561073f57600080fd5b5061040861074e3660046142d8565b611632565b34801561075f57600080fd5b5061040861076e366004613fc2565b6116d0565b34801561077f57600080fd5b506104dd61078e366004613fc2565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107b857600080fd5b506017546104dd90610100900460ff1681565b3480156107d757600080fd5b506104086107e6366004614234565b6118d2565b3480156107f757600080fd5b506103da60185481565b34801561080d57600080fd5b5061040861081c366004613fc2565b611945565b34801561082d57600080fd5b506104dd61083c366004613fc2565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561086657600080fd5b506103da610875366004613fc2565b6001600160a01b031660009081526020819052604090205490565b34801561089c57600080fd5b50610408611a1f565b3480156108b157600080fd5b50610408611acc565b3480156108c657600080fd5b506104086108d5366004614234565b611b23565b3480156108e657600080fd5b506104086108f53660046142f1565b611cfc565b34801561090657600080fd5b506019546001600160a01b03166103a7565b34801561092457600080fd5b506104dd611e4d565b34801561093957600080fd5b50610408611ebd565b34801561094e57600080fd5b506040805180820190915260058152644957494e5560d81b6020820152610491565b34801561097c57600080fd5b506104dd61098b366004613f96565b612107565b34801561099c57600080fd5b506104086109ab366004613fc2565b61211e565b3480156109bc57600080fd5b506014546104dd9060ff1681565b3480156109d657600080fd5b506104086109e5366004613efa565b6122b8565b3480156109f657600080fd5b50600954610a549061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b8104821691600160601b8204811691600160701b90041688565b6040805161ffff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e0820152610100016103bb565b348015610aad57600080fd5b506103da610abc366004614362565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610af357600080fd5b50610408610b02366004613fc2565b61235f565b348015610b1357600080fd5b50610408612760565b348015610b2857600080fd5b50600c54600d54600e54600f54601054610b55946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103bb565b348015610b9b57600080fd5b50610408610baa366004614390565b61283c565b348015610bbb57600080fd5b506011546104dd90610100900460ff1681565b348015610bda57600080fd5b50610408610be9366004614234565b612afe565b6019546001600160a01b03163314610c3b5760405162461bcd60e51b815260206004820152601160248201526000805160206146b583398151915260448201526064015b60405180910390fd5b60175460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c9057600080fd5b505af1158015610ca4573d6000803e3d6000fd5b505050505050565b6000610cb9338484612b71565b5060015b92915050565b6000610cd16009600a6144bc565b601654610cde91906144cb565b905090565b6000610cf16009600a6144bc565b610cde906358a665a06144ed565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d64576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d5e908490614504565b90915550505b610d6f848484612c6a565b949350505050565b6019546001600160a01b03163314610dbf5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6064610dcd6009600a6144bc565b610ddb906358a665a06144ed565b610de591906144cb565b8183610df36009600a6144bc565b610e01906358a665a06144ed565b610e0b91906144ed565b610e1591906144cb565b1015610e895760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c32565b8082610e976009600a6144bc565b610ea5906358a665a06144ed565b610eaf91906144ed565b610eb991906144cb565b6016555050565b6019546001600160a01b03163314610f085760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b8051825114610f595760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c32565b60005b82518161ffff16101561107057610f756009600a6144bc565b828261ffff1681518110610f8b57610f8b614517565b6020026020010151610f9d91906144ed565b336000908152602081905260409020541015610ffb5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610c32565b61105d33848361ffff168151811061101557611015614517565b60200260200101516009600a61102b91906144bc565b858561ffff168151811061104157611041614517565b602002602001015161105391906144ed565b600080600161307f565b50806110688161452d565b915050610f5c565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546110cf919061454e565b6110db6009600a6144bc565b6110e9906358a665a06144ed565b610cde9190614504565b6019546001600160a01b0316331461113b5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b600a5460ff161561118e5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c32565b6107d08361ffff16111580156111aa57506107d08261ffff1611155b80156111bc57506107d08161ffff1611155b6112085760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c32565b6109c46112158385614561565b61ffff1611156112675760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c32565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6019546001600160a01b031633146112ee5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6017546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b5050505050565b6019546001600160a01b0316331461139f5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6019546001600160a01b031633146114125760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b86600960000160006101000a81548161ffff021916908361ffff16021790555085600960000160026101000a81548161ffff021916908361ffff16021790555084600960000160086101000a81548161ffff021916908361ffff16021790555083600960000160046101000a81548161ffff021916908361ffff16021790555082600960000160066101000a81548161ffff021916908361ffff160217905550816009600001600a6101000a81548161ffff021916908361ffff160217905550806009600001600c6101000a81548161ffff021916908361ffff16021790555086828486888a6115029190614561565b61150c9190614561565b6115169190614561565b6115209190614561565b61152a9190614561565b600980546fffff00000000000000000000000000001916600160701b61ffff938416021790556008546000916115699162010000810482169116614561565b60095461ffff9182169250829161159291600160601b8104821691600160701b90910416614561565b61ffff1611156115f45760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610c32565b5050505050505050565b600b546001600160a01b0316600090815260208190526040812054612710906116289084906144ed565b610cbd91906144cb565b6019546001600160a01b0316331461167a5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b60968111156116cb5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c32565b601555565b6019546001600160a01b031633146117185760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b0381166117945760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c32565b61deac196001600160a01b038216016118155760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c32565b60195461182c906001600160a01b031660006118d2565b6118378160016118d2565b6019546001600160a01b031660009081526020819052604090205415611880576019546001600160a01b031660008181526020819052604090205461187e91908390611053565b505b601980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6019546001600160a01b0316331461191a5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b0316331461198d5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b60175460ff161561199d57600080fd5b306001600160a01b038216036119f55760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c32565b601780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6019546001600160a01b03163314611a675760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b601954611a7e906001600160a01b031660006118d2565b601980546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6019546001600160a01b03163314611b145760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b600a805460ff19166001179055565b6019546001600160a01b03163314611b6b5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b80611bc9576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610c76565b60025415611c30576203f48060025442611be39190614504565b11611c305760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610c32565b6001600160a01b03821660009081526001602052604090205460ff1615611c995760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c32565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c76565b5050565b6019546001600160a01b03163314611d445760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b03841615801590611d6457506001600160a01b03831615155b8015611d7857506001600160a01b03821615155b8015611d8c57506001600160a01b03811615155b8015611da057506001600160a01b03851615155b611dec5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c32565b600c80546001600160a01b03199081166001600160a01b0396871617909155600f8054821694861694909417909355600d8054841692851692909217909155600e805483169184169190911790556010805490911692909116919091179055565b6019546000906001600160a01b03163314611e985760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b600a54611eb790309061010090046001600160a01b0316600019612b71565b50600190565b6019546001600160a01b03163314611f055760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b60175460ff1615611f585760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c32565b601754610100900460ff16611faf5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c32565b6017546201000090046001600160a01b0316611fdf576017805462010000600160b01b0319163062010000021790555b601754600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561205157600080fd5b505af1925050508015612062575060015b50601754600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af19250505080156120e5575060408051601f3d908101601f191682019092526120e291810190614583565b60015b156120f4576012919091556013555b6017805460ff1916600117905542601855565b6000612114338484612c6a565b5060019392505050565b6019546001600160a01b031633146121665760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b601754610100900460ff16156121ce57306001600160a01b038216036121ce5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c32565b6019546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612225573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224991906145a7565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612294573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107091906145c0565b6019546001600160a01b031633146123005760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6011805461ff001916610100841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6019546001600160a01b031633146123a75760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b601754610100900460ff16156123ff5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610c32565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612444573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246891906145dd565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d991906145dd565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612524573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254891906145dd565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166126de57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d791906145dd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612624573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264891906145dd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b991906145dd565b600b80546001600160a01b0319166001600160a01b03929092169190911790556126fa565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154611070923092910416600019612b71565b6019546001600160a01b031633146127a85760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b601754610100900460ff16156128005760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c32565b6019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612839573d6000803e3d6000fd5b50565b6019546001600160a01b031633146128845760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b82846128926009600a6144bc565b6128a0906358a665a06144ed565b6128aa91906144ed565b6128b491906144cb565b60125580826128c56009600a6144bc565b6128d3906358a665a06144ed565b6128dd91906144ed565b6128e791906144cb565b601381905560125411156129475760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610c32565b600b546001600160a01b0316600090815260208190526040902054612710906129719060966144ed565b61297b91906144cb565b60135411156129d85760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610c32565b620f42406129e86009600a6144bc565b6129f6906358a665a06144ed565b612a0091906144cb565b6013541015612a685760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c32565b620f4240612a786009600a6144bc565b612a86906358a665a06144ed565b612a9091906144cb565b6012541015612af85760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c32565b50505050565b6019546001600160a01b03163314612b465760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612bbd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c32565b6001600160a01b038216612c095760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c32565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612cd05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c32565b6001600160a01b038316612d325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c32565b60008211612d945760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c32565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612dc25760019250612df0565b6001600160a01b03861660009081526001602052604090205460ff1615612dec5760019150612df0565b5060015b612dfa8787613332565b15612fcf5760175460ff16612efb5780612e565760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c32565b6001600160a01b03871660009081526005602052604090205460ff16158015612e9857506001600160a01b03861660009081526005602052604090205460ff16155b15612efb5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610c32565b600a546001600160a01b038781166101009092041614801590612f1c575081155b15612fcf576001600160a01b03861660009081526007602052604090205460ff16612fcf5760165485612f64886001600160a01b031660009081526020819052604090205490565b612f6e919061454e565b1115612fcf5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c32565b81156130665760115460ff1661306657601154610100900460ff1615613066573060009081526020819052604090205460125481106130645760135460145460ff161561304e57601554600b546001600160a01b031660009081526020819052604090205461271091613041916144ed565b61304b91906144cb565b90505b808210613059578091505b61306282613449565b505b505b61307487878786868661307f565b979650505050505050565b600061308b8787613332565b156131255760175460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561310e575060408051601f3d908101601f1916820190925261310b918101906145c0565b60015b61311757600080fd5b90508061312357600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061316757506001600160a01b03871660009081526006602052604090205460ff165b15613170575060005b6001600160a01b03881660009081526020819052604081208054889290613198908490614504565b9091555060009050816131ab57866131b7565b6131b78987878a613b29565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131ed919061454e565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161323991815260200190565b60405180910390a3601754610100900460ff166133235761325a8989613dac565b601754610100900460ff1615801561327757506132778989613332565b801561329c57506001600160a01b03891660009081526005602052604090205460ff16155b80156132c157506001600160a01b03881660009081526005602052604090205460ff16155b80156132cb575083155b156133235760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610c32565b50600198975050505050505050565b6019546000906001600160a01b0384811691161480159061336157506019546001600160a01b03838116911614155b801561337857506019546001600160a01b03163214155b801561339d57506001600160a01b03821660009081526004602052604090205460ff16155b80156133c257506001600160a01b03831660009081526004602052604090205460ff16155b80156133d957506001600160a01b03821661dead14155b80156133ed57506001600160a01b03821615155b801561340257506001600160a01b0383163014155b801561342257506017546001600160a01b03848116620100009092041614155b801561344257506017546001600160a01b03838116620100009092041614155b9392505050565b6011805460ff19166001179055604080516101008101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000081048316606083015268010000000000000000810483166080830152600160501b8104831660a0830152600160601b8104831660c0830152600160701b900490911660e082018190526000036134e85750613b1c565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461354b57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b600060028260e0015161ffff16836000015161ffff168561356c91906144ed565b61357691906144cb565b61358091906144cb565b9050600061358e8285614504565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106135c8576135c8614517565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561363b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365f91906145dd565b8160018151811061367257613672614517565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906136bf9085906000908690309042906004016145fa565b600060405180830381600087803b1580156136d957600080fd5b505af19250505080156136ea575060015b6136f75750505050613b1c565b4760008361370586846144ed565b61370f91906144cb565b905084156137f257600a5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1935050505080156137a6575060408051601f3d908101601f191682019092526137a39181019061466b565b60015b6137b557505050505050613b1c565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6137fc8183614504565b915085600001518660e0018181516138149190614699565b61ffff90811690915260e088015160208901516000935083929182169161383c9116866144ed565b61384691906144cb565b905060008860e0015161ffff16896040015161ffff168661386791906144ed565b61387191906144cb565b905060008960e0015161ffff168a6080015161ffff168761389291906144ed565b61389c91906144cb565b905060008a60e0015161ffff168b60a0015161ffff16886138bd91906144ed565b6138c791906144cb565b9050600081836138d7868861454e565b6138e1919061454e565b6138eb919061454e565b6138f59089614504565b60208d015190915061ffff161561396357600c546040516001600160a01b039091169061d6d89087906000818181858888f193505050503d8060008114613958576040519150601f19603f3d011682016040523d82523d6000602084013e61395d565b606091505b50909650505b60408c015161ffff16156139ce57600d546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d80600081146139c3576040519150601f19603f3d011682016040523d82523d6000602084013e6139c8565b606091505b50909650505b60808c015161ffff1615613a3957600f546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114613a2e576040519150601f19603f3d011682016040523d82523d6000602084013e613a33565b606091505b50909650505b60608c015161ffff1615613aa457600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613a99576040519150601f19603f3d011682016040523d82523d6000602084013e613a9e565b606091505b50909650505b60a08c015161ffff1615613b0f576010546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613b04576040519150601f19603f3d011682016040523d82523d6000602084013e613b09565b606091505b50909650505b5050505050505050505050505b506011805460ff19169055565b604080516101008101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000081048316606083015268010000000000000000810483166080830152600160501b8104831660a0830152600160601b8104831660c08301819052600160701b90910490921660e082018190526000928392918391613bc291614561565b61ffff1690508615613bdc5760085461ffff169250613c08565b8515613bf65760085462010000900461ffff169250613c08565b600854640100000000900461ffff1692505b82600003613c1b57849350505050610d6f565b6017546201000090046001600160a01b031630148015613c4557504660011480613c455750466038145b15613c505761119492505b6000612710613c5f85886144ed565b613c6991906144cb565b90506000828460c0015161ffff1683613c8291906144ed565b613c8c91906144cb565b90506000613c9a8284614504565b90508015613d07573060009081526020819052604081208054839290613cc190849061454e565b909155505060405181815230906001600160a01b038d16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115613d935761dead600090815260208190527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf838054849290613d4b90849061454e565b909155505060405182815261dead906001600160a01b038d16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613d9d8389614504565b9b9a5050505050505050505050565b601754610100900460ff1615613e105760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610c32565b613e1a8282613332565b158015613e345750600b546001600160a01b038281169116145b15611cf8576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff001916610100179081905562010000900416613eac576017805462010000600160b01b0319163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612353565b801515811461283957600080fd5b60008060408385031215613f0d57600080fd5b8235613f1881613eec565b91506020830135613f2881613eec565b809150509250929050565b600060208083528351808285015260005b81811015613f6057858101830151858201604001528201613f44565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461283957600080fd5b60008060408385031215613fa957600080fd5b8235613fb481613f81565b946020939093013593505050565b600060208284031215613fd457600080fd5b813561344281613f81565b600080600060608486031215613ff457600080fd5b8335613fff81613f81565b9250602084013561400f81613f81565b929592945050506040919091013590565b6000806040838503121561403357600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561408157614081614042565b604052919050565b600067ffffffffffffffff8211156140a3576140a3614042565b5060051b60200190565b600082601f8301126140be57600080fd5b813560206140d36140ce83614089565b614058565b82815260059290921b840181019181810190868411156140f257600080fd5b8286015b8481101561410d57803583529183019183016140f6565b509695505050505050565b6000806040838503121561412b57600080fd5b823567ffffffffffffffff8082111561414357600080fd5b818501915085601f83011261415757600080fd5b813560206141676140ce83614089565b82815260059290921b8401810191818101908984111561418657600080fd5b948201945b838610156141ad57853561419e81613f81565b8252948201949082019061418b565b965050860135925050808211156141c357600080fd5b506141d0858286016140ad565b9150509250929050565b803561ffff811681146141ec57600080fd5b919050565b60008060006060848603121561420657600080fd5b61420f846141da565b925061421d602085016141da565b915061422b604085016141da565b90509250925092565b6000806040838503121561424757600080fd5b8235613f1881613f81565b600080600080600080600060e0888a03121561426d57600080fd5b614276886141da565b9650614284602089016141da565b9550614292604089016141da565b94506142a0606089016141da565b93506142ae608089016141da565b92506142bc60a089016141da565b91506142ca60c089016141da565b905092959891949750929550565b6000602082840312156142ea57600080fd5b5035919050565b600080600080600060a0868803121561430957600080fd5b853561431481613f81565b9450602086013561432481613f81565b9350604086013561433481613f81565b9250606086013561434481613f81565b9150608086013561435481613f81565b809150509295509295909350565b6000806040838503121561437557600080fd5b823561438081613f81565b91506020830135613f2881613f81565b600080600080608085870312156143a657600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156144135781600019048211156143f9576143f96143c2565b8085161561440657918102915b93841c93908002906143dd565b509250929050565b60008261442a57506001610cbd565b8161443757506000610cbd565b816001811461444d576002811461445757614473565b6001915050610cbd565b60ff841115614468576144686143c2565b50506001821b610cbd565b5060208310610133831016604e8410600b8410161715614496575081810a610cbd565b6144a083836143d8565b80600019048211156144b4576144b46143c2565b029392505050565b600061344260ff84168361441b565b6000826144e857634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610cbd57610cbd6143c2565b81810381811115610cbd57610cbd6143c2565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614544576145446143c2565b6001019392505050565b80820180821115610cbd57610cbd6143c2565b61ffff81811683821601908082111561457c5761457c6143c2565b5092915050565b6000806040838503121561459657600080fd5b505080516020909101519092909150565b6000602082840312156145b957600080fd5b5051919050565b6000602082840312156145d257600080fd5b815161344281613eec565b6000602082840312156145ef57600080fd5b815161344281613f81565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561464a5784516001600160a01b031683529383019391830191600101614625565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561468057600080fd5b8351925060208401519150604084015190509250925092565b61ffff82811682821603908082111561457c5761457c6143c256fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212200b7018a5871d3e957a35c40790a73698798d579dc6e61e19e0cc399cdee0c45e64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106103855760003560e01c80634fbee193116101d157806395d89b4111610102578063cf847706116100a0578063f94aa1b41161006f578063f94aa1b414610b1c578063fb78680d14610b8f578063fdb78c0e14610baf578063feadde9c14610bce57600080fd5b8063cf847706146109ea578063dd62ed3e14610aa1578063eafb5a3c14610ae7578063ee5d9c2d14610b0757600080fd5b8063b1b08f71116100dc578063b1b08f71146105fb578063b3d514fb146105fb578063b7df8b36146109b0578063bfc2fc35146109ca57600080fd5b806395d89b4114610942578063a9059cbb14610970578063ab558e4d1461099057600080fd5b8063715018a61161016f578063825287911161014957806382528791146108da578063893d20e8146108fa5780638a63bd9b146109185780638a8c523c1461092d57600080fd5b8063715018a61461089057806378648edf146108a557806380c581d1146108ba57600080fd5b80635a6f0918116101ab5780635a6f0918146107eb5780635c24b074146108015780635cce86cd1461082157806370a082311461085a57600080fd5b80634fbee1931461077357806350a8e016146107ac578063590ffdce146107cb57600080fd5b806328577751116102b657806336fddb04116102545780634ada218b116102235780634ada218b146106f95780634bbb93eb146107135780634e718e48146107335780634fb2e45d1461075357600080fd5b806336fddb0414610683578063384535dc146106a3578063452ed4f1146106c357806346ea7ac8146106e357600080fd5b80632e8fa821116102905780632e8fa82114610611578063313ce5671461062757806332cde6641461064357806333251a0b1461066357600080fd5b806328577751146105d05780632b112e49146105e65780632b28fc7a146105fb57600080fd5b8063095ea7b31161032357806318160ddd116102fd57806318160ddd1461055b57806323b872dd1461057057806326003957146105905780632610eaca146105b057600080fd5b8063095ea7b3146104ed5780630dcbcf1c1461050d5780630fa604e41461054657600080fd5b8063069d955f1161035f578063069d955f1461040a57806306fdde03146104605780630758d9241461049e57806307dd79e0146104c357600080fd5b806303fd2a45146103915780630445b667146103c4578063044df726146103e857600080fd5b3661038c57005b600080fd5b34801561039d57600080fd5b506103a761dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103d057600080fd5b506103da60125481565b6040519081526020016103bb565b3480156103f457600080fd5b50610408610403366004613efa565b610bee565b005b34801561041657600080fd5b5060085461043b9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103bb565b34801561046c57600080fd5b5060408051808201909152600c81526b496e666f7761727320496e7560a01b60208201525b6040516103bb9190613f33565b3480156104aa57600080fd5b50600a546103a79061010090046001600160a01b031681565b3480156104cf57600080fd5b50600a546104dd9060ff1681565b60405190151581526020016103bb565b3480156104f957600080fd5b506104dd610508366004613f96565b610cac565b34801561051957600080fd5b506104dd610528366004613fc2565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561055257600080fd5b506103da610cc3565b34801561056757600080fd5b506103da610ce3565b34801561057c57600080fd5b506104dd61058b366004613fdf565b610cff565b34801561059c57600080fd5b506104086105ab366004614020565b610d77565b3480156105bc57600080fd5b506104086105cb366004614118565b610ec0565b3480156105dc57600080fd5b506103da60155481565b3480156105f257600080fd5b506103da611075565b34801561060757600080fd5b506103da6107d081565b34801561061d57600080fd5b506103da60135481565b34801561063357600080fd5b50604051600981526020016103bb565b34801561064f57600080fd5b5061040861065e3660046141f1565b6110f3565b34801561066f57600080fd5b5061040861067e366004613fc2565b6112a6565b34801561068f57600080fd5b5061040861069e366004614234565b611357565b3480156106af57600080fd5b506104086106be366004614252565b6113ca565b3480156106cf57600080fd5b50600b546103a7906001600160a01b031681565b3480156106ef57600080fd5b506103da6109c481565b34801561070557600080fd5b506017546104dd9060ff1681565b34801561071f57600080fd5b506103da61072e3660046142d8565b6115fe565b34801561073f57600080fd5b5061040861074e3660046142d8565b611632565b34801561075f57600080fd5b5061040861076e366004613fc2565b6116d0565b34801561077f57600080fd5b506104dd61078e366004613fc2565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107b857600080fd5b506017546104dd90610100900460ff1681565b3480156107d757600080fd5b506104086107e6366004614234565b6118d2565b3480156107f757600080fd5b506103da60185481565b34801561080d57600080fd5b5061040861081c366004613fc2565b611945565b34801561082d57600080fd5b506104dd61083c366004613fc2565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561086657600080fd5b506103da610875366004613fc2565b6001600160a01b031660009081526020819052604090205490565b34801561089c57600080fd5b50610408611a1f565b3480156108b157600080fd5b50610408611acc565b3480156108c657600080fd5b506104086108d5366004614234565b611b23565b3480156108e657600080fd5b506104086108f53660046142f1565b611cfc565b34801561090657600080fd5b506019546001600160a01b03166103a7565b34801561092457600080fd5b506104dd611e4d565b34801561093957600080fd5b50610408611ebd565b34801561094e57600080fd5b506040805180820190915260058152644957494e5560d81b6020820152610491565b34801561097c57600080fd5b506104dd61098b366004613f96565b612107565b34801561099c57600080fd5b506104086109ab366004613fc2565b61211e565b3480156109bc57600080fd5b506014546104dd9060ff1681565b3480156109d657600080fd5b506104086109e5366004613efa565b6122b8565b3480156109f657600080fd5b50600954610a549061ffff80821691620100008104821691640100000000820481169166010000000000008104821691680100000000000000008204811691600160501b8104821691600160601b8204811691600160701b90041688565b6040805161ffff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e0820152610100016103bb565b348015610aad57600080fd5b506103da610abc366004614362565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610af357600080fd5b50610408610b02366004613fc2565b61235f565b348015610b1357600080fd5b50610408612760565b348015610b2857600080fd5b50600c54600d54600e54600f54601054610b55946001600160a01b03908116948116938116928116911685565b604080516001600160a01b03968716815294861660208601529285169284019290925283166060830152909116608082015260a0016103bb565b348015610b9b57600080fd5b50610408610baa366004614390565b61283c565b348015610bbb57600080fd5b506011546104dd90610100900460ff1681565b348015610bda57600080fd5b50610408610be9366004614234565b612afe565b6019546001600160a01b03163314610c3b5760405162461bcd60e51b815260206004820152601160248201526000805160206146b583398151915260448201526064015b60405180910390fd5b60175460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c9057600080fd5b505af1158015610ca4573d6000803e3d6000fd5b505050505050565b6000610cb9338484612b71565b5060015b92915050565b6000610cd16009600a6144bc565b601654610cde91906144cb565b905090565b6000610cf16009600a6144bc565b610cde906358a665a06144ed565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610d64576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d5e908490614504565b90915550505b610d6f848484612c6a565b949350505050565b6019546001600160a01b03163314610dbf5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6064610dcd6009600a6144bc565b610ddb906358a665a06144ed565b610de591906144cb565b8183610df36009600a6144bc565b610e01906358a665a06144ed565b610e0b91906144ed565b610e1591906144cb565b1015610e895760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610c32565b8082610e976009600a6144bc565b610ea5906358a665a06144ed565b610eaf91906144ed565b610eb991906144cb565b6016555050565b6019546001600160a01b03163314610f085760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b8051825114610f595760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610c32565b60005b82518161ffff16101561107057610f756009600a6144bc565b828261ffff1681518110610f8b57610f8b614517565b6020026020010151610f9d91906144ed565b336000908152602081905260409020541015610ffb5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610c32565b61105d33848361ffff168151811061101557611015614517565b60200260200101516009600a61102b91906144bc565b858561ffff168151811061104157611041614517565b602002602001015161105391906144ed565b600080600161307f565b50806110688161452d565b915050610f5c565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546110cf919061454e565b6110db6009600a6144bc565b6110e9906358a665a06144ed565b610cde9190614504565b6019546001600160a01b0316331461113b5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b600a5460ff161561118e5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610c32565b6107d08361ffff16111580156111aa57506107d08261ffff1611155b80156111bc57506107d08161ffff1611155b6112085760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610c32565b6109c46112158385614561565b61ffff1611156112675760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610c32565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6019546001600160a01b031633146112ee5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6017546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561133c57600080fd5b505af1158015611350573d6000803e3d6000fd5b5050505050565b6019546001600160a01b0316331461139f5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6019546001600160a01b031633146114125760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b86600960000160006101000a81548161ffff021916908361ffff16021790555085600960000160026101000a81548161ffff021916908361ffff16021790555084600960000160086101000a81548161ffff021916908361ffff16021790555083600960000160046101000a81548161ffff021916908361ffff16021790555082600960000160066101000a81548161ffff021916908361ffff160217905550816009600001600a6101000a81548161ffff021916908361ffff160217905550806009600001600c6101000a81548161ffff021916908361ffff16021790555086828486888a6115029190614561565b61150c9190614561565b6115169190614561565b6115209190614561565b61152a9190614561565b600980546fffff00000000000000000000000000001916600160701b61ffff938416021790556008546000916115699162010000810482169116614561565b60095461ffff9182169250829161159291600160601b8104821691600160701b90910416614561565b61ffff1611156115f45760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610c32565b5050505050505050565b600b546001600160a01b0316600090815260208190526040812054612710906116289084906144ed565b610cbd91906144cb565b6019546001600160a01b0316331461167a5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b60968111156116cb5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610c32565b601555565b6019546001600160a01b031633146117185760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b0381166117945760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c32565b61deac196001600160a01b038216016118155760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610c32565b60195461182c906001600160a01b031660006118d2565b6118378160016118d2565b6019546001600160a01b031660009081526020819052604090205415611880576019546001600160a01b031660008181526020819052604090205461187e91908390611053565b505b601980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6019546001600160a01b0316331461191a5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6019546001600160a01b0316331461198d5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b60175460ff161561199d57600080fd5b306001600160a01b038216036119f55760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610c32565b601780546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6019546001600160a01b03163314611a675760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b601954611a7e906001600160a01b031660006118d2565b601980546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6019546001600160a01b03163314611b145760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b600a805460ff19166001179055565b6019546001600160a01b03163314611b6b5760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b80611bc9576001600160a01b03828116600081815260016020526040808220805460ff1916905560175490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610c76565b60025415611c30576203f48060025442611be39190614504565b11611c305760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610c32565b6001600160a01b03821660009081526001602052604090205460ff1615611c995760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610c32565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560175491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610c76565b5050565b6019546001600160a01b03163314611d445760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b03841615801590611d6457506001600160a01b03831615155b8015611d7857506001600160a01b03821615155b8015611d8c57506001600160a01b03811615155b8015611da057506001600160a01b03851615155b611dec5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610c32565b600c80546001600160a01b03199081166001600160a01b0396871617909155600f8054821694861694909417909355600d8054841692851692909217909155600e805483169184169190911790556010805490911692909116919091179055565b6019546000906001600160a01b03163314611e985760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b600a54611eb790309061010090046001600160a01b0316600019612b71565b50600190565b6019546001600160a01b03163314611f055760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b60175460ff1615611f585760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610c32565b601754610100900460ff16611faf5760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610c32565b6017546201000090046001600160a01b0316611fdf576017805462010000600160b01b0319163062010000021790555b601754600b54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561205157600080fd5b505af1925050508015612062575060015b50601754600b546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af19250505080156120e5575060408051601f3d908101601f191682019092526120e291810190614583565b60015b156120f4576012919091556013555b6017805460ff1916600117905542601855565b6000612114338484612c6a565b5060019392505050565b6019546001600160a01b031633146121665760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b601754610100900460ff16156121ce57306001600160a01b038216036121ce5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610c32565b6019546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015612225573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061224991906145a7565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612294573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107091906145c0565b6019546001600160a01b031633146123005760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6011805461ff001916610100841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6019546001600160a01b031633146123a75760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b601754610100900460ff16156123ff5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610c32565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612444573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246891906145dd565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124d991906145dd565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612524573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254891906145dd565b600b546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166126de57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d791906145dd565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612624573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264891906145dd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126b991906145dd565b600b80546001600160a01b0319166001600160a01b03929092169190911790556126fa565b600b80546001600160a01b0319166001600160a01b0383161790555b600a805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600b5482166000908152600160208190526040909120805460ff191690911790559154611070923092910416600019612b71565b6019546001600160a01b031633146127a85760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b601754610100900460ff16156128005760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610c32565b6019546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612839573d6000803e3d6000fd5b50565b6019546001600160a01b031633146128845760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b82846128926009600a6144bc565b6128a0906358a665a06144ed565b6128aa91906144ed565b6128b491906144cb565b60125580826128c56009600a6144bc565b6128d3906358a665a06144ed565b6128dd91906144ed565b6128e791906144cb565b601381905560125411156129475760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610c32565b600b546001600160a01b0316600090815260208190526040902054612710906129719060966144ed565b61297b91906144cb565b60135411156129d85760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610c32565b620f42406129e86009600a6144bc565b6129f6906358a665a06144ed565b612a0091906144cb565b6013541015612a685760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c32565b620f4240612a786009600a6144bc565b612a86906358a665a06144ed565b612a9091906144cb565b6012541015612af85760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610c32565b50505050565b6019546001600160a01b03163314612b465760405162461bcd60e51b815260206004820152601160248201526000805160206146b58339815191526044820152606401610c32565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612bbd5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c32565b6001600160a01b038216612c095760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610c32565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612cd05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c32565b6001600160a01b038316612d325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c32565b60008211612d945760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610c32565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612dc25760019250612df0565b6001600160a01b03861660009081526001602052604090205460ff1615612dec5760019150612df0565b5060015b612dfa8787613332565b15612fcf5760175460ff16612efb5780612e565760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610c32565b6001600160a01b03871660009081526005602052604090205460ff16158015612e9857506001600160a01b03861660009081526005602052604090205460ff16155b15612efb5760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610c32565b600a546001600160a01b038781166101009092041614801590612f1c575081155b15612fcf576001600160a01b03861660009081526007602052604090205460ff16612fcf5760165485612f64886001600160a01b031660009081526020819052604090205490565b612f6e919061454e565b1115612fcf5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610c32565b81156130665760115460ff1661306657601154610100900460ff1615613066573060009081526020819052604090205460125481106130645760135460145460ff161561304e57601554600b546001600160a01b031660009081526020819052604090205461271091613041916144ed565b61304b91906144cb565b90505b808210613059578091505b61306282613449565b505b505b61307487878786868661307f565b979650505050505050565b600061308b8787613332565b156131255760175460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561310e575060408051601f3d908101601f1916820190925261310b918101906145c0565b60015b61311757600080fd5b90508061312357600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff168061316757506001600160a01b03871660009081526006602052604090205460ff165b15613170575060005b6001600160a01b03881660009081526020819052604081208054889290613198908490614504565b9091555060009050816131ab57866131b7565b6131b78987878a613b29565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131ed919061454e565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161323991815260200190565b60405180910390a3601754610100900460ff166133235761325a8989613dac565b601754610100900460ff1615801561327757506132778989613332565b801561329c57506001600160a01b03891660009081526005602052604090205460ff16155b80156132c157506001600160a01b03881660009081526005602052604090205460ff16155b80156132cb575083155b156133235760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610c32565b50600198975050505050505050565b6019546000906001600160a01b0384811691161480159061336157506019546001600160a01b03838116911614155b801561337857506019546001600160a01b03163214155b801561339d57506001600160a01b03821660009081526004602052604090205460ff16155b80156133c257506001600160a01b03831660009081526004602052604090205460ff16155b80156133d957506001600160a01b03821661dead14155b80156133ed57506001600160a01b03821615155b801561340257506001600160a01b0383163014155b801561342257506017546001600160a01b03848116620100009092041614155b801561344257506017546001600160a01b03838116620100009092041614155b9392505050565b6011805460ff19166001179055604080516101008101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000081048316606083015268010000000000000000810483166080830152600160501b8104831660a0830152600160601b8104831660c0830152600160701b900490911660e082018190526000036134e85750613b1c565b306000908152600360209081526040808320600a5461010090046001600160a01b031684529091529020546000191461354b57306000908152600360209081526040808320600a5461010090046001600160a01b03168452909152902060001990555b600060028260e0015161ffff16836000015161ffff168561356c91906144ed565b61357691906144cb565b61358091906144cb565b9050600061358e8285614504565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106135c8576135c8614517565b60200260200101906001600160a01b031690816001600160a01b031681525050600a60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561363b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365f91906145dd565b8160018151811061367257613672614517565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81526101009091049091169063791ac947906136bf9085906000908690309042906004016145fa565b600060405180830381600087803b1580156136d957600080fd5b505af19250505080156136ea575060015b6136f75750505050613b1c565b4760008361370586846144ed565b61370f91906144cb565b905084156137f257600a5460405163f305d71960e01b815230600482015260248101879052600060448201819052606482015261dead60848201524260a48201526101009091046001600160a01b03169063f305d71990839060c40160606040518083038185885af1935050505080156137a6575060408051601f3d908101601f191682019092526137a39181019061466b565b60015b6137b557505050505050613b1c565b505060408051838152602081018890527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b6137fc8183614504565b915085600001518660e0018181516138149190614699565b61ffff90811690915260e088015160208901516000935083929182169161383c9116866144ed565b61384691906144cb565b905060008860e0015161ffff16896040015161ffff168661386791906144ed565b61387191906144cb565b905060008960e0015161ffff168a6080015161ffff168761389291906144ed565b61389c91906144cb565b905060008a60e0015161ffff168b60a0015161ffff16886138bd91906144ed565b6138c791906144cb565b9050600081836138d7868861454e565b6138e1919061454e565b6138eb919061454e565b6138f59089614504565b60208d015190915061ffff161561396357600c546040516001600160a01b039091169061d6d89087906000818181858888f193505050503d8060008114613958576040519150601f19603f3d011682016040523d82523d6000602084013e61395d565b606091505b50909650505b60408c015161ffff16156139ce57600d546040516001600160a01b039091169061d6d89086906000818181858888f193505050503d80600081146139c3576040519150601f19603f3d011682016040523d82523d6000602084013e6139c8565b606091505b50909650505b60808c015161ffff1615613a3957600f546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d8060008114613a2e576040519150601f19603f3d011682016040523d82523d6000602084013e613a33565b606091505b50909650505b60608c015161ffff1615613aa457600e546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d8060008114613a99576040519150601f19603f3d011682016040523d82523d6000602084013e613a9e565b606091505b50909650505b60a08c015161ffff1615613b0f576010546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613b04576040519150601f19603f3d011682016040523d82523d6000602084013e613b09565b606091505b50909650505b5050505050505050505050505b506011805460ff19169055565b604080516101008101825260095461ffff8082168352620100008204811660208401526401000000008204811693830193909352660100000000000081048316606083015268010000000000000000810483166080830152600160501b8104831660a0830152600160601b8104831660c08301819052600160701b90910490921660e082018190526000928392918391613bc291614561565b61ffff1690508615613bdc5760085461ffff169250613c08565b8515613bf65760085462010000900461ffff169250613c08565b600854640100000000900461ffff1692505b82600003613c1b57849350505050610d6f565b6017546201000090046001600160a01b031630148015613c4557504660011480613c455750466038145b15613c505761119492505b6000612710613c5f85886144ed565b613c6991906144cb565b90506000828460c0015161ffff1683613c8291906144ed565b613c8c91906144cb565b90506000613c9a8284614504565b90508015613d07573060009081526020819052604081208054839290613cc190849061454e565b909155505060405181815230906001600160a01b038d16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115613d935761dead600090815260208190527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf838054849290613d4b90849061454e565b909155505060405182815261dead906001600160a01b038d16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b613d9d8389614504565b9b9a5050505050505050505050565b601754610100900460ff1615613e105760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610c32565b613e1a8282613332565b158015613e345750600b546001600160a01b038281169116145b15611cf8576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556017805461ff001916610100179081905562010000900416613eac576017805462010000600160b01b0319163062010000021790555b6011805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001612353565b801515811461283957600080fd5b60008060408385031215613f0d57600080fd5b8235613f1881613eec565b91506020830135613f2881613eec565b809150509250929050565b600060208083528351808285015260005b81811015613f6057858101830151858201604001528201613f44565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461283957600080fd5b60008060408385031215613fa957600080fd5b8235613fb481613f81565b946020939093013593505050565b600060208284031215613fd457600080fd5b813561344281613f81565b600080600060608486031215613ff457600080fd5b8335613fff81613f81565b9250602084013561400f81613f81565b929592945050506040919091013590565b6000806040838503121561403357600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561408157614081614042565b604052919050565b600067ffffffffffffffff8211156140a3576140a3614042565b5060051b60200190565b600082601f8301126140be57600080fd5b813560206140d36140ce83614089565b614058565b82815260059290921b840181019181810190868411156140f257600080fd5b8286015b8481101561410d57803583529183019183016140f6565b509695505050505050565b6000806040838503121561412b57600080fd5b823567ffffffffffffffff8082111561414357600080fd5b818501915085601f83011261415757600080fd5b813560206141676140ce83614089565b82815260059290921b8401810191818101908984111561418657600080fd5b948201945b838610156141ad57853561419e81613f81565b8252948201949082019061418b565b965050860135925050808211156141c357600080fd5b506141d0858286016140ad565b9150509250929050565b803561ffff811681146141ec57600080fd5b919050565b60008060006060848603121561420657600080fd5b61420f846141da565b925061421d602085016141da565b915061422b604085016141da565b90509250925092565b6000806040838503121561424757600080fd5b8235613f1881613f81565b600080600080600080600060e0888a03121561426d57600080fd5b614276886141da565b9650614284602089016141da565b9550614292604089016141da565b94506142a0606089016141da565b93506142ae608089016141da565b92506142bc60a089016141da565b91506142ca60c089016141da565b905092959891949750929550565b6000602082840312156142ea57600080fd5b5035919050565b600080600080600060a0868803121561430957600080fd5b853561431481613f81565b9450602086013561432481613f81565b9350604086013561433481613f81565b9250606086013561434481613f81565b9150608086013561435481613f81565b809150509295509295909350565b6000806040838503121561437557600080fd5b823561438081613f81565b91506020830135613f2881613f81565b600080600080608085870312156143a657600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156144135781600019048211156143f9576143f96143c2565b8085161561440657918102915b93841c93908002906143dd565b509250929050565b60008261442a57506001610cbd565b8161443757506000610cbd565b816001811461444d576002811461445757614473565b6001915050610cbd565b60ff841115614468576144686143c2565b50506001821b610cbd565b5060208310610133831016604e8410600b8410161715614496575081810a610cbd565b6144a083836143d8565b80600019048211156144b4576144b46143c2565b029392505050565b600061344260ff84168361441b565b6000826144e857634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610cbd57610cbd6143c2565b81810381811115610cbd57610cbd6143c2565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614544576145446143c2565b6001019392505050565b80820180821115610cbd57610cbd6143c2565b61ffff81811683821601908082111561457c5761457c6143c2565b5092915050565b6000806040838503121561459657600080fd5b505080516020909101519092909150565b6000602082840312156145b957600080fd5b5051919050565b6000602082840312156145d257600080fd5b815161344281613eec565b6000602082840312156145ef57600080fd5b815161344281613f81565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561464a5784516001600160a01b031683529383019391830191600101614625565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561468057600080fd5b8351925060208401519150604084015190509250925092565b61ffff82811682821603908082111561457c5761457c6143c256fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a26469706673582212200b7018a5871d3e957a35c40790a73698798d579dc6e61e19e0cc399cdee0c45e64736f6c63430008120033

Deployed Bytecode Sourcemap

4027:25485:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5867:73;;;;;;;;;;;;5898:42;5867:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5867:73:0;;;;;;;;6664:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6664:28:0;245:177:1;15637:153:0;;;;;;;;;;-1:-1:-1;15637:153:0;;;;;:::i;:::-;;:::i;:::-;;5160:107;;;;;;;;;;-1:-1:-1;5160:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5160:107:0;931:365:1;11419:80:0;;;;;;;;;;-1:-1:-1;11491:5:0;;;;;;;;;;;;-1:-1:-1;;;11491:5:0;;;;11419:80;;;;;;;:::i;5806:26::-;;;;;;;;;;-1:-1:-1;5806:26:0;;;;;;;-1:-1:-1;;;;;5806:26:0;;;5773;;;;;;;;;;-1:-1:-1;5773:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5773:26:0;2102:187:1;12027:161:0;;;;;;;;;;-1:-1:-1;12027:161:0;;;;;:::i;:::-;;:::i;15066:140::-;;;;;;;;;;-1:-1:-1;15066:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;15164:34:0;15140:4;15164:34;;;:25;:34;;;;;;;;;15066:140;18383:114;;;;;;;;;;;;;:::i;11154:83::-;;;;;;;;;;;;;:::i;12697:306::-;;;;;;;;;;-1:-1:-1;12697:306:0;;;;;:::i;:::-;;:::i;18111:264::-;;;;;;;;;;-1:-1:-1;18111:264:0;;;;;:::i;:::-;;:::i;26845:447::-;;;;;;;;;;-1:-1:-1;26845:447:0;;;;;:::i;:::-;;:::i;6772:33::-;;;;;;;;;;;;;;;;15370:141;;;;;;;;;;;;;:::i;5517:42::-;;;;;;;;;;;;5555:4;5517:42;;6699:25;;;;;;;;;;;;;;;;11243:80;;;;;;;;;;-1:-1:-1;11243:80:0;;4725:1;6368:36:1;;6356:2;6341:18;11243:80:0;6226:184:1;15988:544:0;;;;;;;;;;-1:-1:-1;15988:544:0;;;;;:::i;:::-;;:::i;15519:110::-;;;;;;;;;;-1:-1:-1;15519:110:0;;;;;:::i;:::-;;:::i;14641:140::-;;;;;;;;;;-1:-1:-1;14641:140:0;;;;;:::i;:::-;;:::i;16540:720::-;;;;;;;;;;-1:-1:-1;16540:720:0;;;;;:::i;:::-;;:::i;5839:21::-;;;;;;;;;;-1:-1:-1;5839:21:0;;;;-1:-1:-1;;;;;5839:21:0;;;5670:46;;;;;;;;;;;;5712:4;5670:46;;6885:34;;;;;;;;;;-1:-1:-1;6885:34:0;;;;;;;;18505:189;;;;;;;;;;-1:-1:-1;18505:189:0;;;;;:::i;:::-;;:::i;19409:217::-;;;;;;;;;;-1:-1:-1;19409:217:0;;;;;:::i;:::-;;:::i;9877:654::-;;;;;;;;;;-1:-1:-1;9877:654:0;;;;;:::i;:::-;;:::i;14789:127::-;;;;;;;;;;-1:-1:-1;14789:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14880:28:0;14856:4;14880:28;;;:19;:28;;;;;;;;;14789:127;6926:36;;;;;;;;;;-1:-1:-1;6926:36:0;;;;;;;;;;;14924:134;;;;;;;;;;-1:-1:-1;14924:134:0;;;;;:::i;:::-;;:::i;6999:26::-;;;;;;;;;;;;;;;;14271:222;;;;;;;;;;-1:-1:-1;14271:222:0;;;;;:::i;:::-;;:::i;14501:132::-;;;;;;;;;;-1:-1:-1;14501:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;14595:30:0;14571:4;14595:30;;;:21;:30;;;;;;;;;14501:132;11729:117;;;;;;;;;;-1:-1:-1;11729:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11822:16:0;11795:7;11822:16;;;;;;;;;;;;11729:117;10539:225;;;;;;;;;;;;;:::i;15798:182::-;;;;;;;;;;;;;:::i;13699:564::-;;;;;;;;;;-1:-1:-1;13699:564:0;;;;;:::i;:::-;;:::i;17268:835::-;;;;;;;;;;-1:-1:-1;17268:835:0;;;;;:::i;:::-;;:::i;11505:79::-;;;;;;;;;;-1:-1:-1;11575:6:0;;-1:-1:-1;;;;;11575:6:0;11505:79;;12514:175;;;;;;;;;;;;;:::i;25648:695::-;;;;;;;;;;;;;:::i;11329:84::-;;;;;;;;;;-1:-1:-1;11403:7:0;;;;;;;;;;;;-1:-1:-1;;;11403:7:0;;;;11329:84;;11854:165;;;;;;;;;;-1:-1:-1;11854:165:0;;;;;:::i;:::-;;:::i;26541:296::-;;;;;;;;;;-1:-1:-1;26541:296:0;;;;;:::i;:::-;;:::i;6731:34::-;;;;;;;;;;-1:-1:-1;6731:34:0;;;;;;;;19634:263;;;;;;;;;;-1:-1:-1;19634:263:0;;;;;:::i;:::-;;:::i;5276:232::-;;;;;;;;;;-1:-1:-1;5276:232:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5276:232:0;;;;;-1:-1:-1;;;5276:232:0;;;;;-1:-1:-1;;;5276:232:0;;;;;;;;;9304:6:1;9337:15;;;9319:34;;9389:15;;;9384:2;9369:18;;9362:43;9441:15;;;9421:18;;;9414:43;;;;9493:15;;;9488:2;9473:18;;9466:43;9546:15;;;9540:3;9525:19;;9518:44;9599:15;;9593:3;9578:19;;9571:44;9652:15;;9646:3;9631:19;;9624:44;9705:15;;;9699:3;9684:19;;9677:44;9281:3;9266:19;5276:232:0;8967:760:1;11590:133:0;;;;;;;;;;-1:-1:-1;11590:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11692:19:0;;;11674:7;11692:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11590:133;13011:680;;;;;;;;;;-1:-1:-1;13011:680:0;;;;;:::i;:::-;;:::i;26351:182::-;;;;;;;;;;;;;:::i;6167:420::-;;;;;;;;;;-1:-1:-1;6167:420:0;;;;;;;;;;;;-1:-1:-1;;;;;6167:420:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10543:15:1;;;10525:34;;10595:15;;;10590:2;10575:18;;10568:43;10647:15;;;10627:18;;;10620:43;;;;10699:15;;10694:2;10679:18;;10672:43;10752:15;;;10746:3;10731:19;;10724:44;10451:3;10436:19;6167:420:0;10125:649:1;18702:699:0;;;;;;;;;;-1:-1:-1;18702:699:0;;;;;:::i;:::-;;:::i;6618:39::-;;;;;;;;;;-1:-1:-1;6618:39:0;;;;;;;;;;;15214:148;;;;;;;;;;-1:-1:-1;15214:148:0;;;;;:::i;:::-;;:::i;15637:153::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;;;;;;;;;15732:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;15732:50:0;;11702:14:1;;11695:22;15732:50:0::1;::::0;::::1;11677:41:1::0;11761:14;;11754:22;11734:18;;;11727:50;15732:11:0;;;::::1;-1:-1:-1::0;;;;;15732:11:0::1;::::0;:26:::1;::::0;11650:18:1;;15732:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15637:153:::0;;:::o;12027:161::-;12104:4;12121:37;12130:10;12142:7;12151:6;12121:8;:37::i;:::-;-1:-1:-1;12176:4:0;12027:161;;;;;:::o;18383:114::-;18430:7;18475:13;4725:1;18475:2;:13;:::i;:::-;18457:14;;:32;;;;:::i;:::-;18450:39;;18383:114;:::o;11154:83::-;11209:7;4785:13;4725:1;4785:2;:13;:::i;:::-;4768:30;;4569:13;4768:30;:::i;12697:306::-;-1:-1:-1;;;;;12818:19:0;;12797:4;12818:19;;;:11;:19;;;;;;;;12838:10;12818:31;;;;;;;;-1:-1:-1;;12818:52:0;12814:126;;-1:-1:-1;;;;;12887:19:0;;;;;;:11;:19;;;;;;;;12907:10;12887:31;;;;;;;:41;;12922:6;;12887:19;:41;;12922:6;;12887:41;:::i;:::-;;;;-1:-1:-1;;12814:126:0;12959:36;12969:6;12977:9;12988:6;12959:9;:36::i;:::-;12952:43;12697:306;-1:-1:-1;;;;12697:306:0:o;18111:264::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;18253:3:::1;4785:13;4725:1;4785:2;:13;:::i;:::-;4768:30;::::0;4569:13:::1;4768:30;:::i;:::-;18243:13;;;;:::i;:::-;18231:7:::0;18220;4785:13:::1;4725:1;4785:2;:13;:::i;:::-;4768:30;::::0;4569:13:::1;4768:30;:::i;:::-;18210:17;;;;:::i;:::-;18209:29;;;;:::i;:::-;:48;;18201:109;;;::::0;-1:-1:-1;;;18201:109:0;;14033:2:1;18201:109:0::1;::::0;::::1;14015:21:1::0;14072:2;14052:18;;;14045:30;14111:34;14091:18;;;14084:62;14182:18;14162;;;14155:46;14218:19;;18201:109:0::1;13831:412:1::0;18201:109:0::1;18360:7:::0;18349;4785:13:::1;4725:1;4785:2;:13;:::i;:::-;4768:30;::::0;4569:13:::1;4768:30;:::i;:::-;18339:17;;;;:::i;:::-;18338:29;;;;:::i;:::-;18321:14;:46:::0;-1:-1:-1;;18111:264:0:o;26845:447::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;26980:7:::1;:14;26961:8;:15;:33;26953:67;;;::::0;-1:-1:-1;;;26953:67:0;;14450:2:1;26953:67:0::1;::::0;::::1;14432:21:1::0;14489:2;14469:18;;;14462:30;14528:23;14508:18;;;14501:51;14569:18;;26953:67:0::1;14248:345:1::0;26953:67:0::1;27036:8;27031:254;27054:8;:15;27050:1;:19;;;27031:254;;;27135:13;4725:1;27135:2;:13;:::i;:::-;27124:7;27132:1;27124:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27109:10;11795:7:::0;11822:16;;;;;;;;;;;27099:49:::1;;27091:80;;;::::0;-1:-1:-1;;;27091:80:0;;14932:2:1;27091:80:0::1;::::0;::::1;14914:21:1::0;14971:2;14951:18;;;14944:30;15010:20;14990:18;;;14983:48;15048:18;;27091:80:0::1;14730:342:1::0;27091:80:0::1;27186:87;27203:10;27215:8;27224:1;27215:11;;;;;;;;;;:::i;:::-;;;;;;;4725:1;27239:2;:13;;;;:::i;:::-;27228:7;27236:1;27228:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27254:5;27261::::0;27268:4:::1;27186:16;:87::i;:::-;-1:-1:-1::0;27071:3:0;::::1;::::0;::::1;:::i;:::-;;;;27031:254;;;;26845:447:::0;;:::o;15370:141::-;15423:7;11822:16;;;;;;5898:42;11822:16;;;;15462:39;;11822:16;15462:39;:::i;:::-;4785:13;4725:1;4785:2;:13;:::i;:::-;4768:30;;4569:13;4768:30;:::i;:::-;15451:51;;;;:::i;15988:544::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;16096:14:::1;::::0;::::1;;16095:15;16087:45;;;::::0;-1:-1:-1;;;16087:45:0;;15611:2:1;16087:45:0::1;::::0;::::1;15593:21:1::0;15650:2;15630:18;;;15623:30;15689:19;15669:18;;;15662:47;15726:18;;16087:45:0::1;15409:341:1::0;16087:45:0::1;5555:4;16151:6;:21;;;;:65;;;;;5605:4;16193:7;:23;;;;16151:65;:117;;;;;5659:4;16237:11;:31;;;;16151:117;16143:170;;;::::0;-1:-1:-1;;;16143:170:0;;15957:2:1;16143:170:0::1;::::0;::::1;15939:21:1::0;15996:2;15976:18;;;15969:30;16035:25;16015:18;;;16008:53;16078:18;;16143:170:0::1;15755:347:1::0;16143:170:0::1;5712:4;16332:16;16341:7:::0;16332:6;:16:::1;:::i;:::-;:35;;;;16324:80;;;::::0;-1:-1:-1;;;16324:80:0;;16482:2:1;16324:80:0::1;::::0;::::1;16464:21:1::0;;;16501:18;;;16494:30;16560:34;16540:18;;;16533:62;16612:18;;16324:80:0::1;16280:356:1::0;16324:80:0::1;16415:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;16451:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;16489:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15988:544::o;15519:110::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;15588:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;15588:33:0;;-1:-1:-1;;;;;178:55:1;;;15588:33:0::1;::::0;::::1;160:74:1::0;15588:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;15588:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15519:110:::0;:::o;14641:140::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;-1:-1:-1;;;;;14733:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;14733:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14641:140::o;16540:720::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;16734:9:::1;16714:7;:17;;;:29;;;;;;;;;;;;;;;;;;16774:9;16754:7;:17;;;:29;;;;;;;;;;;;;;;;;;16816:11;16794:7;:19;;;:33;;;;;;;;;;;;;;;;;;16859:10;16838:7;:18;;;:31;;;;;;;;;;;;;;;;;;16902:11;16880:7;:19;;;:33;;;;;;;;;;;;;;;;;;16943:8;16924:7;:16;;;:27;;;;;;;;;;;;;;;;;;16977:4;16962:7;:12;;;:19;;;;;;;;;;;;;;;;;;17076:9;17065:8;17051:11;17038:10;17024:11;17012:9;:23;;;;:::i;:::-;:36;;;;:::i;:::-;:50;;;;:::i;:::-;:61;;;;:::i;:::-;:73;;;;:::i;:::-;16992:7;:93:::0;;-1:-1:-1;;16992:93:0::1;-1:-1:-1::0;;;16992:93:0::1;::::0;;::::1;;;::::0;;17131:9:::1;:17:::0;-1:-1:-1;;17112:36:0::1;::::0;17131:17;;::::1;::::0;::::1;::::0;17112:16:::1;:36;:::i;:::-;17187:7;:12:::0;17096:52:::1;::::0;;::::1;::::0;-1:-1:-1;17096:52:0;;17167:32:::1;::::0;-1:-1:-1;;;17187:12:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;17167:17:0;;::::1;;:32;:::i;:::-;:41;;;;17159:93;;;::::0;-1:-1:-1;;;17159:93:0;;16843:2:1;17159:93:0::1;::::0;::::1;16825:21:1::0;16882:2;16862:18;;;16855:30;16921:34;16901:18;;;16894:62;-1:-1:-1;;;16972:18:1;;;16965:37;17019:19;;17159:93:0::1;16641:403:1::0;17159:93:0::1;16703:557;16540:720:::0;;;;;;;:::o;18505:189::-;18634:6;;-1:-1:-1;;;;;18634:6:0;18596:7;11822:16;;;;;;;;;;;5759:5;;18624:41;;18644:21;;18624:41;:::i;:::-;18623:62;;;;:::i;19409:217::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;19539:3:::1;19513:22;:29;;19505:64;;;::::0;-1:-1:-1;;;19505:64:0;;17251:2:1;19505:64:0::1;::::0;::::1;17233:21:1::0;17290:2;17270:18;;;17263:30;17329:24;17309:18;;;17302:52;17371:18;;19505:64:0::1;17049:346:1::0;19505:64:0::1;19580:13;:38:::0;19409:217::o;9877:654::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;-1:-1:-1;;;;;9956:22:0;::::1;9948:96;;;::::0;-1:-1:-1;;;9948:96:0;;17602:2:1;9948:96:0::1;::::0;::::1;17584:21:1::0;17641:2;17621:18;;;17614:30;17680:34;17660:18;;;17653:62;17751:31;17731:18;;;17724:59;17800:19;;9948:96:0::1;17400:425:1::0;9948:96:0::1;-1:-1:-1::0;;;;;;;10063:16:0;::::1;::::0;10055:90:::1;;;::::0;-1:-1:-1;;;10055:90:0;;17602:2:1;10055:90:0::1;::::0;::::1;17584:21:1::0;17641:2;17621:18;;;17614:30;17680:34;17660:18;;;17653:62;17751:31;17731:18;;;17724:59;17800:19;;10055:90:0::1;17400:425:1::0;10055:90:0::1;10176:6;::::0;10156:34:::1;::::0;-1:-1:-1;;;;;10176:6:0::1;;10156:19;:34::i;:::-;10201:35;10221:8;10231:4;10201:19;:35::i;:::-;10271:6;::::0;-1:-1:-1;;;;;10271:6:0::1;10281:1;11822:16:::0;;;;;;;;;;;10261:21;10257:127:::1;;10316:6;::::0;-1:-1:-1;;;;;10316:6:0::1;11795:7:::0;11822:16;;;;;;;;;;;10299:73:::1;::::0;10316:6;10324:8;;10334:17:::1;11729:117:::0;10299:73:::1;;10257:127;10423:6;::::0;;-1:-1:-1;;;;;10440:17:0;;::::1;-1:-1:-1::0;;;;;;10440:17:0;::::1;::::0;::::1;::::0;;;10473:40:::1;::::0;10423:6;::::1;::::0;10440:17;10423:6;;10473:40:::1;::::0;10404:16:::1;::::0;10473:40:::1;9937:594;9877:654:::0;:::o;14924:134::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;-1:-1:-1;;;;;15012:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;15012:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14924:134::o;14271:222::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;14355:14:::1;::::0;::::1;;14354:15;14346:24;;;::::0;::::1;;14412:4;-1:-1:-1::0;;;;;14389:28:0;::::1;::::0;14381:55:::1;;;::::0;-1:-1:-1;;;14381:55:0;;18032:2:1;14381:55:0::1;::::0;::::1;18014:21:1::0;18071:2;18051:18;;;18044:30;18110:16;18090:18;;;18083:44;18144:18;;14381:55:0::1;17830:338:1::0;14381:55:0::1;14447:11;:38:::0;;-1:-1:-1;;;;;14447:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;14447:38:0;;::::1;::::0;;;::::1;::::0;;14271:222::o;10539:225::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;10618:6:::1;::::0;10598:34:::1;::::0;-1:-1:-1;;;;;10618:6:0::1;;10598:19;:34::i;:::-;10662:6;::::0;;-1:-1:-1;;;;;;10679:19:0;::::1;::::0;;;10714:42:::1;::::0;-1:-1:-1;;;;;10662:6:0;;::::1;::::0;10643:16:::1;::::0;10662:6;;10714:42:::1;::::0;10643:16;;10714:42:::1;10587:177;10539:225::o:0;15798:182::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;15951:14:::1;:21:::0;;-1:-1:-1;;15951:21:0::1;15968:4;15951:21;::::0;;15798:182::o;13699:564::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;13781:7:::1;13776:480;;-1:-1:-1::0;;;;;13805:13:0;;::::1;13821:5;13805:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13805:21:0::1;::::0;;13841:11:::1;::::0;:34;;-1:-1:-1;;;13841:34:0;;::::1;::::0;::::1;18341:74:1::0;;;;18431:18;;;18424:50;;;;13841:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18314:18:1;;13841:34:0::1;18173:307:1::0;13776:480:0::1;13912:17;::::0;:22;13908:135:::1;;14001:6;13981:17;;13963:15;:35;;;;:::i;:::-;:44;13955:72;;;::::0;-1:-1:-1;;;13955:72:0;;18687:2:1;13955:72:0::1;::::0;::::1;18669:21:1::0;18726:2;18706:18;;;18699:30;18765:17;18745:18;;;18738:45;18800:18;;13955:72:0::1;18485:339:1::0;13955:72:0::1;-1:-1:-1::0;;;;;14066:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;14065:14;14057:54;;;::::0;-1:-1:-1;;;14057:54:0;;19031:2:1;14057:54:0::1;::::0;::::1;19013:21:1::0;19070:2;19050:18;;;19043:30;19109:29;19089:18;;;19082:57;19156:18;;14057:54:0::1;18829:351:1::0;14057:54:0::1;-1:-1:-1::0;;;;;14126:13:0;;::::1;;::::0;;;14142:4:::1;14126:13;::::0;;;;;;;;:20;;-1:-1:-1;;14126:20:0::1;::::0;::::1;::::0;;14181:15:::1;14161:17;:35:::0;14211:11:::1;::::0;:33;;-1:-1:-1;;;14211:33:0;;::::1;::::0;::::1;18341:74:1::0;;;;18431:18;;;18424:50;14211:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;18314:18:1;;14211:33:0::1;18173:307:1::0;13776:480:0::1;13699:564:::0;;:::o;17268:835::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;-1:-1:-1;;;;;17592:23:0;::::1;::::0;;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;17636:25:0;::::1;::::0;::::1;17592:69;:114;;;;-1:-1:-1::0;;;;;;17682:24:0;::::1;::::0;::::1;17592:114;:159;;;;-1:-1:-1::0;;;;;;17726:25:0;::::1;::::0;::::1;17592:159;:202;;;;-1:-1:-1::0;;;;;;17772:22:0;::::1;::::0;::::1;17592:202;17584:238;;;::::0;-1:-1:-1;;;17584:238:0;;19387:2:1;17584:238:0::1;::::0;::::1;19369:21:1::0;19426:2;19406:18;;;19399:30;19465:25;19445:18;;;19438:53;19508:18;;17584:238:0::1;19185:347:1::0;17584:238:0::1;17833:11;:42:::0;;-1:-1:-1;;;;;;17833:42:0;;::::1;-1:-1:-1::0;;;;;17833:42:0;;::::1;;::::0;;;17886:23;:46;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17943:22;:44;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17998:23;:46;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;18055:20;:40;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;17268:835::o;12514:175::-;9731:6;;12580:4;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;12629:9:::1;::::0;12597:62:::1;::::0;12614:4:::1;::::0;12629:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12629:9:0::1;-1:-1:-1::0;;12597:8:0::1;:62::i;:::-;-1:-1:-1::0;12677:4:0::1;12514:175:::0;:::o;25648:695::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;25710:14:::1;::::0;::::1;;25709:15;25701:52;;;::::0;-1:-1:-1;;;25701:52:0;;19739:2:1;25701:52:0::1;::::0;::::1;19721:21:1::0;19778:2;19758:18;;;19751:30;19817:26;19797:18;;;19790:54;19861:18;;25701:52:0::1;19537:348:1::0;25701:52:0::1;25772:16;::::0;::::1;::::0;::::1;;;25764:53;;;::::0;-1:-1:-1;;;25764:53:0;;20092:2:1;25764:53:0::1;::::0;::::1;20074:21:1::0;20131:2;20111:18;;;20104:30;20170:26;20150:18;;;20143:54;20214:18;;25764:53:0::1;19890:348:1::0;25764:53:0::1;25840:11;::::0;;;::::1;-1:-1:-1::0;;;;;25840:11:0::1;25828:106;;25882:11;:40:::0;;-1:-1:-1;;;;;;25882:40:0::1;25916:4;25882:40:::0;::::1;;::::0;;25828:106:::1;25948:11;::::0;25970:6:::1;::::0;25948:87:::1;::::0;-1:-1:-1;;;25948:87:0;;-1:-1:-1;;;;;25970:6:0;;::::1;25948:87;::::0;::::1;20466:74:1::0;20588:10;25985:12:0::1;20576:23:1::0;20556:18;;;20549:51;20648:18;26007:15:0::1;20636:31:1::0;20616:18;;;20609:59;4725:1:0::1;20684:18:1::0;;;20677:45;25948:11:0;;;::::1;;::::0;:21:::1;::::0;20438:19:1;;25948:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;26061:11:0::1;::::0;26092:6:::1;::::0;-1:-1:-1;;;;;26092:6:0;;::::1;11795:7:::0;11822:16;;;;;;;;;;;;;26061:39;;-1:-1:-1;;;26061:39:0;;::::1;::::0;::::1;391:25:1::0;;;;26061:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;26061:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;26061:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;26061:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;26057:207:::0;::::1;;26172:13;:29:::0;;;;26216:10:::1;:27:::0;26057:207:::1;26274:14;:21:::0;;-1:-1:-1;;26274:21:0::1;26291:4;26274:21;::::0;;26320:15:::1;26306:11;:29:::0;25648:695::o;11854:165::-;11932:4;11949:40;11959:10;11971:9;11982:6;11949:9;:40::i;:::-;-1:-1:-1;12007:4:0;;11854:165;-1:-1:-1;;;11854:165:0:o;26541:296::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;26619:16:::1;::::0;::::1;::::0;::::1;;;26615:111;;;26677:4;-1:-1:-1::0;;;;;26660:22:0;::::1;::::0;26652:62:::1;;;::::0;-1:-1:-1;;;26652:62:0;;21185:2:1;26652:62:0::1;::::0;::::1;21167:21:1::0;21224:2;21204:18;;;21197:30;21263:29;21243:18;;;21236:57;21310:18;;26652:62:0::1;20983:351:1::0;26652:62:0::1;26790:6;::::0;26798:30:::1;::::0;-1:-1:-1;;;26798:30:0;;26822:4:::1;26798:30;::::0;::::1;160:74:1::0;26758:5:0;;-1:-1:-1;;;;;26775:14:0;;::::1;::::0;::::1;::::0;26790:6;;;::::1;::::0;26775:14;;26798:15:::1;::::0;133:18:1;;26798:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26775:54;::::0;-1:-1:-1;;;;;;26775:54:0::1;::::0;;;;;;-1:-1:-1;;;;;21720:55:1;;;26775:54:0::1;::::0;::::1;21702:74:1::0;21792:18;;;21785:34;21675:18;;26775:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19634:263::-:0;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;19743:19:::1;:33:::0;;-1:-1:-1;;19743:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;19787:22:::1;:47:::0;;-1:-1:-1;;19787:47:0::1;::::0;::::1;;;::::0;;19850:39:::1;::::0;2242:41:1;;;19850:39:0::1;::::0;2230:2:1;2215:18;19850:39:0::1;;;;;;;;19634:263:::0;;:::o;13011:680::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;13091:16:::1;::::0;::::1;::::0;::::1;;;13090:17;13082:60;;;::::0;-1:-1:-1;;;13082:60:0;;22282:2:1;13082:60:0::1;::::0;::::1;22264:21:1::0;22321:2;22301:18;;;22294:30;22360:32;22340:18;;;22333:60;22410:18;;13082:60:0::1;22080:354:1::0;13082:60:0::1;13153:20;13186:9;13153:43;;13207:16;13237:10;-1:-1:-1::0;;;;;13237:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13226:40:0::1;;13275:4;13282:10;-1:-1:-1::0;;;;;13282:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13226:74;::::0;-1:-1:-1;;;;;;13226:74:0::1;::::0;;;;;;-1:-1:-1;;;;;22948:15:1;;;13226:74:0::1;::::0;::::1;22930:34:1::0;23000:15;;22980:18;;;22973:43;22842:18;;13226:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13319:6;::::0;-1:-1:-1;;;;;13319:6:0;;::::1;13329:5;13311:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;13311:23:0::1;::::0;;13207:93;;-1:-1:-1;13349:22:0;::::1;13345:200;;13408:10;-1:-1:-1::0;;;;;13408:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13397:43:0::1;;13449:4;13456:10;-1:-1:-1::0;;;;;13456:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13397:77;::::0;-1:-1:-1;;;;;;13397:77:0::1;::::0;;;;;;-1:-1:-1;;;;;22948:15:1;;;13397:77:0::1;::::0;::::1;22930:34:1::0;23000:15;;22980:18;;;22973:43;22842:18;;13397:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13388:6;:86:::0;;-1:-1:-1;;;;;;13388:86:0::1;-1:-1:-1::0;;;;;13388:86:0;;;::::1;::::0;;;::::1;::::0;;13345:200:::1;;;13516:6;:17:::0;;-1:-1:-1;;;;;;13516:17:0::1;-1:-1:-1::0;;;;;13516:17:0;::::1;;::::0;;13345:200:::1;13555:9;:22:::0;;-1:-1:-1;;13555:22:0::1;;-1:-1:-1::0;;;;;13555:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13596:6:::1;::::0;;::::1;-1:-1:-1::0;13588:15:0;;;-1:-1:-1;13588:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13588:22:0::1;::::0;;::::1;::::0;;13653:9;;13621:62:::1;::::0;13638:4:::1;::::0;13653:9;::::1;;-1:-1:-1::0;;13621:8:0::1;:62::i;26351:182::-:0;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;26418:16:::1;::::0;::::1;::::0;::::1;;;26417:17;26409:58;;;::::0;-1:-1:-1;;;26409:58:0;;23229:2:1;26409:58:0::1;::::0;::::1;23211:21:1::0;23268:2;23248:18;;;23241:30;23307;23287:18;;;23280:58;23355:18;;26409:58:0::1;23027:352:1::0;26409:58:0::1;26486:6;::::0;26478:47:::1;::::0;-1:-1:-1;;;;;26486:6:0;;::::1;::::0;26503:21:::1;26478:47:::0;::::1;;;::::0;26486:6:::1;26478:47:::0;26486:6;26478:47;26503:21;26486:6;26478:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26351:182::o:0;18702:699::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;18902:16;18882;4785:13:::1;4725:1;4785:2;:13;:::i;:::-;4768:30;::::0;4569:13:::1;4768:30;:::i;:::-;18872:26;;;;:::i;:::-;18871:47;;;;:::i;:::-;18855:13;:63:::0;18970:13;18953;4785::::1;4725:1;4785:2;:13;:::i;:::-;4768:30;::::0;4569:13:::1;4768:30;:::i;:::-;18943:23;;;;:::i;:::-;18942:41;;;;:::i;:::-;18929:10;:54:::0;;;19002:13:::1;::::0;:27:::1;;18994:73;;;::::0;-1:-1:-1;;;18994:73:0;;23586:2:1;18994:73:0::1;::::0;::::1;23568:21:1::0;23625:2;23605:18;;;23598:30;23664:34;23644:18;;;23637:62;-1:-1:-1;;;23715:18:1;;;23708:31;23756:19;;18994:73:0::1;23384:397:1::0;18994:73:0::1;19111:6;::::0;-1:-1:-1;;;;;19111:6:0::1;11795:7:::0;11822:16;;;;;;;;;;;5759:5:::1;::::0;19101:23:::1;::::0;19121:3:::1;19101:23;:::i;:::-;19100:44;;;;:::i;:::-;19086:10;;:58;;19078:106;;;::::0;-1:-1:-1;;;19078:106:0;;23988:2:1;19078:106:0::1;::::0;::::1;23970:21:1::0;24027:2;24007:18;;;24000:30;24066:34;24046:18;;;24039:62;-1:-1:-1;;;24117:18:1;;;24110:33;24160:19;;19078:106:0::1;23786:399:1::0;19078:106:0::1;19227:9;4785:13;4725:1;4785:2;:13;:::i;:::-;4768:30;::::0;4569:13:::1;4768:30;:::i;:::-;19217:19;;;;:::i;:::-;19203:10;;:33;;19195:92;;;::::0;-1:-1:-1;;;19195:92:0;;24392:2:1;19195:92:0::1;::::0;::::1;24374:21:1::0;24431:2;24411:18;;;24404:30;24470:34;24450:18;;;24443:62;-1:-1:-1;;;24521:18:1;;;24514:44;24575:19;;19195:92:0::1;24190:410:1::0;19195:92:0::1;19333:9;4785:13;4725:1;4785:2;:13;:::i;:::-;4768:30;::::0;4569:13:::1;4768:30;:::i;:::-;19323:19;;;;:::i;:::-;19306:13;;:36;;19298:95;;;::::0;-1:-1:-1;;;19298:95:0;;24392:2:1;19298:95:0::1;::::0;::::1;24374:21:1::0;24431:2;24411:18;;;24404:30;24470:34;24450:18;;;24443:62;-1:-1:-1;;;24521:18:1;;;24514:44;24575:19;;19298:95:0::1;24190:410:1::0;19298:95:0::1;18702:699:::0;;;;:::o;15214:148::-;9731:6;;-1:-1:-1;;;;;9731:6:0;9741:10;9731:20;9723:50;;;;-1:-1:-1;;;9723:50:0;;11371:2:1;9723:50:0;;;11353:21:1;11410:2;11390:18;;;11383:30;-1:-1:-1;;;;;;;;;;;11429:18:1;;;11422:47;11486:18;;9723:50:0;11169:341:1;9723:50:0;-1:-1:-1;;;;;15310:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;15310:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15214:148::o;12196:310::-;-1:-1:-1;;;;;12291:20:0;;12283:52;;;;-1:-1:-1;;;12283:52:0;;24807:2:1;12283:52:0;;;24789:21:1;24846:2;24826:18;;;24819:30;-1:-1:-1;;;24865:18:1;;;24858:49;24924:18;;12283:52:0;24605:343:1;12283:52:0;-1:-1:-1;;;;;12354:21:0;;12346:53;;;;-1:-1:-1;;;12346:53:0;;24807:2:1;12346:53:0;;;24789:21:1;24846:2;24826:18;;;24819:30;-1:-1:-1;;;24865:18:1;;;24858:49;24924:18;;12346:53:0;24605:343:1;12346:53:0;-1:-1:-1;;;;;12412:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;12465:33;;391:25:1;;;12465:33:0;;364:18:1;12465:33:0;;;;;;;12196:310;;;:::o;20359:1931::-;20438:4;-1:-1:-1;;;;;20463:18:0;;20455:68;;;;-1:-1:-1;;;20455:68:0;;25155:2:1;20455:68:0;;;25137:21:1;25194:2;25174:18;;;25167:30;25233:34;25213:18;;;25206:62;-1:-1:-1;;;25284:18:1;;;25277:35;25329:19;;20455:68:0;24953:401:1;20455:68:0;-1:-1:-1;;;;;20542:16:0;;20534:64;;;;-1:-1:-1;;;20534:64:0;;25561:2:1;20534:64:0;;;25543:21:1;25600:2;25580:18;;;25573:30;25639:34;25619:18;;;25612:62;-1:-1:-1;;;25690:18:1;;;25683:33;25733:19;;20534:64:0;25359:399:1;20534:64:0;20626:1;20617:6;:10;20609:64;;;;-1:-1:-1;;;20609:64:0;;25965:2:1;20609:64:0;;;25947:21:1;26004:2;25984:18;;;25977:30;26043:34;26023:18;;;26016:62;-1:-1:-1;;;26094:18:1;;;26087:39;26143:19;;20609:64:0;25763:405:1;20609:64:0;-1:-1:-1;;;;;20772:13:0;;20684:8;20772:13;;;:7;:13;;;;;;20684:8;;;;20772:13;;20768:162;;;20808:4;20802:10;;20768:162;;;-1:-1:-1;;;;;20834:11:0;;;;;;:7;:11;;;;;;;;20830:100;;;20869:4;20862:11;;20830:100;;;-1:-1:-1;20914:4:0;20830:100;20944:20;20955:4;20961:2;20944:10;:20::i;:::-;20940:628;;;20985:14;;;;20981:319;;21025:5;21020:265;;21055:34;;-1:-1:-1;;;21055:34:0;;26375:2:1;21055:34:0;;;26357:21:1;26414:2;26394:18;;;26387:30;26453:26;26433:18;;;26426:54;26497:18;;21055:34:0;26173:348:1;21020:265:0;-1:-1:-1;;;;;21120:31:0;;;;;;:25;:31;;;;;;;;21119:32;:66;;;;-1:-1:-1;;;;;;21156:29:0;;;;;;:25;:29;;;;;;;;21155:30;21119:66;21115:170;;;21210:55;;-1:-1:-1;;;21210:55:0;;26728:2:1;21210:55:0;;;26710:21:1;26767:2;26747:18;;;26740:30;26806:34;26786:18;;;26779:62;-1:-1:-1;;;26857:18:1;;;26850:43;26910:19;;21210:55:0;26526:409:1;21115:170:0;21332:9;;-1:-1:-1;;;;;21318:24:0;;;21332:9;;;;;21318:24;;;;:33;;;21347:4;21346:5;21318:33;21314:243;;;-1:-1:-1;;;;;21377:25:0;;;;;;:21;:25;;;;;;;;21372:170;;21461:14;;21451:6;21435:13;21445:2;-1:-1:-1;;;;;11822:16:0;11795:7;11822:16;;;;;;;;;;;;11729:117;21435:13;:22;;;;:::i;:::-;:40;;21427:95;;;;-1:-1:-1;;;21427:95:0;;27142:2:1;21427:95:0;;;27124:21:1;27181:2;27161:18;;;27154:30;27220:34;27200:18;;;27193:62;-1:-1:-1;;;27271:18:1;;;27264:40;27321:19;;21427:95:0;26940:406:1;21427:95:0;21584:4;21580:633;;;21610:6;;;;21605:597;;21641:19;;;;;;;21637:550;;;21735:4;21686:28;11822:16;;;;;;;;;;;21792:13;;21768:37;;21764:404;;21852:10;;21893:22;;;;21889:97;;;21950:13;;21940:6;;-1:-1:-1;;;;;21940:6:0;11795:7;11822:16;;;;;;;;;;;5759:5;;21930:33;;;:::i;:::-;21929:54;;;;:::i;:::-;21919:64;;21889:97;22040:7;22016:20;:31;22012:72;;22074:7;22051:30;;22012:72;22110:34;22123:20;22110:12;:34::i;:::-;21807:361;21764:404;21663:524;21637:550;22230:52;22247:4;22253:2;22257:6;22265:3;22270:4;22276:5;22230:16;:52::i;:::-;22223:59;20359:1931;-1:-1:-1;;;;;;;20359:1931:0:o;27300:1055::-;27419:4;27440:20;27451:4;27457:2;27440:10;:20::i;:::-;27436:228;;;27495:11;;:39;;-1:-1:-1;;;27495:39:0;;-1:-1:-1;;;;;27632:15:1;;;27495:39:0;;;27614:34:1;27684:15;;;27664:18;;;27657:43;27716:18;;;27709:34;;;27464:12:0;;27495:11;;;;;:21;;27526:18:1;;27495:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;27495:39:0;;;;;;;;-1:-1:-1;;27495:39:0;;;;;;;;;;;;:::i;:::-;;;27491:122;;27602:8;;;27491:122;27585:5;-1:-1:-1;27631:7:0;27627:26;;27642:8;;;27627:26;27462:202;27436:228;-1:-1:-1;;;;;27708:25:0;;27674:12;27708:25;;;:19;:25;;;;;;27689:4;;27708:25;;;:52;;-1:-1:-1;;;;;;27737:23:0;;;;;;:19;:23;;;;;;;;27708:52;27704:99;;;-1:-1:-1;27786:5:0;27704:99;-1:-1:-1;;;;;27813:13:0;;:7;:13;;;;;;;;;;:23;;27830:6;;27813:7;:23;;27830:6;;27813:23;:::i;:::-;;;;-1:-1:-1;27847:22:0;;-1:-1:-1;27873:7:0;27872:55;;27921:6;27872:55;;;27884:34;27894:4;27900:3;27905:4;27911:6;27884:9;:34::i;:::-;27847:80;;27953:14;27938:7;:11;27946:2;-1:-1:-1;;;;;27938:11:0;-1:-1:-1;;;;;27938:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;27998:2;-1:-1:-1;;;;;27983:34:0;27992:4;-1:-1:-1;;;;;27983:34:0;;28002:14;27983:34;;;;391:25:1;;379:2;364:18;;245:177;27983:34:0;;;;;;;;28033:16;;;;;;;28028:298;;28066:28;28085:4;28091:2;28066:18;:28::i;:::-;28114:16;;;;;;;28113:17;:41;;;;;28134:20;28145:4;28151:2;28134:10;:20::i;:::-;28113:77;;;;-1:-1:-1;;;;;;28159:31:0;;;;;;:25;:31;;;;;;;;28158:32;28113:77;:111;;;;-1:-1:-1;;;;;;28195:29:0;;;;;;:25;:29;;;;;;;;28194:30;28113:111;:121;;;;;28229:5;28228:6;28113:121;28109:206;;;28255:44;;-1:-1:-1;;;28255:44:0;;27956:2:1;28255:44:0;;;27938:21:1;27995:2;27975:18;;;27968:30;28034:34;28014:18;;;28007:62;-1:-1:-1;;;28085:18:1;;;28078:32;28127:19;;28255:44:0;27754:398:1;28109:206:0;-1:-1:-1;28343:4:0;;27300:1055;-1:-1:-1;;;;;;;;27300:1055:0:o;19905:446::-;20006:6;;19974:4;;-1:-1:-1;;;;;19998:14:0;;;20006:6;;19998:14;;;;:43;;-1:-1:-1;20035:6:0;;-1:-1:-1;;;;;20029:12:0;;;20035:6;;20029:12;;19998:43;:79;;;;-1:-1:-1;20071:6:0;;-1:-1:-1;;;;;20071:6:0;20058:9;:19;;19998:79;:118;;;;-1:-1:-1;;;;;;20095:21:0;;;;;;:17;:21;;;;;;;;20094:22;19998:118;:159;;;;-1:-1:-1;;;;;;20134:23:0;;;;;;:17;:23;;;;;;;;20133:24;19998:159;:186;;;;-1:-1:-1;;;;;;20174:10:0;;5898:42;20174:10;;19998:186;:219;;;;-1:-1:-1;;;;;;20201:16:0;;;;19998:219;:257;;;;-1:-1:-1;;;;;;20234:21:0;;20250:4;20234:21;;19998:257;:302;;;;-1:-1:-1;20288:11:0;;-1:-1:-1;;;;;20272:28:0;;;20288:11;;;;;20272:28;;19998:302;:345;;;;-1:-1:-1;20331:11:0;;-1:-1:-1;;;;;20317:26:0;;;20331:11;;;;;20317:26;;19998:345;19991:352;19905:446;-1:-1:-1;;;19905:446:0:o;22298:2771::-;7190:6;:13;;-1:-1:-1;;7190:13:0;7199:4;7190:13;;;22381:30:::1;::::0;;7190:13;22381:30;::::1;::::0;;22404:7:::1;22381:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;22381:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;22381:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;22381:30:0;::::1;::::0;;::::1;::::0;;;;;;7190:6;22426:21;22422:60:::1;;22464:7;;;22422:60;22518:4;22498:26;::::0;;;:11:::1;:26;::::0;;;;;;;22533:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22533:9:0::1;22498:46:::0;;;;;;;;-1:-1:-1;;22498:67:0::1;22494:166;;22602:4;22582:26;::::0;;;:11:::1;:26;::::0;;;;;;;22617:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;22617:9:0::1;22582:46:::0;;;;;;;-1:-1:-1;;22582:66:0;;22494:166:::1;22672:17;22757:1;22737:6;:16;;;22693:60;;22717:6;:16;;;22694:39;;:20;:39;;;;:::i;:::-;22693:60;;;;:::i;:::-;22692:66;;;;:::i;:::-;22672:86:::0;-1:-1:-1;22769:15:0::1;22787:32;22672:86:::0;22787:20;:32:::1;:::i;:::-;22864:16;::::0;;22878:1:::1;22864:16:::0;;;;;::::1;::::0;;22769:50;;-1:-1:-1;22840:21:0::1;::::0;22864:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22864:16:0::1;22840:40;;22909:4;22891;22896:1;22891:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;22891:23:0::1;;;-1:-1:-1::0;;;;;22891:23:0::1;;;::::0;::::1;22935:9;;;;;;;;;-1:-1:-1::0;;;;;22935:9:0::1;-1:-1:-1::0;;;;;22935:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22925:4;22930:1;22925:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22925:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22968:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;22968:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;23043:7;;23065:1:::1;::::0;23081:4;;23108::::1;::::0;23128:15:::1;::::0;22968:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22964:233;;23179:7;;;;;;22964:233;23230:21;23209:18;23316:7:::0;23290:22:::1;23303:9:::0;23230:21;23290:22:::1;:::i;:::-;23289:34;;;;:::i;:::-;23262:61:::0;-1:-1:-1;23340:13:0;;23336:400:::1;;23374:9;::::0;:222:::1;::::0;-1:-1:-1;;;23374:222:0;;23451:4:::1;23374:222;::::0;::::1;29552:34:1::0;29602:18;;;29595:34;;;23503:1:0::1;29645:18:1::0;;;29638:34;;;29688:18;;;29681:34;5898:42:0::1;29731:19:1::0;;;29724:44;23566:15:0::1;29784:19:1::0;;;29777:35;23374:9:0::1;::::0;;::::1;-1:-1:-1::0;;;;;23374:9:0::1;::::0;:25:::1;::::0;23407:16;;29463:19:1;;23374:222:0::1;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;23374:222:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;23374:222:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;23370:355;;23703:7;;;;;;;;23370:355;-1:-1:-1::0;;23621:40:0::1;::::0;;30308:25:1;;;30364:2;30349:18;;30342:34;;;23621:40:0::1;::::0;-1:-1:-1;30281:18:1;23621:40:0::1;;;;;;;23370:355;23748:30;23762:16:::0;23748:30;::::1;:::i;:::-;;;23809:6;:16;;;23789:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;23920:16:::1;::::0;::::1;::::0;23900::::1;::::0;::::1;::::0;23836:12:::1;::::0;-1:-1:-1;23836:12:0;;23886:50;;::::1;::::0;23887:29:::1;::::0;::::1;:10:::0;:29:::1;:::i;:::-;23886:50;;;;:::i;:::-;23859:77;;23947:25;24010:6;:16;;;23975:51;;23989:6;:17;;;23976:30;;:10;:30;;;;:::i;:::-;23975:51;;;;:::i;:::-;23947:79;;24037:26;24102:6;:16;;;24066:52;;24080:6;:18;;;24067:31;;:10;:31;;;;:::i;:::-;24066:52;;;;:::i;:::-;24037:81;;24129:23;24188:6;:16;;;24155:49;;24169:6;:15;;;24156:28;;:10;:28;;;;:::i;:::-;24155:49;;;;:::i;:::-;24129:75:::0;-1:-1:-1;24215:26:0::1;24129:75:::0;24297:18;24258:36:::1;24277:17:::0;24258:16;:36:::1;:::i;:::-;:57;;;;:::i;:::-;:75;;;;:::i;:::-;24244:90;::::0;:10;:90:::1;:::i;:::-;24349:16;::::0;::::1;::::0;24215:119;;-1:-1:-1;24349:20:0::1;;::::0;24345:133:::1;;24399:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;24399:21:0;;::::1;::::0;24456:5:::1;::::0;24433:16;;24399:67:::1;::::0;;;24433:16;24399:21;24456:5;24399:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24386:80:0;;-1:-1:-1;;24345:133:0::1;24492:17;::::0;::::1;::::0;:21:::1;;::::0;24488:136:::1;;24543:22:::0;;:69:::1;::::0;-1:-1:-1;;;;;24543:22:0;;::::1;::::0;24602:5:::1;::::0;24578:17;;24543:69:::1;::::0;;;24578:17;24543:22;24602:5;24543:69:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24530:82:0;;-1:-1:-1;;24488:136:0::1;24638:18;::::0;::::1;::::0;:22:::1;;::::0;24634:139:::1;;24690:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;24690:23:0;;::::1;::::0;24751:5:::1;::::0;24726:18;;24690:71:::1;::::0;;;24726:18;24690:23;24751:5;24690:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24677:84:0;;-1:-1:-1;;24634:139:0::1;24787:18;::::0;::::1;::::0;:22:::1;;::::0;24783:139:::1;;24839:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;24839:23:0;;::::1;::::0;24900:5:::1;::::0;24875:18;;24839:71:::1;::::0;;;24875:18;24839:23;24900:5;24839:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24826:84:0;;-1:-1:-1;;24783:139:0::1;24936:15;::::0;::::1;::::0;:19:::1;;::::0;24932:130:::1;;24985:20:::0;;:65:::1;::::0;-1:-1:-1;;;;;24985:20:0;;::::1;::::0;25040:5:::1;::::0;25018:15;;24985:65:::1;::::0;;;25018:15;24985:20;25040:5;24985:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;24972:78:0;;-1:-1:-1;;24932:130:0::1;22370:2699;;;;;;;;;;;;7214:1;-1:-1:-1::0;7226:6:0;:14;;-1:-1:-1;;7226:14:0;;;22298:2771::o;28363:1146::-;28500:30;;;;;;;;28523:7;28500:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;28500:30:0;;;;;;;;-1:-1:-1;;;28500:30:0;;;;;;;;;;-1:-1:-1;;;28500:30:0;;;;;;;;;;;;28451:7;;;;28500:30;28451:7;;28557:30;;;:::i;:::-;28541:46;;;;28602:3;28598:205;;;28635:9;:16;;;;-1:-1:-1;28598:205:0;;;28673:4;28669:134;;;28707:9;:17;;;;;;;-1:-1:-1;28669:134:0;;;28770:9;:21;;;;;;;-1:-1:-1;28669:134:0;28817:10;28831:1;28817:15;28813:39;;28843:6;28836:13;;;;;;;28813:39;28874:11;;;;;-1:-1:-1;;;;;28874:11:0;28898:4;28866:37;:110;;;;;28921:13;28938:1;28921:18;:54;;;;28956:13;28973:2;28956:19;28921:54;28862:138;;;28993:4;28980:17;;28862:138;29010:17;5759:5;29030:19;29039:10;29030:6;:19;:::i;:::-;:38;;;;:::i;:::-;29010:58;;29079:18;29126:5;29112:6;:11;;;29100:23;;:9;:23;;;;:::i;:::-;:31;;;;:::i;:::-;29079:52;-1:-1:-1;29142:15:0;29160:22;29079:52;29160:9;:22;:::i;:::-;29142:40;-1:-1:-1;29197:11:0;;29193:135;;29241:4;29225:7;:22;;;;;;;;;;:33;;29251:7;;29225;:33;;29251:7;;29225:33;:::i;:::-;;;;-1:-1:-1;;29278:38:0;;391:25:1;;;29301:4:0;;-1:-1:-1;;;;;29278:38:0;;;;;379:2:1;364:18;29278:38:0;;;;;;;29193:135;29342:14;;29338:126;;5898:42;29373:7;:13;;;;;;;;:27;;29390:10;;29373:7;:27;;29390:10;;29373:27;:::i;:::-;;;;-1:-1:-1;;29420:32:0;;391:25:1;;;5898:42:0;;-1:-1:-1;;;;;29420:32:0;;;;;379:2:1;364:18;29420:32:0;;;;;;;29338:126;29483:18;29492:9;29483:6;:18;:::i;:::-;29476:25;28363:1146;-1:-1:-1;;;;;;;;;;;28363:1146:0:o;25077:563::-;25160:16;;;;;;;25159:17;25151:65;;;;-1:-1:-1;;;25151:65:0;;30975:2:1;25151:65:0;;;30957:21:1;31014:2;30994:18;;;30987:30;31053:34;31033:18;;;31026:62;-1:-1:-1;;;31104:18:1;;;31097:33;31147:19;;25151:65:0;30773:399:1;25151:65:0;25232:20;25243:4;25249:2;25232:10;:20::i;:::-;25231:21;:37;;;;-1:-1:-1;25262:6:0;;-1:-1:-1;;;;;25256:12:0;;;25262:6;;25256:12;25231:37;25227:406;;;-1:-1:-1;;;;;25285:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;25285:30:0;;;25311:4;25285:30;;;;;;25330:19;:25;;;;;:32;;;;;;;;;;25377:16;:23;;-1:-1:-1;;25377:23:0;25285:30;25377:23;;;;;25427:11;;;;25415:114;;25473:11;:40;;-1:-1:-1;;;;;;25473:40:0;25507:4;25473:40;;;;;25415:114;25543:19;:26;;-1:-1:-1;;25543:26:0;;;;;25589:32;;-1:-1:-1;2242:41:1;;25589:32:0;;2230:2:1;2215:18;25589:32:0;2102:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2294:154::-;-1:-1:-1;;;;;2373:5:1;2369:54;2362:5;2359:65;2349:93;;2438:1;2435;2428:12;2453:315;2521:6;2529;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2637:9;2624:23;2656:31;2681:5;2656:31;:::i;:::-;2706:5;2758:2;2743:18;;;;2730:32;;-1:-1:-1;;;2453:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:456::-;3102:6;3110;3118;3171:2;3159:9;3150:7;3146:23;3142:32;3139:52;;;3187:1;3184;3177:12;3139:52;3226:9;3213:23;3245:31;3270:5;3245:31;:::i;:::-;3295:5;-1:-1:-1;3352:2:1;3337:18;;3324:32;3365:33;3324:32;3365:33;:::i;:::-;3025:456;;3417:7;;-1:-1:-1;;;3471:2:1;3456:18;;;;3443:32;;3025:456::o;3486:248::-;3554:6;3562;3615:2;3603:9;3594:7;3590:23;3586:32;3583:52;;;3631:1;3628;3621:12;3583:52;-1:-1:-1;;3654:23:1;;;3724:2;3709:18;;;3696:32;;-1:-1:-1;3486:248:1:o;3739:127::-;3800:10;3795:3;3791:20;3788:1;3781:31;3831:4;3828:1;3821:15;3855:4;3852:1;3845:15;3871:275;3942:2;3936:9;4007:2;3988:13;;-1:-1:-1;;3984:27:1;3972:40;;4042:18;4027:34;;4063:22;;;4024:62;4021:88;;;4089:18;;:::i;:::-;4125:2;4118:22;3871:275;;-1:-1:-1;3871:275:1:o;4151:183::-;4211:4;4244:18;4236:6;4233:30;4230:56;;;4266:18;;:::i;:::-;-1:-1:-1;4311:1:1;4307:14;4323:4;4303:25;;4151:183::o;4339:662::-;4393:5;4446:3;4439:4;4431:6;4427:17;4423:27;4413:55;;4464:1;4461;4454:12;4413:55;4500:6;4487:20;4526:4;4550:60;4566:43;4606:2;4566:43;:::i;:::-;4550:60;:::i;:::-;4644:15;;;4730:1;4726:10;;;;4714:23;;4710:32;;;4675:12;;;;4754:15;;;4751:35;;;4782:1;4779;4772:12;4751:35;4818:2;4810:6;4806:15;4830:142;4846:6;4841:3;4838:15;4830:142;;;4912:17;;4900:30;;4950:12;;;;4863;;4830:142;;;-1:-1:-1;4990:5:1;4339:662;-1:-1:-1;;;;;;4339:662:1:o;5006:1215::-;5124:6;5132;5185:2;5173:9;5164:7;5160:23;5156:32;5153:52;;;5201:1;5198;5191:12;5153:52;5241:9;5228:23;5270:18;5311:2;5303:6;5300:14;5297:34;;;5327:1;5324;5317:12;5297:34;5365:6;5354:9;5350:22;5340:32;;5410:7;5403:4;5399:2;5395:13;5391:27;5381:55;;5432:1;5429;5422:12;5381:55;5468:2;5455:16;5490:4;5514:60;5530:43;5570:2;5530:43;:::i;5514:60::-;5608:15;;;5690:1;5686:10;;;;5678:19;;5674:28;;;5639:12;;;;5714:19;;;5711:39;;;5746:1;5743;5736:12;5711:39;5770:11;;;;5790:217;5806:6;5801:3;5798:15;5790:217;;;5886:3;5873:17;5903:31;5928:5;5903:31;:::i;:::-;5947:18;;5823:12;;;;5985;;;;5790:217;;;6026:5;-1:-1:-1;;6069:18:1;;6056:32;;-1:-1:-1;;6100:16:1;;;6097:36;;;6129:1;6126;6119:12;6097:36;;6152:63;6207:7;6196:8;6185:9;6181:24;6152:63;:::i;:::-;6142:73;;;5006:1215;;;;;:::o;6415:159::-;6482:20;;6542:6;6531:18;;6521:29;;6511:57;;6564:1;6561;6554:12;6511:57;6415:159;;;:::o;6579:328::-;6653:6;6661;6669;6722:2;6710:9;6701:7;6697:23;6693:32;6690:52;;;6738:1;6735;6728:12;6690:52;6761:28;6779:9;6761:28;:::i;:::-;6751:38;;6808:37;6841:2;6830:9;6826:18;6808:37;:::i;:::-;6798:47;;6864:37;6897:2;6886:9;6882:18;6864:37;:::i;:::-;6854:47;;6579:328;;;;;:::o;6912:382::-;6977:6;6985;7038:2;7026:9;7017:7;7013:23;7009:32;7006:52;;;7054:1;7051;7044:12;7006:52;7093:9;7080:23;7112:31;7137:5;7112:31;:::i;7299:620::-;7405:6;7413;7421;7429;7437;7445;7453;7506:3;7494:9;7485:7;7481:23;7477:33;7474:53;;;7523:1;7520;7513:12;7474:53;7546:28;7564:9;7546:28;:::i;:::-;7536:38;;7593:37;7626:2;7615:9;7611:18;7593:37;:::i;:::-;7583:47;;7649:37;7682:2;7671:9;7667:18;7649:37;:::i;:::-;7639:47;;7705:37;7738:2;7727:9;7723:18;7705:37;:::i;:::-;7695:47;;7761:38;7794:3;7783:9;7779:19;7761:38;:::i;:::-;7751:48;;7818:38;7851:3;7840:9;7836:19;7818:38;:::i;:::-;7808:48;;7875:38;7908:3;7897:9;7893:19;7875:38;:::i;:::-;7865:48;;7299:620;;;;;;;;;;:::o;7924:180::-;7983:6;8036:2;8024:9;8015:7;8011:23;8007:32;8004:52;;;8052:1;8049;8042:12;8004:52;-1:-1:-1;8075:23:1;;7924:180;-1:-1:-1;7924:180:1:o;8109:853::-;8244:6;8252;8260;8268;8276;8329:3;8317:9;8308:7;8304:23;8300:33;8297:53;;;8346:1;8343;8336:12;8297:53;8385:9;8372:23;8404:31;8429:5;8404:31;:::i;:::-;8454:5;-1:-1:-1;8511:2:1;8496:18;;8483:32;8524:33;8483:32;8524:33;:::i;:::-;8576:7;-1:-1:-1;8635:2:1;8620:18;;8607:32;8648:33;8607:32;8648:33;:::i;:::-;8700:7;-1:-1:-1;8759:2:1;8744:18;;8731:32;8772:33;8731:32;8772:33;:::i;:::-;8824:7;-1:-1:-1;8883:3:1;8868:19;;8855:33;8897;8855;8897;:::i;:::-;8949:7;8939:17;;;8109:853;;;;;;;;:::o;9732:388::-;9800:6;9808;9861:2;9849:9;9840:7;9836:23;9832:32;9829:52;;;9877:1;9874;9867:12;9829:52;9916:9;9903:23;9935:31;9960:5;9935:31;:::i;:::-;9985:5;-1:-1:-1;10042:2:1;10027:18;;10014:32;10055:33;10014:32;10055:33;:::i;10779:385::-;10865:6;10873;10881;10889;10942:3;10930:9;10921:7;10917:23;10913:33;10910:53;;;10959:1;10956;10949:12;10910:53;-1:-1:-1;;10982:23:1;;;11052:2;11037:18;;11024:32;;-1:-1:-1;11103:2:1;11088:18;;11075:32;;11154:2;11139:18;11126:32;;-1:-1:-1;10779:385:1;-1:-1:-1;10779:385:1:o;11788:127::-;11849:10;11844:3;11840:20;11837:1;11830:31;11880:4;11877:1;11870:15;11904:4;11901:1;11894:15;11920:422;12009:1;12052:5;12009:1;12066:270;12087:7;12077:8;12074:21;12066:270;;;12146:4;12142:1;12138:6;12134:17;12128:4;12125:27;12122:53;;;12155:18;;:::i;:::-;12205:7;12195:8;12191:22;12188:55;;;12225:16;;;;12188:55;12304:22;;;;12264:15;;;;12066:270;;;12070:3;11920:422;;;;;:::o;12347:806::-;12396:5;12426:8;12416:80;;-1:-1:-1;12467:1:1;12481:5;;12416:80;12515:4;12505:76;;-1:-1:-1;12552:1:1;12566:5;;12505:76;12597:4;12615:1;12610:59;;;;12683:1;12678:130;;;;12590:218;;12610:59;12640:1;12631:10;;12654:5;;;12678:130;12715:3;12705:8;12702:17;12699:43;;;12722:18;;:::i;:::-;-1:-1:-1;;12778:1:1;12764:16;;12793:5;;12590:218;;12892:2;12882:8;12879:16;12873:3;12867:4;12864:13;12860:36;12854:2;12844:8;12841:16;12836:2;12830:4;12827:12;12823:35;12820:77;12817:159;;;-1:-1:-1;12929:19:1;;;12961:5;;12817:159;13008:34;13033:8;13027:4;13008:34;:::i;:::-;13078:6;13074:1;13070:6;13066:19;13057:7;13054:32;13051:58;;;13089:18;;:::i;:::-;13127:20;;12347:806;-1:-1:-1;;;12347:806:1:o;13158:140::-;13216:5;13245:47;13286:4;13276:8;13272:19;13266:4;13245:47;:::i;13303:217::-;13343:1;13369;13359:132;;13413:10;13408:3;13404:20;13401:1;13394:31;13448:4;13445:1;13438:15;13476:4;13473:1;13466:15;13359:132;-1:-1:-1;13505:9:1;;13303:217::o;13525:168::-;13598:9;;;13629;;13646:15;;;13640:22;;13626:37;13616:71;;13667:18;;:::i;13698:128::-;13765:9;;;13786:11;;;13783:37;;;13800:18;;:::i;14598:127::-;14659:10;14654:3;14650:20;14647:1;14640:31;14690:4;14687:1;14680:15;14714:4;14711:1;14704:15;15077:197;15115:3;15143:6;15184:2;15177:5;15173:14;15211:2;15202:7;15199:15;15196:41;;15217:18;;:::i;:::-;15266:1;15253:15;;15077:197;-1:-1:-1;;;15077:197:1:o;15279:125::-;15344:9;;;15365:10;;;15362:36;;;15378:18;;:::i;16107:168::-;16174:6;16200:10;;;16212;;;16196:27;;16235:11;;;16232:37;;;16249:18;;:::i;:::-;16232:37;16107:168;;;;:::o;20733:245::-;20812:6;20820;20873:2;20861:9;20852:7;20848:23;20844:32;20841:52;;;20889:1;20886;20879:12;20841:52;-1:-1:-1;;20912:16:1;;20968:2;20953:18;;;20947:25;20912:16;;20947:25;;-1:-1:-1;20733:245:1:o;21339:184::-;21409:6;21462:2;21450:9;21441:7;21437:23;21433:32;21430:52;;;21478:1;21475;21468:12;21430:52;-1:-1:-1;21501:16:1;;21339:184;-1:-1:-1;21339:184:1:o;21830:245::-;21897:6;21950:2;21938:9;21929:7;21925:23;21921:32;21918:52;;;21966:1;21963;21956:12;21918:52;21998:9;21992:16;22017:28;22039:5;22017:28;:::i;22439:251::-;22509:6;22562:2;22550:9;22541:7;22537:23;22533:32;22530:52;;;22578:1;22575;22568:12;22530:52;22610:9;22604:16;22629:31;22654:5;22629:31;:::i;28157:1026::-;28419:4;28467:3;28456:9;28452:19;28498:6;28487:9;28480:25;28524:2;28562:6;28557:2;28546:9;28542:18;28535:34;28605:3;28600:2;28589:9;28585:18;28578:31;28629:6;28664;28658:13;28695:6;28687;28680:22;28733:3;28722:9;28718:19;28711:26;;28772:2;28764:6;28760:15;28746:29;;28793:1;28803:218;28817:6;28814:1;28811:13;28803:218;;;28882:13;;-1:-1:-1;;;;;28878:62:1;28866:75;;28996:15;;;;28961:12;;;;28839:1;28832:9;28803:218;;;-1:-1:-1;;;;;;;29077:55:1;;;;29072:2;29057:18;;29050:83;-1:-1:-1;;;29164:3:1;29149:19;29142:35;29038:3;28157:1026;-1:-1:-1;;;28157:1026:1:o;29823:306::-;29911:6;29919;29927;29980:2;29968:9;29959:7;29955:23;29951:32;29948:52;;;29996:1;29993;29986:12;29948:52;30025:9;30019:16;30009:26;;30075:2;30064:9;30060:18;30054:25;30044:35;;30119:2;30108:9;30104:18;30098:25;30088:35;;29823:306;;;;;:::o;30387:171::-;30455:6;30494:10;;;30482;;;30478:27;;30517:12;;;30514:38;;;30532:18;;:::i

Swarm Source

ipfs://0b7018a5871d3e957a35c40790a73698798d579dc6e61e19e0cc399cdee0c45e

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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