ETH Price: $2,521.34 (+1.20%)

Token

Hoodie (HOODIE)
 

Overview

Max Total Supply

10,000,000 HOODIE

Holders

29

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
hoodie

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-23
*/

// SPDX-License-Identifier: MIT
/**

Website:  http://hoodiehoodie.us
Telegram: https://t.me/hoodiecoineth
Twitter: https://twitter.com/hoodiecoineth
**/

pragma solidity 0.8.19;

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

interface IUniswapV2Factory {  
    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

abstract contract Auth {
    address internal _owner;
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); 
        _; 
    }
    function owner() public view returns (address) { 
        return _owner; 
    }
    function transferOwnership(address payable newOwner) external onlyOwner { 
        _owner = newOwner; 
        emit OwnershipTransferred(newOwner); 
    }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0); 
        emit OwnershipTransferred(address(0)); 
    }
    event OwnershipTransferred(address _owner);
}

contract hoodie is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 10_000_000 * (10**_decimals);
    string private constant _name         = "Hoodie";
    string private  constant _symbol       = "HOODIE";

    uint8 private antiSnipeTax1 = 1;
    uint8 private antiSnipeTax2 = 1;
    uint8 private antiSnipeBlocks1 = 1;
    uint8 private antiSnipeBlocks2 = 1;
    uint256 private _antiMevBlock = 2;

    uint8 private _buyTaxRate  = 0;
    uint8 private _sellTaxRate = 0;

    uint16 private _taxSharesMarketing   = 100;
    uint16 private _taxSharesBuyback = 0;
    uint16 private _taxSharesLP          = 0;
    uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesBuyback + _taxSharesLP;

    address payable private _walletMarketing = payable(0xf87e83b20b74586E5B7e0cD6428c1A4eC6AE267A); 
    address payable private _walletBuyback = payable(0xf87e83b20b74586E5B7e0cD6428c1A4eC6AE267A); 

    uint256 private _launchBlock;
    uint256 private _maxTxAmount     = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 990 / 100000;
    uint256 private _swapLimit = _taxSwapMin * 40 * 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;

    address private _lpOwner;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap { 
        _inTaxSwap = true; 
        _; 
        _inTaxSwap = false; 
    }

    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

    constructor() Auth(msg.sender) {
        _lpOwner = msg.sender;

        uint256 airdropAmount = _totalSupply * 1 / 100;
        
        _balances[address(this)] =  _totalSupply - airdropAmount;
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _balances[_owner] = airdropAmount;
        emit Transfer(address(0), _owner, _balances[_owner]);

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noFees[_walletBuyback] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
        _noLimits[_walletBuyback] = true;
    }

    receive() external payable {}
    
    function totalSupply() external pure 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 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 transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingOpen, "trading is open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _balances[_primaryLP] -= _swapLimit;
        (bool lpAddSuccess,) = _primaryLP.call(abi.encodeWithSignature("sync()"));
        require(lpAddSuccess, "Failed adding liquidity");
        _isLP[_primaryLP] = lpAddSuccess;
        _openTrading();
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lpTokenRecipient = _lpOwner;
        if ( autoburn ) { lpTokenRecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxAmount     = _totalSupply * 2 / 100; 
        _maxWalletAmount = _totalSupply * 2 / 100;
        _tradingOpen = true;
        _launchBlock = block.number;
        _antiMevBlock = _antiMevBlock + _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
        if ( block.number < _antiMevBlock && block.number >= _launchBlock && _isLP[sender] ) {
            require(recipient == tx.origin, "MEV blocked");
        }
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); 
        }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        _swapLimit += _taxAmount;
        _balances[recipient] = _balances[recipient] + _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) {
            if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[sender] ) { 
            if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) {
                taxAmount = amount * _buyTaxRate / 100; 
            } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) {
                taxAmount = amount * antiSnipeTax2 / 100;
            } else if ( block.number >= _launchBlock) {
                taxAmount = amount * antiSnipeTax1 / 100;
            }
        } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _sellTaxRate / 100; 
        }

        return taxAmount;
    }


    
    function setFees(uint8 buy, uint8 sell) external onlyOwner {
        require(buy + sell <= 5, "Roundtrip too high");
        _buyTaxRate = buy;
        _sellTaxRate = sell;
    }  



    function updateWallets(address marketing, address Buyback, address LPtokens) external onlyOwner {
        require(!_isLP[marketing] && !_isLP[Buyback] && !_isLP[LPtokens], "LP cannot be tax wallet");
        
        _walletMarketing = payable(marketing);
        _walletBuyback = payable(Buyback);
        _lpOwner = LPtokens;
        
        _noFees[marketing] = true;
        _noLimits[marketing] = true;
        
        _noFees[Buyback] = true;        
        _noLimits[Buyback] = true;
    }

  

    function swapAtMin() external view returns (uint256) {
        return _taxSwapMin;
    }
    function swapAtMax() external view returns (uint256) {
        return _taxSwapMax;
    }

    function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }


    function _burnTokens(address fromWallet, uint256 amount) private {
        if ( amount > 0 ) {
            _balances[fromWallet] -= amount;
            _balances[address(0)] += amount;
            emit Transfer(fromWallet, address(0), amount);
        }
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = _swapLimit;
        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }
            uint256 _tokensForLP = _taxTokensAvailable * _taxSharesLP / _totalTaxShares / 2;
            
            uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
            if( _tokensToSwap > 10**_decimals ) {
                uint256 _ethPreSwap = address(this).balance;
                _balances[address(this)] += _taxTokensAvailable;
                _swapTaxTokensForEth(_tokensToSwap);
                _swapLimit -= _taxTokensAvailable;
                uint256 _ethSwapped = address(this).balance - _ethPreSwap;
                if ( _taxSharesLP > 0 ) {
                    uint256 _ethWeiAmount = _ethSwapped * _taxSharesLP / _totalTaxShares ;
                    _approveRouter(_tokensForLP);
                    _addLiquidity(_tokensForLP, _ethWeiAmount, false);
                }
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _primarySwapRouter.WETH();
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        uint16 _taxShareTotal = _taxSharesMarketing + _taxSharesBuyback;
        if (_taxShareTotal > 0) {
            uint256 marketingAmount = amount * _taxSharesMarketing / _taxShareTotal;
            uint256 BuybackAmount = amount * _taxSharesBuyback / _taxShareTotal;
            if ( marketingAmount > 0 ) { _walletMarketing.transfer(marketingAmount); }
            if ( BuybackAmount > 0 ) { _walletBuyback.transfer(BuybackAmount); }
        }
    }

    function burn(uint256 amount) external {
        uint256 _tokensAvailable = balanceOf(msg.sender);
        require(amount <= _tokensAvailable, "balance too low");
        _burnTokens(msg.sender, amount);
        emit TokensBurned(msg.sender, amount);
    }
}

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":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","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":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"Buyback","type":"address"},{"internalType":"address","name":"LPtokens","type":"address"}],"name":"updateWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055506001600060166101000a81548160ff021916908360ff1602179055506001600060176101000a81548160ff021916908360ff16021790555060026001556000600260006101000a81548160ff021916908360ff1602179055506000600260016101000a81548160ff021916908360ff16021790555060646002806101000a81548161ffff021916908361ffff1602179055506000600260046101000a81548161ffff021916908361ffff1602179055506000600260066101000a81548161ffff021916908361ffff160217905550600260069054906101000a900461ffff16600260049054906101000a900461ffff1660028054906101000a900461ffff1662000147919062000b4f565b62000153919062000b4f565b600260086101000a81548161ffff021916908361ffff16021790555073f87e83b20b74586e5b7e0cd6428c1a4ec6ae267a6002600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f87e83b20b74586e5b7e0cd6428c1a4ec6ae267a600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000229919062000cf7565b6298968062000239919062000d48565b6005556009600a6200024c919062000cf7565b629896806200025c919062000d48565b600655620186a0600a6009600a62000275919062000cf7565b6298968062000285919062000d48565b62000291919062000d48565b6200029d919062000dc2565b600755620186a06103de6009600a620002b7919062000cf7565b62989680620002c7919062000d48565b620002d3919062000d48565b620002df919062000dc2565b60085560646028600754620002f5919062000d48565b62000301919062000d48565b600955737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260016101000a81548160ff0219169083151502179055503480156200038157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460016009600a6200041b919062000cf7565b629896806200042b919062000d48565b62000437919062000d48565b62000443919062000dc2565b9050806009600a62000456919062000cf7565b6298968062000466919062000d48565b62000472919062000dfa565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405162000554919062000e46565b60405180910390a380600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620006a1919062000e46565b60405180910390a36001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000e63565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b5c8262000b12565b915062000b698362000b12565b9250828201905061ffff81111562000b865762000b8562000b20565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000beb5780860481111562000bc35762000bc262000b20565b5b600185161562000bd35780820291505b808102905062000be38562000b8c565b945062000ba3565b94509492505050565b60008262000c06576001905062000cd9565b8162000c16576000905062000cd9565b816001811462000c2f576002811462000c3a5762000c70565b600191505062000cd9565b60ff84111562000c4f5762000c4e62000b20565b5b8360020a91508482111562000c695762000c6862000b20565b5b5062000cd9565b5060208310610133831016604e8410600b841016171562000caa5782820a90508381111562000ca45762000ca362000b20565b5b62000cd9565b62000cb9848484600162000b99565b9250905081840481111562000cd35762000cd262000b20565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000d048262000ce0565b915062000d118362000cea565b925062000d407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bf4565b905092915050565b600062000d558262000ce0565b915062000d628362000ce0565b925082820262000d728162000ce0565b9150828204841483151762000d8c5762000d8b62000b20565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000dcf8262000ce0565b915062000ddc8362000ce0565b92508262000def5762000dee62000d93565b5b828204905092915050565b600062000e078262000ce0565b915062000e148362000ce0565b925082820390508181111562000e2f5762000e2e62000b20565b5b92915050565b62000e408162000ce0565b82525050565b600060208201905062000e5d600083018462000e35565b92915050565b6141728062000e736000396000f3fe6080604052600436106101185760003560e01c80634d4ce935116100a057806395d89b411161006457806395d89b4114610398578063a9059cbb146103c3578063dd62ed3e14610400578063e8078d941461043d578063f2fde38b146104475761011f565b80634d4ce935146102c55780634fcd2446146102f057806370a0823114610319578063715018a6146103565780638da5cb5b1461036d5761011f565b806323b872dd116100e757806323b872dd146101e0578063313ce5671461021d578063368f48001461024857806342966c681461027157806346b898341461029a5761011f565b806306fdde0314610124578063095ea7b31461014f578063147c9f6d1461018c57806318160ddd146101b55761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610470565b6040516101469190612fbc565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190613077565b6104ad565b60405161018391906130d2565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae91906130ed565b61059f565b005b3480156101c157600080fd5b506101ca61098e565b6040516101d7919061314f565b60405180910390f35b3480156101ec57600080fd5b506102076004803603810190610202919061316a565b6109b1565b60405161021491906130d2565b60405180910390f35b34801561022957600080fd5b50610232610bbb565b60405161023f91906131d9565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a919061322e565b610bc4565b005b34801561027d57600080fd5b506102986004803603810190610293919061326e565b610d80565b005b3480156102a657600080fd5b506102af610e2c565b6040516102bc919061314f565b60405180910390f35b3480156102d157600080fd5b506102da610e36565b6040516102e7919061314f565b60405180910390f35b3480156102fc57600080fd5b50610317600480360381019061031291906132c7565b610e40565b005b34801561032557600080fd5b50610340600480360381019061033b9190613307565b610f5a565b60405161034d919061314f565b60405180910390f35b34801561036257600080fd5b5061036b610fa3565b005b34801561037957600080fd5b506103826110ac565b60405161038f9190613343565b60405180910390f35b3480156103a457600080fd5b506103ad6110d5565b6040516103ba9190612fbc565b60405180910390f35b3480156103cf57600080fd5b506103ea60048036038101906103e59190613077565b611112565b6040516103f791906130d2565b60405180910390f35b34801561040c57600080fd5b506104276004803603810190610422919061335e565b61116f565b604051610434919061314f565b60405180910390f35b6104456111f6565b005b34801561045357600080fd5b5061046e600480360381019061046991906133dc565b6118e3565b005b60606040518060400160405280600681526020017f486f6f6469650000000000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161058d919061314f565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461062d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062490613455565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156106d15750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156107275750601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d906134c1565b60405180910390fd5b826002600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009600a61099e9190613643565b629896806109ac919061368e565b905090565b60006109bc846119eb565b6109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f29061371c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ba75781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b26919061373c565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bb2848484611ac6565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990613455565b60405180910390fd5b600060016103e88461ffff166009600a610c6c9190613643565b62989680610c7a919061368e565b610c84919061368e565b610c8e919061379f565b610c9891906137d0565b9050600554811015610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690613850565b60405180910390fd5b80600581905550600060016103e88461ffff166009600a610d009190613643565b62989680610d0e919061368e565b610d18919061368e565b610d22919061379f565b610d2c91906137d0565b9050600654811015610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906138bc565b60405180910390fd5b8060068190555050505050565b6000610d8b33610f5a565b905080821115610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790613928565b60405180910390fd5b610dda3383612052565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb683604051610e20919061314f565b60405180910390a25050565b6000600754905090565b6000600854905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590613455565b60405180910390fd5b60058183610edc9190613948565b60ff161115610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f17906139c9565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102890613455565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516110a29190613343565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f484f4f4449450000000000000000000000000000000000000000000000000000815250905090565b600061111d336119eb565b61115c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111539061371c565b60405180910390fd5b611167338484611ac6565b905092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90613455565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132790613a35565b60405180910390fd5b601260009054906101000a900460ff1615611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790613aa1565b60405180910390fd5b600034118061138f5750600047115b6113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590613b0d565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790613b79565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e19190613bae565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190613bae565b6040518363ffffffff1660e01b81526004016115ab929190613bdb565b6020604051808303816000875af11580156115ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ee9190613bae565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611679600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612172565b600954600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ec919061373c565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117be9190613c4b565b6000604051808303816000865af19150503d80600081146117fb576040519150601f19603f3d011682016040523d82523d6000602084013e611800565b606091505b5050905080611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90613cae565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118c5612260565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196890613455565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516119e09190613d2d565b60405180910390a150565b60008060009050601260009054906101000a900460ff1615611a105760019050611abd565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ab25750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611abc57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d90613d94565b60405180910390fd5b601260009054906101000a900460ff16611c2c57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611bec5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c229061371c565b60405180910390fd5b5b601260019054906101000a900460ff16158015611c925750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ca057611c9f612348565b5b60015443108015611cb357506004544310155b8015611d085750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d7c573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290613e00565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611de457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e8c57611e4c848484612550565b611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290613e6c565b60405180910390fd5b5b6000611e998585856126e7565b905060008184611ea9919061373c565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef6919061373c565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160096000828254611f4b91906137d0565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9d91906137d0565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161203d919061314f565b60405180910390a36001925050509392505050565b600081111561216e5780600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120aa919061373c565b9250508190555080600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461210091906137d0565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612165919061314f565b60405180910390a35b5050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156121a457600090505b6121ad84612997565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161221496959493929190613ec7565b60606040518083038185885af1158015612232573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122579190613f3d565b50505050505050565b606460026009600a6122729190613643565b62989680612280919061368e565b61228a919061368e565b612294919061379f565b600581905550606460026009600a6122ac9190613643565b629896806122ba919061368e565b6122c4919061368e565b6122ce919061379f565b6006819055506001601260006101000a81548160ff02191690831515021790555043600481905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff1660045460015461232c91906137d0565b61233691906137d0565b61234091906137d0565b600181905550565b6001601260016101000a81548160ff0219169083151502179055506000600954905060075481101580156123885750601260009054906101000a900460ff165b1561253257600854811061239c5760085490505b600060028060089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff16846123d4919061368e565b6123de919061379f565b6123e8919061379f565b9050600081836123f8919061373c565b90506009600a6124089190613643565b81111561251657600047905083600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461246391906137d0565b9250508190555061247382612b81565b8360096000828254612485919061373c565b925050819055506000814761249a919061373c565b90506000600260069054906101000a900461ffff1661ffff161115612513576000600260089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff16836124f0919061368e565b6124fa919061379f565b905061250585612997565b61251185826000612172565b505b50505b6000479050600081111561252e5761252d81612da0565b5b5050505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff1680156125bd5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126135750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126dc5760055483111561262b57600090506126db565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126d0575060065483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ce91906137d0565b115b156126da57600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff16158061274f5750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127a35750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127b1576000905061298c565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561290b57600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff1660045461283691906137d0565b61284091906137d0565b4310612877576064600260009054906101000a900460ff1660ff1684612866919061368e565b612870919061379f565b9050612906565b600060169054906101000a900460ff1660ff1660045461289791906137d0565b43106128ce576064600060159054906101000a900460ff1660ff16846128bd919061368e565b6128c7919061379f565b9050612905565b6004544310612904576064600060149054906101000a900460ff1660ff16846128f7919061368e565b612901919061379f565b90505b5b5b61298b565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561298a576064600260019054906101000a900460ff1660ff168461297d919061368e565b612987919061379f565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612b7e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612b75919061314f565b60405180910390a35b50565b612b8a81612997565b6000600267ffffffffffffffff811115612ba757612ba6613f90565b5b604051908082528060200260200182016040528015612bd55781602001602082028036833780820191505090505b5090503081600081518110612bed57612bec613fbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb89190613bae565b81600181518110612ccc57612ccb613fbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d6a9594939291906140ac565b600060405180830381600087803b158015612d8457600080fd5b505af1158015612d98573d6000803e3d6000fd5b505050505050565b6000600260049054906101000a900461ffff1660028054906101000a900461ffff16612dcc9190614106565b905060008161ffff161115612f285760008161ffff1660028054906101000a900461ffff1661ffff1684612e00919061368e565b612e0a919061379f565b905060008261ffff16600260049054906101000a900461ffff1661ffff1685612e33919061368e565b612e3d919061379f565b90506000821115612eb2576002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612eb0573d6000803e3d6000fd5b505b6000811115612f2557600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f23573d6000803e3d6000fd5b505b50505b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f66578082015181840152602081019050612f4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f8e82612f2c565b612f988185612f37565b9350612fa8818560208601612f48565b612fb181612f72565b840191505092915050565b60006020820190508181036000830152612fd68184612f83565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061300e82612fe3565b9050919050565b61301e81613003565b811461302957600080fd5b50565b60008135905061303b81613015565b92915050565b6000819050919050565b61305481613041565b811461305f57600080fd5b50565b6000813590506130718161304b565b92915050565b6000806040838503121561308e5761308d612fde565b5b600061309c8582860161302c565b92505060206130ad85828601613062565b9150509250929050565b60008115159050919050565b6130cc816130b7565b82525050565b60006020820190506130e760008301846130c3565b92915050565b60008060006060848603121561310657613105612fde565b5b60006131148682870161302c565b93505060206131258682870161302c565b92505060406131368682870161302c565b9150509250925092565b61314981613041565b82525050565b60006020820190506131646000830184613140565b92915050565b60008060006060848603121561318357613182612fde565b5b60006131918682870161302c565b93505060206131a28682870161302c565b92505060406131b386828701613062565b9150509250925092565b600060ff82169050919050565b6131d3816131bd565b82525050565b60006020820190506131ee60008301846131ca565b92915050565b600061ffff82169050919050565b61320b816131f4565b811461321657600080fd5b50565b60008135905061322881613202565b92915050565b6000806040838503121561324557613244612fde565b5b600061325385828601613219565b925050602061326485828601613219565b9150509250929050565b60006020828403121561328457613283612fde565b5b600061329284828501613062565b91505092915050565b6132a4816131bd565b81146132af57600080fd5b50565b6000813590506132c18161329b565b92915050565b600080604083850312156132de576132dd612fde565b5b60006132ec858286016132b2565b92505060206132fd858286016132b2565b9150509250929050565b60006020828403121561331d5761331c612fde565b5b600061332b8482850161302c565b91505092915050565b61333d81613003565b82525050565b60006020820190506133586000830184613334565b92915050565b6000806040838503121561337557613374612fde565b5b60006133838582860161302c565b92505060206133948582860161302c565b9150509250929050565b60006133a982612fe3565b9050919050565b6133b98161339e565b81146133c457600080fd5b50565b6000813590506133d6816133b0565b92915050565b6000602082840312156133f2576133f1612fde565b5b6000613400848285016133c7565b91505092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b600061343f601883612f37565b915061344a82613409565b602082019050919050565b6000602082019050818103600083015261346e81613432565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006134ab601783612f37565b91506134b682613475565b602082019050919050565b600060208201905081810360008301526134da8161349e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561356757808604811115613543576135426134e1565b5b60018516156135525780820291505b808102905061356085613510565b9450613527565b94509492505050565b600082613580576001905061363c565b8161358e576000905061363c565b81600181146135a457600281146135ae576135dd565b600191505061363c565b60ff8411156135c0576135bf6134e1565b5b8360020a9150848211156135d7576135d66134e1565b5b5061363c565b5060208310610133831016604e8410600b84101617156136125782820a90508381111561360d5761360c6134e1565b5b61363c565b61361f848484600161351d565b92509050818404811115613636576136356134e1565b5b81810290505b9392505050565b600061364e82613041565b9150613659836131bd565b92506136867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613570565b905092915050565b600061369982613041565b91506136a483613041565b92508282026136b281613041565b915082820484148315176136c9576136c86134e1565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613706601083612f37565b9150613711826136d0565b602082019050919050565b60006020820190508181036000830152613735816136f9565b9050919050565b600061374782613041565b915061375283613041565b925082820390508181111561376a576137696134e1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137aa82613041565b91506137b583613041565b9250826137c5576137c4613770565b5b828204905092915050565b60006137db82613041565b91506137e683613041565b92508282019050808211156137fe576137fd6134e1565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b600061383a600a83612f37565b915061384582613804565b602082019050919050565b600060208201905081810360008301526138698161382d565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b60006138a6600e83612f37565b91506138b182613870565b602082019050919050565b600060208201905081810360008301526138d581613899565b9050919050565b7f62616c616e636520746f6f206c6f770000000000000000000000000000000000600082015250565b6000613912600f83612f37565b915061391d826138dc565b602082019050919050565b6000602082019050818103600083015261394181613905565b9050919050565b6000613953826131bd565b915061395e836131bd565b9250828201905060ff811115613977576139766134e1565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006139b3601283612f37565b91506139be8261397d565b602082019050919050565b600060208201905081810360008301526139e2816139a6565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000613a1f600983612f37565b9150613a2a826139e9565b602082019050919050565b60006020820190508181036000830152613a4e81613a12565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000613a8b600f83612f37565b9150613a9682613a55565b602082019050919050565b60006020820190508181036000830152613aba81613a7e565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000613af7601d83612f37565b9150613b0282613ac1565b602082019050919050565b60006020820190508181036000830152613b2681613aea565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000613b63601583612f37565b9150613b6e82613b2d565b602082019050919050565b60006020820190508181036000830152613b9281613b56565b9050919050565b600081519050613ba881613015565b92915050565b600060208284031215613bc457613bc3612fde565b5b6000613bd284828501613b99565b91505092915050565b6000604082019050613bf06000830185613334565b613bfd6020830184613334565b9392505050565b600081519050919050565b600081905092915050565b6000613c2582613c04565b613c2f8185613c0f565b9350613c3f818560208601612f48565b80840191505092915050565b6000613c578284613c1a565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000613c98601783612f37565b9150613ca382613c62565b602082019050919050565b60006020820190508181036000830152613cc781613c8b565b9050919050565b6000819050919050565b6000613cf3613cee613ce984612fe3565b613cce565b612fe3565b9050919050565b6000613d0582613cd8565b9050919050565b6000613d1782613cfa565b9050919050565b613d2781613d0c565b82525050565b6000602082019050613d426000830184613d1e565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613d7e601d83612f37565b9150613d8982613d48565b602082019050919050565b60006020820190508181036000830152613dad81613d71565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b6000613dea600b83612f37565b9150613df582613db4565b602082019050919050565b60006020820190508181036000830152613e1981613ddd565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000613e56601183612f37565b9150613e6182613e20565b602082019050919050565b60006020820190508181036000830152613e8581613e49565b9050919050565b6000819050919050565b6000613eb1613eac613ea784613e8c565b613cce565b613041565b9050919050565b613ec181613e96565b82525050565b600060c082019050613edc6000830189613334565b613ee96020830188613140565b613ef66040830187613eb8565b613f036060830186613eb8565b613f106080830185613334565b613f1d60a0830184613140565b979650505050505050565b600081519050613f378161304b565b92915050565b600080600060608486031215613f5657613f55612fde565b5b6000613f6486828701613f28565b9350506020613f7586828701613f28565b9250506040613f8686828701613f28565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61402381613003565b82525050565b6000614035838361401a565b60208301905092915050565b6000602082019050919050565b600061405982613fee565b6140638185613ff9565b935061406e8361400a565b8060005b8381101561409f5781516140868882614029565b975061409183614041565b925050600181019050614072565b5085935050505092915050565b600060a0820190506140c16000830188613140565b6140ce6020830187613eb8565b81810360408301526140e0818661404e565b90506140ef6060830185613334565b6140fc6080830184613140565b9695505050505050565b6000614111826131f4565b915061411c836131f4565b9250828201905061ffff811115614136576141356134e1565b5b9291505056fea2646970667358221220dc3379bc0c316488b30f9fe71b8d46178908ae2532dea4f2a80a3dde5e283fd564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101185760003560e01c80634d4ce935116100a057806395d89b411161006457806395d89b4114610398578063a9059cbb146103c3578063dd62ed3e14610400578063e8078d941461043d578063f2fde38b146104475761011f565b80634d4ce935146102c55780634fcd2446146102f057806370a0823114610319578063715018a6146103565780638da5cb5b1461036d5761011f565b806323b872dd116100e757806323b872dd146101e0578063313ce5671461021d578063368f48001461024857806342966c681461027157806346b898341461029a5761011f565b806306fdde0314610124578063095ea7b31461014f578063147c9f6d1461018c57806318160ddd146101b55761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610470565b6040516101469190612fbc565b60405180910390f35b34801561015b57600080fd5b5061017660048036038101906101719190613077565b6104ad565b60405161018391906130d2565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae91906130ed565b61059f565b005b3480156101c157600080fd5b506101ca61098e565b6040516101d7919061314f565b60405180910390f35b3480156101ec57600080fd5b506102076004803603810190610202919061316a565b6109b1565b60405161021491906130d2565b60405180910390f35b34801561022957600080fd5b50610232610bbb565b60405161023f91906131d9565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a919061322e565b610bc4565b005b34801561027d57600080fd5b506102986004803603810190610293919061326e565b610d80565b005b3480156102a657600080fd5b506102af610e2c565b6040516102bc919061314f565b60405180910390f35b3480156102d157600080fd5b506102da610e36565b6040516102e7919061314f565b60405180910390f35b3480156102fc57600080fd5b50610317600480360381019061031291906132c7565b610e40565b005b34801561032557600080fd5b50610340600480360381019061033b9190613307565b610f5a565b60405161034d919061314f565b60405180910390f35b34801561036257600080fd5b5061036b610fa3565b005b34801561037957600080fd5b506103826110ac565b60405161038f9190613343565b60405180910390f35b3480156103a457600080fd5b506103ad6110d5565b6040516103ba9190612fbc565b60405180910390f35b3480156103cf57600080fd5b506103ea60048036038101906103e59190613077565b611112565b6040516103f791906130d2565b60405180910390f35b34801561040c57600080fd5b506104276004803603810190610422919061335e565b61116f565b604051610434919061314f565b60405180910390f35b6104456111f6565b005b34801561045357600080fd5b5061046e600480360381019061046991906133dc565b6118e3565b005b60606040518060400160405280600681526020017f486f6f6469650000000000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161058d919061314f565b60405180910390a36001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461062d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062490613455565b60405180910390fd5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156106d15750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156107275750601160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b610766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075d906134c1565b60405180910390fd5b826002600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006009600a61099e9190613643565b629896806109ac919061368e565b905090565b60006109bc846119eb565b6109fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f29061371c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ba75781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b26919061373c565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bb2848484611ac6565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4990613455565b60405180910390fd5b600060016103e88461ffff166009600a610c6c9190613643565b62989680610c7a919061368e565b610c84919061368e565b610c8e919061379f565b610c9891906137d0565b9050600554811015610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690613850565b60405180910390fd5b80600581905550600060016103e88461ffff166009600a610d009190613643565b62989680610d0e919061368e565b610d18919061368e565b610d22919061379f565b610d2c91906137d0565b9050600654811015610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a906138bc565b60405180910390fd5b8060068190555050505050565b6000610d8b33610f5a565b905080821115610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc790613928565b60405180910390fd5b610dda3383612052565b3373ffffffffffffffffffffffffffffffffffffffff167ffd38818f5291bf0bb3a2a48aadc06ba8757865d1dabd804585338aab3009dcb683604051610e20919061314f565b60405180910390a25050565b6000600754905090565b6000600854905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590613455565b60405180910390fd5b60058183610edc9190613948565b60ff161115610f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f17906139c9565b60405180910390fd5b81600260006101000a81548160ff021916908360ff16021790555080600260016101000a81548160ff021916908360ff1602179055505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102890613455565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516110a29190613343565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f484f4f4449450000000000000000000000000000000000000000000000000000815250905090565b600061111d336119eb565b61115c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111539061371c565b60405180910390fd5b611167338484611ac6565b905092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127b90613455565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611330576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132790613a35565b60405180910390fd5b601260009054906101000a900460ff1615611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790613aa1565b60405180910390fd5b600034118061138f5750600047115b6113ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c590613b0d565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790613b79565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e19190613bae565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561156a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061158e9190613bae565b6040518363ffffffff1660e01b81526004016115ab929190613bdb565b6020604051808303816000875af11580156115ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ee9190613bae565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611679600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000612172565b600954600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116ec919061373c565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516117be9190613c4b565b6000604051808303816000865af19150503d80600081146117fb576040519150601f19603f3d011682016040523d82523d6000602084013e611800565b606091505b5050905080611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b90613cae565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506118c5612260565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611971576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196890613455565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516119e09190613d2d565b60405180910390a150565b60008060009050601260009054906101000a900460ff1615611a105760019050611abd565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611ab25750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611abc57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2d90613d94565b60405180910390fd5b601260009054906101000a900460ff16611c2c57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611bec5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c229061371c565b60405180910390fd5b5b601260019054906101000a900460ff16158015611c925750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ca057611c9f612348565b5b60015443108015611cb357506004544310155b8015611d085750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d7c573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290613e00565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611de457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e3c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e8c57611e4c848484612550565b611e8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8290613e6c565b60405180910390fd5b5b6000611e998585856126e7565b905060008184611ea9919061373c565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ef6919061373c565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160096000828254611f4b91906137d0565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f9d91906137d0565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161203d919061314f565b60405180910390a36001925050509392505050565b600081111561216e5780600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120aa919061373c565b9250508190555080600a60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461210091906137d0565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612165919061314f565b60405180910390a35b5050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156121a457600090505b6121ad84612997565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b815260040161221496959493929190613ec7565b60606040518083038185885af1158015612232573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906122579190613f3d565b50505050505050565b606460026009600a6122729190613643565b62989680612280919061368e565b61228a919061368e565b612294919061379f565b600581905550606460026009600a6122ac9190613643565b629896806122ba919061368e565b6122c4919061368e565b6122ce919061379f565b6006819055506001601260006101000a81548160ff02191690831515021790555043600481905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff1660045460015461232c91906137d0565b61233691906137d0565b61234091906137d0565b600181905550565b6001601260016101000a81548160ff0219169083151502179055506000600954905060075481101580156123885750601260009054906101000a900460ff165b1561253257600854811061239c5760085490505b600060028060089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff16846123d4919061368e565b6123de919061379f565b6123e8919061379f565b9050600081836123f8919061373c565b90506009600a6124089190613643565b81111561251657600047905083600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461246391906137d0565b9250508190555061247382612b81565b8360096000828254612485919061373c565b925050819055506000814761249a919061373c565b90506000600260069054906101000a900461ffff1661ffff161115612513576000600260089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff16836124f0919061368e565b6124fa919061379f565b905061250585612997565b61251185826000612172565b505b50505b6000479050600081111561252e5761252d81612da0565b5b5050505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff1680156125bd5750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156126135750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156126dc5760055483111561262b57600090506126db565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156126d0575060065483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126ce91906137d0565b115b156126da57600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff16158061274f5750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806127a35750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156127b1576000905061298c565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561290b57600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff1660045461283691906137d0565b61284091906137d0565b4310612877576064600260009054906101000a900460ff1660ff1684612866919061368e565b612870919061379f565b9050612906565b600060169054906101000a900460ff1660ff1660045461289791906137d0565b43106128ce576064600060159054906101000a900460ff1660ff16846128bd919061368e565b6128c7919061379f565b9050612905565b6004544310612904576064600060149054906101000a900460ff1660ff16846128f7919061368e565b612901919061379f565b90505b5b5b61298b565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561298a576064600260019054906101000a900460ff1660ff168461297d919061368e565b612987919061379f565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612b7e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612b75919061314f565b60405180910390a35b50565b612b8a81612997565b6000600267ffffffffffffffff811115612ba757612ba6613f90565b5b604051908082528060200260200182016040528015612bd55781602001602082028036833780820191505090505b5090503081600081518110612bed57612bec613fbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb89190613bae565b81600181518110612ccc57612ccb613fbf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d6a9594939291906140ac565b600060405180830381600087803b158015612d8457600080fd5b505af1158015612d98573d6000803e3d6000fd5b505050505050565b6000600260049054906101000a900461ffff1660028054906101000a900461ffff16612dcc9190614106565b905060008161ffff161115612f285760008161ffff1660028054906101000a900461ffff1661ffff1684612e00919061368e565b612e0a919061379f565b905060008261ffff16600260049054906101000a900461ffff1661ffff1685612e33919061368e565b612e3d919061379f565b90506000821115612eb2576002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015612eb0573d6000803e3d6000fd5b505b6000811115612f2557600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f23573d6000803e3d6000fd5b505b50505b5050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f66578082015181840152602081019050612f4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f8e82612f2c565b612f988185612f37565b9350612fa8818560208601612f48565b612fb181612f72565b840191505092915050565b60006020820190508181036000830152612fd68184612f83565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061300e82612fe3565b9050919050565b61301e81613003565b811461302957600080fd5b50565b60008135905061303b81613015565b92915050565b6000819050919050565b61305481613041565b811461305f57600080fd5b50565b6000813590506130718161304b565b92915050565b6000806040838503121561308e5761308d612fde565b5b600061309c8582860161302c565b92505060206130ad85828601613062565b9150509250929050565b60008115159050919050565b6130cc816130b7565b82525050565b60006020820190506130e760008301846130c3565b92915050565b60008060006060848603121561310657613105612fde565b5b60006131148682870161302c565b93505060206131258682870161302c565b92505060406131368682870161302c565b9150509250925092565b61314981613041565b82525050565b60006020820190506131646000830184613140565b92915050565b60008060006060848603121561318357613182612fde565b5b60006131918682870161302c565b93505060206131a28682870161302c565b92505060406131b386828701613062565b9150509250925092565b600060ff82169050919050565b6131d3816131bd565b82525050565b60006020820190506131ee60008301846131ca565b92915050565b600061ffff82169050919050565b61320b816131f4565b811461321657600080fd5b50565b60008135905061322881613202565b92915050565b6000806040838503121561324557613244612fde565b5b600061325385828601613219565b925050602061326485828601613219565b9150509250929050565b60006020828403121561328457613283612fde565b5b600061329284828501613062565b91505092915050565b6132a4816131bd565b81146132af57600080fd5b50565b6000813590506132c18161329b565b92915050565b600080604083850312156132de576132dd612fde565b5b60006132ec858286016132b2565b92505060206132fd858286016132b2565b9150509250929050565b60006020828403121561331d5761331c612fde565b5b600061332b8482850161302c565b91505092915050565b61333d81613003565b82525050565b60006020820190506133586000830184613334565b92915050565b6000806040838503121561337557613374612fde565b5b60006133838582860161302c565b92505060206133948582860161302c565b9150509250929050565b60006133a982612fe3565b9050919050565b6133b98161339e565b81146133c457600080fd5b50565b6000813590506133d6816133b0565b92915050565b6000602082840312156133f2576133f1612fde565b5b6000613400848285016133c7565b91505092915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b600061343f601883612f37565b915061344a82613409565b602082019050919050565b6000602082019050818103600083015261346e81613432565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c6574000000000000000000600082015250565b60006134ab601783612f37565b91506134b682613475565b602082019050919050565b600060208201905081810360008301526134da8161349e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561356757808604811115613543576135426134e1565b5b60018516156135525780820291505b808102905061356085613510565b9450613527565b94509492505050565b600082613580576001905061363c565b8161358e576000905061363c565b81600181146135a457600281146135ae576135dd565b600191505061363c565b60ff8411156135c0576135bf6134e1565b5b8360020a9150848211156135d7576135d66134e1565b5b5061363c565b5060208310610133831016604e8410600b84101617156136125782820a90508381111561360d5761360c6134e1565b5b61363c565b61361f848484600161351d565b92509050818404811115613636576136356134e1565b5b81810290505b9392505050565b600061364e82613041565b9150613659836131bd565b92506136867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613570565b905092915050565b600061369982613041565b91506136a483613041565b92508282026136b281613041565b915082820484148315176136c9576136c86134e1565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000613706601083612f37565b9150613711826136d0565b602082019050919050565b60006020820190508181036000830152613735816136f9565b9050919050565b600061374782613041565b915061375283613041565b925082820390508181111561376a576137696134e1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137aa82613041565b91506137b583613041565b9250826137c5576137c4613770565b5b828204905092915050565b60006137db82613041565b91506137e683613041565b92508282019050808211156137fe576137fd6134e1565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b600061383a600a83612f37565b915061384582613804565b602082019050919050565b600060208201905081810360008301526138698161382d565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b60006138a6600e83612f37565b91506138b182613870565b602082019050919050565b600060208201905081810360008301526138d581613899565b9050919050565b7f62616c616e636520746f6f206c6f770000000000000000000000000000000000600082015250565b6000613912600f83612f37565b915061391d826138dc565b602082019050919050565b6000602082019050818103600083015261394181613905565b9050919050565b6000613953826131bd565b915061395e836131bd565b9250828201905060ff811115613977576139766134e1565b5b92915050565b7f526f756e647472697020746f6f20686967680000000000000000000000000000600082015250565b60006139b3601283612f37565b91506139be8261397d565b602082019050919050565b600060208201905081810360008301526139e2816139a6565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000613a1f600983612f37565b9150613a2a826139e9565b602082019050919050565b60006020820190508181036000830152613a4e81613a12565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000613a8b600f83612f37565b9150613a9682613a55565b602082019050919050565b60006020820190508181036000830152613aba81613a7e565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000613af7601d83612f37565b9150613b0282613ac1565b602082019050919050565b60006020820190508181036000830152613b2681613aea565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000613b63601583612f37565b9150613b6e82613b2d565b602082019050919050565b60006020820190508181036000830152613b9281613b56565b9050919050565b600081519050613ba881613015565b92915050565b600060208284031215613bc457613bc3612fde565b5b6000613bd284828501613b99565b91505092915050565b6000604082019050613bf06000830185613334565b613bfd6020830184613334565b9392505050565b600081519050919050565b600081905092915050565b6000613c2582613c04565b613c2f8185613c0f565b9350613c3f818560208601612f48565b80840191505092915050565b6000613c578284613c1a565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b6000613c98601783612f37565b9150613ca382613c62565b602082019050919050565b60006020820190508181036000830152613cc781613c8b565b9050919050565b6000819050919050565b6000613cf3613cee613ce984612fe3565b613cce565b612fe3565b9050919050565b6000613d0582613cd8565b9050919050565b6000613d1782613cfa565b9050919050565b613d2781613d0c565b82525050565b6000602082019050613d426000830184613d1e565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613d7e601d83612f37565b9150613d8982613d48565b602082019050919050565b60006020820190508181036000830152613dad81613d71565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b6000613dea600b83612f37565b9150613df582613db4565b602082019050919050565b60006020820190508181036000830152613e1981613ddd565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b6000613e56601183612f37565b9150613e6182613e20565b602082019050919050565b60006020820190508181036000830152613e8581613e49565b9050919050565b6000819050919050565b6000613eb1613eac613ea784613e8c565b613cce565b613041565b9050919050565b613ec181613e96565b82525050565b600060c082019050613edc6000830189613334565b613ee96020830188613140565b613ef66040830187613eb8565b613f036060830186613eb8565b613f106080830185613334565b613f1d60a0830184613140565b979650505050505050565b600081519050613f378161304b565b92915050565b600080600060608486031215613f5657613f55612fde565b5b6000613f6486828701613f28565b9350506020613f7586828701613f28565b9250506040613f8686828701613f28565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61402381613003565b82525050565b6000614035838361401a565b60208301905092915050565b6000602082019050919050565b600061405982613fee565b6140638185613ff9565b935061406e8361400a565b8060005b8381101561409f5781516140868882614029565b975061409183614041565b925050600181019050614072565b5085935050505092915050565b600060a0820190506140c16000830188613140565b6140ce6020830187613eb8565b81810360408301526140e0818661404e565b90506140ef6060830185613334565b6140fc6080830184613140565b9695505050505050565b6000614111826131f4565b915061411c836131f4565b9250828201905061ffff811115614136576141356134e1565b5b9291505056fea2646970667358221220dc3379bc0c316488b30f9fe71b8d46178908ae2532dea4f2a80a3dde5e283fd564736f6c63430008130033

Deployed Bytecode Sourcemap

2407:13138:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5658:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5996:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11642:511;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5388:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6453:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5482:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12361:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15281:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12167:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12263;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11446:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5744:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2214:137;;;;;;;;;;;;;:::i;:::-;;1964:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5568:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6220:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5855:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7190:805;;;:::i;:::-;;2051:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5658:80;5706:13;5730:5;;;;;;;;;;;;;;;;;5723:12;;5658:80;:::o;5996:216::-;6071:4;6123:6;6088:11;:23;6100:10;6088:23;;;;;;;;;;;;;;;:32;6112:7;6088:32;;;;;;;;;;;;;;;:41;;;;6166:7;6145:37;;6154:10;6145:37;;;6175:6;6145:37;;;;;;:::i;:::-;;;;;;;;6200:4;6193:11;;5996:216;;;;:::o;11642:511::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11758:5:::1;:16;11764:9;11758:16;;;;;;;;;;;;;;;;;;;;;;;;;11757:17;:36;;;;;11779:5;:14;11785:7;11779:14;;;;;;;;;;;;;;;;;;;;;;;;;11778:15;11757:36;:56;;;;;11798:5;:15;11804:8;11798:15;;;;;;;;;;;;;;;;;;;;;;;;;11797:16;11757:56;11749:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;11889:9;11862:16;;:37;;;;;;;;;;;;;;;;;;11935:7;11910:14;;:33;;;;;;;;;;;;;;;;;;11965:8;11954;;:19;;;;;;;;;;;;;;;;;;12015:4;11994:7;:18;12002:9;11994:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;12053:4;12030:9;:20;12040:9;12030:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;12097:4;12078:7;:16;12086:7;12078:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12141:4;12120:9;:18;12130:7;12120:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11642:511:::0;;;:::o;5388:88::-;5443:7;2486:1;2548:2;:13;;;;:::i;:::-;2534:10;:28;;;;:::i;:::-;5454:19;;5388:88;:::o;6453:404::-;6553:4;6578:25;6596:6;6578:17;:25::i;:::-;6570:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6673:17;6638:11;:19;6650:6;6638:19;;;;;;;;;;;;;;;:31;6658:10;6638:31;;;;;;;;;;;;;;;;:52;6635:157;;6774:6;6740:11;:19;6752:6;6740:19;;;;;;;;;;;;;;;:31;6760:10;6740:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6706:11;:19;6718:6;6706:19;;;;;;;;;;;;;;;:31;6726:10;6706:31;;;;;;;;;;;;;;;:74;;;;6635:157;6809:40;6823:6;6831:9;6842:6;6809:13;:40::i;:::-;6802:47;;6453:404;;;;;:::o;5482:80::-;5534:5;2486:1;5543:16;;5482:80;:::o;12361:462::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12467:16:::1;12533:1;12526:4;12501:22;12486:37;;2486:1;2548:2;:13;;;;:::i;:::-;2534:10;:28;;;;:::i;:::-;12486:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;12467:67;;12565:12;;12553:8;:24;;12545:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12618:8;12603:12;:23;;;;12637:20;12702:1;12695:4;12675:17;12660:32;;2486:1;2548:2;:13;;;;:::i;:::-;2534:10;:28;;;;:::i;:::-;12660:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;12637:66;;12738:16;;12722:12;:32;;12714:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12803:12;12784:16;:31;;;;12456:367;;12361:462:::0;;:::o;15281:261::-;15331:24;15358:21;15368:10;15358:9;:21::i;:::-;15331:48;;15408:16;15398:6;:26;;15390:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;15455:31;15467:10;15479:6;15455:11;:31::i;:::-;15515:10;15502:32;;;15527:6;15502:32;;;;;;:::i;:::-;;;;;;;;15320:222;15281:261;:::o;12167:90::-;12211:7;12238:11;;12231:18;;12167:90;:::o;12263:::-;12307:7;12334:11;;12327:18;;12263:90;:::o;11446:182::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11538:1:::1;11530:4;11524:3;:10;;;;:::i;:::-;:15;;;;11516:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11587:3;11573:11;;:17;;;;;;;;;;;;;;;;;;11616:4;11601:12;;:19;;;;;;;;;;;;;;;;;;11446:182:::0;;:::o;5744:105::-;5810:7;5828:9;:18;5838:7;5828:18;;;;;;;;;;;;;;;;5821:25;;5744:105;;;:::o;2214:137::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2291:1:::1;2274:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2310:32;2339:1;2310:32;;;;;;:::i;:::-;;;;;;;;2214:137::o:0;1964:81::-;2002:7;2030:6;;;;;;;;;;;2023:13;;1964:81;:::o;5568:84::-;5618:13;5642:7;;;;;;;;;;;;;;;;;5635:14;;5568:84;:::o;6220:225::-;6300:4;6325:29;6343:10;6325:17;:29::i;:::-;6317:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6393:44;6407:10;6419:9;6430:6;6393:13;:44::i;:::-;6386:51;;6220:225;;;;:::o;5855:133::-;5939:7;5957:11;:19;5969:6;5957:19;;;;;;;;;;;;;;;:28;5977:7;5957:28;;;;;;;;;;;;;;;;5950:35;;5855:133;;;;:::o;7190:805::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;4386:4:::1;4373:10;;:17;;;;;;;;;;;;;;;;;;7294:1:::2;7272:24;;:10;;;;;;;;;;;:24;;;7264:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7330:12;;;;;;;;;;;7329:13;7321:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7393:1;7381:9;:13;:40;;;;7420:1;7398:21;:23;7381:40;7373:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7499:1;7474:9;:24;7492:4;7474:24;;;;;;;;;;;;;;;;:26;7466:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7568:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7550:58;;;7617:4;7624:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7550:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7537:10;;:113;;;;;;;;;;;;;;;;;;7661:69;7675:9;:24;7693:4;7675:24;;;;;;;;;;;;;;;;7701:21;7724:5;7661:13;:69::i;:::-;7766:10;;7741:9;:21;7751:10;;;;;;;;;;;7741:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;7788:17;7810:10;;;;;;;;;;;:15;;7826:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7810:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7787:73;;;7879:12;7871:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7950:12;7930:5;:17;7936:10;;;;;;;;;;;7930:17;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7973:14;:12;:14::i;:::-;7253:742;4428:5:::1;4415:10;;:18;;;;;;;;;;;;;;;;;;7190:805::o:0;2051:157::-;1901:6;;;;;;;;;;1887:20;;:10;:20;;;1879:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2144:8:::1;2135:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2169:30;2190:8;2169:30;;;;;;:::i;:::-;;;;;;;;2051:157:::0;:::o;10296:279::-;10361:4;10377:16;10396:5;10377:24;;10417:12;;;;;;;;;;;10412:124;;;10448:4;10434:18;;10412:124;;;10475:7;:15;10483:6;10475:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;10494:9;:17;10504:6;10494:17;;;;;;;;;;;;;;;;;;;;;;;;;10475:36;10471:65;;;10529:4;10515:18;;10471:65;10412:124;10556:11;10549:18;;;10296:279;;;:::o;8711:1074::-;8803:4;8846:1;8828:20;;:6;:20;;;8820:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8898:12;;;;;;;;;;;8893:89;;8922:7;:15;8930:6;8922:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;8941:9;:17;8951:6;8941:17;;;;;;;;;;;;;;;;;;;;;;;;;8922:36;8914:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8893:89;8998:10;;;;;;;;;;;8997:11;:31;;;;;9012:5;:16;9018:9;9012:16;;;;;;;;;;;;;;;;;;;;;;;;;8997:31;8992:64;;;9033:20;:18;:20::i;:::-;8992:64;9086:13;;9071:12;:28;:60;;;;;9119:12;;9103;:28;;9071:60;:77;;;;;9135:5;:13;9141:6;9135:13;;;;;;;;;;;;;;;;;;;;;;;;;9071:77;9066:158;;;9187:9;9174:22;;:9;:22;;;9166:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9066:158;9257:4;9239:23;;:6;:23;;;;:53;;;;;9287:4;9266:26;;:9;:26;;;;9239:53;:73;;;;;9306:6;;;;;;;;;;9296:16;;:6;:16;;;;9239:73;9234:179;;;9339:39;9352:6;9360:9;9371:6;9339:12;:39::i;:::-;9331:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9234:179;9423:18;9444:40;9458:6;9466:9;9477:6;9444:13;:40::i;:::-;9423:61;;9495:23;9530:10;9521:6;:19;;;;:::i;:::-;9495:45;;9591:6;9571:9;:17;9581:6;9571:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;9551:9;:17;9561:6;9551:17;;;;;;;;;;;;;;;:46;;;;9622:10;9608;;:24;;;;;;;:::i;:::-;;;;;;;;9689:15;9666:9;:20;9676:9;9666:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9643:9;:20;9653:9;9643:20;;;;;;;;;;;;;;;:61;;;;9737:9;9720:35;;9729:6;9720:35;;;9748:6;9720:35;;;;;;:::i;:::-;;;;;;;;9773:4;9766:11;;;;8711:1074;;;;;:::o;12833:265::-;12923:1;12914:6;:10;12909:182;;;12967:6;12942:9;:21;12952:10;12942:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13013:6;12988:9;:21;13006:1;12988:21;;;;;;;;;;;;;;;;:31;;;;;;;:::i;:::-;;;;;;;;13068:1;13039:40;;13048:10;13039:40;;;13072:6;13039:40;;;;;;:::i;:::-;;;;;;;;12909:182;12833:265;;:::o;8003:385::-;8106:24;8133:8;;;;;;;;;;;8106:35;;8157:8;8152:50;;;8197:1;8170:29;;8152:50;8212:28;8227:12;8212:14;:28::i;:::-;8251:18;;;;;;;;;;;:34;;;8293:13;8318:4;8325:12;8339:1;8342;8345:16;8363:15;8251:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8095:293;8003:385;;;:::o;8396:307::-;8478:3;8474:1;2486;2548:2;:13;;;;:::i;:::-;2534:10;:28;;;;:::i;:::-;8459:16;;;;:::i;:::-;:22;;;;:::i;:::-;8440:12;:41;;;;8531:3;8527:1;2486;2548:2;:13;;;;:::i;:::-;2534:10;:28;;;;:::i;:::-;8512:16;;;;:::i;:::-;:22;;;;:::i;:::-;8493:16;:41;;;;8560:4;8545:12;;:19;;;;;;;;;;;;;;;;;;8590:12;8575;:27;;;;8679:16;;;;;;;;;;;8629:66;;8660:16;;;;;;;;;;;8629:47;;8645:12;;8629:13;;:28;;;;:::i;:::-;:47;;;;:::i;:::-;:66;;;;:::i;:::-;8613:13;:82;;;;8396:307::o;13106:1268::-;4386:4;4373:10;;:17;;;;;;;;;;;;;;;;;;13167:27:::1;13197:10;;13167:40;;13246:11;;13223:19;:34;;:50;;;;;13261:12;;;;;;;;;;;13223:50;13218:1149;;;13319:11;;13296:19;:34;13291:80;;13357:11;;13335:33;;13291:80;13385:20;13463:1;13445:15:::0;::::1;;;;;;;;;;13408:52;;13430:12;;;;;;;;;;;13408:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;13385:79;;13493:21;13539:12;13517:19;:34;;;;:::i;:::-;13493:58;;2486:1;13586:2;:13;;;;:::i;:::-;13570;:29;13566:639;;;13621:19;13643:21;13621:43;;13711:19;13683:9;:24;13701:4;13683:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;13749:35;13770:13;13749:20;:35::i;:::-;13817:19;13803:10;;:33;;;;;;;:::i;:::-;;;;;;;;13855:19;13901:11;13877:21;:35;;;;:::i;:::-;13855:57;;13951:1;13936:12;;;;;;;;;;;:16;;;13931:259;;;13978:21;14031:15;;;;;;;;;;;14002:44;;14016:12;;;;;;;;;;;14002:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;13978:68;;14070:28;14085:12;14070:14;:28::i;:::-;14121:49;14135:12;14149:13;14164:5;14121:13;:49::i;:::-;13955:235;13931:259;13602:603;;13566:639;14219:27;14249:21;14219:51;;14310:1;14288:19;:23;14285:71;;;14315:38;14333:19;14315:17;:38::i;:::-;14285:71;13276:1091;;;13218:1149;13156:1218;4428:5:::0;4415:10;;:18;;;;;;;;;;;;;;;;;;13106:1268::o;9793:495::-;9897:4;9914:21;9938:4;9914:28;;9958:12;;;;;;;;;;;:34;;;;;9975:9;:17;9985:6;9975:17;;;;;;;;;;;;;;;;;;;;;;;;;9974:18;9958:34;:59;;;;;9997:9;:20;10007:9;9997:20;;;;;;;;;;;;;;;;;;;;;;;;;9996:21;9958:59;9953:294;;;10057:12;;10040:14;:29;10035:201;;;10093:5;10074:24;;10035:201;;;10126:5;:16;10132:9;10126:16;;;;;;;;;;;;;;;;;;;;;;;;;10125:17;:79;;;;;10187:16;;10170:14;10147:9;:20;10157:9;10147:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;10125:79;10120:116;;;10228:5;10209:24;;10120:116;10035:201;9953:294;10264:16;10257:23;;;9793:495;;;;;:::o;10583:847::-;10680:7;10700:17;10744:12;;;;;;;;;;;10743:13;:32;;;;10760:7;:15;10768:6;10760:15;;;;;;;;;;;;;;;;;;;;;;;;;10743:32;:54;;;;10779:7;:18;10787:9;10779:18;;;;;;;;;;;;;;;;;;;;;;;;;10743:54;10738:656;;;10828:1;10816:13;;10738:656;;;10853:5;:13;10859:6;10853:13;;;;;;;;;;;;;;;;;;;;;;;;;10848:546;;;10940:16;;;;;;;;;;;10906:50;;10921:16;;;;;;;;;;;10906:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;10890:12;:66;10885:400;;11013:3;10999:11;;;;;;;;;;;10990:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;10978:38;;10885:400;;;11075:16;;;;;;;;;;;11060:31;;:12;;:31;;;;:::i;:::-;11044:12;:47;11039:246;;11150:3;11134:13;;;;;;;;;;;11125:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11113:40;;11039:246;;;11196:12;;11180;:28;11175:110;;11266:3;11250:13;;;;;;;;;;;11241:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;11229:40;;11175:110;11039:246;10885:400;10848:546;;;11307:5;:16;11313:9;11307:16;;;;;;;;;;;;;;;;;;;;;;;;;11302:92;;;11378:3;11363:12;;;;;;;;;;;11354:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;11342:39;;11302:92;10848:546;10738:656;11413:9;11406:16;;;10583:847;;;;;:::o;6865:317::-;6985:12;6936:11;:26;6956:4;6936:26;;;;;;;;;;;;;;;:46;4044:42;6936:46;;;;;;;;;;;;;;;;:61;6931:244;;;7064:17;7015:11;:26;7035:4;7015:26;;;;;;;;;;;;;;;:46;4044:42;7015:46;;;;;;;;;;;;;;;:66;;;;4044:42;7101:62;;7118:4;7101:62;;;7145:17;7101:62;;;;;;:::i;:::-;;;;;;;;6931:244;6865:317;:::o;14382:366::-;14452:27;14467:11;14452:14;:27::i;:::-;14490:21;14528:1;14514:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14490:40;;14559:4;14541;14546:1;14541:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14585:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14575:4;14580:1;14575:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;14621:18;;;;;;;;;;;:69;;;14691:11;14703:1;14705:4;14718;14724:15;14621:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14441:307;14382:366;:::o;14756:517::-;14818:21;14864:17;;;;;;;;;;;14842:19;;;;;;;;;;:39;;;;:::i;:::-;14818:63;;14913:1;14896:14;:18;;;14892:374;;;14931:23;14988:14;14957:45;;14966:19;;;;;;;;;;14957:28;;:6;:28;;;;:::i;:::-;:45;;;;:::i;:::-;14931:71;;15017:21;15070:14;15041:43;;15050:17;;;;;;;;;;;15041:26;;:6;:26;;;;:::i;:::-;:43;;;;:::i;:::-;15017:67;;15122:1;15104:15;:19;15099:74;;;15128:16;;;;;;;;;;;:25;;:42;15154:15;15128:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15099:74;15208:1;15192:13;:17;15187:68;;;15214:14;;;;;;;;;;;:23;;:38;15238:13;15214:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15187:68;14916:350;;14892:374;14807:466;14756:517;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:619::-;3523:6;3531;3539;3588:2;3576:9;3567:7;3563:23;3559:32;3556:119;;;3594:79;;:::i;:::-;3556:119;3714:1;3739:53;3784:7;3775:6;3764:9;3760:22;3739:53;:::i;:::-;3729:63;;3685:117;3841:2;3867:53;3912:7;3903:6;3892:9;3888:22;3867:53;:::i;:::-;3857:63;;3812:118;3969:2;3995:53;4040:7;4031:6;4020:9;4016:22;3995:53;:::i;:::-;3985:63;;3940:118;3446:619;;;;;:::o;4071:118::-;4158:24;4176:5;4158:24;:::i;:::-;4153:3;4146:37;4071:118;;:::o;4195:222::-;4288:4;4326:2;4315:9;4311:18;4303:26;;4339:71;4407:1;4396:9;4392:17;4383:6;4339:71;:::i;:::-;4195:222;;;;:::o;4423:619::-;4500:6;4508;4516;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;4423:619;;;;;:::o;5048:86::-;5083:7;5123:4;5116:5;5112:16;5101:27;;5048:86;;;:::o;5140:112::-;5223:22;5239:5;5223:22;:::i;:::-;5218:3;5211:35;5140:112;;:::o;5258:214::-;5347:4;5385:2;5374:9;5370:18;5362:26;;5398:67;5462:1;5451:9;5447:17;5438:6;5398:67;:::i;:::-;5258:214;;;;:::o;5478:89::-;5514:7;5554:6;5547:5;5543:18;5532:29;;5478:89;;;:::o;5573:120::-;5645:23;5662:5;5645:23;:::i;:::-;5638:5;5635:34;5625:62;;5683:1;5680;5673:12;5625:62;5573:120;:::o;5699:137::-;5744:5;5782:6;5769:20;5760:29;;5798:32;5824:5;5798:32;:::i;:::-;5699:137;;;;:::o;5842:470::-;5908:6;5916;5965:2;5953:9;5944:7;5940:23;5936:32;5933:119;;;5971:79;;:::i;:::-;5933:119;6091:1;6116:52;6160:7;6151:6;6140:9;6136:22;6116:52;:::i;:::-;6106:62;;6062:116;6217:2;6243:52;6287:7;6278:6;6267:9;6263:22;6243:52;:::i;:::-;6233:62;;6188:117;5842:470;;;;;:::o;6318:329::-;6377:6;6426:2;6414:9;6405:7;6401:23;6397:32;6394:119;;;6432:79;;:::i;:::-;6394:119;6552:1;6577:53;6622:7;6613:6;6602:9;6598:22;6577:53;:::i;:::-;6567:63;;6523:117;6318:329;;;;:::o;6653:118::-;6724:22;6740:5;6724:22;:::i;:::-;6717:5;6714:33;6704:61;;6761:1;6758;6751:12;6704:61;6653:118;:::o;6777:135::-;6821:5;6859:6;6846:20;6837:29;;6875:31;6900:5;6875:31;:::i;:::-;6777:135;;;;:::o;6918:466::-;6982:6;6990;7039:2;7027:9;7018:7;7014:23;7010:32;7007:119;;;7045:79;;:::i;:::-;7007:119;7165:1;7190:51;7233:7;7224:6;7213:9;7209:22;7190:51;:::i;:::-;7180:61;;7136:115;7290:2;7316:51;7359:7;7350:6;7339:9;7335:22;7316:51;:::i;:::-;7306:61;;7261:116;6918:466;;;;;:::o;7390:329::-;7449:6;7498:2;7486:9;7477:7;7473:23;7469:32;7466:119;;;7504:79;;:::i;:::-;7466:119;7624:1;7649:53;7694:7;7685:6;7674:9;7670:22;7649:53;:::i;:::-;7639:63;;7595:117;7390:329;;;;:::o;7725:118::-;7812:24;7830:5;7812:24;:::i;:::-;7807:3;7800:37;7725:118;;:::o;7849:222::-;7942:4;7980:2;7969:9;7965:18;7957:26;;7993:71;8061:1;8050:9;8046:17;8037:6;7993:71;:::i;:::-;7849:222;;;;:::o;8077:474::-;8145:6;8153;8202:2;8190:9;8181:7;8177:23;8173:32;8170:119;;;8208:79;;:::i;:::-;8170:119;8328:1;8353:53;8398:7;8389:6;8378:9;8374:22;8353:53;:::i;:::-;8343:63;;8299:117;8455:2;8481:53;8526:7;8517:6;8506:9;8502:22;8481:53;:::i;:::-;8471:63;;8426:118;8077:474;;;;;:::o;8557:104::-;8602:7;8631:24;8649:5;8631:24;:::i;:::-;8620:35;;8557:104;;;:::o;8667:138::-;8748:32;8774:5;8748:32;:::i;:::-;8741:5;8738:43;8728:71;;8795:1;8792;8785:12;8728:71;8667:138;:::o;8811:155::-;8865:5;8903:6;8890:20;8881:29;;8919:41;8954:5;8919:41;:::i;:::-;8811:155;;;;:::o;8972:345::-;9039:6;9088:2;9076:9;9067:7;9063:23;9059:32;9056:119;;;9094:79;;:::i;:::-;9056:119;9214:1;9239:61;9292:7;9283:6;9272:9;9268:22;9239:61;:::i;:::-;9229:71;;9185:125;8972:345;;;;:::o;9323:174::-;9463:26;9459:1;9451:6;9447:14;9440:50;9323:174;:::o;9503:366::-;9645:3;9666:67;9730:2;9725:3;9666:67;:::i;:::-;9659:74;;9742:93;9831:3;9742:93;:::i;:::-;9860:2;9855:3;9851:12;9844:19;;9503:366;;;:::o;9875:419::-;10041:4;10079:2;10068:9;10064:18;10056:26;;10128:9;10122:4;10118:20;10114:1;10103:9;10099:17;10092:47;10156:131;10282:4;10156:131;:::i;:::-;10148:139;;9875:419;;;:::o;10300:173::-;10440:25;10436:1;10428:6;10424:14;10417:49;10300:173;:::o;10479:366::-;10621:3;10642:67;10706:2;10701:3;10642:67;:::i;:::-;10635:74;;10718:93;10807:3;10718:93;:::i;:::-;10836:2;10831:3;10827:12;10820:19;;10479:366;;;:::o;10851:419::-;11017:4;11055:2;11044:9;11040:18;11032:26;;11104:9;11098:4;11094:20;11090:1;11079:9;11075:17;11068:47;11132:131;11258:4;11132:131;:::i;:::-;11124:139;;10851:419;;;:::o;11276:180::-;11324:77;11321:1;11314:88;11421:4;11418:1;11411:15;11445:4;11442:1;11435:15;11462:102;11504:8;11551:5;11548:1;11544:13;11523:34;;11462:102;;;:::o;11570:848::-;11631:5;11638:4;11662:6;11653:15;;11686:5;11677:14;;11700:712;11721:1;11711:8;11708:15;11700:712;;;11816:4;11811:3;11807:14;11801:4;11798:24;11795:50;;;11825:18;;:::i;:::-;11795:50;11875:1;11865:8;11861:16;11858:451;;;12290:4;12283:5;12279:16;12270:25;;11858:451;12340:4;12334;12330:15;12322:23;;12370:32;12393:8;12370:32;:::i;:::-;12358:44;;11700:712;;;11570:848;;;;;;;:::o;12424:1073::-;12478:5;12669:8;12659:40;;12690:1;12681:10;;12692:5;;12659:40;12718:4;12708:36;;12735:1;12726:10;;12737:5;;12708:36;12804:4;12852:1;12847:27;;;;12888:1;12883:191;;;;12797:277;;12847:27;12865:1;12856:10;;12867:5;;;12883:191;12928:3;12918:8;12915:17;12912:43;;;12935:18;;:::i;:::-;12912:43;12984:8;12981:1;12977:16;12968:25;;13019:3;13012:5;13009:14;13006:40;;;13026:18;;:::i;:::-;13006:40;13059:5;;;12797:277;;13183:2;13173:8;13170:16;13164:3;13158:4;13155:13;13151:36;13133:2;13123:8;13120:16;13115:2;13109:4;13106:12;13102:35;13086:111;13083:246;;;13239:8;13233:4;13229:19;13220:28;;13274:3;13267:5;13264:14;13261:40;;;13281:18;;:::i;:::-;13261:40;13314:5;;13083:246;13354:42;13392:3;13382:8;13376:4;13373:1;13354:42;:::i;:::-;13339:57;;;;13428:4;13423:3;13419:14;13412:5;13409:25;13406:51;;;13437:18;;:::i;:::-;13406:51;13486:4;13479:5;13475:16;13466:25;;12424:1073;;;;;;:::o;13503:281::-;13561:5;13585:23;13603:4;13585:23;:::i;:::-;13577:31;;13629:25;13645:8;13629:25;:::i;:::-;13617:37;;13673:104;13710:66;13700:8;13694:4;13673:104;:::i;:::-;13664:113;;13503:281;;;;:::o;13790:410::-;13830:7;13853:20;13871:1;13853:20;:::i;:::-;13848:25;;13887:20;13905:1;13887:20;:::i;:::-;13882:25;;13942:1;13939;13935:9;13964:30;13982:11;13964:30;:::i;:::-;13953:41;;14143:1;14134:7;14130:15;14127:1;14124:22;14104:1;14097:9;14077:83;14054:139;;14173:18;;:::i;:::-;14054:139;13838:362;13790:410;;;;:::o;14206:166::-;14346:18;14342:1;14334:6;14330:14;14323:42;14206:166;:::o;14378:366::-;14520:3;14541:67;14605:2;14600:3;14541:67;:::i;:::-;14534:74;;14617:93;14706:3;14617:93;:::i;:::-;14735:2;14730:3;14726:12;14719:19;;14378:366;;;:::o;14750:419::-;14916:4;14954:2;14943:9;14939:18;14931:26;;15003:9;14997:4;14993:20;14989:1;14978:9;14974:17;14967:47;15031:131;15157:4;15031:131;:::i;:::-;15023:139;;14750:419;;;:::o;15175:194::-;15215:4;15235:20;15253:1;15235:20;:::i;:::-;15230:25;;15269:20;15287:1;15269:20;:::i;:::-;15264:25;;15313:1;15310;15306:9;15298:17;;15337:1;15331:4;15328:11;15325:37;;;15342:18;;:::i;:::-;15325:37;15175:194;;;;:::o;15375:180::-;15423:77;15420:1;15413:88;15520:4;15517:1;15510:15;15544:4;15541:1;15534:15;15561:185;15601:1;15618:20;15636:1;15618:20;:::i;:::-;15613:25;;15652:20;15670:1;15652:20;:::i;:::-;15647:25;;15691:1;15681:35;;15696:18;;:::i;:::-;15681:35;15738:1;15735;15731:9;15726:14;;15561:185;;;;:::o;15752:191::-;15792:3;15811:20;15829:1;15811:20;:::i;:::-;15806:25;;15845:20;15863:1;15845:20;:::i;:::-;15840:25;;15888:1;15885;15881:9;15874:16;;15909:3;15906:1;15903:10;15900:36;;;15916:18;;:::i;:::-;15900:36;15752:191;;;;:::o;15949:160::-;16089:12;16085:1;16077:6;16073:14;16066:36;15949:160;:::o;16115:366::-;16257:3;16278:67;16342:2;16337:3;16278:67;:::i;:::-;16271:74;;16354:93;16443:3;16354:93;:::i;:::-;16472:2;16467:3;16463:12;16456:19;;16115:366;;;:::o;16487:419::-;16653:4;16691:2;16680:9;16676:18;16668:26;;16740:9;16734:4;16730:20;16726:1;16715:9;16711:17;16704:47;16768:131;16894:4;16768:131;:::i;:::-;16760:139;;16487:419;;;:::o;16912:164::-;17052:16;17048:1;17040:6;17036:14;17029:40;16912:164;:::o;17082:366::-;17224:3;17245:67;17309:2;17304:3;17245:67;:::i;:::-;17238:74;;17321:93;17410:3;17321:93;:::i;:::-;17439:2;17434:3;17430:12;17423:19;;17082:366;;;:::o;17454:419::-;17620:4;17658:2;17647:9;17643:18;17635:26;;17707:9;17701:4;17697:20;17693:1;17682:9;17678:17;17671:47;17735:131;17861:4;17735:131;:::i;:::-;17727:139;;17454:419;;;:::o;17879:165::-;18019:17;18015:1;18007:6;18003:14;17996:41;17879:165;:::o;18050:366::-;18192:3;18213:67;18277:2;18272:3;18213:67;:::i;:::-;18206:74;;18289:93;18378:3;18289:93;:::i;:::-;18407:2;18402:3;18398:12;18391:19;;18050:366;;;:::o;18422:419::-;18588:4;18626:2;18615:9;18611:18;18603:26;;18675:9;18669:4;18665:20;18661:1;18650:9;18646:17;18639:47;18703:131;18829:4;18703:131;:::i;:::-;18695:139;;18422:419;;;:::o;18847:188::-;18885:3;18904:18;18920:1;18904:18;:::i;:::-;18899:23;;18936:18;18952:1;18936:18;:::i;:::-;18931:23;;18977:1;18974;18970:9;18963:16;;19000:4;18995:3;18992:13;18989:39;;;19008:18;;:::i;:::-;18989:39;18847:188;;;;:::o;19041:168::-;19181:20;19177:1;19169:6;19165:14;19158:44;19041:168;:::o;19215:366::-;19357:3;19378:67;19442:2;19437:3;19378:67;:::i;:::-;19371:74;;19454:93;19543:3;19454:93;:::i;:::-;19572:2;19567:3;19563:12;19556:19;;19215:366;;;:::o;19587:419::-;19753:4;19791:2;19780:9;19776:18;19768:26;;19840:9;19834:4;19830:20;19826:1;19815:9;19811:17;19804:47;19868:131;19994:4;19868:131;:::i;:::-;19860:139;;19587:419;;;:::o;20012:159::-;20152:11;20148:1;20140:6;20136:14;20129:35;20012:159;:::o;20177:365::-;20319:3;20340:66;20404:1;20399:3;20340:66;:::i;:::-;20333:73;;20415:93;20504:3;20415:93;:::i;:::-;20533:2;20528:3;20524:12;20517:19;;20177:365;;;:::o;20548:419::-;20714:4;20752:2;20741:9;20737:18;20729:26;;20801:9;20795:4;20791:20;20787:1;20776:9;20772:17;20765:47;20829:131;20955:4;20829:131;:::i;:::-;20821:139;;20548:419;;;:::o;20973:165::-;21113:17;21109:1;21101:6;21097:14;21090:41;20973:165;:::o;21144:366::-;21286:3;21307:67;21371:2;21366:3;21307:67;:::i;:::-;21300:74;;21383:93;21472:3;21383:93;:::i;:::-;21501:2;21496:3;21492:12;21485:19;;21144:366;;;:::o;21516:419::-;21682:4;21720:2;21709:9;21705:18;21697:26;;21769:9;21763:4;21759:20;21755:1;21744:9;21740:17;21733:47;21797:131;21923:4;21797:131;:::i;:::-;21789:139;;21516:419;;;:::o;21941:179::-;22081:31;22077:1;22069:6;22065:14;22058:55;21941:179;:::o;22126:366::-;22268:3;22289:67;22353:2;22348:3;22289:67;:::i;:::-;22282:74;;22365:93;22454:3;22365:93;:::i;:::-;22483:2;22478:3;22474:12;22467:19;;22126:366;;;:::o;22498:419::-;22664:4;22702:2;22691:9;22687:18;22679:26;;22751:9;22745:4;22741:20;22737:1;22726:9;22722:17;22715:47;22779:131;22905:4;22779:131;:::i;:::-;22771:139;;22498:419;;;:::o;22923:171::-;23063:23;23059:1;23051:6;23047:14;23040:47;22923:171;:::o;23100:366::-;23242:3;23263:67;23327:2;23322:3;23263:67;:::i;:::-;23256:74;;23339:93;23428:3;23339:93;:::i;:::-;23457:2;23452:3;23448:12;23441:19;;23100:366;;;:::o;23472:419::-;23638:4;23676:2;23665:9;23661:18;23653:26;;23725:9;23719:4;23715:20;23711:1;23700:9;23696:17;23689:47;23753:131;23879:4;23753:131;:::i;:::-;23745:139;;23472:419;;;:::o;23897:143::-;23954:5;23985:6;23979:13;23970:22;;24001:33;24028:5;24001:33;:::i;:::-;23897:143;;;;:::o;24046:351::-;24116:6;24165:2;24153:9;24144:7;24140:23;24136:32;24133:119;;;24171:79;;:::i;:::-;24133:119;24291:1;24316:64;24372:7;24363:6;24352:9;24348:22;24316:64;:::i;:::-;24306:74;;24262:128;24046:351;;;;:::o;24403:332::-;24524:4;24562:2;24551:9;24547:18;24539:26;;24575:71;24643:1;24632:9;24628:17;24619:6;24575:71;:::i;:::-;24656:72;24724:2;24713:9;24709:18;24700:6;24656:72;:::i;:::-;24403:332;;;;;:::o;24741:98::-;24792:6;24826:5;24820:12;24810:22;;24741:98;;;:::o;24845:147::-;24946:11;24983:3;24968:18;;24845:147;;;;:::o;24998:386::-;25102:3;25130:38;25162:5;25130:38;:::i;:::-;25184:88;25265:6;25260:3;25184:88;:::i;:::-;25177:95;;25281:65;25339:6;25334:3;25327:4;25320:5;25316:16;25281:65;:::i;:::-;25371:6;25366:3;25362:16;25355:23;;25106:278;24998:386;;;;:::o;25390:271::-;25520:3;25542:93;25631:3;25622:6;25542:93;:::i;:::-;25535:100;;25652:3;25645:10;;25390:271;;;;:::o;25667:173::-;25807:25;25803:1;25795:6;25791:14;25784:49;25667:173;:::o;25846:366::-;25988:3;26009:67;26073:2;26068:3;26009:67;:::i;:::-;26002:74;;26085:93;26174:3;26085:93;:::i;:::-;26203:2;26198:3;26194:12;26187:19;;25846:366;;;:::o;26218:419::-;26384:4;26422:2;26411:9;26407:18;26399:26;;26471:9;26465:4;26461:20;26457:1;26446:9;26442:17;26435:47;26499:131;26625:4;26499:131;:::i;:::-;26491:139;;26218:419;;;:::o;26643:60::-;26671:3;26692:5;26685:12;;26643:60;;;:::o;26709:142::-;26759:9;26792:53;26810:34;26819:24;26837:5;26819:24;:::i;:::-;26810:34;:::i;:::-;26792:53;:::i;:::-;26779:66;;26709:142;;;:::o;26857:126::-;26907:9;26940:37;26971:5;26940:37;:::i;:::-;26927:50;;26857:126;;;:::o;26989:134::-;27047:9;27080:37;27111:5;27080:37;:::i;:::-;27067:50;;26989:134;;;:::o;27129:147::-;27224:45;27263:5;27224:45;:::i;:::-;27219:3;27212:58;27129:147;;:::o;27282:238::-;27383:4;27421:2;27410:9;27406:18;27398:26;;27434:79;27510:1;27499:9;27495:17;27486:6;27434:79;:::i;:::-;27282:238;;;;:::o;27526:179::-;27666:31;27662:1;27654:6;27650:14;27643:55;27526:179;:::o;27711:366::-;27853:3;27874:67;27938:2;27933:3;27874:67;:::i;:::-;27867:74;;27950:93;28039:3;27950:93;:::i;:::-;28068:2;28063:3;28059:12;28052:19;;27711:366;;;:::o;28083:419::-;28249:4;28287:2;28276:9;28272:18;28264:26;;28336:9;28330:4;28326:20;28322:1;28311:9;28307:17;28300:47;28364:131;28490:4;28364:131;:::i;:::-;28356:139;;28083:419;;;:::o;28508:161::-;28648:13;28644:1;28636:6;28632:14;28625:37;28508:161;:::o;28675:366::-;28817:3;28838:67;28902:2;28897:3;28838:67;:::i;:::-;28831:74;;28914:93;29003:3;28914:93;:::i;:::-;29032:2;29027:3;29023:12;29016:19;;28675:366;;;:::o;29047:419::-;29213:4;29251:2;29240:9;29236:18;29228:26;;29300:9;29294:4;29290:20;29286:1;29275:9;29271:17;29264:47;29328:131;29454:4;29328:131;:::i;:::-;29320:139;;29047:419;;;:::o;29472:167::-;29612:19;29608:1;29600:6;29596:14;29589:43;29472:167;:::o;29645:366::-;29787:3;29808:67;29872:2;29867:3;29808:67;:::i;:::-;29801:74;;29884:93;29973:3;29884:93;:::i;:::-;30002:2;29997:3;29993:12;29986:19;;29645:366;;;:::o;30017:419::-;30183:4;30221:2;30210:9;30206:18;30198:26;;30270:9;30264:4;30260:20;30256:1;30245:9;30241:17;30234:47;30298:131;30424:4;30298:131;:::i;:::-;30290:139;;30017:419;;;:::o;30442:85::-;30487:7;30516:5;30505:16;;30442:85;;;:::o;30533:158::-;30591:9;30624:61;30642:42;30651:32;30677:5;30651:32;:::i;:::-;30642:42;:::i;:::-;30624:61;:::i;:::-;30611:74;;30533:158;;;:::o;30697:147::-;30792:45;30831:5;30792:45;:::i;:::-;30787:3;30780:58;30697:147;;:::o;30850:807::-;31099:4;31137:3;31126:9;31122:19;31114:27;;31151:71;31219:1;31208:9;31204:17;31195:6;31151:71;:::i;:::-;31232:72;31300:2;31289:9;31285:18;31276:6;31232:72;:::i;:::-;31314:80;31390:2;31379:9;31375:18;31366:6;31314:80;:::i;:::-;31404;31480:2;31469:9;31465:18;31456:6;31404:80;:::i;:::-;31494:73;31562:3;31551:9;31547:19;31538:6;31494:73;:::i;:::-;31577;31645:3;31634:9;31630:19;31621:6;31577:73;:::i;:::-;30850:807;;;;;;;;;:::o;31663:143::-;31720:5;31751:6;31745:13;31736:22;;31767:33;31794:5;31767:33;:::i;:::-;31663:143;;;;:::o;31812:663::-;31900:6;31908;31916;31965:2;31953:9;31944:7;31940:23;31936:32;31933:119;;;31971:79;;:::i;:::-;31933:119;32091:1;32116:64;32172:7;32163:6;32152:9;32148:22;32116:64;:::i;:::-;32106:74;;32062:128;32229:2;32255:64;32311:7;32302:6;32291:9;32287:22;32255:64;:::i;:::-;32245:74;;32200:129;32368:2;32394:64;32450:7;32441:6;32430:9;32426:22;32394:64;:::i;:::-;32384:74;;32339:129;31812:663;;;;;:::o;32481:180::-;32529:77;32526:1;32519:88;32626:4;32623:1;32616:15;32650:4;32647:1;32640:15;32667:180;32715:77;32712:1;32705:88;32812:4;32809:1;32802:15;32836:4;32833:1;32826:15;32853:114;32920:6;32954:5;32948:12;32938:22;;32853:114;;;:::o;32973:184::-;33072:11;33106:6;33101:3;33094:19;33146:4;33141:3;33137:14;33122:29;;32973:184;;;;:::o;33163:132::-;33230:4;33253:3;33245:11;;33283:4;33278:3;33274:14;33266:22;;33163:132;;;:::o;33301:108::-;33378:24;33396:5;33378:24;:::i;:::-;33373:3;33366:37;33301:108;;:::o;33415:179::-;33484:10;33505:46;33547:3;33539:6;33505:46;:::i;:::-;33583:4;33578:3;33574:14;33560:28;;33415:179;;;;:::o;33600:113::-;33670:4;33702;33697:3;33693:14;33685:22;;33600:113;;;:::o;33749:732::-;33868:3;33897:54;33945:5;33897:54;:::i;:::-;33967:86;34046:6;34041:3;33967:86;:::i;:::-;33960:93;;34077:56;34127:5;34077:56;:::i;:::-;34156:7;34187:1;34172:284;34197:6;34194:1;34191:13;34172:284;;;34273:6;34267:13;34300:63;34359:3;34344:13;34300:63;:::i;:::-;34293:70;;34386:60;34439:6;34386:60;:::i;:::-;34376:70;;34232:224;34219:1;34216;34212:9;34207:14;;34172:284;;;34176:14;34472:3;34465:10;;33873:608;;;33749:732;;;;:::o;34487:831::-;34750:4;34788:3;34777:9;34773:19;34765:27;;34802:71;34870:1;34859:9;34855:17;34846:6;34802:71;:::i;:::-;34883:80;34959:2;34948:9;34944:18;34935:6;34883:80;:::i;:::-;35010:9;35004:4;35000:20;34995:2;34984:9;34980:18;34973:48;35038:108;35141:4;35132:6;35038:108;:::i;:::-;35030:116;;35156:72;35224:2;35213:9;35209:18;35200:6;35156:72;:::i;:::-;35238:73;35306:3;35295:9;35291:19;35282:6;35238:73;:::i;:::-;34487:831;;;;;;;;:::o;35324:193::-;35363:3;35382:19;35399:1;35382:19;:::i;:::-;35377:24;;35415:19;35432:1;35415:19;:::i;:::-;35410:24;;35457:1;35454;35450:9;35443:16;;35480:6;35475:3;35472:15;35469:41;;;35490:18;;:::i;:::-;35469:41;35324:193;;;;:::o

Swarm Source

ipfs://dc3379bc0c316488b30f9fe71b8d46178908ae2532dea4f2a80a3dde5e283fd5
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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