ETH Price: $3,065.41 (+3.25%)
Gas: 10 Gwei

Token

SAKURA (SAKURA)
 

Overview

Max Total Supply

10,000,000,000 SAKURA

Holders

80

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
15,596,146.158506607 SAKURA

Value
$0.00
0xc92d5ce55ff458e6540b49bda33b5c0aaeca5bd1
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:
SAKURA

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-18
*/

//SPDX-License-Identifier: MIT

/** 
─────────────────────────────────────────────────────────────────────────────────────────────────
─██████████████─██████████████─██████──████████─██████──██████─████████████████───██████████████─
─██░░░░░░░░░░██─██░░░░░░░░░░██─██░░██──██░░░░██─██░░██──██░░██─██░░░░░░░░░░░░██───██░░░░░░░░░░██─
─██░░██████████─██░░██████░░██─██░░██──██░░████─██░░██──██░░██─██░░████████░░██───██░░██████░░██─
─██░░██─────────██░░██──██░░██─██░░██──██░░██───██░░██──██░░██─██░░██────██░░██───██░░██──██░░██─
─██░░██████████─██░░██████░░██─██░░██████░░██───██░░██──██░░██─██░░████████░░██───██░░██████░░██─
─██░░░░░░░░░░██─██░░░░░░░░░░██─██░░░░░░░░░░██───██░░██──██░░██─██░░░░░░░░░░░░██───██░░░░░░░░░░██─
─██████████░░██─██░░██████░░██─██░░██████░░██───██░░██──██░░██─██░░██████░░████───██░░██████░░██─
─────────██░░██─██░░██──██░░██─██░░██──██░░██───██░░██──██░░██─██░░██──██░░██─────██░░██──██░░██─
─██████████░░██─██░░██──██░░██─██░░██──██░░████─██░░██████░░██─██░░██──██░░██████─██░░██──██░░██─
─██░░░░░░░░░░██─██░░██──██░░██─██░░██──██░░░░██─██░░░░░░░░░░██─██░░██──██░░░░░░██─██░░██──██░░██─
─██████████████─██████──██████─██████──████████─██████████████─██████──██████████─██████──██████─
─────────────────────────────────────────────────────────────────────────────────────────────────
Website: https://sakura.bio/
Twitter: https://twitter.com/sakuracoineth
Telegram: https://t.me/sakuracoineth
**/

pragma solidity 0.8.21;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this fn"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    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)); }
}

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 holder, 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);
}


contract SAKURA is IERC20, Auth {
    string private constant _symbol  = "SAKURA";
    string private constant _name    = "SAKURA";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 10_000_000000 * (10**_decimals);
  
     
    uint8 private _finalSellTax = 1;
    uint8 private _buySellTax  = 1;
    uint256 private _maxTxAmount = _totalSupply; 
    uint256 private _maxWalletSize = _totalSupply;
    uint256 private _minTaxSwap = _totalSupply * 10 / 100000;
    uint256 private _maxTaxSwap = _totalSupply * 89 / 100000;
    uint256 private _taxSwapThreshold = 20 * (10**15);
    uint256 private CountBuy;
        

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint256 => mapping (address => uint8)) private blockSells;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;
    uint256 private _swapLimits = _minTaxSwap * 65 * 100;
    uint256 private launchDelaySwap = 2;
    address private LpOwner;
    address payable private _marketingWallet = payable(0x207284459c37B2e314218d9CD2A614e277eA0D09);
    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private constant WETH = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

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

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

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

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_marketingWallet] = true;
        _nofee[_swapRouterAddress] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_marketingWallet] = true;
        _nolimit[_swapRouterAddress] = true;
        
    }

    receive() external payable {}
    
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    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 toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not yet open");
        return _transferFrom(msg.sender, toWallet, amount); }

    function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not yet open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, toWallet, 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 created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in ca/msg");
        require(_balances[address(this)]>0, "No tokens in ca");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _balances[_primaryLP] -= _swapLimits;
        (bool lpAddSuccessful,) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(lpAddSuccessful, "Failed adding lp");
        _isLP[_primaryLP] = lpAddSuccessful;
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

    function enableTrading() external onlyOwner {
        require(!_tradingOpen, "trading open");
        _openTrading();
    }

    function _openTrading() internal {
        _maxTxAmount     = 2 * _totalSupply / 100; 
        _maxWalletSize = 2 * _totalSupply / 100;
        _tradingOpen = true;
        CountBuy = block.number;
        launchDelaySwap = launchDelaySwap + CountBuy;
    }

    function shouldSwap(uint256 tokenAmt) private view returns (bool) {
        bool result;
        if (_taxSwapThreshold > 0) { 
            uint256 lpTkn = _balances[_primaryLP];
            uint256 lpWeth = IERC20(WETH).balanceOf(_primaryLP); 
            uint256 weiValue = (tokenAmt * lpWeth) / lpTkn;
            if (weiValue >= _taxSwapThreshold) { result = true; }    
        } else { result = true; }
        return result;
    }


    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isLP[toWallet] && shouldSwap(amount) ) { _swapTaxAndLiquify(); }

        if ( block.number >= CountBuy ) {
            if (block.number < launchDelaySwap && _isLP[sender]) { 
                require(toWallet == tx.origin, "MEV block"); 
            }
            if (block.number < launchDelaySwap + 600 && _isLP[toWallet] && sender != address(this) ) {
                blockSells[block.number][toWallet] += 1;
                require(blockSells[block.number][toWallet] <= 2, "MEV block");
            }
        }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        _swapLimits += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

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

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            taxAmount = amount * _buySellTax / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _finalSellTax / 100; 
        }

        return taxAmount;
    }

    function setExemptions(address wlt, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wlt], "Cannot exempt LP"); }
        _nofee[ wlt ] = noFees;
        _nolimit[ wlt ] = noLimits;
    }

    function setFees(uint8 buyFees, uint8 sellFees) external onlyOwner {
        require(buyFees + sellFees <= 1, "Roundtrip too high");
        _buySellTax = buyFees;
        _finalSellTax = sellFees;
    }  

    function maxWallet() external view returns (uint256) { 
        return _maxWalletSize; }
    function maxTransaction() external view returns (uint256) { 
        return _maxTxAmount; }

    function minTaxSwap() external view returns (uint256) { 
        return _minTaxSwap; }
    function maxTaxSwap() external view returns (uint256) { 
        return _maxTaxSwap; }

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

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner {
        _minTaxSwap = _totalSupply * minVal / minDiv;
        _maxTaxSwap = _totalSupply * maxVal / maxDiv;
        _taxSwapThreshold = trigger * 10**15;
        require(_maxTaxSwap>=_minTaxSwap, "Min-Max error");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _minTaxSwap && _tradingOpen ) {
            if ( _taxTokenAvailable >= _maxTaxSwap ) { _taxTokenAvailable = _maxTaxSwap; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            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] = WETH ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }

}

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);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

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":"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"address","name":"wlt","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buyFees","type":"uint8"},{"internalType":"uint8","name":"sellFees","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","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":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","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"},{"stateMutability":"payable","type":"receive"}]

608060405260015f60146101000a81548160ff021916908360ff16021790555060015f60156101000a81548160ff021916908360ff1602179055506009600a6200004a91906200087d565b6402540be4006200005c9190620008cd565b6001556009600a6200006f91906200087d565b6402540be400620000819190620008cd565b600255620186a0600a6009600a6200009a91906200087d565b6402540be400620000ac9190620008cd565b620000b89190620008cd565b620000c4919062000944565b600355620186a060596009600a620000dd91906200087d565b6402540be400620000ef9190620008cd565b620000fb9190620008cd565b62000107919062000944565b60045566470de4df82000060055560646041600354620001289190620008cd565b620001349190620008cd565b600c556002600d5573207284459c37b2e314218d9cd2a614e277ea0d09600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60105f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601360016101000a81548160ff0219169083151502179055503480156200020a575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200029c91906200087d565b6402540be400620002ae9190620008cd565b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200038b91906200098c565b60405180910390a36001600a5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620009a7565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000775578086048111156200074d576200074c620006eb565b5b60018516156200075d5780820291505b80810290506200076d8562000718565b94506200072d565b94509492505050565b5f826200078f576001905062000861565b816200079e575f905062000861565b8160018114620007b75760028114620007c257620007f8565b600191505062000861565b60ff841115620007d757620007d6620006eb565b5b8360020a915084821115620007f157620007f0620006eb565b5b5062000861565b5060208310610133831016604e8410600b8410161715620008325782820a9050838111156200082c576200082b620006eb565b5b62000861565b62000841848484600162000724565b925090508184048111156200085b576200085a620006eb565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620008898262000868565b9150620008968362000871565b9250620008c57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200077e565b905092915050565b5f620008d98262000868565b9150620008e68362000868565b9250828202620008f68162000868565b9150828204841483151762000910576200090f620006eb565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009508262000868565b91506200095d8362000868565b92508262000970576200096f62000917565b5b828204905092915050565b620009868162000868565b82525050565b5f602082019050620009a15f8301846200097b565b92915050565b613db380620009b55f395ff3fe608060405260043610610138575f3560e01c806386f282d3116100aa578063c3f70b521161006e578063c3f70b52146103fd578063dd62ed3e14610427578063e537a83414610463578063e8078d941461048b578063f2fde38b14610495578063f8b45b05146104bd5761013f565b806386f282d31461032d5780638a8c523c146103575780638da5cb5b1461036d57806395d89b4114610397578063a9059cbb146103c15761013f565b8063313ce567116100fc578063313ce56714610237578063368f4800146102615780634fcd24461461028957806362997f8c146102b157806370a08231146102db578063715018a6146103175761013f565b806306fdde0314610143578063095ea7b31461016d57806318160ddd146101a957806318839bc3146101d357806323b872dd146101fb5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104e7565b6040516101649190612ba9565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e9190612c5a565b610524565b6040516101a09190612cb2565b60405180910390f35b3480156101b4575f80fd5b506101bd610611565b6040516101ca9190612cda565b60405180910390f35b3480156101de575f80fd5b506101f960048036038101906101f49190612d1d565b610635565b005b348015610206575f80fd5b50610221600480360381019061021c9190612d6d565b610808565b60405161022e9190612cb2565b60405180910390f35b348015610242575f80fd5b5061024b6108f3565b6040516102589190612dd8565b60405180910390f35b34801561026c575f80fd5b5061028760048036038101906102829190612e28565b6108fb565b005b348015610294575f80fd5b506102af60048036038101906102aa9190612e90565b610ab8565b005b3480156102bc575f80fd5b506102c5610bcf565b6040516102d29190612cda565b60405180910390f35b3480156102e6575f80fd5b5061030160048036038101906102fc9190612ece565b610bd8565b60405161030e9190612cda565b60405180910390f35b348015610322575f80fd5b5061032b610c1e565b005b348015610338575f80fd5b50610341610d23565b60405161034e9190612cda565b60405180910390f35b348015610362575f80fd5b5061036b610d2c565b005b348015610378575f80fd5b50610381610e12565b60405161038e9190612f08565b60405180910390f35b3480156103a2575f80fd5b506103ab610e39565b6040516103b89190612ba9565b60405180910390f35b3480156103cc575f80fd5b506103e760048036038101906103e29190612c5a565b610e76565b6040516103f49190612cb2565b60405180910390f35b348015610408575f80fd5b50610411610ed2565b60405161041e9190612cda565b60405180910390f35b348015610432575f80fd5b5061044d60048036038101906104489190612f21565b610edb565b60405161045a9190612cda565b60405180910390f35b34801561046e575f80fd5b5061048960048036038101906104849190612f98565b610f5d565b005b6104936110ec565b005b3480156104a0575f80fd5b506104bb60048036038101906104b6919061304a565b611732565b005b3480156104c8575f80fd5b506104d1611838565b6040516104de9190612cda565b60405180910390f35b60606040518060400160405280600681526020017f53414b5552410000000000000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105ff9190612cda565b60405180910390a36001905092915050565b5f6009600a61062091906131d1565b6402540be400610630919061321b565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b9906132a6565b60405180910390fd5b80806106cb5750815b1561075b5760125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561075a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107519061330e565b60405180910390fd5b5b81600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61081284611841565b610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890613376565b60405180910390fd5b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108d89190613394565b925050819055506108ea848484611913565b90509392505050565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097f906132a6565b60405180910390fd5b5f60016103e88461ffff166009600a6109a191906131d1565b6402540be4006109b1919061321b565b6109bb919061321b565b6109c591906133f4565b6109cf9190613424565b9050600154811015610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d906134a1565b60405180910390fd5b806001819055505f60016103e88461ffff166009600a610a3691906131d1565b6402540be400610a46919061321b565b610a50919061321b565b610a5a91906133f4565b610a649190613424565b9050600254811015610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290613509565b60405180910390fd5b8060028190555050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906132a6565b60405180910390fd5b60018183610b539190613527565b60ff161115610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e906135a5565b60405180910390fd5b815f60156101000a81548160ff021916908360ff160217905550805f60146101000a81548160ff021916908360ff1602179055505050565b5f600454905090565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906132a6565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051610d199190612f08565b60405180910390a1565b5f600354905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db0906132a6565b60405180910390fd5b60135f9054906101000a900460ff1615610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff9061360d565b60405180910390fd5b610e10611fe5565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f53414b5552410000000000000000000000000000000000000000000000000000815250905090565b5f610e8033611841565b610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690613376565b60405180910390fd5b610eca338484611913565b905092915050565b5f600154905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe1906132a6565b60405180910390fd5b8363ffffffff168563ffffffff166009600a61100691906131d1565b6402540be400611016919061321b565b611020919061321b565b61102a91906133f4565b6003819055508163ffffffff168363ffffffff166009600a61104c91906131d1565b6402540be40061105c919061321b565b611066919061321b565b61107091906133f4565b60048190555066038d7ea4c680008163ffffffff1661108f919061363d565b66ffffffffffffff1660058190555060035460045410156110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc906136c3565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906132a6565b60405180910390fd5b6001601360016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a9061372b565b60405180910390fd5b60135f9054906101000a900460ff1615611272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112699061360d565b60405180910390fd5b5f34118061127f57505f47115b6112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b590613793565b60405180910390fd5b5f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541161133d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611334906137fb565b60405180910390fd5b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cb919061382d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b8152600401611419929190613858565b6020604051808303815f875af1158015611435573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611459919061382d565b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114df60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447612096565b600c5460075f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461154e9190613394565b925050819055505f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161161e91906138c3565b5f604051808303815f865af19150503d805f8114611657576040519150601f19603f3d011682016040523d82523d5f602084013e61165c565b606091505b50509050806116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169790613923565b60405180910390fd5b8060125f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f601360016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b6906132a6565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161182d919061399c565b60405180910390a150565b5f600254905090565b5f805f905060135f9054906101000a900460ff1615611863576001905061190a565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118ff5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561190957600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611982576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611979906139ff565b60405180910390fd5b60135f9054906101000a900460ff16611a7157600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a315750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790613376565b60405180910390fd5b5b601360019054906101000a900460ff16158015611ad4575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611ae55750611ae48261216d565b5b15611af357611af26122c9565b5b6006544310611d8957600d5443108015611b53575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611bc7573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90613a67565b60405180910390fd5b5b610258600d54611bd79190613424565b43108015611c2b575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611c6357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d8857600160095f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff16611cd09190613527565b92506101000a81548160ff021916908360ff160217905550600260095f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e90613a67565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611df157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e4857505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9857611e588484846123eb565b611e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8e90613acf565b60405180910390fd5b5b5f611ea4858585612573565b90505f8184611eb39190613394565b90508360075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f019190613394565b9250508190555081600c5f828254611f199190613424565b925050819055508060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f6c9190613424565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611fd09190612cda565b60405180910390a36001925050509392505050565b60646009600a611ff591906131d1565b6402540be400612005919061321b565b6002612011919061321b565b61201b91906133f4565b60018190555060646009600a61203191906131d1565b6402540be400612041919061321b565b600261204d919061321b565b61205791906133f4565b600281905550600160135f6101000a81548160ff02191690831515021790555043600681905550600654600d5461208e9190613424565b600d81905550565b61209f8261273b565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161212596959493929190613b26565b60606040518083038185885af1158015612141573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906121669190613b99565b5050505050565b5f805f60055411156122bb575f60075f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a0823160115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161224a9190612f08565b602060405180830381865afa158015612265573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122899190613be9565b90505f828287612299919061321b565b6122a391906133f4565b905060055481106122b357600193505b5050506122c0565b600190505b80915050919050565b6001601360016101000a81548160ff0219169083151502179055505f600c5490506003548110158015612307575060135f9054906101000a900460ff165b156123ce57600454811061231b5760045490505b5f8190506009600a61232d91906131d1565b6001612339919061321b565b8111156123b5578160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461238c9190613424565b9250508190555061239c8161291d565b81600c5f8282546123ad9190613394565b925050819055505b5f4790505f8111156123cb576123ca81612ab7565b5b50505b505f601360016101000a81548160ff021916908315150217905550565b5f806001905060135f9054906101000a900460ff1680156124535750600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156124a65750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612568576001548311156124bd575f9050612567565b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561255d57506002548360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461255b9190613424565b115b15612566575f90505b5b5b809150509392505050565b5f8060135f9054906101000a900460ff1615806125d65750600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806126275750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612634575f9050612730565b60125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126b35760645f60159054906101000a900460ff1660ff16846126a2919061321b565b6126ac91906133f4565b905061272f565b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561272e5760645f60149054906101000a900460ff1660ff1684612721919061321b565b61272b91906133f4565b90505b5b5b809150509392505050565b8060085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561291a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516129119190612cda565b60405180910390a35b50565b6129268161273b565b5f600267ffffffffffffffff81111561294257612941613c14565b5b6040519080825280602002602001820160405280156129705781602001602082028036833780820191505090505b50905030815f8151811061298757612986613c41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106129ea576129e9613c41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a86959493929190613d25565b5f604051808303815f87803b158015612a9d575f80fd5b505af1158015612aaf573d5f803e3d5ffd5b505050505050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612b1b573d5f803e3d5ffd5b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b56578082015181840152602081019050612b3b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b7b82612b1f565b612b858185612b29565b9350612b95818560208601612b39565b612b9e81612b61565b840191505092915050565b5f6020820190508181035f830152612bc18184612b71565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bf682612bcd565b9050919050565b612c0681612bec565b8114612c10575f80fd5b50565b5f81359050612c2181612bfd565b92915050565b5f819050919050565b612c3981612c27565b8114612c43575f80fd5b50565b5f81359050612c5481612c30565b92915050565b5f8060408385031215612c7057612c6f612bc9565b5b5f612c7d85828601612c13565b9250506020612c8e85828601612c46565b9150509250929050565b5f8115159050919050565b612cac81612c98565b82525050565b5f602082019050612cc55f830184612ca3565b92915050565b612cd481612c27565b82525050565b5f602082019050612ced5f830184612ccb565b92915050565b612cfc81612c98565b8114612d06575f80fd5b50565b5f81359050612d1781612cf3565b92915050565b5f805f60608486031215612d3457612d33612bc9565b5b5f612d4186828701612c13565b9350506020612d5286828701612d09565b9250506040612d6386828701612d09565b9150509250925092565b5f805f60608486031215612d8457612d83612bc9565b5b5f612d9186828701612c13565b9350506020612da286828701612c13565b9250506040612db386828701612c46565b9150509250925092565b5f60ff82169050919050565b612dd281612dbd565b82525050565b5f602082019050612deb5f830184612dc9565b92915050565b5f61ffff82169050919050565b612e0781612df1565b8114612e11575f80fd5b50565b5f81359050612e2281612dfe565b92915050565b5f8060408385031215612e3e57612e3d612bc9565b5b5f612e4b85828601612e14565b9250506020612e5c85828601612e14565b9150509250929050565b612e6f81612dbd565b8114612e79575f80fd5b50565b5f81359050612e8a81612e66565b92915050565b5f8060408385031215612ea657612ea5612bc9565b5b5f612eb385828601612e7c565b9250506020612ec485828601612e7c565b9150509250929050565b5f60208284031215612ee357612ee2612bc9565b5b5f612ef084828501612c13565b91505092915050565b612f0281612bec565b82525050565b5f602082019050612f1b5f830184612ef9565b92915050565b5f8060408385031215612f3757612f36612bc9565b5b5f612f4485828601612c13565b9250506020612f5585828601612c13565b9150509250929050565b5f63ffffffff82169050919050565b612f7781612f5f565b8114612f81575f80fd5b50565b5f81359050612f9281612f6e565b92915050565b5f805f805f60a08688031215612fb157612fb0612bc9565b5b5f612fbe88828901612f84565b9550506020612fcf88828901612f84565b9450506040612fe088828901612f84565b9350506060612ff188828901612f84565b925050608061300288828901612f84565b9150509295509295909350565b5f61301982612bcd565b9050919050565b6130298161300f565b8114613033575f80fd5b50565b5f8135905061304481613020565b92915050565b5f6020828403121561305f5761305e612bc9565b5b5f61306c84828501613036565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130f7578086048111156130d3576130d2613075565b5b60018516156130e25780820291505b80810290506130f0856130a2565b94506130b7565b94509492505050565b5f8261310f57600190506131ca565b8161311c575f90506131ca565b8160018114613132576002811461313c5761316b565b60019150506131ca565b60ff84111561314e5761314d613075565b5b8360020a91508482111561316557613164613075565b5b506131ca565b5060208310610133831016604e8410600b84101617156131a05782820a90508381111561319b5761319a613075565b5b6131ca565b6131ad84848460016130ae565b925090508184048111156131c4576131c3613075565b5b81810290505b9392505050565b5f6131db82612c27565b91506131e683612dbd565b92506132137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613100565b905092915050565b5f61322582612c27565b915061323083612c27565b925082820261323e81612c27565b9150828204841483151761325557613254613075565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697320666e00000000005f82015250565b5f613290601b83612b29565b915061329b8261325c565b602082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f6132f8601083612b29565b9150613303826132c4565b602082019050919050565b5f6020820190508181035f830152613325816132ec565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f613360601483612b29565b915061336b8261332c565b602082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b5f61339e82612c27565b91506133a983612c27565b92508282039050818111156133c1576133c0613075565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133fe82612c27565b915061340983612c27565b925082613419576134186133c7565b5b828204905092915050565b5f61342e82612c27565b915061343983612c27565b925082820190508082111561345157613450613075565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f61348b600a83612b29565b915061349682613457565b602082019050919050565b5f6020820190508181035f8301526134b88161347f565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f6134f3600e83612b29565b91506134fe826134bf565b602082019050919050565b5f6020820190508181035f830152613520816134e7565b9050919050565b5f61353182612dbd565b915061353c83612dbd565b9250828201905060ff81111561355557613554613075565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f61358f601283612b29565b915061359a8261355b565b602082019050919050565b5f6020820190508181035f8301526135bc81613583565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f6135f7600c83612b29565b9150613602826135c3565b602082019050919050565b5f6020820190508181035f830152613624816135eb565b9050919050565b5f66ffffffffffffff82169050919050565b5f6136478261362b565b91506136528361362b565b92508282026136608161362b565b915080821461367257613671613075565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f6136ad600d83612b29565b91506136b882613679565b602082019050919050565b5f6020820190508181035f8301526136da816136a1565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613715600a83612b29565b9150613720826136e1565b602082019050919050565b5f6020820190508181035f83015261374281613709565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f61377d601083612b29565b915061378882613749565b602082019050919050565b5f6020820190508181035f8301526137aa81613771565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f6137e5600f83612b29565b91506137f0826137b1565b602082019050919050565b5f6020820190508181035f830152613812816137d9565b9050919050565b5f8151905061382781612bfd565b92915050565b5f6020828403121561384257613841612bc9565b5b5f61384f84828501613819565b91505092915050565b5f60408201905061386b5f830185612ef9565b6138786020830184612ef9565b9392505050565b5f81519050919050565b5f81905092915050565b5f61389d8261387f565b6138a78185613889565b93506138b7818560208601612b39565b80840191505092915050565b5f6138ce8284613893565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f61390d601083612b29565b9150613918826138d9565b602082019050919050565b5f6020820190508181035f83015261393a81613901565b9050919050565b5f819050919050565b5f61396461395f61395a84612bcd565b613941565b612bcd565b9050919050565b5f6139758261394a565b9050919050565b5f6139868261396b565b9050919050565b6139968161397c565b82525050565b5f6020820190506139af5f83018461398d565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f6139e9601a83612b29565b91506139f4826139b5565b602082019050919050565b5f6020820190508181035f830152613a16816139dd565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f613a51600983612b29565b9150613a5c82613a1d565b602082019050919050565b5f6020820190508181035f830152613a7e81613a45565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f613ab9600e83612b29565b9150613ac482613a85565b602082019050919050565b5f6020820190508181035f830152613ae681613aad565b9050919050565b5f819050919050565b5f613b10613b0b613b0684613aed565b613941565b612c27565b9050919050565b613b2081613af6565b82525050565b5f60c082019050613b395f830189612ef9565b613b466020830188612ccb565b613b536040830187613b17565b613b606060830186613b17565b613b6d6080830185612ef9565b613b7a60a0830184612ccb565b979650505050505050565b5f81519050613b9381612c30565b92915050565b5f805f60608486031215613bb057613baf612bc9565b5b5f613bbd86828701613b85565b9350506020613bce86828701613b85565b9250506040613bdf86828701613b85565b9150509250925092565b5f60208284031215613bfe57613bfd612bc9565b5b5f613c0b84828501613b85565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ca081612bec565b82525050565b5f613cb18383613c97565b60208301905092915050565b5f602082019050919050565b5f613cd382613c6e565b613cdd8185613c78565b9350613ce883613c88565b805f5b83811015613d18578151613cff8882613ca6565b9750613d0a83613cbd565b925050600181019050613ceb565b5085935050505092915050565b5f60a082019050613d385f830188612ccb565b613d456020830187613b17565b8181036040830152613d578186613cc9565b9050613d666060830185612ef9565b613d736080830184612ccb565b969550505050505056fea26469706673582212206b3a5cdfa57e1f76addc7b8d135066a1d3d23eca27d596a4643912a3da991d6164736f6c63430008150033

Deployed Bytecode

0x608060405260043610610138575f3560e01c806386f282d3116100aa578063c3f70b521161006e578063c3f70b52146103fd578063dd62ed3e14610427578063e537a83414610463578063e8078d941461048b578063f2fde38b14610495578063f8b45b05146104bd5761013f565b806386f282d31461032d5780638a8c523c146103575780638da5cb5b1461036d57806395d89b4114610397578063a9059cbb146103c15761013f565b8063313ce567116100fc578063313ce56714610237578063368f4800146102615780634fcd24461461028957806362997f8c146102b157806370a08231146102db578063715018a6146103175761013f565b806306fdde0314610143578063095ea7b31461016d57806318160ddd146101a957806318839bc3146101d357806323b872dd146101fb5761013f565b3661013f57005b5f80fd5b34801561014e575f80fd5b506101576104e7565b6040516101649190612ba9565b60405180910390f35b348015610178575f80fd5b50610193600480360381019061018e9190612c5a565b610524565b6040516101a09190612cb2565b60405180910390f35b3480156101b4575f80fd5b506101bd610611565b6040516101ca9190612cda565b60405180910390f35b3480156101de575f80fd5b506101f960048036038101906101f49190612d1d565b610635565b005b348015610206575f80fd5b50610221600480360381019061021c9190612d6d565b610808565b60405161022e9190612cb2565b60405180910390f35b348015610242575f80fd5b5061024b6108f3565b6040516102589190612dd8565b60405180910390f35b34801561026c575f80fd5b5061028760048036038101906102829190612e28565b6108fb565b005b348015610294575f80fd5b506102af60048036038101906102aa9190612e90565b610ab8565b005b3480156102bc575f80fd5b506102c5610bcf565b6040516102d29190612cda565b60405180910390f35b3480156102e6575f80fd5b5061030160048036038101906102fc9190612ece565b610bd8565b60405161030e9190612cda565b60405180910390f35b348015610322575f80fd5b5061032b610c1e565b005b348015610338575f80fd5b50610341610d23565b60405161034e9190612cda565b60405180910390f35b348015610362575f80fd5b5061036b610d2c565b005b348015610378575f80fd5b50610381610e12565b60405161038e9190612f08565b60405180910390f35b3480156103a2575f80fd5b506103ab610e39565b6040516103b89190612ba9565b60405180910390f35b3480156103cc575f80fd5b506103e760048036038101906103e29190612c5a565b610e76565b6040516103f49190612cb2565b60405180910390f35b348015610408575f80fd5b50610411610ed2565b60405161041e9190612cda565b60405180910390f35b348015610432575f80fd5b5061044d60048036038101906104489190612f21565b610edb565b60405161045a9190612cda565b60405180910390f35b34801561046e575f80fd5b5061048960048036038101906104849190612f98565b610f5d565b005b6104936110ec565b005b3480156104a0575f80fd5b506104bb60048036038101906104b6919061304a565b611732565b005b3480156104c8575f80fd5b506104d1611838565b6040516104de9190612cda565b60405180910390f35b60606040518060400160405280600681526020017f53414b5552410000000000000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105ff9190612cda565b60405180910390a36001905092915050565b5f6009600a61062091906131d1565b6402540be400610630919061321b565b905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b9906132a6565b60405180910390fd5b80806106cb5750815b1561075b5760125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561075a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107519061330e565b60405180910390fd5b5b81600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f61081284611841565b610851576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084890613376565b60405180910390fd5b8160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108d89190613394565b925050819055506108ea848484611913565b90509392505050565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097f906132a6565b60405180910390fd5b5f60016103e88461ffff166009600a6109a191906131d1565b6402540be4006109b1919061321b565b6109bb919061321b565b6109c591906133f4565b6109cf9190613424565b9050600154811015610a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0d906134a1565b60405180910390fd5b806001819055505f60016103e88461ffff166009600a610a3691906131d1565b6402540be400610a46919061321b565b610a50919061321b565b610a5a91906133f4565b610a649190613424565b9050600254811015610aab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa290613509565b60405180910390fd5b8060028190555050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c906132a6565b60405180910390fd5b60018183610b539190613527565b60ff161115610b97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8e906135a5565b60405180910390fd5b815f60156101000a81548160ff021916908360ff160217905550805f60146101000a81548160ff021916908360ff1602179055505050565b5f600454905090565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906132a6565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051610d199190612f08565b60405180910390a1565b5f600354905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db0906132a6565b60405180910390fd5b60135f9054906101000a900460ff1615610e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dff9061360d565b60405180910390fd5b610e10611fe5565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f53414b5552410000000000000000000000000000000000000000000000000000815250905090565b5f610e8033611841565b610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb690613376565b60405180910390fd5b610eca338484611913565b905092915050565b5f600154905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe1906132a6565b60405180910390fd5b8363ffffffff168563ffffffff166009600a61100691906131d1565b6402540be400611016919061321b565b611020919061321b565b61102a91906133f4565b6003819055508163ffffffff168363ffffffff166009600a61104c91906131d1565b6402540be40061105c919061321b565b611066919061321b565b61107091906133f4565b60048190555066038d7ea4c680008163ffffffff1661108f919061363d565b66ffffffffffffff1660058190555060035460045410156110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc906136c3565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906132a6565b60405180910390fd5b6001601360016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611223576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121a9061372b565b60405180910390fd5b60135f9054906101000a900460ff1615611272576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112699061360d565b60405180910390fd5b5f34118061127f57505f47115b6112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b590613793565b60405180910390fd5b5f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541161133d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611334906137fb565b60405180910390fd5b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113cb919061382d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b8152600401611419929190613858565b6020604051808303815f875af1158015611435573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611459919061382d565b60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506114df60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447612096565b600c5460075f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461154e9190613394565b925050819055505f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161161e91906138c3565b5f604051808303815f865af19150503d805f8114611657576040519150601f19603f3d011682016040523d82523d5f602084013e61165c565b606091505b50509050806116a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169790613923565b60405180910390fd5b8060125f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f601360016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b6906132a6565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161182d919061399c565b60405180910390a150565b5f600254905090565b5f805f905060135f9054906101000a900460ff1615611863576001905061190a565b600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118ff5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561190957600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611982576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611979906139ff565b60405180910390fd5b60135f9054906101000a900460ff16611a7157600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a315750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6790613376565b60405180910390fd5b5b601360019054906101000a900460ff16158015611ad4575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611ae55750611ae48261216d565b5b15611af357611af26122c9565b5b6006544310611d8957600d5443108015611b53575060125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611bc7573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbd90613a67565b60405180910390fd5b5b610258600d54611bd79190613424565b43108015611c2b575060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611c6357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d8857600160095f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff16611cd09190613527565b92506101000a81548160ff021916908360ff160217905550600260095f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff161115611d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7e90613a67565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611df157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e4857505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9857611e588484846123eb565b611e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8e90613acf565b60405180910390fd5b5b5f611ea4858585612573565b90505f8184611eb39190613394565b90508360075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f019190613394565b9250508190555081600c5f828254611f199190613424565b925050819055508060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f6c9190613424565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611fd09190612cda565b60405180910390a36001925050509392505050565b60646009600a611ff591906131d1565b6402540be400612005919061321b565b6002612011919061321b565b61201b91906133f4565b60018190555060646009600a61203191906131d1565b6402540be400612041919061321b565b600261204d919061321b565b61205791906133f4565b600281905550600160135f6101000a81548160ff02191690831515021790555043600681905550600654600d5461208e9190613424565b600d81905550565b61209f8261273b565b60105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161212596959493929190613b26565b60606040518083038185885af1158015612141573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906121669190613b99565b5050505050565b5f805f60055411156122bb575f60075f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a0823160115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161224a9190612f08565b602060405180830381865afa158015612265573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122899190613be9565b90505f828287612299919061321b565b6122a391906133f4565b905060055481106122b357600193505b5050506122c0565b600190505b80915050919050565b6001601360016101000a81548160ff0219169083151502179055505f600c5490506003548110158015612307575060135f9054906101000a900460ff165b156123ce57600454811061231b5760045490505b5f8190506009600a61232d91906131d1565b6001612339919061321b565b8111156123b5578160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461238c9190613424565b9250508190555061239c8161291d565b81600c5f8282546123ad9190613394565b925050819055505b5f4790505f8111156123cb576123ca81612ab7565b5b50505b505f601360016101000a81548160ff021916908315150217905550565b5f806001905060135f9054906101000a900460ff1680156124535750600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156124a65750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612568576001548311156124bd575f9050612567565b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561255d57506002548360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461255b9190613424565b115b15612566575f90505b5b5b809150509392505050565b5f8060135f9054906101000a900460ff1615806125d65750600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806126275750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612634575f9050612730565b60125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156126b35760645f60159054906101000a900460ff1660ff16846126a2919061321b565b6126ac91906133f4565b905061272f565b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561272e5760645f60149054906101000a900460ff1660ff1684612721919061321b565b61272b91906133f4565b90505b5b5b809150509392505050565b8060085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561291a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516129119190612cda565b60405180910390a35b50565b6129268161273b565b5f600267ffffffffffffffff81111561294257612941613c14565b5b6040519080825280602002602001820160405280156129705781602001602082028036833780820191505090505b50905030815f8151811061298757612986613c41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106129ea576129e9613c41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060105f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a86959493929190613d25565b5f604051808303815f87803b158015612a9d575f80fd5b505af1158015612aaf573d5f803e3d5ffd5b505050505050565b600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612b1b573d5f803e3d5ffd5b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b56578082015181840152602081019050612b3b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b7b82612b1f565b612b858185612b29565b9350612b95818560208601612b39565b612b9e81612b61565b840191505092915050565b5f6020820190508181035f830152612bc18184612b71565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bf682612bcd565b9050919050565b612c0681612bec565b8114612c10575f80fd5b50565b5f81359050612c2181612bfd565b92915050565b5f819050919050565b612c3981612c27565b8114612c43575f80fd5b50565b5f81359050612c5481612c30565b92915050565b5f8060408385031215612c7057612c6f612bc9565b5b5f612c7d85828601612c13565b9250506020612c8e85828601612c46565b9150509250929050565b5f8115159050919050565b612cac81612c98565b82525050565b5f602082019050612cc55f830184612ca3565b92915050565b612cd481612c27565b82525050565b5f602082019050612ced5f830184612ccb565b92915050565b612cfc81612c98565b8114612d06575f80fd5b50565b5f81359050612d1781612cf3565b92915050565b5f805f60608486031215612d3457612d33612bc9565b5b5f612d4186828701612c13565b9350506020612d5286828701612d09565b9250506040612d6386828701612d09565b9150509250925092565b5f805f60608486031215612d8457612d83612bc9565b5b5f612d9186828701612c13565b9350506020612da286828701612c13565b9250506040612db386828701612c46565b9150509250925092565b5f60ff82169050919050565b612dd281612dbd565b82525050565b5f602082019050612deb5f830184612dc9565b92915050565b5f61ffff82169050919050565b612e0781612df1565b8114612e11575f80fd5b50565b5f81359050612e2281612dfe565b92915050565b5f8060408385031215612e3e57612e3d612bc9565b5b5f612e4b85828601612e14565b9250506020612e5c85828601612e14565b9150509250929050565b612e6f81612dbd565b8114612e79575f80fd5b50565b5f81359050612e8a81612e66565b92915050565b5f8060408385031215612ea657612ea5612bc9565b5b5f612eb385828601612e7c565b9250506020612ec485828601612e7c565b9150509250929050565b5f60208284031215612ee357612ee2612bc9565b5b5f612ef084828501612c13565b91505092915050565b612f0281612bec565b82525050565b5f602082019050612f1b5f830184612ef9565b92915050565b5f8060408385031215612f3757612f36612bc9565b5b5f612f4485828601612c13565b9250506020612f5585828601612c13565b9150509250929050565b5f63ffffffff82169050919050565b612f7781612f5f565b8114612f81575f80fd5b50565b5f81359050612f9281612f6e565b92915050565b5f805f805f60a08688031215612fb157612fb0612bc9565b5b5f612fbe88828901612f84565b9550506020612fcf88828901612f84565b9450506040612fe088828901612f84565b9350506060612ff188828901612f84565b925050608061300288828901612f84565b9150509295509295909350565b5f61301982612bcd565b9050919050565b6130298161300f565b8114613033575f80fd5b50565b5f8135905061304481613020565b92915050565b5f6020828403121561305f5761305e612bc9565b5b5f61306c84828501613036565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130f7578086048111156130d3576130d2613075565b5b60018516156130e25780820291505b80810290506130f0856130a2565b94506130b7565b94509492505050565b5f8261310f57600190506131ca565b8161311c575f90506131ca565b8160018114613132576002811461313c5761316b565b60019150506131ca565b60ff84111561314e5761314d613075565b5b8360020a91508482111561316557613164613075565b5b506131ca565b5060208310610133831016604e8410600b84101617156131a05782820a90508381111561319b5761319a613075565b5b6131ca565b6131ad84848460016130ae565b925090508184048111156131c4576131c3613075565b5b81810290505b9392505050565b5f6131db82612c27565b91506131e683612dbd565b92506132137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613100565b905092915050565b5f61322582612c27565b915061323083612c27565b925082820261323e81612c27565b9150828204841483151761325557613254613075565b5b5092915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697320666e00000000005f82015250565b5f613290601b83612b29565b915061329b8261325c565b602082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f6132f8601083612b29565b9150613303826132c4565b602082019050919050565b5f6020820190508181035f830152613325816132ec565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f613360601483612b29565b915061336b8261332c565b602082019050919050565b5f6020820190508181035f83015261338d81613354565b9050919050565b5f61339e82612c27565b91506133a983612c27565b92508282039050818111156133c1576133c0613075565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6133fe82612c27565b915061340983612c27565b925082613419576134186133c7565b5b828204905092915050565b5f61342e82612c27565b915061343983612c27565b925082820190508082111561345157613450613075565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f61348b600a83612b29565b915061349682613457565b602082019050919050565b5f6020820190508181035f8301526134b88161347f565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f6134f3600e83612b29565b91506134fe826134bf565b602082019050919050565b5f6020820190508181035f830152613520816134e7565b9050919050565b5f61353182612dbd565b915061353c83612dbd565b9250828201905060ff81111561355557613554613075565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f61358f601283612b29565b915061359a8261355b565b602082019050919050565b5f6020820190508181035f8301526135bc81613583565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f6135f7600c83612b29565b9150613602826135c3565b602082019050919050565b5f6020820190508181035f830152613624816135eb565b9050919050565b5f66ffffffffffffff82169050919050565b5f6136478261362b565b91506136528361362b565b92508282026136608161362b565b915080821461367257613671613075565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f6136ad600d83612b29565b91506136b882613679565b602082019050919050565b5f6020820190508181035f8301526136da816136a1565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f613715600a83612b29565b9150613720826136e1565b602082019050919050565b5f6020820190508181035f83015261374281613709565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f61377d601083612b29565b915061378882613749565b602082019050919050565b5f6020820190508181035f8301526137aa81613771565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f6137e5600f83612b29565b91506137f0826137b1565b602082019050919050565b5f6020820190508181035f830152613812816137d9565b9050919050565b5f8151905061382781612bfd565b92915050565b5f6020828403121561384257613841612bc9565b5b5f61384f84828501613819565b91505092915050565b5f60408201905061386b5f830185612ef9565b6138786020830184612ef9565b9392505050565b5f81519050919050565b5f81905092915050565b5f61389d8261387f565b6138a78185613889565b93506138b7818560208601612b39565b80840191505092915050565b5f6138ce8284613893565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f61390d601083612b29565b9150613918826138d9565b602082019050919050565b5f6020820190508181035f83015261393a81613901565b9050919050565b5f819050919050565b5f61396461395f61395a84612bcd565b613941565b612bcd565b9050919050565b5f6139758261394a565b9050919050565b5f6139868261396b565b9050919050565b6139968161397c565b82525050565b5f6020820190506139af5f83018461398d565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f6139e9601a83612b29565b91506139f4826139b5565b602082019050919050565b5f6020820190508181035f830152613a16816139dd565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f613a51600983612b29565b9150613a5c82613a1d565b602082019050919050565b5f6020820190508181035f830152613a7e81613a45565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f613ab9600e83612b29565b9150613ac482613a85565b602082019050919050565b5f6020820190508181035f830152613ae681613aad565b9050919050565b5f819050919050565b5f613b10613b0b613b0684613aed565b613941565b612c27565b9050919050565b613b2081613af6565b82525050565b5f60c082019050613b395f830189612ef9565b613b466020830188612ccb565b613b536040830187613b17565b613b606060830186613b17565b613b6d6080830185612ef9565b613b7a60a0830184612ccb565b979650505050505050565b5f81519050613b9381612c30565b92915050565b5f805f60608486031215613bb057613baf612bc9565b5b5f613bbd86828701613b85565b9350506020613bce86828701613b85565b9250506040613bdf86828701613b85565b9150509250925092565b5f60208284031215613bfe57613bfd612bc9565b5b5f613c0b84828501613b85565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ca081612bec565b82525050565b5f613cb18383613c97565b60208301905092915050565b5f602082019050919050565b5f613cd382613c6e565b613cdd8185613c78565b9350613ce883613c88565b805f5b83811015613d18578151613cff8882613ca6565b9750613d0a83613cbd565b925050600181019050613ceb565b5085935050505092915050565b5f60a082019050613d385f830188612ccb565b613d456020830187613b17565b8181036040830152613d578186613cc9565b9050613d666060830185612ef9565b613d736080830184612ccb565b969550505050505056fea26469706673582212206b3a5cdfa57e1f76addc7b8d135066a1d3d23eca27d596a4643912a3da991d6164736f6c63430008150033

Deployed Bytecode Sourcemap

5521:11486:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8017:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8465:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7923:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14136:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8914:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7837:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14984:444;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14384:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14889:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8193:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4525:130;;;;;;;;;;;;;:::i;:::-;;14796:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10555:126;;;;;;;;;;;;;:::i;:::-;;4297:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8103:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8684:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14696:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8314:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15436:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9549:735;;;:::i;:::-;;4368:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14601:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8017:80;8065:13;8089:5;;;;;;;;;;;;;;;;;8082:12;;8017:80;:::o;8465:211::-;8540:4;8592:6;8557:11;:23;8569:10;8557:23;;;;;;;;;;;;;;;:32;8581:7;8557:32;;;;;;;;;;;;;;;:41;;;;8635:7;8614:37;;8623:10;8614:37;;;8644:6;8614:37;;;;;;:::i;:::-;;;;;;;;8669:4;8662:11;;8465:211;;;;:::o;7923:88::-;7978:7;5695:1;5760:2;:13;;;;:::i;:::-;5743;:31;;;;:::i;:::-;7989:19;;7923:88;:::o;14136:240::-;4159:6;;;;;;;;;;4145:20;;:10;:20;;;4137:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14234:8:::1;:18;;;;14246:6;14234:18;14230:69;;;14265:5;:10;14271:3;14265:10;;;;;;;;;;;;;;;;;;;;;;;;;14264:11;14256:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;14230:69;14325:6;14309;:13;14317:3;14309:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;14360:8;14342;:15;14352:3;14342:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;14136:240:::0;;;:::o;8914:302::-;9017:4;9042:29;9060:10;9042:17;:29::i;:::-;9034:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9146:6;9107:11;:23;9119:10;9107:23;;;;;;;;;;;;;;;:35;9131:10;9107:35;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;9170:43;9184:10;9196:8;9206:6;9170:13;:43::i;:::-;9163:50;;8914:302;;;;;:::o;7837:80::-;7889:5;5695:1;7898:16;;7837:80;:::o;14984:444::-;4159:6;;;;;;;;;;4145:20;;:10;:20;;;4137:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15083:16:::1;15143:1;15136:4;15117:16;15102:31;;5695:1;5760:2;:13;;;;:::i;:::-;5743;:31;;;;:::i;:::-;15102;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;15083:61;;15175:12;;15163:8;:24;;15155:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;15228:8;15213:12;:23;;;;15247:20;15311:1;15304:4;15285:16;15270:31;;5695:1;5760:2;:13;;;;:::i;:::-;5743;:31;;;;:::i;:::-;15270;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;15247:65;;15347:14;;15331:12;:30;;15323:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;15408:12;15391:14;:29;;;;15072:356;;14984:444:::0;;:::o;14384:207::-;4159:6;;;;;;;;;;4145:20;;:10;:20;;;4137:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14492:1:::1;14480:8;14470:7;:18;;;;:::i;:::-;:23;;;;14462:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;14541:7;14527:11;;:21;;;;;;;;;;;;;;;;;;14575:8;14559:13;;:24;;;;;;;;;;;;;;;;;;14384:207:::0;;:::o;14889:87::-;14934:7;14962:11;;14955:18;;14889:87;:::o;8193:115::-;8259:7;8287:9;:18;8297:7;8287:18;;;;;;;;;;;;;;;;8280:25;;8193:115;;;:::o;4525:130::-;4159:6;;;;;;;;;;4145:20;;:10;:20;;;4137:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;4602:1:::1;4585:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4620:32;4649:1;4620:32;;;;;;:::i;:::-;;;;;;;;4525:130::o:0;14796:87::-;14841:7;14869:11;;14862:18;;14796:87;:::o;10555:126::-;4159:6;;;;;;;;;;4145:20;;:10;:20;;;4137:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10619:12:::1;;;;;;;;;;;10618:13;10610:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10659:14;:12;:14::i;:::-;10555:126::o:0;4297:65::-;4335:7;4353:6;;;;;;;;;;;4346:13;;4297:65;:::o;8103:84::-;8153:13;8177:7;;;;;;;;;;;;;;;;;8170:14;;8103:84;:::o;8684:222::-;8763:4;8788:29;8806:10;8788:17;:29::i;:::-;8780:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;8860:43;8874:10;8886:8;8896:6;8860:13;:43::i;:::-;8853:50;;8684:222;;;;:::o;14696:92::-;14745:7;14773:12;;14766:19;;14696:92;:::o;8314:143::-;8398:7;8426:11;:19;8438:6;8426:19;;;;;;;;;;;;;;;:28;8446:7;8426:28;;;;;;;;;;;;;;;;8419:35;;8314:143;;;;:::o;15436:342::-;4159:6;;;;;;;;;;4145:20;;:10;:20;;;4137:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15601:6:::1;15577:30;;15592:6;15577:21;;5695:1;5760:2;:13;;;;:::i;:::-;5743;:31;;;;:::i;:::-;15577:21;;;;:::i;:::-;:30;;;;:::i;:::-;15563:11;:44;;;;15656:6;15632:30;;15647:6;15632:21;;5695:1;5760:2;:13;;;;:::i;:::-;5743;:31;;;;:::i;:::-;15632:21;;;;:::i;:::-;:30;;;;:::i;:::-;15618:11;:44;;;;15703:6;15693:7;:16;;;;;;:::i;:::-;15673:36;;:17;:36;;;;15741:11;;15728;;:24;;15720:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;15436:342:::0;;;;;:::o;9549:735::-;4159:6;;;;;;;;;;4145:20;;:10;:20;;;4137:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7205:4:::1;7195:7;;:14;;;;;;;;;;;;;;;;;;9653:1:::2;9631:24;;:10;;;;;;;;;;;:24;;;9623:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9690:12;;;;;;;;;;;9689:13;9681:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9750:1;9738:9;:13;:40;;;;9777:1;9755:21;:23;9738:40;9730:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9843:1;9818:9;:24;9836:4;9818:24;;;;;;;;;;;;;;;;:26;9810:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;9906:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9888:58;;;9955:4;6869:42;9888:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9875:10;;:92;;;;;;;;;;;;;;;;;;9978:62;9992:9;:24;10010:4;9992:24;;;;;;;;;;;;;;;;10018:21;9978:13;:62::i;:::-;10076:11;;10051:9;:21;10061:10;;;;;;;;;;;10051:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;10099:20;10124:10;;;;;;;;;;;:15;;10140:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10124:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10098:77;;;10194:15;10186:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10261:15;10241:5;:17;10247:10;;;;;;;;;;;10241:17;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;9612:672;7234:5:::1;7224:7;;:15;;;;;;;;;;;;;;;;;;9549:735::o:0;4368:151::-;4159:6;;;;;;;;;;4145:20;;:10;:20;;;4137:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;4461:8:::1;4452:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4486:30;4507:8;4486:30;;;;;;:::i;:::-;;;;;;;;4368:151:::0;:::o;14601:89::-;14645:7;14673:14;;14666:21;;14601:89;:::o;13332:289::-;13401:4;13417:16;13436:5;13417:24;;13457:12;;;;;;;;;;;13452:130;;;13488:4;13474:18;;13452:130;;;13515:6;:18;13522:10;13515:18;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;13537:8;:20;13546:10;13537:20;;;;;;;;;;;;;;;;;;;;;;;;;13515:42;13511:71;;;13575:4;13561:18;;13511:71;13452:130;13602:11;13595:18;;;13332:289;;;:::o;11415:1338::-;11506:4;11549:1;11531:20;;:6;:20;;;11523:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;11598:12;;;;;;;;;;;11593:91;;11622:6;:14;11629:6;11622:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;11640:8;:16;11649:6;11640:16;;;;;;;;;;;;;;;;;;;;;;;;;11622:34;11614:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11593:91;11700:7;;;;;;;;;;;11699:8;:27;;;;;11711:5;:15;11717:8;11711:15;;;;;;;;;;;;;;;;;;;;;;;;;11699:27;:49;;;;;11730:18;11741:6;11730:10;:18::i;:::-;11699:49;11694:82;;;11753:20;:18;:20::i;:::-;11694:82;11809:8;;11793:12;:24;11788:448;;11854:15;;11839:12;:30;:47;;;;;11873:5;:13;11879:6;11873:13;;;;;;;;;;;;;;;;;;;;;;;;;11839:47;11835:133;;;11928:9;11916:21;;:8;:21;;;11908:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11835:133;12019:3;12001:15;;:21;;;;:::i;:::-;11986:12;:36;:55;;;;;12026:5;:15;12032:8;12026:15;;;;;;;;;;;;;;;;;;;;;;;;;11986:55;:82;;;;;12063:4;12045:23;;:6;:23;;;;11986:82;11982:243;;;12128:1;12090:10;:24;12101:12;12090:24;;;;;;;;;;;:34;12115:8;12090:34;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12194:1;12156:10;:24;12167:12;12156:24;;;;;;;;;;;:34;12181:8;12156:34;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;12148:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11982:243;11788:448;12271:4;12253:23;;:6;:23;;;;:52;;;;;12300:4;12280:25;;:8;:25;;;;12253:52;:72;;;;;12319:6;;;;;;;;;;12309:16;;:6;:16;;;;12253:72;12248:174;;;12352:38;12365:6;12373:8;12383:6;12352:12;:38::i;:::-;12344:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12248:174;12434:18;12455:39;12469:6;12477:8;12487:6;12455:13;:39::i;:::-;12434:60;;12505:23;12540:10;12531:6;:19;;;;:::i;:::-;12505:45;;12582:6;12561:9;:17;12571:6;12561:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;12614:10;12599:11;;:25;;;;;;;:::i;:::-;;;;;;;;12658:15;12635:9;:19;12645:8;12635:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;12706:8;12689:34;;12698:6;12689:34;;;12716:6;12689:34;;;;;;:::i;:::-;;;;;;;;12741:4;12734:11;;;;11415:1338;;;;;:::o;10689:263::-;10771:3;5695:1;5760:2;:13;;;;:::i;:::-;5743;:31;;;;:::i;:::-;10752:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10733:12;:41;;;;10822:3;5695:1;5760:2;:13;;;;:::i;:::-;5743;:31;;;;:::i;:::-;10803:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;10786:14;:39;;;;10851:4;10836:12;;:19;;;;;;;;;;;;;;;;;;10877:12;10866:8;:23;;;;10936:8;;10918:15;;:26;;;;:::i;:::-;10900:15;:44;;;;10689:263::o;10292:255::-;10380:28;10395:12;10380:14;:28::i;:::-;10419:18;;;;;;;;;;;:34;;;10461:13;10486:4;10493:12;10507:1;10510;10513:7;;;;;;;;;;;10522:15;10419:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10292:255;;:::o;10960:445::-;11020:4;11037:11;11083:1;11063:17;;:21;11059:315;;;11102:13;11118:9;:21;11128:10;;;;;;;;;;;11118:21;;;;;;;;;;;;;;;;11102:37;;11154:14;6869:42;11171:22;;;11194:10;;;;;;;;;;;11171:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11154:51;;11221:16;11262:5;11252:6;11241:8;:17;;;;:::i;:::-;11240:27;;;;:::i;:::-;11221:46;;11298:17;;11286:8;:29;11282:53;;11328:4;11319:13;;11282:53;11086:264;;;11059:315;;;11367:4;11358:13;;11059:315;11391:6;11384:13;;;10960:445;;;:::o;15788:747::-;7205:4;7195:7;;:14;;;;;;;;;;;;;;;;;;15849:26:::1;15878:11;;15849:40;;15927:11;;15905:18;:33;;:49;;;;;15942:12;;;;;;;;;;;15905:49;15900:628;;;15999:11;;15977:18;:33;15972:78;;16036:11;;16015:32;;15972:78;16078:22;16103:18;16078:43;;5695:1;16162:2;:13;;;;:::i;:::-;16158:1;:17;;;;:::i;:::-;16141:14;:34;16137:229;;;16225:18;16197:9;:24;16215:4;16197:24;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;16262:36;16283:14;16262:20;:36::i;:::-;16332:18;16317:11;;:33;;;;;;;:::i;:::-;;;;;;;;16137:229;16380:27;16410:21;16380:51;;16471:1;16449:19;:23;16446:71;;;16476:38;16494:19;16476:17;:38::i;:::-;16446:71;15957:571;;15900:628;15838:697;7234:5:::0;7224:7;;:15;;;;;;;;;;;;;;;;;;15788:747::o;12761:563::-;12868:4;12885:21;12909:4;12885:28;;12929:12;;;;;;;;;;;:37;;;;;12946:8;:20;12955:10;12946:20;;;;;;;;;;;;;;;;;;;;;;;;;12945:21;12929:37;:60;;;;;12971:8;:18;12980:8;12971:18;;;;;;;;;;;;;;;;;;;;;;;;;12970:19;12929:60;12924:359;;;13029:12;;13012:14;:29;13007:265;;;13083:5;13064:24;;13007:265;;;13148:5;:15;13154:8;13148:15;;;;;;;;;;;;;;;;;;;;;;;;;13147:16;:75;;;;;13207:14;;13190;13168:9;:19;13178:8;13168:19;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:53;13147:75;13124:148;;;13264:5;13245:24;;13124:148;13007:265;12924:359;13300:16;13293:23;;;12761:563;;;;;:::o;13629:499::-;13730:7;13750:17;13794:12;;;;;;;;;;;13793:13;:35;;;;13810:6;:18;13817:10;13810:18;;;;;;;;;;;;;;;;;;;;;;;;;13793:35;:56;;;;13832:6;:17;13839:9;13832:17;;;;;;;;;;;;;;;;;;;;;;;;;13793:56;13788:304;;;13880:1;13868:13;;13788:304;;;13905:5;:17;13911:10;13905:17;;;;;;;;;;;;;;;;;;;;;;;;;13900:192;;;13976:3;13962:11;;;;;;;;;;;13953:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;13941:38;;13900:192;;;14004:5;:16;14010:9;14004:16;;;;;;;;;;;;;;;;;;;;;;;;;13999:93;;;14076:3;14060:13;;;;;;;;;;;14051:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;14039:40;;13999:93;13900:192;13788:304;14111:9;14104:16;;;13629:499;;;;;:::o;9224:317::-;9344:12;9295:11;:26;9315:4;9295:26;;;;;;;;;;;;;;;:46;6779:42;9295:46;;;;;;;;;;;;;;;;:61;9290:244;;;9423:17;9374:11;:26;9394:4;9374:26;;;;;;;;;;;;;;;:46;6779:42;9374:46;;;;;;;;;;;;;;;:66;;;;6779:42;9460:62;;9477:4;9460:62;;;9504:17;9460:62;;;;;;:::i;:::-;;;;;;;;9290:244;9224:317;:::o;16543:348::-;16613:27;16628:11;16613:14;:27::i;:::-;16651:21;16689:1;16675:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16651:40;;16721:4;16702;16707:1;16702:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;6869:42;16738:4;16743:1;16738:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;16764:18;;;;;;;;;;;:69;;;16834:11;16846:1;16848:4;16861;16867:15;16764:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16602:289;16543:348;:::o;16899:103::-;16961:16;;;;;;;;;;;:25;;:33;16987:6;16961:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16899:103;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:116::-;3868:21;3883:5;3868:21;:::i;:::-;3861:5;3858:32;3848:60;;3904:1;3901;3894:12;3848:60;3798:116;:::o;3920:133::-;3963:5;4001:6;3988:20;3979:29;;4017:30;4041:5;4017:30;:::i;:::-;3920:133;;;;:::o;4059:607::-;4130:6;4138;4146;4195:2;4183:9;4174:7;4170:23;4166:32;4163:119;;;4201:79;;:::i;:::-;4163:119;4321:1;4346:53;4391:7;4382:6;4371:9;4367:22;4346:53;:::i;:::-;4336:63;;4292:117;4448:2;4474:50;4516:7;4507:6;4496:9;4492:22;4474:50;:::i;:::-;4464:60;;4419:115;4573:2;4599:50;4641:7;4632:6;4621:9;4617:22;4599:50;:::i;:::-;4589:60;;4544:115;4059:607;;;;;:::o;4672:619::-;4749:6;4757;4765;4814:2;4802:9;4793:7;4789:23;4785:32;4782:119;;;4820:79;;:::i;:::-;4782:119;4940:1;4965:53;5010:7;5001:6;4990:9;4986:22;4965:53;:::i;:::-;4955:63;;4911:117;5067:2;5093:53;5138:7;5129:6;5118:9;5114:22;5093:53;:::i;:::-;5083:63;;5038:118;5195:2;5221:53;5266:7;5257:6;5246:9;5242:22;5221:53;:::i;:::-;5211:63;;5166:118;4672:619;;;;;:::o;5297:86::-;5332:7;5372:4;5365:5;5361:16;5350:27;;5297:86;;;:::o;5389:112::-;5472:22;5488:5;5472:22;:::i;:::-;5467:3;5460:35;5389:112;;:::o;5507:214::-;5596:4;5634:2;5623:9;5619:18;5611:26;;5647:67;5711:1;5700:9;5696:17;5687:6;5647:67;:::i;:::-;5507:214;;;;:::o;5727:89::-;5763:7;5803:6;5796:5;5792:18;5781:29;;5727:89;;;:::o;5822:120::-;5894:23;5911:5;5894:23;:::i;:::-;5887:5;5884:34;5874:62;;5932:1;5929;5922:12;5874:62;5822:120;:::o;5948:137::-;5993:5;6031:6;6018:20;6009:29;;6047:32;6073:5;6047:32;:::i;:::-;5948:137;;;;:::o;6091:470::-;6157:6;6165;6214:2;6202:9;6193:7;6189:23;6185:32;6182:119;;;6220:79;;:::i;:::-;6182:119;6340:1;6365:52;6409:7;6400:6;6389:9;6385:22;6365:52;:::i;:::-;6355:62;;6311:116;6466:2;6492:52;6536:7;6527:6;6516:9;6512:22;6492:52;:::i;:::-;6482:62;;6437:117;6091:470;;;;;:::o;6567:118::-;6638:22;6654:5;6638:22;:::i;:::-;6631:5;6628:33;6618:61;;6675:1;6672;6665:12;6618:61;6567:118;:::o;6691:135::-;6735:5;6773:6;6760:20;6751:29;;6789:31;6814:5;6789:31;:::i;:::-;6691:135;;;;:::o;6832:466::-;6896:6;6904;6953:2;6941:9;6932:7;6928:23;6924:32;6921:119;;;6959:79;;:::i;:::-;6921:119;7079:1;7104:51;7147:7;7138:6;7127:9;7123:22;7104:51;:::i;:::-;7094:61;;7050:115;7204:2;7230:51;7273:7;7264:6;7253:9;7249:22;7230:51;:::i;:::-;7220:61;;7175:116;6832:466;;;;;:::o;7304:329::-;7363:6;7412:2;7400:9;7391:7;7387:23;7383:32;7380:119;;;7418:79;;:::i;:::-;7380:119;7538:1;7563:53;7608:7;7599:6;7588:9;7584:22;7563:53;:::i;:::-;7553:63;;7509:117;7304:329;;;;:::o;7639:118::-;7726:24;7744:5;7726:24;:::i;:::-;7721:3;7714:37;7639:118;;:::o;7763:222::-;7856:4;7894:2;7883:9;7879:18;7871:26;;7907:71;7975:1;7964:9;7960:17;7951:6;7907:71;:::i;:::-;7763:222;;;;:::o;7991:474::-;8059:6;8067;8116:2;8104:9;8095:7;8091:23;8087:32;8084:119;;;8122:79;;:::i;:::-;8084:119;8242:1;8267:53;8312:7;8303:6;8292:9;8288:22;8267:53;:::i;:::-;8257:63;;8213:117;8369:2;8395:53;8440:7;8431:6;8420:9;8416:22;8395:53;:::i;:::-;8385:63;;8340:118;7991:474;;;;;:::o;8471:93::-;8507:7;8547:10;8540:5;8536:22;8525:33;;8471:93;;;:::o;8570:120::-;8642:23;8659:5;8642:23;:::i;:::-;8635:5;8632:34;8622:62;;8680:1;8677;8670:12;8622:62;8570:120;:::o;8696:137::-;8741:5;8779:6;8766:20;8757:29;;8795:32;8821:5;8795:32;:::i;:::-;8696:137;;;;:::o;8839:901::-;8929:6;8937;8945;8953;8961;9010:3;8998:9;8989:7;8985:23;8981:33;8978:120;;;9017:79;;:::i;:::-;8978:120;9137:1;9162:52;9206:7;9197:6;9186:9;9182:22;9162:52;:::i;:::-;9152:62;;9108:116;9263:2;9289:52;9333:7;9324:6;9313:9;9309:22;9289:52;:::i;:::-;9279:62;;9234:117;9390:2;9416:52;9460:7;9451:6;9440:9;9436:22;9416:52;:::i;:::-;9406:62;;9361:117;9517:2;9543:52;9587:7;9578:6;9567:9;9563:22;9543:52;:::i;:::-;9533:62;;9488:117;9644:3;9671:52;9715:7;9706:6;9695:9;9691:22;9671:52;:::i;:::-;9661:62;;9615:118;8839:901;;;;;;;;:::o;9746:104::-;9791:7;9820:24;9838:5;9820:24;:::i;:::-;9809:35;;9746:104;;;:::o;9856:138::-;9937:32;9963:5;9937:32;:::i;:::-;9930:5;9927:43;9917:71;;9984:1;9981;9974:12;9917:71;9856:138;:::o;10000:155::-;10054:5;10092:6;10079:20;10070:29;;10108:41;10143:5;10108:41;:::i;:::-;10000:155;;;;:::o;10161:345::-;10228:6;10277:2;10265:9;10256:7;10252:23;10248:32;10245:119;;;10283:79;;:::i;:::-;10245:119;10403:1;10428:61;10481:7;10472:6;10461:9;10457:22;10428:61;:::i;:::-;10418:71;;10374:125;10161:345;;;;:::o;10512:180::-;10560:77;10557:1;10550:88;10657:4;10654:1;10647:15;10681:4;10678:1;10671:15;10698:102;10740:8;10787:5;10784:1;10780:13;10759:34;;10698:102;;;:::o;10806:848::-;10867:5;10874:4;10898:6;10889:15;;10922:5;10913:14;;10936:712;10957:1;10947:8;10944:15;10936:712;;;11052:4;11047:3;11043:14;11037:4;11034:24;11031:50;;;11061:18;;:::i;:::-;11031:50;11111:1;11101:8;11097:16;11094:451;;;11526:4;11519:5;11515:16;11506:25;;11094:451;11576:4;11570;11566:15;11558:23;;11606:32;11629:8;11606:32;:::i;:::-;11594:44;;10936:712;;;10806:848;;;;;;;:::o;11660:1073::-;11714:5;11905:8;11895:40;;11926:1;11917:10;;11928:5;;11895:40;11954:4;11944:36;;11971:1;11962:10;;11973:5;;11944:36;12040:4;12088:1;12083:27;;;;12124:1;12119:191;;;;12033:277;;12083:27;12101:1;12092:10;;12103:5;;;12119:191;12164:3;12154:8;12151:17;12148:43;;;12171:18;;:::i;:::-;12148:43;12220:8;12217:1;12213:16;12204:25;;12255:3;12248:5;12245:14;12242:40;;;12262:18;;:::i;:::-;12242:40;12295:5;;;12033:277;;12419:2;12409:8;12406:16;12400:3;12394:4;12391:13;12387:36;12369:2;12359:8;12356:16;12351:2;12345:4;12342:12;12338:35;12322:111;12319:246;;;12475:8;12469:4;12465:19;12456:28;;12510:3;12503:5;12500:14;12497:40;;;12517:18;;:::i;:::-;12497:40;12550:5;;12319:246;12590:42;12628:3;12618:8;12612:4;12609:1;12590:42;:::i;:::-;12575:57;;;;12664:4;12659:3;12655:14;12648:5;12645:25;12642:51;;;12673:18;;:::i;:::-;12642:51;12722:4;12715:5;12711:16;12702:25;;11660:1073;;;;;;:::o;12739:281::-;12797:5;12821:23;12839:4;12821:23;:::i;:::-;12813:31;;12865:25;12881:8;12865:25;:::i;:::-;12853:37;;12909:104;12946:66;12936:8;12930:4;12909:104;:::i;:::-;12900:113;;12739:281;;;;:::o;13026:410::-;13066:7;13089:20;13107:1;13089:20;:::i;:::-;13084:25;;13123:20;13141:1;13123:20;:::i;:::-;13118:25;;13178:1;13175;13171:9;13200:30;13218:11;13200:30;:::i;:::-;13189:41;;13379:1;13370:7;13366:15;13363:1;13360:22;13340:1;13333:9;13313:83;13290:139;;13409:18;;:::i;:::-;13290:139;13074:362;13026:410;;;;:::o;13442:177::-;13582:29;13578:1;13570:6;13566:14;13559:53;13442:177;:::o;13625:366::-;13767:3;13788:67;13852:2;13847:3;13788:67;:::i;:::-;13781:74;;13864:93;13953:3;13864:93;:::i;:::-;13982:2;13977:3;13973:12;13966:19;;13625:366;;;:::o;13997:419::-;14163:4;14201:2;14190:9;14186:18;14178:26;;14250:9;14244:4;14240:20;14236:1;14225:9;14221:17;14214:47;14278:131;14404:4;14278:131;:::i;:::-;14270:139;;13997:419;;;:::o;14422:166::-;14562:18;14558:1;14550:6;14546:14;14539:42;14422:166;:::o;14594:366::-;14736:3;14757:67;14821:2;14816:3;14757:67;:::i;:::-;14750:74;;14833:93;14922:3;14833:93;:::i;:::-;14951:2;14946:3;14942:12;14935:19;;14594:366;;;:::o;14966:419::-;15132:4;15170:2;15159:9;15155:18;15147:26;;15219:9;15213:4;15209:20;15205:1;15194:9;15190:17;15183:47;15247:131;15373:4;15247:131;:::i;:::-;15239:139;;14966:419;;;:::o;15391:170::-;15531:22;15527:1;15519:6;15515:14;15508:46;15391:170;:::o;15567:366::-;15709:3;15730:67;15794:2;15789:3;15730:67;:::i;:::-;15723:74;;15806:93;15895:3;15806:93;:::i;:::-;15924:2;15919:3;15915:12;15908:19;;15567:366;;;:::o;15939:419::-;16105:4;16143:2;16132:9;16128:18;16120:26;;16192:9;16186:4;16182:20;16178:1;16167:9;16163:17;16156:47;16220:131;16346:4;16220:131;:::i;:::-;16212:139;;15939:419;;;:::o;16364:194::-;16404:4;16424:20;16442:1;16424:20;:::i;:::-;16419:25;;16458:20;16476:1;16458:20;:::i;:::-;16453:25;;16502:1;16499;16495:9;16487:17;;16526:1;16520:4;16517:11;16514:37;;;16531:18;;:::i;:::-;16514:37;16364:194;;;;:::o;16564:180::-;16612:77;16609:1;16602:88;16709:4;16706:1;16699:15;16733:4;16730:1;16723:15;16750:185;16790:1;16807:20;16825:1;16807:20;:::i;:::-;16802:25;;16841:20;16859:1;16841:20;:::i;:::-;16836:25;;16880:1;16870:35;;16885:18;;:::i;:::-;16870:35;16927:1;16924;16920:9;16915:14;;16750:185;;;;:::o;16941:191::-;16981:3;17000:20;17018:1;17000:20;:::i;:::-;16995:25;;17034:20;17052:1;17034:20;:::i;:::-;17029:25;;17077:1;17074;17070:9;17063:16;;17098:3;17095:1;17092:10;17089:36;;;17105:18;;:::i;:::-;17089:36;16941:191;;;;:::o;17138:160::-;17278:12;17274:1;17266:6;17262:14;17255:36;17138:160;:::o;17304:366::-;17446:3;17467:67;17531:2;17526:3;17467:67;:::i;:::-;17460:74;;17543:93;17632:3;17543:93;:::i;:::-;17661:2;17656:3;17652:12;17645:19;;17304:366;;;:::o;17676:419::-;17842:4;17880:2;17869:9;17865:18;17857:26;;17929:9;17923:4;17919:20;17915:1;17904:9;17900:17;17893:47;17957:131;18083:4;17957:131;:::i;:::-;17949:139;;17676:419;;;:::o;18101:164::-;18241:16;18237:1;18229:6;18225:14;18218:40;18101:164;:::o;18271:366::-;18413:3;18434:67;18498:2;18493:3;18434:67;:::i;:::-;18427:74;;18510:93;18599:3;18510:93;:::i;:::-;18628:2;18623:3;18619:12;18612:19;;18271:366;;;:::o;18643:419::-;18809:4;18847:2;18836:9;18832:18;18824:26;;18896:9;18890:4;18886:20;18882:1;18871:9;18867:17;18860:47;18924:131;19050:4;18924:131;:::i;:::-;18916:139;;18643:419;;;:::o;19068:188::-;19106:3;19125:18;19141:1;19125:18;:::i;:::-;19120:23;;19157:18;19173:1;19157:18;:::i;:::-;19152:23;;19198:1;19195;19191:9;19184:16;;19221:4;19216:3;19213:13;19210:39;;;19229:18;;:::i;:::-;19210:39;19068:188;;;;:::o;19262:168::-;19402:20;19398:1;19390:6;19386:14;19379:44;19262:168;:::o;19436:366::-;19578:3;19599:67;19663:2;19658:3;19599:67;:::i;:::-;19592:74;;19675:93;19764:3;19675:93;:::i;:::-;19793:2;19788:3;19784:12;19777:19;;19436:366;;;:::o;19808:419::-;19974:4;20012:2;20001:9;19997:18;19989:26;;20061:9;20055:4;20051:20;20047:1;20036:9;20032:17;20025:47;20089:131;20215:4;20089:131;:::i;:::-;20081:139;;19808:419;;;:::o;20233:162::-;20373:14;20369:1;20361:6;20357:14;20350:38;20233:162;:::o;20401:366::-;20543:3;20564:67;20628:2;20623:3;20564:67;:::i;:::-;20557:74;;20640:93;20729:3;20640:93;:::i;:::-;20758:2;20753:3;20749:12;20742:19;;20401:366;;;:::o;20773:419::-;20939:4;20977:2;20966:9;20962:18;20954:26;;21026:9;21020:4;21016:20;21012:1;21001:9;20997:17;20990:47;21054:131;21180:4;21054:131;:::i;:::-;21046:139;;20773:419;;;:::o;21198:99::-;21234:7;21274:16;21267:5;21263:28;21252:39;;21198:99;;;:::o;21303:275::-;21342:7;21365:19;21382:1;21365:19;:::i;:::-;21360:24;;21398:19;21415:1;21398:19;:::i;:::-;21393:24;;21452:1;21449;21445:9;21474:29;21491:11;21474:29;:::i;:::-;21463:40;;21535:11;21526:7;21523:24;21513:58;;21551:18;;:::i;:::-;21513:58;21350:228;21303:275;;;;:::o;21584:163::-;21724:15;21720:1;21712:6;21708:14;21701:39;21584:163;:::o;21753:366::-;21895:3;21916:67;21980:2;21975:3;21916:67;:::i;:::-;21909:74;;21992:93;22081:3;21992:93;:::i;:::-;22110:2;22105:3;22101:12;22094:19;;21753:366;;;:::o;22125:419::-;22291:4;22329:2;22318:9;22314:18;22306:26;;22378:9;22372:4;22368:20;22364:1;22353:9;22349:17;22342:47;22406:131;22532:4;22406:131;:::i;:::-;22398:139;;22125:419;;;:::o;22550:160::-;22690:12;22686:1;22678:6;22674:14;22667:36;22550:160;:::o;22716:366::-;22858:3;22879:67;22943:2;22938:3;22879:67;:::i;:::-;22872:74;;22955:93;23044:3;22955:93;:::i;:::-;23073:2;23068:3;23064:12;23057:19;;22716:366;;;:::o;23088:419::-;23254:4;23292:2;23281:9;23277:18;23269:26;;23341:9;23335:4;23331:20;23327:1;23316:9;23312:17;23305:47;23369:131;23495:4;23369:131;:::i;:::-;23361:139;;23088:419;;;:::o;23513:166::-;23653:18;23649:1;23641:6;23637:14;23630:42;23513:166;:::o;23685:366::-;23827:3;23848:67;23912:2;23907:3;23848:67;:::i;:::-;23841:74;;23924:93;24013:3;23924:93;:::i;:::-;24042:2;24037:3;24033:12;24026:19;;23685:366;;;:::o;24057:419::-;24223:4;24261:2;24250:9;24246:18;24238:26;;24310:9;24304:4;24300:20;24296:1;24285:9;24281:17;24274:47;24338:131;24464:4;24338:131;:::i;:::-;24330:139;;24057:419;;;:::o;24482:165::-;24622:17;24618:1;24610:6;24606:14;24599:41;24482:165;:::o;24653:366::-;24795:3;24816:67;24880:2;24875:3;24816:67;:::i;:::-;24809:74;;24892:93;24981:3;24892:93;:::i;:::-;25010:2;25005:3;25001:12;24994:19;;24653:366;;;:::o;25025:419::-;25191:4;25229:2;25218:9;25214:18;25206:26;;25278:9;25272:4;25268:20;25264:1;25253:9;25249:17;25242:47;25306:131;25432:4;25306:131;:::i;:::-;25298:139;;25025:419;;;:::o;25450:143::-;25507:5;25538:6;25532:13;25523:22;;25554:33;25581:5;25554:33;:::i;:::-;25450:143;;;;:::o;25599:351::-;25669:6;25718:2;25706:9;25697:7;25693:23;25689:32;25686:119;;;25724:79;;:::i;:::-;25686:119;25844:1;25869:64;25925:7;25916:6;25905:9;25901:22;25869:64;:::i;:::-;25859:74;;25815:128;25599:351;;;;:::o;25956:332::-;26077:4;26115:2;26104:9;26100:18;26092:26;;26128:71;26196:1;26185:9;26181:17;26172:6;26128:71;:::i;:::-;26209:72;26277:2;26266:9;26262:18;26253:6;26209:72;:::i;:::-;25956:332;;;;;:::o;26294:98::-;26345:6;26379:5;26373:12;26363:22;;26294:98;;;:::o;26398:147::-;26499:11;26536:3;26521:18;;26398:147;;;;:::o;26551:386::-;26655:3;26683:38;26715:5;26683:38;:::i;:::-;26737:88;26818:6;26813:3;26737:88;:::i;:::-;26730:95;;26834:65;26892:6;26887:3;26880:4;26873:5;26869:16;26834:65;:::i;:::-;26924:6;26919:3;26915:16;26908:23;;26659:278;26551:386;;;;:::o;26943:271::-;27073:3;27095:93;27184:3;27175:6;27095:93;:::i;:::-;27088:100;;27205:3;27198:10;;26943:271;;;;:::o;27220:166::-;27360:18;27356:1;27348:6;27344:14;27337:42;27220:166;:::o;27392:366::-;27534:3;27555:67;27619:2;27614:3;27555:67;:::i;:::-;27548:74;;27631:93;27720:3;27631:93;:::i;:::-;27749:2;27744:3;27740:12;27733:19;;27392:366;;;:::o;27764:419::-;27930:4;27968:2;27957:9;27953:18;27945:26;;28017:9;28011:4;28007:20;28003:1;27992:9;27988:17;27981:47;28045:131;28171:4;28045:131;:::i;:::-;28037:139;;27764:419;;;:::o;28189:60::-;28217:3;28238:5;28231:12;;28189:60;;;:::o;28255:142::-;28305:9;28338:53;28356:34;28365:24;28383:5;28365:24;:::i;:::-;28356:34;:::i;:::-;28338:53;:::i;:::-;28325:66;;28255:142;;;:::o;28403:126::-;28453:9;28486:37;28517:5;28486:37;:::i;:::-;28473:50;;28403:126;;;:::o;28535:134::-;28593:9;28626:37;28657:5;28626:37;:::i;:::-;28613:50;;28535:134;;;:::o;28675:147::-;28770:45;28809:5;28770:45;:::i;:::-;28765:3;28758:58;28675:147;;:::o;28828:238::-;28929:4;28967:2;28956:9;28952:18;28944:26;;28980:79;29056:1;29045:9;29041:17;29032:6;28980:79;:::i;:::-;28828:238;;;;:::o;29072:176::-;29212:28;29208:1;29200:6;29196:14;29189:52;29072:176;:::o;29254:366::-;29396:3;29417:67;29481:2;29476:3;29417:67;:::i;:::-;29410:74;;29493:93;29582:3;29493:93;:::i;:::-;29611:2;29606:3;29602:12;29595:19;;29254:366;;;:::o;29626:419::-;29792:4;29830:2;29819:9;29815:18;29807:26;;29879:9;29873:4;29869:20;29865:1;29854:9;29850:17;29843:47;29907:131;30033:4;29907:131;:::i;:::-;29899:139;;29626:419;;;:::o;30051:159::-;30191:11;30187:1;30179:6;30175:14;30168:35;30051:159;:::o;30216:365::-;30358:3;30379:66;30443:1;30438:3;30379:66;:::i;:::-;30372:73;;30454:93;30543:3;30454:93;:::i;:::-;30572:2;30567:3;30563:12;30556:19;;30216:365;;;:::o;30587:419::-;30753:4;30791:2;30780:9;30776:18;30768:26;;30840:9;30834:4;30830:20;30826:1;30815:9;30811:17;30804:47;30868:131;30994:4;30868:131;:::i;:::-;30860:139;;30587:419;;;:::o;31012:164::-;31152:16;31148:1;31140:6;31136:14;31129:40;31012:164;:::o;31182:366::-;31324:3;31345:67;31409:2;31404:3;31345:67;:::i;:::-;31338:74;;31421:93;31510:3;31421:93;:::i;:::-;31539:2;31534:3;31530:12;31523:19;;31182:366;;;:::o;31554:419::-;31720:4;31758:2;31747:9;31743:18;31735:26;;31807:9;31801:4;31797:20;31793:1;31782:9;31778:17;31771:47;31835:131;31961:4;31835:131;:::i;:::-;31827:139;;31554:419;;;:::o;31979:85::-;32024:7;32053:5;32042:16;;31979:85;;;:::o;32070:158::-;32128:9;32161:61;32179:42;32188:32;32214:5;32188:32;:::i;:::-;32179:42;:::i;:::-;32161:61;:::i;:::-;32148:74;;32070:158;;;:::o;32234:147::-;32329:45;32368:5;32329:45;:::i;:::-;32324:3;32317:58;32234:147;;:::o;32387:807::-;32636:4;32674:3;32663:9;32659:19;32651:27;;32688:71;32756:1;32745:9;32741:17;32732:6;32688:71;:::i;:::-;32769:72;32837:2;32826:9;32822:18;32813:6;32769:72;:::i;:::-;32851:80;32927:2;32916:9;32912:18;32903:6;32851:80;:::i;:::-;32941;33017:2;33006:9;33002:18;32993:6;32941:80;:::i;:::-;33031:73;33099:3;33088:9;33084:19;33075:6;33031:73;:::i;:::-;33114;33182:3;33171:9;33167:19;33158:6;33114:73;:::i;:::-;32387:807;;;;;;;;;:::o;33200:143::-;33257:5;33288:6;33282:13;33273:22;;33304:33;33331:5;33304:33;:::i;:::-;33200:143;;;;:::o;33349:663::-;33437:6;33445;33453;33502:2;33490:9;33481:7;33477:23;33473:32;33470:119;;;33508:79;;:::i;:::-;33470:119;33628:1;33653:64;33709:7;33700:6;33689:9;33685:22;33653:64;:::i;:::-;33643:74;;33599:128;33766:2;33792:64;33848:7;33839:6;33828:9;33824:22;33792:64;:::i;:::-;33782:74;;33737:129;33905:2;33931:64;33987:7;33978:6;33967:9;33963:22;33931:64;:::i;:::-;33921:74;;33876:129;33349:663;;;;;:::o;34018:351::-;34088:6;34137:2;34125:9;34116:7;34112:23;34108:32;34105:119;;;34143:79;;:::i;:::-;34105:119;34263:1;34288:64;34344:7;34335:6;34324:9;34320:22;34288:64;:::i;:::-;34278:74;;34234:128;34018:351;;;;:::o;34375:180::-;34423:77;34420:1;34413:88;34520:4;34517:1;34510:15;34544:4;34541:1;34534:15;34561:180;34609:77;34606:1;34599:88;34706:4;34703:1;34696:15;34730:4;34727:1;34720:15;34747:114;34814:6;34848:5;34842:12;34832:22;;34747:114;;;:::o;34867:184::-;34966:11;35000:6;34995:3;34988:19;35040:4;35035:3;35031:14;35016:29;;34867:184;;;;:::o;35057:132::-;35124:4;35147:3;35139:11;;35177:4;35172:3;35168:14;35160:22;;35057:132;;;:::o;35195:108::-;35272:24;35290:5;35272:24;:::i;:::-;35267:3;35260:37;35195:108;;:::o;35309:179::-;35378:10;35399:46;35441:3;35433:6;35399:46;:::i;:::-;35477:4;35472:3;35468:14;35454:28;;35309:179;;;;:::o;35494:113::-;35564:4;35596;35591:3;35587:14;35579:22;;35494:113;;;:::o;35643:732::-;35762:3;35791:54;35839:5;35791:54;:::i;:::-;35861:86;35940:6;35935:3;35861:86;:::i;:::-;35854:93;;35971:56;36021:5;35971:56;:::i;:::-;36050:7;36081:1;36066:284;36091:6;36088:1;36085:13;36066:284;;;36167:6;36161:13;36194:63;36253:3;36238:13;36194:63;:::i;:::-;36187:70;;36280:60;36333:6;36280:60;:::i;:::-;36270:70;;36126:224;36113:1;36110;36106:9;36101:14;;36066:284;;;36070:14;36366:3;36359:10;;35767:608;;;35643:732;;;;:::o;36381:831::-;36644:4;36682:3;36671:9;36667:19;36659:27;;36696:71;36764:1;36753:9;36749:17;36740:6;36696:71;:::i;:::-;36777:80;36853:2;36842:9;36838:18;36829:6;36777:80;:::i;:::-;36904:9;36898:4;36894:20;36889:2;36878:9;36874:18;36867:48;36932:108;37035:4;37026:6;36932:108;:::i;:::-;36924:116;;37050:72;37118:2;37107:9;37103:18;37094:6;37050:72;:::i;:::-;37132:73;37200:3;37189:9;37185:19;37176:6;37132:73;:::i;:::-;36381:831;;;;;;;;:::o

Swarm Source

ipfs://6b3a5cdfa57e1f76addc7b8d135066a1d3d23eca27d596a4643912a3da991d61
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.