ETH Price: $2,679.58 (-2.11%)

Contract

0x90d0d151D2eF39F059EF871C25389127A0738746
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve161915882022-12-15 17:28:47620 days ago1671125327IN
0x90d0d151...7A0738746
0 ETH0.0005377522.15979605
Multi Transfer147307162022-05-07 16:02:08842 days ago1651939328IN
0x90d0d151...7A0738746
0 ETH0.0020647736.66480079
Trading Status147307032022-05-07 15:59:30842 days ago1651939170IN
0x90d0d151...7A0738746
0 ETH0.0010778637.40519239
Approve144626992022-03-26 15:41:42884 days ago1648309302IN
0x90d0d151...7A0738746
0 ETH0.0021128245.38737269
Set Max Tx Perce...144386452022-03-22 21:49:56888 days ago1647985796IN
0x90d0d151...7A0738746
0 ETH0.0014379946.48889303
Set Max Wallet P...144386432022-03-22 21:49:27888 days ago1647985767IN
0x90d0d151...7A0738746
0 ETH0.001393145.00126946
Approve144166022022-03-19 11:32:52891 days ago1647689572IN
0x90d0d151...7A0738746
0 ETH0.0012044125.8731092
Set Multipliers144026052022-03-17 7:16:52894 days ago1647501412IN
0x90d0d151...7A0738746
0 ETH0.0006379919.02829412
Set Multipliers144026022022-03-17 7:16:30894 days ago1647501390IN
0x90d0d151...7A0738746
0 ETH0.0008288821.18348237
Clear Stuck Bala...144025992022-03-17 7:15:58894 days ago1647501358IN
0x90d0d151...7A0738746
0 ETH0.0007841725.47603331
Approve143912922022-03-15 12:55:10895 days ago1647348910IN
0x90d0d151...7A0738746
0 ETH0.0006436813.82747815
Set Swap Back Se...143890382022-03-15 4:33:21896 days ago1647318801IN
0x90d0d151...7A0738746
0 ETH0.0008001425.58077733
Approve143882332022-03-15 1:21:43896 days ago1647307303IN
0x90d0d151...7A0738746
0 ETH0.0015361833
Approve143882092022-03-15 1:15:46896 days ago1647306946IN
0x90d0d151...7A0738746
0 ETH0.0013532929.07121766
Approve143877642022-03-14 23:38:02896 days ago1647301082IN
0x90d0d151...7A0738746
0 ETH0.0016187334.77327316
Approve143875742022-03-14 22:59:03896 days ago1647298743IN
0x90d0d151...7A0738746
0 ETH0.0016938736.3874452
Approve143866432022-03-14 19:33:55896 days ago1647286435IN
0x90d0d151...7A0738746
0 ETH0.0026357856.62148856
Approve143863642022-03-14 18:30:43896 days ago1647282643IN
0x90d0d151...7A0738746
0 ETH0.0022102547.48034764
Approve143863532022-03-14 18:28:00896 days ago1647282480IN
0x90d0d151...7A0738746
0 ETH0.0013631229.28232445
Approve143863342022-03-14 18:24:24896 days ago1647282264IN
0x90d0d151...7A0738746
0 ETH0.0018132738.95234984
Approve143862482022-03-14 18:07:20896 days ago1647281240IN
0x90d0d151...7A0738746
0 ETH0.0015980534.32904244
Approve143862222022-03-14 18:02:09896 days ago1647280929IN
0x90d0d151...7A0738746
0 ETH0.0023556950.60465568
Approve143862082022-03-14 17:59:23896 days ago1647280763IN
0x90d0d151...7A0738746
0 ETH0.002713958.29968454
Approve143861902022-03-14 17:51:50896 days ago1647280310IN
0x90d0d151...7A0738746
0 ETH0.0020420243.86636324
Approve143861832022-03-14 17:49:45896 days ago1647280185IN
0x90d0d151...7A0738746
0 ETH0.0021713146.64369695
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
144025992022-03-17 7:15:58894 days ago1647501358
0x90d0d151...7A0738746
0.67607967 ETH
143876042022-03-14 23:05:32896 days ago1647299132
0x90d0d151...7A0738746
0.00954471 ETH
143876042022-03-14 23:05:32896 days ago1647299132
0x90d0d151...7A0738746
0.04772359 ETH
143876042022-03-14 23:05:32896 days ago1647299132
0x90d0d151...7A0738746
0.09544719 ETH
143875832022-03-14 23:01:02896 days ago1647298862
0x90d0d151...7A0738746
0.01121165 ETH
143875832022-03-14 23:01:02896 days ago1647298862
0x90d0d151...7A0738746
0.05605825 ETH
143875832022-03-14 23:01:02896 days ago1647298862
0x90d0d151...7A0738746
0.11211651 ETH
143875102022-03-14 22:45:40896 days ago1647297940
0x90d0d151...7A0738746
0.01305651 ETH
143875102022-03-14 22:45:40896 days ago1647297940
0x90d0d151...7A0738746
0.06528259 ETH
143875102022-03-14 22:45:40896 days ago1647297940
0x90d0d151...7A0738746
0.13056518 ETH
143864022022-03-14 18:39:23896 days ago1647283163
0x90d0d151...7A0738746
0.01426469 ETH
143864022022-03-14 18:39:23896 days ago1647283163
0x90d0d151...7A0738746
0.07132346 ETH
143864022022-03-14 18:39:23896 days ago1647283163
0x90d0d151...7A0738746
0.14264693 ETH
143862692022-03-14 18:11:02896 days ago1647281462
0x90d0d151...7A0738746
0.01711844 ETH
143862692022-03-14 18:11:02896 days ago1647281462
0x90d0d151...7A0738746
0.08559223 ETH
143862692022-03-14 18:11:02896 days ago1647281462
0x90d0d151...7A0738746
0.17118447 ETH
143861852022-03-14 17:50:51896 days ago1647280251
0x90d0d151...7A0738746
0.01740832 ETH
143861852022-03-14 17:50:51896 days ago1647280251
0x90d0d151...7A0738746
0.08704163 ETH
143861852022-03-14 17:50:51896 days ago1647280251
0x90d0d151...7A0738746
0.17408327 ETH
143861782022-03-14 17:47:38896 days ago1647280058
0x90d0d151...7A0738746
0.01948756 ETH
143861782022-03-14 17:47:38896 days ago1647280058
0x90d0d151...7A0738746
0.09743783 ETH
143861782022-03-14 17:47:38896 days ago1647280058
0x90d0d151...7A0738746
0.19487567 ETH
143861742022-03-14 17:46:02896 days ago1647279962
0x90d0d151...7A0738746
0.01989374 ETH
143861742022-03-14 17:46:02896 days ago1647279962
0x90d0d151...7A0738746
0.09946874 ETH
143861742022-03-14 17:46:02896 days ago1647279962
0x90d0d151...7A0738746
0.19893749 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SHIBIONICSINU

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-14
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.9;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    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);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface InterfaceLP {
    function sync() external;
}

contract SHIBIONICSINU is ERC20, Auth {
    using SafeMath for uint256;

    address WETH;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Shibionics Inu";
    string constant _symbol = "SHBNCS";
    uint8 constant _decimals = 2;

    uint256 _totalSupply = 100 * 10**6 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 100;
    uint256 public _maxWalletToken = _totalSupply / 50;

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

    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isWalletLimitExempt;

    uint256 public liquidityFee    = 4;
    uint256 public marketingFee    = 5;
    uint256 public devFee          = 1;
    uint256 public teamFee         = 0;
    uint256 public totalFee        = teamFee + marketingFee + liquidityFee + devFee;
    uint256 public feeDenominator  = 100;

    uint256 public sellMultiplier = 200;
    uint256 public buyMultiplier = 100;
    uint256 public transferMultiplier = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReceiver;
    address public teamFeeReceiver;

    uint256 targetLiquidity = 10;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    InterfaceLP public pairContract;

    bool public tradingOpen = false;
    bool public antibot = true;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 2 / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x8dEaD10b7Bf2CaDCDEF5D2E2aCA7743A178a373f;
        devFeeReceiver = 0x277BdadF7A82Ab1a9C5Cac664abfdF748aFF3486;
        teamFeeReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    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 balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base10000(uint256 maxWallPercent_base10000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
    }
    function setMaxTxPercent_base10000(uint256 maxTXPercentage_base10000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base10000 ) / 10000;
    }

    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
            if(antibot && sender == pair && recipient != pair){
                isBlacklisted[recipient] = true;
            }
        }

        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender],"Blacklisted");    
        }


        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"max wallet limit reached");
        }


        // Checks max transaction limit
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount, recipient);

        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;
        if(recipient == pair){
            multiplier = sellMultiplier;
        } else if(sender == pair){
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);

        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool) {
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external authorized {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    function tradingStatus_antibot(bool _status) public onlyOwner {
         antibot = _status;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        // life sucks
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }


    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsWalletLimitExempt(address holder, bool exempt) external authorized {
        isWalletLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _devFee,  uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        totalFee = _liquidityFee + _teamFee + _marketingFee + _devFee;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/2, "Fees cannot be more than 50%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _teamFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }



/* Airdrop Begins */
function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 SCCC = 0;

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
    }
}

function burn_and_moon(uint256 percent_base10000) public onlyOwner returns (bool){
        require(percent_base10000 <= 1000, "May not nuke more than 10% of tokens in LP");
    
        uint256 lp_tokens = this.balanceOf(pair);
        uint256 lp_burn = lp_tokens.mul(percent_base10000).div(10000);
        
        if (lp_burn > 0){
            _basicTransfer(pair,DEAD,lp_burn);
            pairContract.sync();
            return true;
        }
        
        return false;
    }


event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"antibot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent_base10000","type":"uint256"}],"name":"burn_and_moon","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base10000","type":"uint256"}],"name":"setMaxTxPercent_base10000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base10000","type":"uint256"}],"name":"setMaxWalletPercent_base10000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus_antibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811661dead17909155600480549091169055620000326002600a62000583565b62000042906305f5e1006200059b565b6005556064600554620000569190620005bd565b60065560326005546200006a9190620005bd565b600755600a805460ff191660019081179091556004600f81905560056010819055601183905560006012819055620000a39190620005e0565b620000af9190620005e0565b620000bb9190620005e0565b6013556064601481905560c860155560168190556017819055600a601c55601d556020805462ffffff60a01b191661010160a81b17905560055461271090620001069060026200059b565b620001129190620005bd565b6021553480156200012257600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155601e8054737a250d5630b4cf539739df2c5dacb4c659f2488d93168317905582516315ab88c960e31b81529251919263ad5c46489260048083019392829003018186803b158015620001a457600080fd5b505afa158015620001b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001df9190620005fb565b600280546001600160a01b0319166001600160a01b03928316179055601e546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b1580156200023957600080fd5b505afa1580156200024e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002749190620005fb565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b158015620002c157600080fd5b505af1158015620002d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fc9190620005fb565b601f80546001600160a01b039283166001600160a01b031991821681179092556020805482169092178255306000818152600984526040808220601e54871683528552808220600019905533808352600c8652818320805460ff199081166001908117909255600d88528385208054821683179055600380548a16865284862080548316841790556004548a1686528486208054831684179055838652600e89528486208054831684179055958552838520805482168317905594549097168352818320805490941690961790925560188054841686179055601980548416738dead10b7bf2cadcdef5d2e2aca7743a178a373f179055601a8054841673277bdadf7a82ab1a9c5cac664abfdf748aff3486179055601b8054909316851790925560055484835260089093528082208390555190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200046091815260200190565b60405180910390a362000626565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004c5578160001904821115620004a957620004a96200046e565b80851615620004b757918102915b93841c939080029062000489565b509250929050565b600082620004de575060016200057d565b81620004ed575060006200057d565b8160018114620005065760028114620005115762000531565b60019150506200057d565b60ff8411156200052557620005256200046e565b50506001821b6200057d565b5060208310610133831016604e8410600b841016171562000556575081810a6200057d565b62000562838362000484565b80600019048211156200057957620005796200046e565b0290505b92915050565b60006200059460ff841683620004cd565b9392505050565b6000816000190483118215151615620005b857620005b86200046e565b500290565b600082620005db57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620005f657620005f66200046e565b500190565b6000602082840312156200060e57600080fd5b81516001600160a01b03811681146200059457600080fd5b612e6680620006366000396000f3fe6080604052600436106103d05760003560e01c80636b67c4df116101fd578063bf9c5f1311610118578063f0b37c04116100ab578063f887ea401161007a578063f887ea4014610b85578063fe575a8714610ba5578063fe9fbb8014610bd5578063fed0d2a114610bf5578063ffb54a9914610c0b57600080fd5b8063f0b37c0414610b05578063f12418a814610b25578063f2fde38b14610b45578063f84ba65d14610b6557600080fd5b8063dab84ee7116100e7578063dab84ee714610a5f578063dd62ed3e14610a7f578063df20fd4914610ac5578063e96fada214610ae557600080fd5b8063bf9c5f13146109e9578063ca33e64c14610a09578063d51ed1c814610a29578063d7c94efd14610a4957600080fd5b8063896648c11161019057806398118cb41161015f57806398118cb414610973578063a8aa1b3114610989578063a9059cbb146109a9578063b6a5d7de146109c957600080fd5b8063896648c1146108ea5780638e2eee841461090457806395d89b4114610924578063976b7e121461095357600080fd5b806377b54bad116101cc57806377b54bad1461088057806378109e54146108a05780637d1db4a5146108b6578063893d20e8146108cc57600080fd5b80636b67c4df146107f35780636ce46bc3146108095780636ddd17131461082957806370a082311461084a57600080fd5b806323b872dd116102ed5780634be9d869116102805780635c85974f1161024f5780635c85974f1461077d5780635e562f3b1461079d578063658d4b7f146107bd5780636827e764146107dd57600080fd5b80634be9d869146107075780634d709adf14610727578063571ac8b0146107475780635921652f1461076757600080fd5b80633121c7c0116102bc5780633121c7c01461067d578063313ce567146106935780633c8e556d146106af57806340291143146106cf57600080fd5b806323b872dd146105f85780632b112e49146106185780632f54bf6e1461062d578063305c4c801461065c57600080fd5b80631161ae39116103655780631da1db5e116103345780631da1db5e146105825780631df4ccfc146105a2578063201e7991146105b85780632198cf6c146105d857600080fd5b80631161ae3914610517578063180b0d7e1461053757806318160ddd1461054d5780631ca0a28d1461056257600080fd5b806304a66b48116103a157806304a66b481461046757806306fdde0314610487578063095ea7b3146104c75780630d295980146104f757600080fd5b8062108683146103dc578062bff446146103fe578063012aa9121461041e5780630445b6671461043e57600080fd5b366103d757005b600080fd5b3480156103e857600080fd5b506103fc6103f73660046128ac565b610c2c565b005b34801561040a57600080fd5b506103fc6104193660046128ac565b610cf0565b34801561042a57600080fd5b506103fc610439366004612903565b610da5565b34801561044a57600080fd5b5061045460215481565b6040519081526020015b60405180910390f35b34801561047357600080fd5b506103fc61048236600461291c565b610df0565b34801561049357600080fd5b5060408051808201909152600e81526d53686962696f6e69637320496e7560901b60208201525b60405161045e9190612957565b3480156104d357600080fd5b506104e76104e23660046129c1565b610eb3565b604051901515815260200161045e565b34801561050357600080fd5b506103fc6105123660046129ed565b610f20565b34801561052357600080fd5b506104e7610532366004612a0a565b610f68565b34801561054357600080fd5b5061045460145481565b34801561055957600080fd5b50600554610454565b34801561056e57600080fd5b506103fc61057d366004612a2c565b610f7c565b34801561058e57600080fd5b506103fc61059d366004612903565b611190565b3480156105ae57600080fd5b5061045460135481565b3480156105c457600080fd5b506103fc6105d3366004612a0a565b6111fd565b3480156105e457600080fd5b506103fc6105f3366004612aaf565b61122d565b34801561060457600080fd5b506104e7610613366004612ae8565b61127d565b34801561062457600080fd5b5061045461133f565b34801561063957600080fd5b506104e7610648366004612b29565b6000546001600160a01b0391821691161490565b34801561066857600080fd5b506020546104e790600160a81b900460ff1681565b34801561068957600080fd5b5061045460165481565b34801561069f57600080fd5b506040516002815260200161045e565b3480156106bb57600080fd5b506103fc6106ca366004612b46565b611391565b3480156106db57600080fd5b50601b546106ef906001600160a01b031681565b6040516001600160a01b03909116815260200161045e565b34801561071357600080fd5b506103fc6107223660046128ac565b611406565b34801561073357600080fd5b506020546106ef906001600160a01b031681565b34801561075357600080fd5b506104e7610762366004612b29565b6114bb565b34801561077357600080fd5b5061045460175481565b34801561078957600080fd5b506103fc610798366004612903565b6114c9565b3480156107a957600080fd5b506103fc6107b83660046129ed565b6114f3565b3480156107c957600080fd5b506103fc6107d8366004612aaf565b611530565b3480156107e957600080fd5b5061045460115481565b3480156107ff57600080fd5b5061045460105481565b34801561081557600080fd5b506103fc610824366004612ba2565b611580565b34801561083557600080fd5b506020546104e790600160b01b900460ff1681565b34801561085657600080fd5b50610454610865366004612b29565b6001600160a01b031660009081526008602052604090205490565b34801561088c57600080fd5b506104e761089b3660046129c1565b6115b6565b3480156108ac57600080fd5b5061045460075481565b3480156108c257600080fd5b5061045460065481565b3480156108d857600080fd5b506000546001600160a01b03166106ef565b3480156108f657600080fd5b50600a546104e79060ff1681565b34801561091057600080fd5b506103fc61091f3660046128ac565b6116e0565b34801561093057600080fd5b506040805180820190915260068152655348424e435360d01b60208201526104ba565b34801561095f57600080fd5b506104e761096e366004612903565b611779565b34801561097f57600080fd5b50610454600f5481565b34801561099557600080fd5b50601f546106ef906001600160a01b031681565b3480156109b557600080fd5b506104e76109c43660046129c1565b611943565b3480156109d557600080fd5b506103fc6109e4366004612b29565b611950565b3480156109f557600080fd5b506103fc610a043660046129ed565b6119a1565b348015610a1557600080fd5b506018546106ef906001600160a01b031681565b348015610a3557600080fd5b50610454610a44366004612903565b6119e9565b348015610a5557600080fd5b5061045460125481565b348015610a6b57600080fd5b50601a546106ef906001600160a01b031681565b348015610a8b57600080fd5b50610454610a9a366004612bce565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610ad157600080fd5b506103fc610ae0366004612bfc565b611a2a565b348015610af157600080fd5b506019546106ef906001600160a01b031681565b348015610b1157600080fd5b506103fc610b20366004612b29565b611a71565b348015610b3157600080fd5b506103fc610b40366004612903565b611abc565b348015610b5157600080fd5b506103fc610b60366004612b29565b611b07565b348015610b7157600080fd5b506103fc610b80366004612aaf565b611b9d565b348015610b9157600080fd5b50601e546106ef906001600160a01b031681565b348015610bb157600080fd5b506104e7610bc0366004612b29565b600b6020526000908152604090205460ff1681565b348015610be157600080fd5b506104e7610bf0366004612b29565b611bed565b348015610c0157600080fd5b5061045460155481565b348015610c1757600080fd5b506020546104e790600160a01b900460ff1681565b610c3533611bed565b610c5a5760405162461bcd60e51b8152600401610c5190612c1a565b60405180910390fd5b6101f58210610c7b5760405162461bcd60e51b8152600401610c5190612c3f565b60005b82811015610cea5781600e6000868685818110610c9d57610c9d612c84565b9050602002016020810190610cb29190612b29565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610ce381612cb0565b9050610c7e565b50505050565b610cf933611bed565b610d155760405162461bcd60e51b8152600401610c5190612c1a565b6101f58210610d365760405162461bcd60e51b8152600401610c5190612c3f565b60005b82811015610cea5781600c6000868685818110610d5857610d58612c84565b9050602002016020810190610d6d9190612b29565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d9e81612cb0565b9050610d39565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b8152600401610c5190612ccb565b61271081600554610de09190612ceb565b610dea9190612d0a565b60075550565b610df933611bed565b610e155760405162461bcd60e51b8152600401610c5190612c1a565b600f8590556012849055601083905560118290558183610e358688612d2c565b610e3f9190612d2c565b610e499190612d2c565b6013556014819055610e5c600282612d0a565b60135410610eac5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20353025000000006044820152606401610c51565b5050505050565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f0e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610f4a5760405162461bcd60e51b8152600401610c5190612ccb565b60208054911515600160a01b0260ff60a01b19909216919091179055565b600082610f74836119e9565b119392505050565b6000546001600160a01b03163314610fa65760405162461bcd60e51b8152600401610c5190612ccb565b6101f5831061100d5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610c51565b82811461106d5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610c51565b6000805b848110156110b15783838281811061108b5761108b612c84565b905060200201358261109d9190612d2c565b9150806110a981612cb0565b915050611071565b50806110d2876001600160a01b031660009081526008602052604090205490565b10156111205760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610c51565b60005b84811015611187576111748787878481811061114157611141612c84565b90506020020160208101906111569190612b29565b86868581811061116857611168612c84565b90506020020135611c0b565b508061117f81612cb0565b915050611123565b50505050505050565b61119933611bed565b6111b55760405162461bcd60e51b8152600401610c5190612c1a565b47336108fc60646111c68585612ceb565b6111d09190612d0a565b6040518115909202916000818181858888f193505050501580156111f8573d6000803e3d6000fd5b505050565b61120633611bed565b6112225760405162461bcd60e51b8152600401610c5190612c1a565b601c91909155601d55565b61123633611bed565b6112525760405162461bcd60e51b8152600401610c5190612c1a565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461132a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054611305918490611cf1565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b611335848484611d2b565b90505b9392505050565b6004546001600160a01b031660009081526008602052604081205461138c906003546001600160a01b0316600090815260086020526040902054611386906005549061210e565b9061210e565b905090565b61139a33611bed565b6113b65760405162461bcd60e51b8152600401610c5190612c1a565b601880546001600160a01b039586166001600160a01b0319918216179091556019805494861694821694909417909355601a805492851692841692909217909155601b8054919093169116179055565b61140f33611bed565b61142b5760405162461bcd60e51b8152600401610c5190612c1a565b6101f5821061144c5760405162461bcd60e51b8152600401610c5190612c3f565b60005b82811015610cea5781600d600086868581811061146e5761146e612c84565b90506020020160208101906114839190612b29565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114b481612cb0565b905061144f565b6000610f1a82600019610eb3565b6114d233611bed565b6114ee5760405162461bcd60e51b8152600401610c5190612c1a565b600655565b6000546001600160a01b0316331461151d5760405162461bcd60e51b8152600401610c5190612ccb565b600a805460ff1916911515919091179055565b61153933611bed565b6115555760405162461bcd60e51b8152600401610c5190612c1a565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b61158933611bed565b6115a55760405162461bcd60e51b8152600401610c5190612c1a565b601591909155601691909155601755565b600080546001600160a01b031633146115e15760405162461bcd60e51b8152600401610c5190612ccb565b81611660576040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b15801561162557600080fd5b505afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d9190612d44565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b1580156116a857600080fd5b505af11580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113389190612d5d565b6000546001600160a01b0316331461170a5760405162461bcd60e51b8152600401610c5190612ccb565b60005b82811015610cea5781600b600086868581811061172c5761172c612c84565b90506020020160208101906117419190612b29565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561177281612cb0565b905061170d565b600080546001600160a01b031633146117a45760405162461bcd60e51b8152600401610c5190612ccb565b6103e88211156118095760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610c51565b601f546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b15801561184f57600080fd5b505afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118879190612d44565b905060006118a161271061189b8487612150565b906121cf565b9050801561193957601f546003546118c6916001600160a01b03908116911683611c0b565b50602060009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561191757600080fd5b505af115801561192b573d6000803e3d6000fd5b506001979650505050505050565b5060009392505050565b6000611338338484611d2b565b6000546001600160a01b0316331461197a5760405162461bcd60e51b8152600401610c5190612ccb565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146119cb5760405162461bcd60e51b8152600401610c5190612ccb565b60208054911515600160a81b0260ff60a81b19909216919091179055565b6000610f1a6119f661133f565b601f546001600160a01b031660009081526008602052604090205461189b90611a23906002905b90612150565b8590612150565b611a3333611bed565b611a4f5760405162461bcd60e51b8152600401610c5190612c1a565b60208054921515600160b01b0260ff60b01b1990931692909217909155602155565b6000546001600160a01b03163314611a9b5760405162461bcd60e51b8152600401610c5190612ccb565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611ae65760405162461bcd60e51b8152600401610c5190612ccb565b61271081600554611af79190612ceb565b611b019190612d0a565b60065550565b6000546001600160a01b03163314611b315760405162461bcd60e51b8152600401610c5190612ccb565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b611ba633611bed565b611bc25760405162461bcd60e51b8152600401610c5190612c1a565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611c5c918490611cf1565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611c8b9083612211565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cdf9086815260200190565b60405180910390a35060019392505050565b60008184841115611d155760405162461bcd60e51b8152600401610c519190612957565b506000611d228486612d7a565b95945050505050565b60225460009060ff1615611d4b57611d44848484611c0b565b9050611338565b6001600160a01b03841660009081526001602052604090205460ff16158015611d8d57506001600160a01b03831660009081526001602052604090205460ff16155b15611e4b57602054600160a01b900460ff16611de25760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610c51565b602054600160a81b900460ff168015611e085750601f546001600160a01b038581169116145b8015611e225750601f546001600160a01b03848116911614155b15611e4b576001600160a01b0383166000908152600b60205260409020805460ff191660011790555b600a5460ff1615611ead576001600160a01b0384166000908152600b602052604090205460ff1615611ead5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610c51565b6001600160a01b03841660009081526001602052604090205460ff16158015611eef57506001600160a01b0384166000908152600e602052604090205460ff16155b8015611f1457506001600160a01b0383166000908152600e602052604090205460ff16155b8015611f2e5750601f546001600160a01b03848116911614155b15611fa9576001600160a01b038316600090815260086020526040902054600754611f598483612d2c565b1115611fa75760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610c51565b505b611fb38483612270565b611fbb6122dd565b15611fc857611fc8612333565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461201a918490611cf1565b6001600160a01b038516600090815260086020908152604080832093909355600c90529081205460ff1615158061206b57506001600160a01b0384166000908152600c602052604090205460ff1615155b61207f5761207a858486612729565b612081565b825b6001600160a01b0385166000908152600860205260409020549091506120a79082612211565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120fb9085815260200190565b60405180910390a3506001949350505050565b600061133883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cf1565b60008261215f57506000610f1a565b600061216b8385612ceb565b9050826121788583612d0a565b146113385760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c51565b600061133883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612821565b60008061221e8385612d2c565b9050838110156113385760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c51565b6006548111158061229957506001600160a01b0382166000908152600d602052604090205460ff165b6122d95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610c51565b5050565b601f546000906001600160a01b031633148015906122fe575060225460ff16155b80156123135750602054600160b01b900460ff165b801561138c57505060215430600090815260086020526040902054101590565b6022805460ff19166001179055601c54601d5460009161235291610f68565b61235e57600f54612361565b60005b90506000612385600261189b60135461189b8660215461215090919063ffffffff16565b9050600061239e8260215461210e90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106123d8576123d8612c84565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061240957612409612c84565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b81524792919091169063791ac94790612453908690600090879030904290600401612d91565b600060405180830381600087803b15801561246d57600080fd5b505af1158015612481573d6000803e3d6000fd5b50505050600061249a824761210e90919063ffffffff16565b905060006124b56124ac8860026121cf565b6013549061210e565b905060006124ca600261189b8481878d612150565b905060006124e78361189b6010548761215090919063ffffffff16565b905060006125048461189b6012548861215090919063ffffffff16565b905060006125218561189b6011548961215090919063ffffffff16565b6019546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114612573576040519150601f19603f3d011682016040523d82523d6000602084013e612578565b606091505b5050601a546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146125c8576040519150601f19603f3d011682016040523d82523d6000602084013e6125cd565b606091505b5050601b546040519192506001600160a01b0316908490600081818185875af1925050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5060009250508b15905061271157601e5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b15801561269b57600080fd5b505af11580156126af573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126d49190612e02565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506022805460ff1916905550505050505050505050565b601754601f54600091906001600160a01b038481169116141561274f575060155461276a565b601f546001600160a01b038681169116141561276a57506016545b6000612797601454606461277e9190612ceb565b61189b84611a1d6013548a61215090919063ffffffff16565b306000908152600860205260409020549091506127b49082612211565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128059085815260200190565b60405180910390a3612817858261210e565b9695505050505050565b600081836128425760405162461bcd60e51b8152600401610c519190612957565b506000611d228486612d0a565b60008083601f84011261286157600080fd5b50813567ffffffffffffffff81111561287957600080fd5b6020830191508360208260051b850101111561289457600080fd5b9250929050565b80151581146128a957600080fd5b50565b6000806000604084860312156128c157600080fd5b833567ffffffffffffffff8111156128d857600080fd5b6128e48682870161284f565b90945092505060208401356128f88161289b565b809150509250925092565b60006020828403121561291557600080fd5b5035919050565b600080600080600060a0868803121561293457600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561298457858101830151858201604001528201612968565b81811115612996576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146128a957600080fd5b600080604083850312156129d457600080fd5b82356129df816129ac565b946020939093013593505050565b6000602082840312156129ff57600080fd5b81356113388161289b565b60008060408385031215612a1d57600080fd5b50508035926020909101359150565b600080600080600060608688031215612a4457600080fd5b8535612a4f816129ac565b9450602086013567ffffffffffffffff80821115612a6c57600080fd5b612a7889838a0161284f565b90965094506040880135915080821115612a9157600080fd5b50612a9e8882890161284f565b969995985093965092949392505050565b60008060408385031215612ac257600080fd5b8235612acd816129ac565b91506020830135612add8161289b565b809150509250929050565b600080600060608486031215612afd57600080fd5b8335612b08816129ac565b92506020840135612b18816129ac565b929592945050506040919091013590565b600060208284031215612b3b57600080fd5b8135611338816129ac565b60008060008060808587031215612b5c57600080fd5b8435612b67816129ac565b93506020850135612b77816129ac565b92506040850135612b87816129ac565b91506060850135612b97816129ac565b939692955090935050565b600080600060608486031215612bb757600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612be157600080fd5b8235612bec816129ac565b91506020830135612add816129ac565b60008060408385031215612c0f57600080fd5b82356129df8161289b565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612cc457612cc4612c9a565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000816000190483118215151615612d0557612d05612c9a565b500290565b600082612d2757634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612d3f57612d3f612c9a565b500190565b600060208284031215612d5657600080fd5b5051919050565b600060208284031215612d6f57600080fd5b81516113388161289b565b600082821015612d8c57612d8c612c9a565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612de15784516001600160a01b031683529383019391830191600101612dbc565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612e1757600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207d6a808c894214bd3b60fdc4f33ac41b86798a73a94577a8aaed6a0143a4da9e64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106103d05760003560e01c80636b67c4df116101fd578063bf9c5f1311610118578063f0b37c04116100ab578063f887ea401161007a578063f887ea4014610b85578063fe575a8714610ba5578063fe9fbb8014610bd5578063fed0d2a114610bf5578063ffb54a9914610c0b57600080fd5b8063f0b37c0414610b05578063f12418a814610b25578063f2fde38b14610b45578063f84ba65d14610b6557600080fd5b8063dab84ee7116100e7578063dab84ee714610a5f578063dd62ed3e14610a7f578063df20fd4914610ac5578063e96fada214610ae557600080fd5b8063bf9c5f13146109e9578063ca33e64c14610a09578063d51ed1c814610a29578063d7c94efd14610a4957600080fd5b8063896648c11161019057806398118cb41161015f57806398118cb414610973578063a8aa1b3114610989578063a9059cbb146109a9578063b6a5d7de146109c957600080fd5b8063896648c1146108ea5780638e2eee841461090457806395d89b4114610924578063976b7e121461095357600080fd5b806377b54bad116101cc57806377b54bad1461088057806378109e54146108a05780637d1db4a5146108b6578063893d20e8146108cc57600080fd5b80636b67c4df146107f35780636ce46bc3146108095780636ddd17131461082957806370a082311461084a57600080fd5b806323b872dd116102ed5780634be9d869116102805780635c85974f1161024f5780635c85974f1461077d5780635e562f3b1461079d578063658d4b7f146107bd5780636827e764146107dd57600080fd5b80634be9d869146107075780634d709adf14610727578063571ac8b0146107475780635921652f1461076757600080fd5b80633121c7c0116102bc5780633121c7c01461067d578063313ce567146106935780633c8e556d146106af57806340291143146106cf57600080fd5b806323b872dd146105f85780632b112e49146106185780632f54bf6e1461062d578063305c4c801461065c57600080fd5b80631161ae39116103655780631da1db5e116103345780631da1db5e146105825780631df4ccfc146105a2578063201e7991146105b85780632198cf6c146105d857600080fd5b80631161ae3914610517578063180b0d7e1461053757806318160ddd1461054d5780631ca0a28d1461056257600080fd5b806304a66b48116103a157806304a66b481461046757806306fdde0314610487578063095ea7b3146104c75780630d295980146104f757600080fd5b8062108683146103dc578062bff446146103fe578063012aa9121461041e5780630445b6671461043e57600080fd5b366103d757005b600080fd5b3480156103e857600080fd5b506103fc6103f73660046128ac565b610c2c565b005b34801561040a57600080fd5b506103fc6104193660046128ac565b610cf0565b34801561042a57600080fd5b506103fc610439366004612903565b610da5565b34801561044a57600080fd5b5061045460215481565b6040519081526020015b60405180910390f35b34801561047357600080fd5b506103fc61048236600461291c565b610df0565b34801561049357600080fd5b5060408051808201909152600e81526d53686962696f6e69637320496e7560901b60208201525b60405161045e9190612957565b3480156104d357600080fd5b506104e76104e23660046129c1565b610eb3565b604051901515815260200161045e565b34801561050357600080fd5b506103fc6105123660046129ed565b610f20565b34801561052357600080fd5b506104e7610532366004612a0a565b610f68565b34801561054357600080fd5b5061045460145481565b34801561055957600080fd5b50600554610454565b34801561056e57600080fd5b506103fc61057d366004612a2c565b610f7c565b34801561058e57600080fd5b506103fc61059d366004612903565b611190565b3480156105ae57600080fd5b5061045460135481565b3480156105c457600080fd5b506103fc6105d3366004612a0a565b6111fd565b3480156105e457600080fd5b506103fc6105f3366004612aaf565b61122d565b34801561060457600080fd5b506104e7610613366004612ae8565b61127d565b34801561062457600080fd5b5061045461133f565b34801561063957600080fd5b506104e7610648366004612b29565b6000546001600160a01b0391821691161490565b34801561066857600080fd5b506020546104e790600160a81b900460ff1681565b34801561068957600080fd5b5061045460165481565b34801561069f57600080fd5b506040516002815260200161045e565b3480156106bb57600080fd5b506103fc6106ca366004612b46565b611391565b3480156106db57600080fd5b50601b546106ef906001600160a01b031681565b6040516001600160a01b03909116815260200161045e565b34801561071357600080fd5b506103fc6107223660046128ac565b611406565b34801561073357600080fd5b506020546106ef906001600160a01b031681565b34801561075357600080fd5b506104e7610762366004612b29565b6114bb565b34801561077357600080fd5b5061045460175481565b34801561078957600080fd5b506103fc610798366004612903565b6114c9565b3480156107a957600080fd5b506103fc6107b83660046129ed565b6114f3565b3480156107c957600080fd5b506103fc6107d8366004612aaf565b611530565b3480156107e957600080fd5b5061045460115481565b3480156107ff57600080fd5b5061045460105481565b34801561081557600080fd5b506103fc610824366004612ba2565b611580565b34801561083557600080fd5b506020546104e790600160b01b900460ff1681565b34801561085657600080fd5b50610454610865366004612b29565b6001600160a01b031660009081526008602052604090205490565b34801561088c57600080fd5b506104e761089b3660046129c1565b6115b6565b3480156108ac57600080fd5b5061045460075481565b3480156108c257600080fd5b5061045460065481565b3480156108d857600080fd5b506000546001600160a01b03166106ef565b3480156108f657600080fd5b50600a546104e79060ff1681565b34801561091057600080fd5b506103fc61091f3660046128ac565b6116e0565b34801561093057600080fd5b506040805180820190915260068152655348424e435360d01b60208201526104ba565b34801561095f57600080fd5b506104e761096e366004612903565b611779565b34801561097f57600080fd5b50610454600f5481565b34801561099557600080fd5b50601f546106ef906001600160a01b031681565b3480156109b557600080fd5b506104e76109c43660046129c1565b611943565b3480156109d557600080fd5b506103fc6109e4366004612b29565b611950565b3480156109f557600080fd5b506103fc610a043660046129ed565b6119a1565b348015610a1557600080fd5b506018546106ef906001600160a01b031681565b348015610a3557600080fd5b50610454610a44366004612903565b6119e9565b348015610a5557600080fd5b5061045460125481565b348015610a6b57600080fd5b50601a546106ef906001600160a01b031681565b348015610a8b57600080fd5b50610454610a9a366004612bce565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b348015610ad157600080fd5b506103fc610ae0366004612bfc565b611a2a565b348015610af157600080fd5b506019546106ef906001600160a01b031681565b348015610b1157600080fd5b506103fc610b20366004612b29565b611a71565b348015610b3157600080fd5b506103fc610b40366004612903565b611abc565b348015610b5157600080fd5b506103fc610b60366004612b29565b611b07565b348015610b7157600080fd5b506103fc610b80366004612aaf565b611b9d565b348015610b9157600080fd5b50601e546106ef906001600160a01b031681565b348015610bb157600080fd5b506104e7610bc0366004612b29565b600b6020526000908152604090205460ff1681565b348015610be157600080fd5b506104e7610bf0366004612b29565b611bed565b348015610c0157600080fd5b5061045460155481565b348015610c1757600080fd5b506020546104e790600160a01b900460ff1681565b610c3533611bed565b610c5a5760405162461bcd60e51b8152600401610c5190612c1a565b60405180910390fd5b6101f58210610c7b5760405162461bcd60e51b8152600401610c5190612c3f565b60005b82811015610cea5781600e6000868685818110610c9d57610c9d612c84565b9050602002016020810190610cb29190612b29565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610ce381612cb0565b9050610c7e565b50505050565b610cf933611bed565b610d155760405162461bcd60e51b8152600401610c5190612c1a565b6101f58210610d365760405162461bcd60e51b8152600401610c5190612c3f565b60005b82811015610cea5781600c6000868685818110610d5857610d58612c84565b9050602002016020810190610d6d9190612b29565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610d9e81612cb0565b9050610d39565b6000546001600160a01b03163314610dcf5760405162461bcd60e51b8152600401610c5190612ccb565b61271081600554610de09190612ceb565b610dea9190612d0a565b60075550565b610df933611bed565b610e155760405162461bcd60e51b8152600401610c5190612c1a565b600f8590556012849055601083905560118290558183610e358688612d2c565b610e3f9190612d2c565b610e499190612d2c565b6013556014819055610e5c600282612d0a565b60135410610eac5760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20353025000000006044820152606401610c51565b5050505050565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610f0e9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610f4a5760405162461bcd60e51b8152600401610c5190612ccb565b60208054911515600160a01b0260ff60a01b19909216919091179055565b600082610f74836119e9565b119392505050565b6000546001600160a01b03163314610fa65760405162461bcd60e51b8152600401610c5190612ccb565b6101f5831061100d5760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610c51565b82811461106d5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610c51565b6000805b848110156110b15783838281811061108b5761108b612c84565b905060200201358261109d9190612d2c565b9150806110a981612cb0565b915050611071565b50806110d2876001600160a01b031660009081526008602052604090205490565b10156111205760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610c51565b60005b84811015611187576111748787878481811061114157611141612c84565b90506020020160208101906111569190612b29565b86868581811061116857611168612c84565b90506020020135611c0b565b508061117f81612cb0565b915050611123565b50505050505050565b61119933611bed565b6111b55760405162461bcd60e51b8152600401610c5190612c1a565b47336108fc60646111c68585612ceb565b6111d09190612d0a565b6040518115909202916000818181858888f193505050501580156111f8573d6000803e3d6000fd5b505050565b61120633611bed565b6112225760405162461bcd60e51b8152600401610c5190612c1a565b601c91909155601d55565b61123633611bed565b6112525760405162461bcd60e51b8152600401610c5190612c1a565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b03831660009081526009602090815260408083203384529091528120546000191461132a576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054611305918490611cf1565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b611335848484611d2b565b90505b9392505050565b6004546001600160a01b031660009081526008602052604081205461138c906003546001600160a01b0316600090815260086020526040902054611386906005549061210e565b9061210e565b905090565b61139a33611bed565b6113b65760405162461bcd60e51b8152600401610c5190612c1a565b601880546001600160a01b039586166001600160a01b0319918216179091556019805494861694821694909417909355601a805492851692841692909217909155601b8054919093169116179055565b61140f33611bed565b61142b5760405162461bcd60e51b8152600401610c5190612c1a565b6101f5821061144c5760405162461bcd60e51b8152600401610c5190612c3f565b60005b82811015610cea5781600d600086868581811061146e5761146e612c84565b90506020020160208101906114839190612b29565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114b481612cb0565b905061144f565b6000610f1a82600019610eb3565b6114d233611bed565b6114ee5760405162461bcd60e51b8152600401610c5190612c1a565b600655565b6000546001600160a01b0316331461151d5760405162461bcd60e51b8152600401610c5190612ccb565b600a805460ff1916911515919091179055565b61153933611bed565b6115555760405162461bcd60e51b8152600401610c5190612c1a565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b61158933611bed565b6115a55760405162461bcd60e51b8152600401610c5190612c1a565b601591909155601691909155601755565b600080546001600160a01b031633146115e15760405162461bcd60e51b8152600401610c5190612ccb565b81611660576040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b15801561162557600080fd5b505afa158015611639573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165d9190612d44565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b1580156116a857600080fd5b505af11580156116bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113389190612d5d565b6000546001600160a01b0316331461170a5760405162461bcd60e51b8152600401610c5190612ccb565b60005b82811015610cea5781600b600086868581811061172c5761172c612c84565b90506020020160208101906117419190612b29565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905561177281612cb0565b905061170d565b600080546001600160a01b031633146117a45760405162461bcd60e51b8152600401610c5190612ccb565b6103e88211156118095760405162461bcd60e51b815260206004820152602a60248201527f4d6179206e6f74206e756b65206d6f7265207468616e20313025206f6620746f60448201526906b656e7320696e204c560b41b6064820152608401610c51565b601f546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a082319060240160206040518083038186803b15801561184f57600080fd5b505afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118879190612d44565b905060006118a161271061189b8487612150565b906121cf565b9050801561193957601f546003546118c6916001600160a01b03908116911683611c0b565b50602060009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561191757600080fd5b505af115801561192b573d6000803e3d6000fd5b506001979650505050505050565b5060009392505050565b6000611338338484611d2b565b6000546001600160a01b0316331461197a5760405162461bcd60e51b8152600401610c5190612ccb565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000546001600160a01b031633146119cb5760405162461bcd60e51b8152600401610c5190612ccb565b60208054911515600160a81b0260ff60a81b19909216919091179055565b6000610f1a6119f661133f565b601f546001600160a01b031660009081526008602052604090205461189b90611a23906002905b90612150565b8590612150565b611a3333611bed565b611a4f5760405162461bcd60e51b8152600401610c5190612c1a565b60208054921515600160b01b0260ff60b01b1990931692909217909155602155565b6000546001600160a01b03163314611a9b5760405162461bcd60e51b8152600401610c5190612ccb565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314611ae65760405162461bcd60e51b8152600401610c5190612ccb565b61271081600554611af79190612ceb565b611b019190612d0a565b60065550565b6000546001600160a01b03163314611b315760405162461bcd60e51b8152600401610c5190612ccb565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b611ba633611bed565b611bc25760405162461bcd60e51b8152600401610c5190612c1a565b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611c5c918490611cf1565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611c8b9083612211565b6001600160a01b0380851660008181526008602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611cdf9086815260200190565b60405180910390a35060019392505050565b60008184841115611d155760405162461bcd60e51b8152600401610c519190612957565b506000611d228486612d7a565b95945050505050565b60225460009060ff1615611d4b57611d44848484611c0b565b9050611338565b6001600160a01b03841660009081526001602052604090205460ff16158015611d8d57506001600160a01b03831660009081526001602052604090205460ff16155b15611e4b57602054600160a01b900460ff16611de25760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610c51565b602054600160a81b900460ff168015611e085750601f546001600160a01b038581169116145b8015611e225750601f546001600160a01b03848116911614155b15611e4b576001600160a01b0383166000908152600b60205260409020805460ff191660011790555b600a5460ff1615611ead576001600160a01b0384166000908152600b602052604090205460ff1615611ead5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610c51565b6001600160a01b03841660009081526001602052604090205460ff16158015611eef57506001600160a01b0384166000908152600e602052604090205460ff16155b8015611f1457506001600160a01b0383166000908152600e602052604090205460ff16155b8015611f2e5750601f546001600160a01b03848116911614155b15611fa9576001600160a01b038316600090815260086020526040902054600754611f598483612d2c565b1115611fa75760405162461bcd60e51b815260206004820152601860248201527f6d61782077616c6c6574206c696d6974207265616368656400000000000000006044820152606401610c51565b505b611fb38483612270565b611fbb6122dd565b15611fc857611fc8612333565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526008909152919091205461201a918490611cf1565b6001600160a01b038516600090815260086020908152604080832093909355600c90529081205460ff1615158061206b57506001600160a01b0384166000908152600c602052604090205460ff1615155b61207f5761207a858486612729565b612081565b825b6001600160a01b0385166000908152600860205260409020549091506120a79082612211565b6001600160a01b0380861660008181526008602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120fb9085815260200190565b60405180910390a3506001949350505050565b600061133883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cf1565b60008261215f57506000610f1a565b600061216b8385612ceb565b9050826121788583612d0a565b146113385760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610c51565b600061133883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612821565b60008061221e8385612d2c565b9050838110156113385760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610c51565b6006548111158061229957506001600160a01b0382166000908152600d602052604090205460ff165b6122d95760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610c51565b5050565b601f546000906001600160a01b031633148015906122fe575060225460ff16155b80156123135750602054600160b01b900460ff165b801561138c57505060215430600090815260086020526040902054101590565b6022805460ff19166001179055601c54601d5460009161235291610f68565b61235e57600f54612361565b60005b90506000612385600261189b60135461189b8660215461215090919063ffffffff16565b9050600061239e8260215461210e90919063ffffffff16565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106123d8576123d8612c84565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061240957612409612c84565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b81524792919091169063791ac94790612453908690600090879030904290600401612d91565b600060405180830381600087803b15801561246d57600080fd5b505af1158015612481573d6000803e3d6000fd5b50505050600061249a824761210e90919063ffffffff16565b905060006124b56124ac8860026121cf565b6013549061210e565b905060006124ca600261189b8481878d612150565b905060006124e78361189b6010548761215090919063ffffffff16565b905060006125048461189b6012548861215090919063ffffffff16565b905060006125218561189b6011548961215090919063ffffffff16565b6019546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114612573576040519150601f19603f3d011682016040523d82523d6000602084013e612578565b606091505b5050601a546040519192506001600160a01b0316908390600081818185875af1925050503d80600081146125c8576040519150601f19603f3d011682016040523d82523d6000602084013e6125cd565b606091505b5050601b546040519192506001600160a01b0316908490600081818185875af1925050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5060009250508b15905061271157601e5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b15801561269b57600080fd5b505af11580156126af573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126d49190612e02565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506022805460ff1916905550505050505050505050565b601754601f54600091906001600160a01b038481169116141561274f575060155461276a565b601f546001600160a01b038681169116141561276a57506016545b6000612797601454606461277e9190612ceb565b61189b84611a1d6013548a61215090919063ffffffff16565b306000908152600860205260409020549091506127b49082612211565b30600081815260086020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906128059085815260200190565b60405180910390a3612817858261210e565b9695505050505050565b600081836128425760405162461bcd60e51b8152600401610c519190612957565b506000611d228486612d0a565b60008083601f84011261286157600080fd5b50813567ffffffffffffffff81111561287957600080fd5b6020830191508360208260051b850101111561289457600080fd5b9250929050565b80151581146128a957600080fd5b50565b6000806000604084860312156128c157600080fd5b833567ffffffffffffffff8111156128d857600080fd5b6128e48682870161284f565b90945092505060208401356128f88161289b565b809150509250925092565b60006020828403121561291557600080fd5b5035919050565b600080600080600060a0868803121561293457600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600060208083528351808285015260005b8181101561298457858101830151858201604001528201612968565b81811115612996576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146128a957600080fd5b600080604083850312156129d457600080fd5b82356129df816129ac565b946020939093013593505050565b6000602082840312156129ff57600080fd5b81356113388161289b565b60008060408385031215612a1d57600080fd5b50508035926020909101359150565b600080600080600060608688031215612a4457600080fd5b8535612a4f816129ac565b9450602086013567ffffffffffffffff80821115612a6c57600080fd5b612a7889838a0161284f565b90965094506040880135915080821115612a9157600080fd5b50612a9e8882890161284f565b969995985093965092949392505050565b60008060408385031215612ac257600080fd5b8235612acd816129ac565b91506020830135612add8161289b565b809150509250929050565b600080600060608486031215612afd57600080fd5b8335612b08816129ac565b92506020840135612b18816129ac565b929592945050506040919091013590565b600060208284031215612b3b57600080fd5b8135611338816129ac565b60008060008060808587031215612b5c57600080fd5b8435612b67816129ac565b93506020850135612b77816129ac565b92506040850135612b87816129ac565b91506060850135612b97816129ac565b939692955090935050565b600080600060608486031215612bb757600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612be157600080fd5b8235612bec816129ac565b91506020830135612add816129ac565b60008060408385031215612c0f57600080fd5b82356129df8161289b565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f474153204572726f723a206d6178206c696d6974206973203530302061646472604082015264657373657360d81b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415612cc457612cc4612c9a565b5060010190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6000816000190483118215151615612d0557612d05612c9a565b500290565b600082612d2757634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115612d3f57612d3f612c9a565b500190565b600060208284031215612d5657600080fd5b5051919050565b600060208284031215612d6f57600080fd5b81516113388161289b565b600082821015612d8c57612d8c612c9a565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612de15784516001600160a01b031683529383019391830191600101612dbc565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612e1757600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212207d6a808c894214bd3b60fdc4f33ac41b86798a73a94577a8aaed6a0143a4da9e64736f6c63430008090033

Deployed Bytecode Sourcemap

4737:15256:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16373:309;;;;;;;;;;-1:-1:-1;16373:309:0;;;;;:::i;:::-;;:::i;:::-;;15763:293;;;;;;;;;;-1:-1:-1;15763:293:0;;;;;:::i;:::-;;:::i;9275:181::-;;;;;;;;;;-1:-1:-1;9275:181:0;;;;;:::i;:::-;;:::i;6496:55::-;;;;;;;;;;;;;;;;;;;1411:25:1;;;1399:2;1384:18;6496:55:0;;;;;;;;17100:480;;;;;;;;;;-1:-1:-1;17100:480:0;;;;;:::i;:::-;;:::i;7957:80::-;;;;;;;;;;-1:-1:-1;8029:5:0;;;;;;;;;;;;-1:-1:-1;;;8029:5:0;;;;7957:80;;;;;;;:::i;8379:216::-;;;;;;;;;;-1:-1:-1;8379:216:0;;;;;:::i;:::-;;:::i;:::-;;;3129:14:1;;3122:22;3104:41;;3092:2;3077:18;8379:216:0;2964:187:1;13337:94:0;;;;;;;;;;-1:-1:-1;13337:94:0;;;;;:::i;:::-;;:::i;18647:150::-;;;;;;;;;;-1:-1:-1;18647:150:0;;;;;:::i;:::-;;:::i;5869:36::-;;;;;;;;;;;;;;;;7687:88;;;;;;;;;;-1:-1:-1;7760:12:0;;7687:88;;18827:594;;;;;;;;;;-1:-1:-1;18827:594:0;;;;;:::i;:::-;;:::i;12612:208::-;;;;;;;;;;-1:-1:-1;12612:208:0;;;;;:::i;:::-;;:::i;5783:79::-;;;;;;;;;;;;;;;;18127:183;;;;;;;;;;-1:-1:-1;18127:183:0;;;;;:::i;:::-;;:::i;16956:136::-;;;;;;;;;;-1:-1:-1;16956:136:0;;;;;:::i;:::-;;:::i;8897:370::-;;;;;;;;;;-1:-1:-1;8897:370:0;;;;;:::i;:::-;;:::i;18322:142::-;;;;;;;;;;;;;:::i;2745:103::-;;;;;;;;;;-1:-1:-1;2745:103:0;;;;;:::i;:::-;2800:4;2835:5;-1:-1:-1;;;;;2824:16:0;;;2835:5;;2824:16;;2745:103;6424:26;;;;;;;;;;-1:-1:-1;6424:26:0;;;;-1:-1:-1;;;6424:26:0;;;;;;5956:34;;;;;;;;;;;;;;;;7781:80;;;;;;;;;;-1:-1:-1;7781:80:0;;5081:1;5810:36:1;;5798:2;5783:18;7781:80:0;5668:184:1;17588:367:0;;;;;;;;;;-1:-1:-1;17588:367:0;;;;;:::i;:::-;;:::i;6166:30::-;;;;;;;;;;-1:-1:-1;6166:30:0;;;;-1:-1:-1;;;;;6166:30:0;;;;;;-1:-1:-1;;;;;6697:32:1;;;6679:51;;6667:2;6652:18;6166:30:0;6533:203:1;16064:301:0;;;;;;;;;;-1:-1:-1;16064:301:0;;;;;:::i;:::-;;:::i;6346:31::-;;;;;;;;;;-1:-1:-1;6346:31:0;;;;-1:-1:-1;;;;;6346:31:0;;;8603:122;;;;;;;;;;-1:-1:-1;8603:122:0;;;;;:::i;:::-;;:::i;5997:39::-;;;;;;;;;;;;;;;;9646:96;;;;;;;;;;-1:-1:-1;9646:96:0;;;;;:::i;:::-;;:::i;15438:99::-;;;;;;;;;;-1:-1:-1;15438:99:0;;;;;:::i;:::-;;:::i;16692:120::-;;;;;;;;;;-1:-1:-1;16692:120:0;;;;;:::i;:::-;;:::i;5701:34::-;;;;;;;;;;;;;;;;5660;;;;;;;;;;;;;;;;13107:199;;;;;;;;;;-1:-1:-1;13107:199:0;;;;;:::i;:::-;;:::i;6459:30::-;;;;;;;;;;-1:-1:-1;6459:30:0;;;;-1:-1:-1;;;6459:30:0;;;;;;8127:105;;;;;;;;;;-1:-1:-1;8127:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8211:18:0;8193:7;8211:18;;;:9;:18;;;;;;;8127:105;12828:271;;;;;;;;;;-1:-1:-1;12828:271:0;;;;;:::i;:::-;;:::i;5205:50::-;;;;;;;;;;;;;;;;5150:48;;;;;;;;;;;;;;;;8043:78;;;;;;;;;;-1:-1:-1;8095:7:0;8113:5;-1:-1:-1;;;;;8113:5:0;8043:78;;5379:32;;;;;;;;;;-1:-1:-1;5379:32:0;;;;;;;;15545:210;;;;;;;;;;-1:-1:-1;15545:210:0;;;;;:::i;:::-;;:::i;7867:84::-;;;;;;;;;;-1:-1:-1;7941:7:0;;;;;;;;;;;;-1:-1:-1;;;7941:7:0;;;;7867:84;;19425:498;;;;;;;;;;-1:-1:-1;19425:498:0;;;;;:::i;:::-;;:::i;5619:34::-;;;;;;;;;;;;;;;;6320:19;;;;;;;;;;-1:-1:-1;6320:19:0;;;;-1:-1:-1;;;;;6320:19:0;;;8733:156;;;;;;;;;;-1:-1:-1;8733:156:0;;;;;:::i;:::-;;:::i;2538:94::-;;;;;;;;;;-1:-1:-1;2538:94:0;;;;;:::i;:::-;;:::i;13439:99::-;;;;;;;;;;-1:-1:-1;13439:99:0;;;;;:::i;:::-;;:::i;6045:36::-;;;;;;;;;;-1:-1:-1;6045:36:0;;;;-1:-1:-1;;;;;6045:36:0;;;18472:167;;;;;;;;;;-1:-1:-1;18472:167:0;;;;;:::i;:::-;;:::i;5742:34::-;;;;;;;;;;;;;;;;6130:29;;;;;;;;;;-1:-1:-1;6130:29:0;;;;-1:-1:-1;;;;;6130:29:0;;;8238:133;;;;;;;;;;-1:-1:-1;8238:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8340:19:0;;;8322:7;8340:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8238:133;17963:156;;;;;;;;;;-1:-1:-1;17963:156:0;;;;;:::i;:::-;;:::i;6088:35::-;;;;;;;;;;-1:-1:-1;6088:35:0;;;;-1:-1:-1;;;;;6088:35:0;;;2640:97;;;;;;;;;;-1:-1:-1;2640:97:0;;;;;:::i;:::-;;:::i;9462:176::-;;;;;;;;;;-1:-1:-1;9462:176:0;;;;;:::i;:::-;;:::i;2971:173::-;;;;;;;;;;-1:-1:-1;2971:173:0;;;;;:::i;:::-;;:::i;16820:128::-;;;;;;;;;;-1:-1:-1;16820:128:0;;;;;:::i;:::-;;:::i;6289:24::-;;;;;;;;;;-1:-1:-1;6289:24:0;;;;-1:-1:-1;;;;;6289:24:0;;;5418:46;;;;;;;;;;-1:-1:-1;5418:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2856:107;;;;;;;;;;-1:-1:-1;2856:107:0;;;;;:::i;:::-;;:::i;5914:35::-;;;;;;;;;;;;;;;;6386:31;;;;;;;;;;-1:-1:-1;6386:31:0;;;;-1:-1:-1;;;6386:31:0;;;;;;16373:309;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;;;;;;;;;16508:3:::1;16489:22:::0;::::1;16481:71;;;;-1:-1:-1::0;;;16481:71:0::1;;;;;;;:::i;:::-;16568:9;16563:112;16579:20:::0;;::::1;16563:112;;;16657:6;16621:19;:33;16641:9;;16651:1;16641:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16621:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16621:33:0;:42;;-1:-1:-1;;16621:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16601:3:::1;::::0;::::1;:::i;:::-;;;16563:112;;;;16373:309:::0;;;:::o;15763:293::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;15890:3:::1;15871:22:::0;::::1;15863:71;;;;-1:-1:-1::0;;;15863:71:0::1;;;;;;;:::i;:::-;15950:9;15945:104;15961:20:::0;;::::1;15945:104;;;16031:6;16003:11;:25;16015:9;;16025:1;16015:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16003:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16003:25:0;:34;;-1:-1:-1;;16003:34:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15983:3:::1;::::0;::::1;:::i;:::-;;;15945:104;;9275:181:::0;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;9443:5:::1;9414:24;9399:12;;:39;;;;:::i;:::-;9398:50;;;;:::i;:::-;9380:15;:68:::0;-1:-1:-1;9275:181:0:o;17100:480::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;17255:12:::1;:28:::0;;;17294:7:::1;:18:::0;;;17323:12:::1;:28:::0;;;17362:6:::1;:16:::0;;;17371:7;17338:13;17400:24:::1;17304:8:::0;17270:13;17400:24:::1;:::i;:::-;:40;;;;:::i;:::-;:50;;;;:::i;:::-;17389:8;:61:::0;17461:14:::1;:32:::0;;;17523:16:::1;17538:1;17478:15:::0;17523:16:::1;:::i;:::-;17512:8;;:27;17504:68;;;::::0;-1:-1:-1;;;17504:68:0;;10696:2:1;17504:68:0::1;::::0;::::1;10678:21:1::0;10735:2;10715:18;;;10708:30;10774;10754:18;;;10747:58;10822:18;;17504:68:0::1;10494:352:1::0;17504:68:0::1;17100:480:::0;;;;;:::o;8379:216::-;8483:10;8454:4;8471:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8471:32:0;;;;;;;;;;:41;;;8528:37;8454:4;;8471:32;;8528:37;;;;8506:6;1411:25:1;;1399:2;1384:18;;1265:177;8528:37:0;;;;;;;;-1:-1:-1;8583:4:0;8379:216;;;;;:::o;13337:94::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;13402:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;13402:21:0::1;-1:-1:-1::0;;;;13402:21:0;;::::1;::::0;;;::::1;::::0;;13337:94::o;18647:150::-;18727:4;18783:6;18751:29;18771:8;18751:19;:29::i;:::-;:38;;18647:150;-1:-1:-1;;;18647:150:0:o;18827:594::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;18976:3:::1;18957:22:::0;::::1;18949:79;;;::::0;-1:-1:-1;;;18949:79:0;;11053:2:1;18949:79:0::1;::::0;::::1;11035:21:1::0;11092:2;11072:18;;;11065:30;11131:34;11111:18;;;11104:62;-1:-1:-1;;;11182:18:1;;;11175:43;11235:19;;18949:79:0::1;10851:409:1::0;18949:79:0::1;19043:33:::0;;::::1;19035:85;;;::::0;-1:-1:-1;;;19035:85:0;;11467:2:1;19035:85:0::1;::::0;::::1;11449:21:1::0;11506:2;11486:18;;;11479:30;11545:34;11525:18;;;11518:62;-1:-1:-1;;;11596:18:1;;;11589:38;11644:19;;19035:85:0::1;11265:404:1::0;19035:85:0::1;19129:12;19158:6:::0;19154:82:::1;19168:20:::0;;::::1;19154:82;;;19219:6;;19226:1;19219:9;;;;;;;:::i;:::-;;;;;;;19212:4;:16;;;;:::i;:::-;19205:23:::0;-1:-1:-1;19190:3:0;::::1;::::0;::::1;:::i;:::-;;;;19154:82;;;;19271:4;19252:15;19262:4;-1:-1:-1::0;;;;;8211:18:0;8193:7;8211:18;;;:9;:18;;;;;;;8127:105;19252:15:::1;:23;;19244:63;;;::::0;-1:-1:-1;;;19244:63:0;;11876:2:1;19244:63:0::1;::::0;::::1;11858:21:1::0;11915:2;11895:18;;;11888:30;11954:29;11934:18;;;11927:57;12001:18;;19244:63:0::1;11674:351:1::0;19244:63:0::1;19320:6;19316:102;19330:20:::0;;::::1;19316:102;;;19367:43;19382:4;19387:9;;19397:1;19387:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19400:6;;19407:1;19400:9;;;;;;;:::i;:::-;;;;;;;19367:14;:43::i;:::-;-1:-1:-1::0;19352:3:0;::::1;::::0;::::1;:::i;:::-;;;;19316:102;;;;18940:481;18827:594:::0;;;;;:::o;12612:208::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;12716:21:::1;12756:10;12748:64;12808:3;12777:28;12789:16:::0;12716:21;12777:28:::1;:::i;:::-;:34;;;;:::i;:::-;12748:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12685:135;12612:208:::0;:::o;18127:183::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;18225:15:::1;:25:::0;;;;18261:26:::1;:41:::0;18127:183::o;16956:136::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17048:27:0;;;::::1;;::::0;;;:19:::1;:27;::::0;;;;:36;;-1:-1:-1;;17048:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16956:136::o;8897:370::-;-1:-1:-1;;;;;9017:19:0;;8997:4;9017:19;;;:11;:19;;;;;;;;9037:10;9017:31;;;;;;;;-1:-1:-1;;9017:52:0;9014:186;;9119:69;;;;;;;;;;;-1:-1:-1;;;9119:69:0;;;;;;;;-1:-1:-1;;;;;9119:19:0;;-1:-1:-1;9119:19:0;;;:11;:19;;;;;9139:10;9119:31;;;;;;;;;;:69;;9155:6;;9119:35;:69::i;:::-;-1:-1:-1;;;;;9085:19:0;;;;;;:11;:19;;;;;;;;9105:10;9085:31;;;;;;;:103;9014:186;9219:40;9233:6;9241:9;9252:6;9219:13;:40::i;:::-;9212:47;;8897:370;;;;;;:::o;18322:142::-;18450:4;;-1:-1:-1;;;;;18450:4:0;18375:7;8211:18;;;:9;:18;;;;;;18402:54;;18429:4;;-1:-1:-1;;;;;18429:4:0;8193:7;8211:18;;;:9;:18;;;;;;18402:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;18395:61;;18322:142;:::o;17588:367::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;17758:21:::1;:46:::0;;-1:-1:-1;;;;;17758:46:0;;::::1;-1:-1:-1::0;;;;;;17758:46:0;;::::1;;::::0;;;17815:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17870:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17913:15:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;17588:367::o;16064:301::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;16195:3:::1;16176:22:::0;::::1;16168:71;;;;-1:-1:-1::0;;;16168:71:0::1;;;;;;;:::i;:::-;16255:9;16250:108;16266:20:::0;;::::1;16250:108;;;16340:6;16308:15;:29;16324:9;;16334:1;16324:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16308:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;16308:29:0;:38;;-1:-1:-1;;16308:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16288:3:::1;::::0;::::1;:::i;:::-;;;16250:108;;8603:122:::0;8658:4;8682:35;8690:7;-1:-1:-1;;8682:7:0;:35::i;9646:96::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;9713:12:::1;:21:::0;9646:96::o;15438:99::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;15506:13:::1;:23:::0;;-1:-1:-1;;15506:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15438:99::o;16692:120::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16776:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16776:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16692:120::o;13107:199::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;13207:14:::1;:22:::0;;;;13240:13:::1;:20:::0;;;;13271:18:::1;:27:::0;13107:199::o;12828:271::-;12917:4;2835:5;;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;12934:11;12931:95:::1;;12970:44;::::0;-1:-1:-1;;;12970:44:0;;13008:4:::1;12970:44;::::0;::::1;6679:51:1::0;-1:-1:-1;;;;;12970:29:0;::::1;::::0;::::1;::::0;6652:18:1;;12970:44:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12961:53;;12931:95;13043:48;::::0;-1:-1:-1;;;13043:48:0;;13072:10:::1;13043:48;::::0;::::1;12393:51:1::0;12460:18;;;12453:34;;;-1:-1:-1;;;;;13043:28:0;::::1;::::0;::::1;::::0;12366:18:1;;13043:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15545:210::-:0;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;15647:9:::1;15642:106;15658:20:::0;;::::1;15642:106;;;15730:6;15700:13;:27;15714:9;;15724:1;15714:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15700:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15700:27:0;:36;;-1:-1:-1;;15700:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15680:3:::1;::::0;::::1;:::i;:::-;;;15642:106;;19425:498:::0;19501:4;2835:5;;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;19546:4:::1;19525:17;:25;;19517:80;;;::::0;-1:-1:-1;;;19517:80:0;;12950:2:1;19517:80:0::1;::::0;::::1;12932:21:1::0;12989:2;12969:18;;;12962:30;13028:34;13008:18;;;13001:62;-1:-1:-1;;;13079:18:1;;;13072:40;13129:19;;19517:80:0::1;12748:406:1::0;19517:80:0::1;19649:4;::::0;19634:20:::1;::::0;-1:-1:-1;;;19634:20:0;;-1:-1:-1;;;;;19649:4:0;;::::1;19634:20;::::0;::::1;6679:51:1::0;19614:17:0::1;::::0;19634:4:::1;::::0;:14:::1;::::0;6652:18:1;;19634:20:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19614:40:::0;-1:-1:-1;19665:15:0::1;19683:43;19720:5;19683:32;19614:40:::0;19697:17;19683:13:::1;:32::i;:::-;:36:::0;::::1;:43::i;:::-;19665:61:::0;-1:-1:-1;19751:11:0;;19747:136:::1;;19793:4;::::0;19798::::1;::::0;19778:33:::1;::::0;-1:-1:-1;;;;;19793:4:0;;::::1;::::0;19798::::1;19803:7:::0;19778:14:::1;:33::i;:::-;;19826:12;;;;;;;;;-1:-1:-1::0;;;;;19826:12:0::1;-1:-1:-1::0;;;;;19826:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;19867:4:0::1;::::0;19425:498;-1:-1:-1;;;;;;;19425:498:0:o;19747:136::-:1;-1:-1:-1::0;19910:5:0::1;::::0;19425:498;-1:-1:-1;;;19425:498:0:o;8733:156::-;8813:4;8837:44;8851:10;8863:9;8874:6;8837:13;:44::i;2538:94::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2598:19:0::1;;::::0;;;2620:4:::1;2598:19;::::0;;;;;;;:26;;-1:-1:-1;;2598:26:0::1;::::0;;::::1;::::0;;2538:94::o;13439:99::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;13513:7:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;13513:17:0::1;-1:-1:-1::0;;;;13513:17:0;;::::1;::::0;;;::::1;::::0;;13439:99::o;18472:167::-;18540:7;18567:64;18608:22;:20;:22::i;:::-;18590:4;;-1:-1:-1;;;;;18590:4:0;8193:7;8211:18;;;:9;:18;;;;;;18567:36;;18580:22;;18600:1;;18580:15;:19;;:22::i;:::-;18567:8;;:12;:36::i;17963:156::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;18055:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;18055:22:0::1;-1:-1:-1::0;;;;18055:22:0;;::::1;::::0;;;::::1;::::0;;;18088:13:::1;:23:::0;17963:156::o;2640:97::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2702:19:0::1;2724:5;2702:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2702:27:0::1;::::0;;2640:97::o;9462:176::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;9625:5:::1;9595:25;9580:12;;:40;;;;:::i;:::-;9579:51;;;;:::i;:::-;9564:12;:66:::0;-1:-1:-1;9462:176:0:o;2971:173::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;3047:5:::1;:11:::0;;-1:-1:-1;;;;;;3047:11:0::1;-1:-1:-1::0;;;;;3047:11:0;::::1;::::0;;::::1;::::0;;3069:19;;;-1:-1:-1;3069:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3069:26:0::1;::::0;;::::1;::::0;;;3111:25;;6679:51:1;;;3111:25:0::1;::::0;6652:18:1;3111:25:0::1;;;;;;;2971:173:::0;:::o;16820:128::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16908:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16908:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16820:128::o;2856:107::-;-1:-1:-1;;;;;2936:19:0;2912:4;2936:19;;;:14;:19;;;;;;;;;2856:107::o;11167:330::-;11297:53;;;;;;;;;;;-1:-1:-1;;;11297:53:0;;;;;;;;-1:-1:-1;;;;;11297:17:0;;11260:4;11297:17;;;:9;:17;;;;;;;:53;;11319:6;;11297:21;:53::i;:::-;-1:-1:-1;;;;;11277:17:0;;;;;;;:9;:17;;;;;;:73;;;;11384:20;;;;;;;:32;;11409:6;11384:24;:32::i;:::-;-1:-1:-1;;;;;11361:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11432:35;;;;;;;;;;11460:6;1411:25:1;;1399:2;1384:18;;1265:177;11432:35:0;;;;;;;;-1:-1:-1;11485:4:0;11167:330;;;;;:::o;422:192::-;508:7;544:12;536:6;;;;528:29;;;;-1:-1:-1;;;528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;568:9:0;580:5;584:1;580;:5;:::i;:::-;568:17;422:192;-1:-1:-1;;;;;422:192:0:o;9750:1405::-;9862:6;;9842:4;;9862:6;;9859:63;;;9878:41;9893:6;9901:9;9912:6;9878:14;:41::i;:::-;9871:48;;;;9859:63;-1:-1:-1;;;;;9938:22:0;;;;;;:14;:22;;;;;;;;9937:23;:53;;;;-1:-1:-1;;;;;;9965:25:0;;;;;;:14;:25;;;;;;;;9964:26;9937:53;9934:257;;;10014:11;;-1:-1:-1;;;10014:11:0;;;;10006:43;;;;-1:-1:-1;;;10006:43:0;;13707:2:1;10006:43:0;;;13689:21:1;13746:2;13726:18;;;13719:30;-1:-1:-1;;;13765:18:1;;;13758:50;13825:18;;10006:43:0;13505:344:1;10006:43:0;10067:7;;-1:-1:-1;;;10067:7:0;;;;:25;;;;-1:-1:-1;10088:4:0;;-1:-1:-1;;;;;10078:14:0;;;10088:4;;10078:14;10067:25;:46;;;;-1:-1:-1;10109:4:0;;-1:-1:-1;;;;;10096:17:0;;;10109:4;;10096:17;;10067:46;10064:116;;;-1:-1:-1;;;;;10133:24:0;;;;;;:13;:24;;;;;:31;;-1:-1:-1;;10133:31:0;10160:4;10133:31;;;10064:116;10228:13;;;;10225:93;;;-1:-1:-1;;;;;10266:21:0;;;;;;:13;:21;;;;;;;;10265:22;10257:45;;;;-1:-1:-1;;;10257:45:0;;14056:2:1;10257:45:0;;;14038:21:1;14095:2;14075:18;;;14068:30;-1:-1:-1;;;14114:18:1;;;14107:41;14165:18;;10257:45:0;13854:335:1;10257:45:0;-1:-1:-1;;;;;10337:22:0;;;;;;:14;:22;;;;;;;;10336:23;:55;;;;-1:-1:-1;;;;;;10364:27:0;;;;;;:19;:27;;;;;;;;10363:28;10336:55;:90;;;;-1:-1:-1;;;;;;10396:30:0;;;;;;:19;:30;;;;;;;;10395:31;10336:90;:111;;;;-1:-1:-1;10443:4:0;;-1:-1:-1;;;;;10430:17:0;;;10443:4;;10430:17;;10336:111;10332:276;;;-1:-1:-1;;;;;8211:18:0;;10464;8211;;;:9;:18;;;;;;10553:15;;10529:19;10542:6;8211:18;10529:19;:::i;:::-;10528:40;;10520:76;;;;-1:-1:-1;;;10520:76:0;;14396:2:1;10520:76:0;;;14378:21:1;14435:2;14415:18;;;14408:30;14474:26;14454:18;;;14447:54;14518:18;;10520:76:0;14194:348:1;10520:76:0;10449:159;10332:276;10663:28;10676:6;10684;10663:12;:28::i;:::-;10707:16;:14;:16::i;:::-;10704:35;;;10726:10;:8;:10::i;:::-;10798:53;;;;;;;;;;;-1:-1:-1;;;10798:53:0;;;;;;;;-1:-1:-1;;;;;10798:17:0;;-1:-1:-1;10798:17:0;;;:9;:17;;;;;;;;:53;;10820:6;;10798:21;:53::i;:::-;-1:-1:-1;;;;;10778:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11766:11;:19;;;;;;;;11765:20;10890:22;:51;;;-1:-1:-1;;;;;;11766:19:0;;11741:4;11766:19;;;:11;:19;;;;;;;;11765:20;10916:25;10890:51;10889:99;;10954:34;10962:6;10970;10978:9;10954:7;:34::i;:::-;10889:99;;;10945:6;10889:99;-1:-1:-1;;;;;11024:20:0;;;;;;:9;:20;;;;;;10864:124;;-1:-1:-1;11024:40:0;;10864:124;11024:24;:40::i;:::-;-1:-1:-1;;;;;11001:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11082:43;;;;;;;;;;11110:14;1411:25:1;;1399:2;1384:18;;1265:177;11082:43:0;;;;;;;;-1:-1:-1;11143:4:0;;9750:1405;-1:-1:-1;;;;9750:1405:0:o;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;620:250::-;678:7;702:6;698:47;;-1:-1:-1;732:1:0;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:0;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;-1:-1:-1;;;785:56:0;;14749:2:1;785:56:0;;;14731:21:1;14788:2;14768:18;;;14761:30;14827:34;14807:18;;;14800:62;-1:-1:-1;;;14878:18:1;;;14871:31;14919:19;;785:56:0;14547:397:1;876:132:0;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;93:181::-;151:7;;183:5;187:1;183;:5;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;-1:-1:-1;;;199:46:0;;15151:2:1;199:46:0;;;15133:21:1;15190:2;15170:18;;;15163:30;15229:29;15209:18;;;15202:57;15276:18;;199:46:0;14949:351:1;11505:166:0;11602:12;;11592:6;:22;;:49;;;-1:-1:-1;;;;;;11618:23:0;;;;;;:15;:23;;;;;;;;11592:49;11584:79;;;;-1:-1:-1;;;11584:79:0;;15507:2:1;11584:79:0;;;15489:21:1;15546:2;15526:18;;;15519:30;-1:-1:-1;;;15565:18:1;;;15558:47;15622:18;;11584:79:0;15305:341:1;11584:79:0;11505:166;;:::o;12407:197::-;12494:4;;12456;;-1:-1:-1;;;;;12494:4:0;12480:10;:18;;;;:38;;-1:-1:-1;12512:6:0;;;;12511:7;12480:38;:62;;;;-1:-1:-1;12531:11:0;;-1:-1:-1;;;12531:11:0;;;;12480:62;:116;;;;-1:-1:-1;;12583:13:0;;12573:4;12555:24;;;;:9;:24;;;;;;:41;;;12407:197::o;13546:1884::-;6598:6;:13;;-1:-1:-1;;6598:13:0;6607:4;6598:13;;;13641:15:::1;::::0;13658:26:::1;::::0;6598:6;;13625:60:::1;::::0;:15:::1;:60::i;:::-;:79;;13692:12;;13625:79;;;13688:1;13625:79;13595:109;;13715:23;13741:59;13798:1;13741:52;13784:8;;13741:38;13759:19;13741:13;;:17;;:38;;;;:::i;:59::-;13715:85;;13811:20;13834:34;13852:15;13834:13;;:17;;:34;;;;:::i;:::-;13905:16;::::0;;13919:1:::1;13905:16:::0;;;;;::::1;::::0;;13811:57;;-1:-1:-1;13881:21:0::1;::::0;13905:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13905:16:0::1;13881:40;;13950:4;13932;13937:1;13932:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13932:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13976:4:::1;::::0;13966:7;;13976:4;::::1;::::0;13966;;13976;;13966:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;13966:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14051:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14051:188:0;;14017:21:::1;::::0;14051:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14123:12;;13993:21:::1;::::0;14166:4;;14193::::1;::::0;14213:15:::1;::::0;14051:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14252:17;14272:40;14298:13;14272:21;:25;;:40;;;;:::i;:::-;14252:60:::0;-1:-1:-1;14325:19:0::1;14347:40;14360:26;:19:::0;14384:1:::1;14360:23;:26::i;:::-;14347:8;::::0;;:12:::1;:40::i;:::-;14325:62:::0;-1:-1:-1;14408:26:0::1;14437:58;14493:1;14437:51;14325:62:::0;14437:51;:9;14451:19;14437:13:::1;:34::i;:58::-;14408:87;;14506:26;14535:44;14567:11;14535:27;14549:12;;14535:9;:13;;:27;;;;:::i;:44::-;14506:73;;14590:21;14614:39;14641:11;14614:22;14628:7;;14614:9;:13;;:22;;;;:::i;:39::-;14590:63;;14664:20;14687:38;14713:11;14687:21;14701:6;;14687:9;:13;;:21;;;;:::i;:38::-;14767:20;::::0;14759:65:::1;::::0;14664:61;;-1:-1:-1;14739:15:0::1;::::0;-1:-1:-1;;;;;14767:20:0;;::::1;::::0;14801:18;;14739:15;14759:65;14739:15;14759:65;14801:18;14767:20;14759:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;14859:14:0::1;::::0;14851:53:::1;::::0;14738:86;;-1:-1:-1;;;;;;14859:14:0::1;::::0;14887:12;;14851:53:::1;::::0;;;14887:12;14859:14;14851:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;14939:15:0::1;::::0;14931:55:::1;::::0;14835:69;;-1:-1:-1;;;;;;14939:15:0::1;::::0;14968:13;;14931:55:::1;::::0;;;14968:13;14939:15;14931:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;15043:5:0::1;::::0;-1:-1:-1;;15064:19:0;;;-1:-1:-1;15061:362:0::1;;15099:6;::::0;15273:21:::1;::::0;15099:244:::1;::::0;-1:-1:-1;;;15099:244:0;;15175:4:::1;15099:244;::::0;::::1;17319:34:1::0;17369:18;;;17362:34;;;15099:6:0::1;17412:18:1::0;;;17405:34;;;17455:18;;;17448:34;-1:-1:-1;;;;;15273:21:0;;::::1;17498:19:1::0;;;17491:44;15313:15:0::1;17551:19:1::0;;;17544:35;15099:6:0;::::1;::::0;:22:::1;::::0;15129:18;;17253:19:1;;15099:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15363:48:0::1;::::0;;18075:25:1;;;18131:2;18116:18;;18109:34;;;15363:48:0::1;::::0;-1:-1:-1;18048:18:1;15363:48:0::1;;;;;;;15061:362;-1:-1:-1::0;;6616:6:0;:14;;-1:-1:-1;;6616:14:0;;;-1:-1:-1;;;;;;;;;;13546:1884:0:o;11801:598::-;11938:18;;11983:4;;11887:7;;11938:18;-1:-1:-1;;;;;11970:17:0;;;11983:4;;11970:17;11967:152;;;-1:-1:-1;12016:14:0;;11967:152;;;12061:4;;-1:-1:-1;;;;;12051:14:0;;;12061:4;;12051:14;12048:71;;;-1:-1:-1;12094:13:0;;12048:71;12131:17;12151:62;12192:14;;12209:3;12192:20;;;;:::i;:::-;12151:36;12176:10;12151:20;12162:8;;12151:6;:10;;:20;;;;:::i;:62::-;12269:4;12251:24;;;;:9;:24;;;;;;12131:82;;-1:-1:-1;12251:39:0;;12131:82;12251:28;:39::i;:::-;12242:4;12224:24;;;;:9;:24;;;;;;;:66;;;;12308:42;;-1:-1:-1;;;;;12308:42:0;;;;;;;12340:9;1411:25:1;;1399:2;1384:18;;1265:177;12308:42:0;;;;;;;;12370:21;:6;12381:9;12370:10;:21::i;:::-;12363:28;11801:598;-1:-1:-1;;;;;;11801:598:0:o;1014:189::-;1100:7;1135:12;1128:5;1120:28;;;;-1:-1:-1;;;1120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1159:9:0;1171:5;1175:1;1171;:5;:::i;14:367:1:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:1;;225:18;214:30;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:118::-;472:5;465:13;458:21;451:5;448:32;438:60;;494:1;491;484:12;438:60;386:118;:::o;509:566::-;601:6;609;617;670:2;658:9;649:7;645:23;641:32;638:52;;;686:1;683;676:12;638:52;726:9;713:23;759:18;751:6;748:30;745:50;;;791:1;788;781:12;745:50;830:70;892:7;883:6;872:9;868:22;830:70;:::i;:::-;919:8;;-1:-1:-1;804:96:1;-1:-1:-1;;1004:2:1;989:18;;976:32;1017:28;976:32;1017:28;:::i;:::-;1064:5;1054:15;;;509:566;;;;;:::o;1080:180::-;1139:6;1192:2;1180:9;1171:7;1167:23;1163:32;1160:52;;;1208:1;1205;1198:12;1160:52;-1:-1:-1;1231:23:1;;1080:180;-1:-1:-1;1080:180:1:o;1447:454::-;1542:6;1550;1558;1566;1574;1627:3;1615:9;1606:7;1602:23;1598:33;1595:53;;;1644:1;1641;1634:12;1595:53;-1:-1:-1;;1667:23:1;;;1737:2;1722:18;;1709:32;;-1:-1:-1;1788:2:1;1773:18;;1760:32;;1839:2;1824:18;;1811:32;;-1:-1:-1;1890:3:1;1875:19;1862:33;;-1:-1:-1;1447:454:1;-1:-1:-1;1447:454:1:o;1906:597::-;2018:4;2047:2;2076;2065:9;2058:21;2108:6;2102:13;2151:6;2146:2;2135:9;2131:18;2124:34;2176:1;2186:140;2200:6;2197:1;2194:13;2186:140;;;2295:14;;;2291:23;;2285:30;2261:17;;;2280:2;2257:26;2250:66;2215:10;;2186:140;;;2344:6;2341:1;2338:13;2335:91;;;2414:1;2409:2;2400:6;2389:9;2385:22;2381:31;2374:42;2335:91;-1:-1:-1;2487:2:1;2466:15;-1:-1:-1;;2462:29:1;2447:45;;;;2494:2;2443:54;;1906:597;-1:-1:-1;;;1906:597:1:o;2508:131::-;-1:-1:-1;;;;;2583:31:1;;2573:42;;2563:70;;2629:1;2626;2619:12;2644:315;2712:6;2720;2773:2;2761:9;2752:7;2748:23;2744:32;2741:52;;;2789:1;2786;2779:12;2741:52;2828:9;2815:23;2847:31;2872:5;2847:31;:::i;:::-;2897:5;2949:2;2934:18;;;;2921:32;;-1:-1:-1;;;2644:315:1:o;3156:241::-;3212:6;3265:2;3253:9;3244:7;3240:23;3236:32;3233:52;;;3281:1;3278;3271:12;3233:52;3320:9;3307:23;3339:28;3361:5;3339:28;:::i;3402:248::-;3470:6;3478;3531:2;3519:9;3510:7;3506:23;3502:32;3499:52;;;3547:1;3544;3537:12;3499:52;-1:-1:-1;;3570:23:1;;;3640:2;3625:18;;;3612:32;;-1:-1:-1;3402:248:1:o;3655:908::-;3786:6;3794;3802;3810;3818;3871:2;3859:9;3850:7;3846:23;3842:32;3839:52;;;3887:1;3884;3877:12;3839:52;3926:9;3913:23;3945:31;3970:5;3945:31;:::i;:::-;3995:5;-1:-1:-1;4051:2:1;4036:18;;4023:32;4074:18;4104:14;;;4101:34;;;4131:1;4128;4121:12;4101:34;4170:70;4232:7;4223:6;4212:9;4208:22;4170:70;:::i;:::-;4259:8;;-1:-1:-1;4144:96:1;-1:-1:-1;4347:2:1;4332:18;;4319:32;;-1:-1:-1;4363:16:1;;;4360:36;;;4392:1;4389;4382:12;4360:36;;4431:72;4495:7;4484:8;4473:9;4469:24;4431:72;:::i;:::-;3655:908;;;;-1:-1:-1;3655:908:1;;-1:-1:-1;4522:8:1;;4405:98;3655:908;-1:-1:-1;;;3655:908:1:o;4568:382::-;4633:6;4641;4694:2;4682:9;4673:7;4669:23;4665:32;4662:52;;;4710:1;4707;4700:12;4662:52;4749:9;4736:23;4768:31;4793:5;4768:31;:::i;:::-;4818:5;-1:-1:-1;4875:2:1;4860:18;;4847:32;4888:30;4847:32;4888:30;:::i;:::-;4937:7;4927:17;;;4568:382;;;;;:::o;4955:456::-;5032:6;5040;5048;5101:2;5089:9;5080:7;5076:23;5072:32;5069:52;;;5117:1;5114;5107:12;5069:52;5156:9;5143:23;5175:31;5200:5;5175:31;:::i;:::-;5225:5;-1:-1:-1;5282:2:1;5267:18;;5254:32;5295:33;5254:32;5295:33;:::i;:::-;4955:456;;5347:7;;-1:-1:-1;;;5401:2:1;5386:18;;;;5373:32;;4955:456::o;5416:247::-;5475:6;5528:2;5516:9;5507:7;5503:23;5499:32;5496:52;;;5544:1;5541;5534:12;5496:52;5583:9;5570:23;5602:31;5627:5;5602:31;:::i;5857:671::-;5943:6;5951;5959;5967;6020:3;6008:9;5999:7;5995:23;5991:33;5988:53;;;6037:1;6034;6027:12;5988:53;6076:9;6063:23;6095:31;6120:5;6095:31;:::i;:::-;6145:5;-1:-1:-1;6202:2:1;6187:18;;6174:32;6215:33;6174:32;6215:33;:::i;:::-;6267:7;-1:-1:-1;6326:2:1;6311:18;;6298:32;6339:33;6298:32;6339:33;:::i;:::-;6391:7;-1:-1:-1;6450:2:1;6435:18;;6422:32;6463:33;6422:32;6463:33;:::i;:::-;5857:671;;;;-1:-1:-1;5857:671:1;;-1:-1:-1;;5857:671:1:o;6968:316::-;7045:6;7053;7061;7114:2;7102:9;7093:7;7089:23;7085:32;7082:52;;;7130:1;7127;7120:12;7082:52;-1:-1:-1;;7153:23:1;;;7223:2;7208:18;;7195:32;;-1:-1:-1;7274:2:1;7259:18;;;7246:32;;6968:316;-1:-1:-1;6968:316:1:o;7289:388::-;7357:6;7365;7418:2;7406:9;7397:7;7393:23;7389:32;7386:52;;;7434:1;7431;7424:12;7386:52;7473:9;7460:23;7492:31;7517:5;7492:31;:::i;:::-;7542:5;-1:-1:-1;7599:2:1;7584:18;;7571:32;7612:33;7571:32;7612:33;:::i;7682:309::-;7747:6;7755;7808:2;7796:9;7787:7;7783:23;7779:32;7776:52;;;7824:1;7821;7814:12;7776:52;7863:9;7850:23;7882:28;7904:5;7882:28;:::i;8482:335::-;8684:2;8666:21;;;8723:2;8703:18;;;8696:30;-1:-1:-1;;;8757:2:1;8742:18;;8735:41;8808:2;8793:18;;8482:335::o;8822:401::-;9024:2;9006:21;;;9063:2;9043:18;;;9036:30;9102:34;9097:2;9082:18;;9075:62;-1:-1:-1;;;9168:2:1;9153:18;;9146:35;9213:3;9198:19;;8822:401::o;9228:127::-;9289:10;9284:3;9280:20;9277:1;9270:31;9320:4;9317:1;9310:15;9344:4;9341:1;9334:15;9360:127;9421:10;9416:3;9412:20;9409:1;9402:31;9452:4;9449:1;9442:15;9476:4;9473:1;9466:15;9492:135;9531:3;-1:-1:-1;;9552:17:1;;9549:43;;;9572:18;;:::i;:::-;-1:-1:-1;9619:1:1;9608:13;;9492:135::o;9632:329::-;9834:2;9816:21;;;9873:1;9853:18;;;9846:29;-1:-1:-1;;;9906:2:1;9891:18;;9884:36;9952:2;9937:18;;9632:329::o;9966:168::-;10006:7;10072:1;10068;10064:6;10060:14;10057:1;10054:21;10049:1;10042:9;10035:17;10031:45;10028:71;;;10079:18;;:::i;:::-;-1:-1:-1;10119:9:1;;9966:168::o;10139:217::-;10179:1;10205;10195:132;;10249:10;10244:3;10240:20;10237:1;10230:31;10284:4;10281:1;10274:15;10312:4;10309:1;10302:15;10195:132;-1:-1:-1;10341:9:1;;10139:217::o;10361:128::-;10401:3;10432:1;10428:6;10425:1;10422:13;10419:39;;;10438:18;;:::i;:::-;-1:-1:-1;10474:9:1;;10361:128::o;12030:184::-;12100:6;12153:2;12141:9;12132:7;12128:23;12124:32;12121:52;;;12169:1;12166;12159:12;12121:52;-1:-1:-1;12192:16:1;;12030:184;-1:-1:-1;12030:184:1:o;12498:245::-;12565:6;12618:2;12606:9;12597:7;12593:23;12589:32;12586:52;;;12634:1;12631;12624:12;12586:52;12666:9;12660:16;12685:28;12707:5;12685:28;:::i;13375:125::-;13415:4;13443:1;13440;13437:8;13434:34;;;13448:18;;:::i;:::-;-1:-1:-1;13485:9:1;;13375:125::o;15783:980::-;16045:4;16093:3;16082:9;16078:19;16124:6;16113:9;16106:25;16150:2;16188:6;16183:2;16172:9;16168:18;16161:34;16231:3;16226:2;16215:9;16211:18;16204:31;16255:6;16290;16284:13;16321:6;16313;16306:22;16359:3;16348:9;16344:19;16337:26;;16398:2;16390:6;16386:15;16372:29;;16419:1;16429:195;16443:6;16440:1;16437:13;16429:195;;;16508:13;;-1:-1:-1;;;;;16504:39:1;16492:52;;16599:15;;;;16564:12;;;;16540:1;16458:9;16429:195;;;-1:-1:-1;;;;;;;16680:32:1;;;;16675:2;16660:18;;16653:60;-1:-1:-1;;;16744:3:1;16729:19;16722:35;16641:3;15783:980;-1:-1:-1;;;15783:980:1:o;17590:306::-;17678:6;17686;17694;17747:2;17735:9;17726:7;17722:23;17718:32;17715:52;;;17763:1;17760;17753:12;17715:52;17792:9;17786:16;17776:26;;17842:2;17831:9;17827:18;17821:25;17811:35;;17886:2;17875:9;17871:18;17865:25;17855:35;;17590:306;;;;;:::o

Swarm Source

ipfs://7d6a808c894214bd3b60fdc4f33ac41b86798a73a94577a8aaed6a0143a4da9e

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.