ETH Price: $3,354.98 (-0.37%)
Gas: 4.85 Gwei

Token

BanksBuyBitcoin (BBB)
 

Overview

Max Total Supply

888,888,888,888 BBB

Holders

46

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.110137156 BBB

Value
$0.00
0x9309c9a38cA533814B1CE2A360558bD3468CdF32
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:
BanksBuyBitcoin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-24
*/

/**

  ____              _        ____              ____  _ _            _
 |  _ \            | |      |  _ \            |  _ \(_) |          (_)
 | |_) | __ _ _ __ | | _____| |_) |_   _ _   _| |_) |_| |_ ___ ___  _ _ __
 |  _ < / _` | '_ \| |/ / __|  _ <| | | | | | |  _ <| | __/ __/ _ \| | '_ \
 | |_) | (_| | | | |   <\__ \ |_) | |_| | |_| | |_) | | || (_| (_) | | | | |
 |____/ \__,_|_| |_|_|\_\___/____/ \__,_|\__, |____/|_|\__\___\___/|_|_| |_|
                                          __/ |
                                         |___/


Banks are making their move, snapping up Bitcoin in droves. Don't let them steal the show. They've capitalized on the dip.
Now, it's your turn. Stand your ground, claim your stake!

Twitter: https://twitter.com/banksbuybitcoin
Telegram: https://t.me/BanksBuyBitcoin
Website:  https://www.banksbuybitcoin.com

LP locked
Contract Renounced 
Anti snipe and MEV measurements at launch
95% supply in Liquidity Pool 5% for CEX
Dextools, CMC and Coingecko instant apply

*/

//SPDX-License-Identifier: MIT

/*
*/

pragma solidity 0.8.19;

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

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

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

contract BanksBuyBitcoin is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 888_888_888_888 * (10**_decimals);
    string private constant _name         = "BanksBuyBitcoin";
    string private  constant _symbol      = "BBB";

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

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

    uint16 private _taxSharesMarketing   = 63;
    uint16 private _taxSharesDevelopment = 37;
    uint16 private _taxSharesLP          = 0;
    uint16 private _totalTaxShares = _taxSharesMarketing + _taxSharesDevelopment + _taxSharesLP;

    address payable private _walletMarketing = payable(0x871218807796dabCBD02064A5D9214a8C6eDD74e); 
    address payable private _walletDevelopment = payable(0x1732848C2Cb0213419F18Cb3CD28e66eB36d9573); 

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

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

    address private _lpOwner;

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

    bool private _tradingOpen;

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

    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

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

        uint256 cexFunds   = _totalSupply * 3 / 100;
        uint256 marketingFunds = _totalSupply * 2 / 100;
        
        _balances[address(this)] = _totalSupply - cexFunds - marketingFunds;
        emit Transfer(address(0), address(this), _balances[address(this)]);


        _balances[_owner] = cexFunds;
        emit Transfer(address(0), _owner, _balances[_owner]);
        _balances[_walletMarketing] = marketingFunds;
        emit Transfer(address(0), _walletMarketing, _balances[_walletMarketing]);

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

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

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

        return checkResult;
    }

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

        return taxAmount;
    }

    function buyFee() external view returns(uint8) {
        return _buyTaxRate;
    }
    function sellFee() external view returns(uint8) {
        return _sellTaxRate;
    }

    function marketingWallet() external view returns (address) {
        return _walletMarketing;
    }
    function developmentWallet() external view returns (address) {
        return _walletDevelopment;
    }

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

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


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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burnedByWallet","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"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":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526005600060146101000a81548160ff021916908360ff1602179055506001600060156101000a81548160ff021916908360ff1602179055506001600060166101000a81548160ff021916908360ff1602179055506001600060176101000a81548160ff021916908360ff16021790555060026001556000600260006101000a81548160ff021916908360ff1602179055506000600260016101000a81548160ff021916908360ff160217905550603f6002806101000a81548161ffff021916908361ffff1602179055506025600260046101000a81548161ffff021916908361ffff1602179055506000600260066101000a81548161ffff021916908361ffff160217905550600260069054906101000a900461ffff16600260049054906101000a900461ffff1660028054906101000a900461ffff1662000147919062000cfc565b62000153919062000cfc565b600260086101000a81548161ffff021916908361ffff16021790555073871218807796dabcbd02064a5d9214a8c6edd74e6002600a6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731732848c2cb0213419f18cb3cd28e66eb36d9573600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000229919062000ea4565b64cef5e80e386200023b919062000ef5565b6005556009600a6200024e919062000ea4565b64cef5e80e3862000260919062000ef5565b600655620186a0600a6009600a62000279919062000ea4565b64cef5e80e386200028b919062000ef5565b62000297919062000ef5565b620002a3919062000f6f565b600755620186a06103786009600a620002bd919062000ea4565b64cef5e80e38620002cf919062000ef5565b620002db919062000ef5565b620002e7919062000f6f565b6008556064603b600754620002fd919062000ef5565b62000309919062000ef5565b600955737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260016101000a81548160ff0219169083151502179055503480156200038957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606460036009600a62000423919062000ea4565b64cef5e80e3862000435919062000ef5565b62000441919062000ef5565b6200044d919062000f6f565b90506000606460026009600a62000465919062000ea4565b64cef5e80e3862000477919062000ef5565b62000483919062000ef5565b6200048f919062000f6f565b905080826009600a620004a3919062000ea4565b64cef5e80e38620004b5919062000ef5565b620004c1919062000fa7565b620004cd919062000fa7565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620005af919062000ff3565b60405180910390a381600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051620006fc919062000ff3565b60405180910390a380600a60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200084d919062000ff3565b60405180910390a36001600c60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062001010565b600061ffff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d098262000cbf565b915062000d168362000cbf565b9250828201905061ffff81111562000d335762000d3262000ccd565b5b92915050565b60008160011c9050919050565b6000808291508390505b600185111562000d985780860481111562000d705762000d6f62000ccd565b5b600185161562000d805780820291505b808102905062000d908562000d39565b945062000d50565b94509492505050565b60008262000db3576001905062000e86565b8162000dc3576000905062000e86565b816001811462000ddc576002811462000de75762000e1d565b600191505062000e86565b60ff84111562000dfc5762000dfb62000ccd565b5b8360020a91508482111562000e165762000e1562000ccd565b5b5062000e86565b5060208310610133831016604e8410600b841016171562000e575782820a90508381111562000e515762000e5062000ccd565b5b62000e86565b62000e66848484600162000d46565b9250905081840481111562000e805762000e7f62000ccd565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000eb18262000e8d565b915062000ebe8362000e97565b925062000eed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000da1565b905092915050565b600062000f028262000e8d565b915062000f0f8362000e8d565b925082820262000f1f8162000e8d565b9150828204841483151762000f395762000f3862000ccd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f7c8262000e8d565b915062000f898362000e8d565b92508262000f9c5762000f9b62000f40565b5b828204905092915050565b600062000fb48262000e8d565b915062000fc18362000e8d565b925082820390508181111562000fdc5762000fdb62000ccd565b5b92915050565b62000fed8162000e8d565b82525050565b60006020820190506200100a600083018462000fe2565b92915050565b61390080620010206000396000f3fe6080604052600436106101235760003560e01c806375f0a874116100a0578063c3f70b5211610064578063c3f70b52146103e6578063dd62ed3e14610411578063e8078d941461044e578063f2fde38b14610458578063f8b45b05146104815761012a565b806375f0a874146102fd5780638da5cb5b1461032857806395d89b4114610353578063a9059cbb1461037e578063c04a5414146103bb5761012a565b8063313ce567116100e7578063313ce5671461022a578063368f480014610255578063470624021461027e57806370a08231146102a9578063715018a6146102e65761012a565b806306fdde031461012f578063095ea7b31461015a57806318160ddd1461019757806323b872dd146101c25780632b14ca56146101ff5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b506101446104ac565b60405161015191906129af565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612a6a565b6104e9565b60405161018e9190612ac5565b60405180910390f35b3480156101a357600080fd5b506101ac6105db565b6040516101b99190612aef565b60405180910390f35b3480156101ce57600080fd5b506101e960048036038101906101e49190612b0a565b610600565b6040516101f69190612ac5565b60405180910390f35b34801561020b57600080fd5b5061021461080a565b6040516102219190612b79565b60405180910390f35b34801561023657600080fd5b5061023f610821565b60405161024c9190612b79565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612bce565b61082a565b005b34801561028a57600080fd5b506102936109ea565b6040516102a09190612b79565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190612c0e565b610a01565b6040516102dd9190612aef565b60405180910390f35b3480156102f257600080fd5b506102fb610a4a565b005b34801561030957600080fd5b50610312610b53565b60405161031f9190612c4a565b60405180910390f35b34801561033457600080fd5b5061033d610b7d565b60405161034a9190612c4a565b60405180910390f35b34801561035f57600080fd5b50610368610ba6565b60405161037591906129af565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190612a6a565b610be3565b6040516103b29190612ac5565b60405180910390f35b3480156103c757600080fd5b506103d0610c40565b6040516103dd9190612c4a565b60405180910390f35b3480156103f257600080fd5b506103fb610c6a565b6040516104089190612aef565b60405180910390f35b34801561041d57600080fd5b5061043860048036038101906104339190612c65565b610c74565b6040516104459190612aef565b60405180910390f35b610456610cfb565b005b34801561046457600080fd5b5061047f600480360381019061047a9190612ce3565b6113e8565b005b34801561048d57600080fd5b506104966114f0565b6040516104a39190612aef565b60405180910390f35b60606040518060400160405280600f81526020017f42616e6b73427579426974636f696e0000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105c99190612aef565b60405180910390a36001905092915050565b60006009600a6105eb9190612e72565b64cef5e80e386105fb9190612ebd565b905090565b600061060b846114fa565b61064a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064190612f4b565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107f65781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107759190612f6b565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6108018484846115d5565b90509392505050565b6000600260019054906101000a900460ff16905090565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af90612feb565b60405180910390fd5b600060016103e88461ffff166009600a6108d29190612e72565b64cef5e80e386108e29190612ebd565b6108ec9190612ebd565b6108f6919061303a565b610900919061306b565b9050600554811015610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093e906130eb565b60405180910390fd5b80600581905550600060016103e88461ffff166009600a6109689190612e72565b64cef5e80e386109789190612ebd565b6109829190612ebd565b61098c919061303a565b610996919061306b565b90506006548110156109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490613157565b60405180910390fd5b8060068190555050505050565b6000600260009054906101000a900460ff16905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90612feb565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610b499190612c4a565b60405180910390a1565b60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4242420000000000000000000000000000000000000000000000000000000000815250905090565b6000610bee336114fa565b610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2490612f4b565b60405180910390fd5b610c383384846115d5565b905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600554905090565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090612feb565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c906131c3565b60405180910390fd5b601260009054906101000a900460ff1615610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c9061322f565b60405180910390fd5b6000341180610e945750600047115b610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca9061329b565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613307565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe6919061333c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611093919061333c565b6040518363ffffffff1660e01b81526004016110b0929190613369565b6020604051808303816000875af11580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f3919061333c565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117e600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000611b61565b600954600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111f19190612f6b565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112c391906133d9565b6000604051808303816000865af19150503d8060008114611300576040519150601f19603f3d011682016040523d82523d6000602084013e611305565b606091505b5050905080611349576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113409061343c565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113ca611c4f565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90612feb565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516114e591906134bb565b60405180910390a150565b6000600654905090565b60008060009050601260009054906101000a900460ff161561151f57600190506115cc565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156115c15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115cb57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c90613522565b60405180910390fd5b601260009054906101000a900460ff1661173b57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116fb5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190612f4b565b60405180910390fd5b5b601260019054906101000a900460ff161580156117a15750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117af576117ae611d3b565b5b600154431080156117c257506004544310155b80156118175750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561188b573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461188a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118819061358e565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118f357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561194b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561199b5761195b848484611f43565b61199a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611991906135fa565b60405180910390fd5b5b60006119a88585856120da565b9050600081846119b89190612f6b565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a059190612f6b565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160096000828254611a5a919061306b565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aac919061306b565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611b4c9190612aef565b60405180910390a36001925050509392505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115611b9357600090505b611b9c8461238a565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401611c0396959493929190613655565b60606040518083038185885af1158015611c21573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c4691906136cb565b50505050505050565b606460016009600a611c619190612e72565b64cef5e80e38611c719190612ebd565b611c7b9190612ebd565b611c85919061303a565b600581905550606460016009600a611c9d9190612e72565b64cef5e80e38611cad9190612ebd565b611cb79190612ebd565b611cc1919061303a565b6006819055506001601260006101000a81548160ff02191690831515021790555043600481905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600454600154611d1f919061306b565b611d29919061306b565b611d33919061306b565b600181905550565b6001601260016101000a81548160ff021916908315150217905550600060095490506007548110158015611d7b5750601260009054906101000a900460ff165b15611f25576008548110611d8f5760085490505b600060028060089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff1684611dc79190612ebd565b611dd1919061303a565b611ddb919061303a565b905060008183611deb9190612f6b565b90506009600a611dfb9190612e72565b811115611f0957600047905083600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e56919061306b565b92505081905550611e6682612574565b8360096000828254611e789190612f6b565b9250508190555060008147611e8d9190612f6b565b90506000600260069054906101000a900461ffff1661ffff161115611f06576000600260089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff1683611ee39190612ebd565b611eed919061303a565b9050611ef88561238a565b611f0485826000611b61565b505b50505b60004790506000811115611f2157611f2081612793565b5b5050505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff168015611fb05750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120065750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120cf5760055483111561201e57600090506120ce565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120c3575060065483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c1919061306b565b115b156120cd57600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff1615806121425750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121965750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121a4576000905061237f565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122fe57600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600454612229919061306b565b612233919061306b565b431061226a576064600260009054906101000a900460ff1660ff16846122599190612ebd565b612263919061303a565b90506122f9565b600060169054906101000a900460ff1660ff1660045461228a919061306b565b43106122c1576064600060159054906101000a900460ff1660ff16846122b09190612ebd565b6122ba919061303a565b90506122f8565b60045443106122f7576064600060149054906101000a900460ff1660ff16846122ea9190612ebd565b6122f4919061303a565b90505b5b5b61237e565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561237d576064600260019054906101000a900460ff1660ff16846123709190612ebd565b61237a919061303a565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612571577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516125689190612aef565b60405180910390a35b50565b61257d8161238a565b6000600267ffffffffffffffff81111561259a5761259961371e565b5b6040519080825280602002602001820160405280156125c85781602001602082028036833780820191505090505b50905030816000815181106125e0576125df61374d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ab919061333c565b816001815181106126bf576126be61374d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161275d95949392919061383a565b600060405180830381600087803b15801561277757600080fd5b505af115801561278b573d6000803e3d6000fd5b505050505050565b6000600260049054906101000a900461ffff1660028054906101000a900461ffff166127bf9190613894565b905060008161ffff16111561291b5760008161ffff1660028054906101000a900461ffff1661ffff16846127f39190612ebd565b6127fd919061303a565b905060008261ffff16600260049054906101000a900461ffff1661ffff16856128269190612ebd565b612830919061303a565b905060008211156128a5576002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156128a3573d6000803e3d6000fd5b505b600081111561291857600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612916573d6000803e3d6000fd5b505b50505b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561295957808201518184015260208101905061293e565b60008484015250505050565b6000601f19601f8301169050919050565b60006129818261291f565b61298b818561292a565b935061299b81856020860161293b565b6129a481612965565b840191505092915050565b600060208201905081810360008301526129c98184612976565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a01826129d6565b9050919050565b612a11816129f6565b8114612a1c57600080fd5b50565b600081359050612a2e81612a08565b92915050565b6000819050919050565b612a4781612a34565b8114612a5257600080fd5b50565b600081359050612a6481612a3e565b92915050565b60008060408385031215612a8157612a806129d1565b5b6000612a8f85828601612a1f565b9250506020612aa085828601612a55565b9150509250929050565b60008115159050919050565b612abf81612aaa565b82525050565b6000602082019050612ada6000830184612ab6565b92915050565b612ae981612a34565b82525050565b6000602082019050612b046000830184612ae0565b92915050565b600080600060608486031215612b2357612b226129d1565b5b6000612b3186828701612a1f565b9350506020612b4286828701612a1f565b9250506040612b5386828701612a55565b9150509250925092565b600060ff82169050919050565b612b7381612b5d565b82525050565b6000602082019050612b8e6000830184612b6a565b92915050565b600061ffff82169050919050565b612bab81612b94565b8114612bb657600080fd5b50565b600081359050612bc881612ba2565b92915050565b60008060408385031215612be557612be46129d1565b5b6000612bf385828601612bb9565b9250506020612c0485828601612bb9565b9150509250929050565b600060208284031215612c2457612c236129d1565b5b6000612c3284828501612a1f565b91505092915050565b612c44816129f6565b82525050565b6000602082019050612c5f6000830184612c3b565b92915050565b60008060408385031215612c7c57612c7b6129d1565b5b6000612c8a85828601612a1f565b9250506020612c9b85828601612a1f565b9150509250929050565b6000612cb0826129d6565b9050919050565b612cc081612ca5565b8114612ccb57600080fd5b50565b600081359050612cdd81612cb7565b92915050565b600060208284031215612cf957612cf86129d1565b5b6000612d0784828501612cce565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612d9657808604811115612d7257612d71612d10565b5b6001851615612d815780820291505b8081029050612d8f85612d3f565b9450612d56565b94509492505050565b600082612daf5760019050612e6b565b81612dbd5760009050612e6b565b8160018114612dd35760028114612ddd57612e0c565b6001915050612e6b565b60ff841115612def57612dee612d10565b5b8360020a915084821115612e0657612e05612d10565b5b50612e6b565b5060208310610133831016604e8410600b8410161715612e415782820a905083811115612e3c57612e3b612d10565b5b612e6b565b612e4e8484846001612d4c565b92509050818404811115612e6557612e64612d10565b5b81810290505b9392505050565b6000612e7d82612a34565b9150612e8883612b5d565b9250612eb57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d9f565b905092915050565b6000612ec882612a34565b9150612ed383612a34565b9250828202612ee181612a34565b91508282048414831517612ef857612ef7612d10565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612f3560108361292a565b9150612f4082612eff565b602082019050919050565b60006020820190508181036000830152612f6481612f28565b9050919050565b6000612f7682612a34565b9150612f8183612a34565b9250828203905081811115612f9957612f98612d10565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612fd560188361292a565b9150612fe082612f9f565b602082019050919050565b6000602082019050818103600083015261300481612fc8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061304582612a34565b915061305083612a34565b9250826130605761305f61300b565b5b828204905092915050565b600061307682612a34565b915061308183612a34565b925082820190508082111561309957613098612d10565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006130d5600a8361292a565b91506130e08261309f565b602082019050919050565b60006020820190508181036000830152613104816130c8565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000613141600e8361292a565b915061314c8261310b565b602082019050919050565b6000602082019050818103600083015261317081613134565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006131ad60098361292a565b91506131b882613177565b602082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000613219600f8361292a565b9150613224826131e3565b602082019050919050565b600060208201905081810360008301526132488161320c565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000613285601d8361292a565b91506132908261324f565b602082019050919050565b600060208201905081810360008301526132b481613278565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b60006132f160158361292a565b91506132fc826132bb565b602082019050919050565b60006020820190508181036000830152613320816132e4565b9050919050565b60008151905061333681612a08565b92915050565b600060208284031215613352576133516129d1565b5b600061336084828501613327565b91505092915050565b600060408201905061337e6000830185612c3b565b61338b6020830184612c3b565b9392505050565b600081519050919050565b600081905092915050565b60006133b382613392565b6133bd818561339d565b93506133cd81856020860161293b565b80840191505092915050565b60006133e582846133a8565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b600061342660178361292a565b9150613431826133f0565b602082019050919050565b6000602082019050818103600083015261345581613419565b9050919050565b6000819050919050565b600061348161347c613477846129d6565b61345c565b6129d6565b9050919050565b600061349382613466565b9050919050565b60006134a582613488565b9050919050565b6134b58161349a565b82525050565b60006020820190506134d060008301846134ac565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b600061350c601d8361292a565b9150613517826134d6565b602082019050919050565b6000602082019050818103600083015261353b816134ff565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b6000613578600b8361292a565b915061358382613542565b602082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006135e460118361292a565b91506135ef826135ae565b602082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b6000819050919050565b600061363f61363a6136358461361a565b61345c565b612a34565b9050919050565b61364f81613624565b82525050565b600060c08201905061366a6000830189612c3b565b6136776020830188612ae0565b6136846040830187613646565b6136916060830186613646565b61369e6080830185612c3b565b6136ab60a0830184612ae0565b979650505050505050565b6000815190506136c581612a3e565b92915050565b6000806000606084860312156136e4576136e36129d1565b5b60006136f2868287016136b6565b9350506020613703868287016136b6565b9250506040613714868287016136b6565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137b1816129f6565b82525050565b60006137c383836137a8565b60208301905092915050565b6000602082019050919050565b60006137e78261377c565b6137f18185613787565b93506137fc83613798565b8060005b8381101561382d57815161381488826137b7565b975061381f836137cf565b925050600181019050613800565b5085935050505092915050565b600060a08201905061384f6000830188612ae0565b61385c6020830187613646565b818103604083015261386e81866137dc565b905061387d6060830185612c3b565b61388a6080830184612ae0565b9695505050505050565b600061389f82612b94565b91506138aa83612b94565b9250828201905061ffff8111156138c4576138c3612d10565b5b9291505056fea2646970667358221220539b78299fc87956af4dcaa4f68ca5b63da6c4bae4b06293fd67f5f5518dcac464736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101235760003560e01c806375f0a874116100a0578063c3f70b5211610064578063c3f70b52146103e6578063dd62ed3e14610411578063e8078d941461044e578063f2fde38b14610458578063f8b45b05146104815761012a565b806375f0a874146102fd5780638da5cb5b1461032857806395d89b4114610353578063a9059cbb1461037e578063c04a5414146103bb5761012a565b8063313ce567116100e7578063313ce5671461022a578063368f480014610255578063470624021461027e57806370a08231146102a9578063715018a6146102e65761012a565b806306fdde031461012f578063095ea7b31461015a57806318160ddd1461019757806323b872dd146101c25780632b14ca56146101ff5761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b506101446104ac565b60405161015191906129af565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c9190612a6a565b6104e9565b60405161018e9190612ac5565b60405180910390f35b3480156101a357600080fd5b506101ac6105db565b6040516101b99190612aef565b60405180910390f35b3480156101ce57600080fd5b506101e960048036038101906101e49190612b0a565b610600565b6040516101f69190612ac5565b60405180910390f35b34801561020b57600080fd5b5061021461080a565b6040516102219190612b79565b60405180910390f35b34801561023657600080fd5b5061023f610821565b60405161024c9190612b79565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612bce565b61082a565b005b34801561028a57600080fd5b506102936109ea565b6040516102a09190612b79565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190612c0e565b610a01565b6040516102dd9190612aef565b60405180910390f35b3480156102f257600080fd5b506102fb610a4a565b005b34801561030957600080fd5b50610312610b53565b60405161031f9190612c4a565b60405180910390f35b34801561033457600080fd5b5061033d610b7d565b60405161034a9190612c4a565b60405180910390f35b34801561035f57600080fd5b50610368610ba6565b60405161037591906129af565b60405180910390f35b34801561038a57600080fd5b506103a560048036038101906103a09190612a6a565b610be3565b6040516103b29190612ac5565b60405180910390f35b3480156103c757600080fd5b506103d0610c40565b6040516103dd9190612c4a565b60405180910390f35b3480156103f257600080fd5b506103fb610c6a565b6040516104089190612aef565b60405180910390f35b34801561041d57600080fd5b5061043860048036038101906104339190612c65565b610c74565b6040516104459190612aef565b60405180910390f35b610456610cfb565b005b34801561046457600080fd5b5061047f600480360381019061047a9190612ce3565b6113e8565b005b34801561048d57600080fd5b506104966114f0565b6040516104a39190612aef565b60405180910390f35b60606040518060400160405280600f81526020017f42616e6b73427579426974636f696e0000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105c99190612aef565b60405180910390a36001905092915050565b60006009600a6105eb9190612e72565b64cef5e80e386105fb9190612ebd565b905090565b600061060b846114fa565b61064a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064190612f4b565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107f65781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107759190612f6b565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6108018484846115d5565b90509392505050565b6000600260019054906101000a900460ff16905090565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108af90612feb565b60405180910390fd5b600060016103e88461ffff166009600a6108d29190612e72565b64cef5e80e386108e29190612ebd565b6108ec9190612ebd565b6108f6919061303a565b610900919061306b565b9050600554811015610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093e906130eb565b60405180910390fd5b80600581905550600060016103e88461ffff166009600a6109689190612e72565b64cef5e80e386109789190612ebd565b6109829190612ebd565b61098c919061303a565b610996919061306b565b90506006548110156109dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d490613157565b60405180910390fd5b8060068190555050505050565b6000600260009054906101000a900460ff16905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf90612feb565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610b499190612c4a565b60405180910390a1565b60006002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4242420000000000000000000000000000000000000000000000000000000000815250905090565b6000610bee336114fa565b610c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2490612f4b565b60405180910390fd5b610c383384846115d5565b905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600554905090565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090612feb565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c906131c3565b60405180910390fd5b601260009054906101000a900460ff1615610e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7c9061322f565b60405180910390fd5b6000341180610e945750600047115b610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca9061329b565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613307565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe6919061333c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611093919061333c565b6040518363ffffffff1660e01b81526004016110b0929190613369565b6020604051808303816000875af11580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f3919061333c565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117e600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000611b61565b600954600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546111f19190612f6b565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516112c391906133d9565b6000604051808303816000865af19150503d8060008114611300576040519150601f19603f3d011682016040523d82523d6000602084013e611305565b606091505b5050905080611349576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113409061343c565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113ca611c4f565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611476576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146d90612feb565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516114e591906134bb565b60405180910390a150565b6000600654905090565b60008060009050601260009054906101000a900460ff161561151f57600190506115cc565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156115c15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115cb57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163c90613522565b60405180910390fd5b601260009054906101000a900460ff1661173b57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156116fb5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61173a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173190612f4b565b60405180910390fd5b5b601260019054906101000a900460ff161580156117a15750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156117af576117ae611d3b565b5b600154431080156117c257506004544310155b80156118175750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561188b573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461188a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118819061358e565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118f357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561194b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561199b5761195b848484611f43565b61199a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611991906135fa565b60405180910390fd5b5b60006119a88585856120da565b9050600081846119b89190612f6b565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a059190612f6b565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160096000828254611a5a919061306b565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611aac919061306b565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611b4c9190612aef565b60405180910390a36001925050509392505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508115611b9357600090505b611b9c8461238a565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401611c0396959493929190613655565b60606040518083038185885af1158015611c21573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c4691906136cb565b50505050505050565b606460016009600a611c619190612e72565b64cef5e80e38611c719190612ebd565b611c7b9190612ebd565b611c85919061303a565b600581905550606460016009600a611c9d9190612e72565b64cef5e80e38611cad9190612ebd565b611cb79190612ebd565b611cc1919061303a565b6006819055506001601260006101000a81548160ff02191690831515021790555043600481905550600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600454600154611d1f919061306b565b611d29919061306b565b611d33919061306b565b600181905550565b6001601260016101000a81548160ff021916908315150217905550600060095490506007548110158015611d7b5750601260009054906101000a900460ff165b15611f25576008548110611d8f5760085490505b600060028060089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff1684611dc79190612ebd565b611dd1919061303a565b611ddb919061303a565b905060008183611deb9190612f6b565b90506009600a611dfb9190612e72565b811115611f0957600047905083600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e56919061306b565b92505081905550611e6682612574565b8360096000828254611e789190612f6b565b9250508190555060008147611e8d9190612f6b565b90506000600260069054906101000a900461ffff1661ffff161115611f06576000600260089054906101000a900461ffff1661ffff16600260069054906101000a900461ffff1661ffff1683611ee39190612ebd565b611eed919061303a565b9050611ef88561238a565b611f0485826000611b61565b505b50505b60004790506000811115611f2157611f2081612793565b5b5050505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff168015611fb05750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120065750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120cf5760055483111561201e57600090506120ce565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120c3575060065483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120c1919061306b565b115b156120cd57600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff1615806121425750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121965750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121a4576000905061237f565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156122fe57600060179054906101000a900460ff1660ff16600060169054906101000a900460ff1660ff16600454612229919061306b565b612233919061306b565b431061226a576064600260009054906101000a900460ff1660ff16846122599190612ebd565b612263919061303a565b90506122f9565b600060169054906101000a900460ff1660ff1660045461228a919061306b565b43106122c1576064600060159054906101000a900460ff1660ff16846122b09190612ebd565b6122ba919061303a565b90506122f8565b60045443106122f7576064600060149054906101000a900460ff1660ff16846122ea9190612ebd565b6122f4919061303a565b90505b5b5b61237e565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561237d576064600260019054906101000a900460ff1660ff16846123709190612ebd565b61237a919061303a565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015612571577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516125689190612aef565b60405180910390a35b50565b61257d8161238a565b6000600267ffffffffffffffff81111561259a5761259961371e565b5b6040519080825280602002602001820160405280156125c85781602001602082028036833780820191505090505b50905030816000815181106125e0576125df61374d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612687573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ab919061333c565b816001815181106126bf576126be61374d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161275d95949392919061383a565b600060405180830381600087803b15801561277757600080fd5b505af115801561278b573d6000803e3d6000fd5b505050505050565b6000600260049054906101000a900461ffff1660028054906101000a900461ffff166127bf9190613894565b905060008161ffff16111561291b5760008161ffff1660028054906101000a900461ffff1661ffff16846127f39190612ebd565b6127fd919061303a565b905060008261ffff16600260049054906101000a900461ffff1661ffff16856128269190612ebd565b612830919061303a565b905060008211156128a5576002600a9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501580156128a3573d6000803e3d6000fd5b505b600081111561291857600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612916573d6000803e3d6000fd5b505b50505b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561295957808201518184015260208101905061293e565b60008484015250505050565b6000601f19601f8301169050919050565b60006129818261291f565b61298b818561292a565b935061299b81856020860161293b565b6129a481612965565b840191505092915050565b600060208201905081810360008301526129c98184612976565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a01826129d6565b9050919050565b612a11816129f6565b8114612a1c57600080fd5b50565b600081359050612a2e81612a08565b92915050565b6000819050919050565b612a4781612a34565b8114612a5257600080fd5b50565b600081359050612a6481612a3e565b92915050565b60008060408385031215612a8157612a806129d1565b5b6000612a8f85828601612a1f565b9250506020612aa085828601612a55565b9150509250929050565b60008115159050919050565b612abf81612aaa565b82525050565b6000602082019050612ada6000830184612ab6565b92915050565b612ae981612a34565b82525050565b6000602082019050612b046000830184612ae0565b92915050565b600080600060608486031215612b2357612b226129d1565b5b6000612b3186828701612a1f565b9350506020612b4286828701612a1f565b9250506040612b5386828701612a55565b9150509250925092565b600060ff82169050919050565b612b7381612b5d565b82525050565b6000602082019050612b8e6000830184612b6a565b92915050565b600061ffff82169050919050565b612bab81612b94565b8114612bb657600080fd5b50565b600081359050612bc881612ba2565b92915050565b60008060408385031215612be557612be46129d1565b5b6000612bf385828601612bb9565b9250506020612c0485828601612bb9565b9150509250929050565b600060208284031215612c2457612c236129d1565b5b6000612c3284828501612a1f565b91505092915050565b612c44816129f6565b82525050565b6000602082019050612c5f6000830184612c3b565b92915050565b60008060408385031215612c7c57612c7b6129d1565b5b6000612c8a85828601612a1f565b9250506020612c9b85828601612a1f565b9150509250929050565b6000612cb0826129d6565b9050919050565b612cc081612ca5565b8114612ccb57600080fd5b50565b600081359050612cdd81612cb7565b92915050565b600060208284031215612cf957612cf86129d1565b5b6000612d0784828501612cce565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612d9657808604811115612d7257612d71612d10565b5b6001851615612d815780820291505b8081029050612d8f85612d3f565b9450612d56565b94509492505050565b600082612daf5760019050612e6b565b81612dbd5760009050612e6b565b8160018114612dd35760028114612ddd57612e0c565b6001915050612e6b565b60ff841115612def57612dee612d10565b5b8360020a915084821115612e0657612e05612d10565b5b50612e6b565b5060208310610133831016604e8410600b8410161715612e415782820a905083811115612e3c57612e3b612d10565b5b612e6b565b612e4e8484846001612d4c565b92509050818404811115612e6557612e64612d10565b5b81810290505b9392505050565b6000612e7d82612a34565b9150612e8883612b5d565b9250612eb57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d9f565b905092915050565b6000612ec882612a34565b9150612ed383612a34565b9250828202612ee181612a34565b91508282048414831517612ef857612ef7612d10565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612f3560108361292a565b9150612f4082612eff565b602082019050919050565b60006020820190508181036000830152612f6481612f28565b9050919050565b6000612f7682612a34565b9150612f8183612a34565b9250828203905081811115612f9957612f98612d10565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612fd560188361292a565b9150612fe082612f9f565b602082019050919050565b6000602082019050818103600083015261300481612fc8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061304582612a34565b915061305083612a34565b9250826130605761305f61300b565b5b828204905092915050565b600061307682612a34565b915061308183612a34565b925082820190508082111561309957613098612d10565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b60006130d5600a8361292a565b91506130e08261309f565b602082019050919050565b60006020820190508181036000830152613104816130c8565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000613141600e8361292a565b915061314c8261310b565b602082019050919050565b6000602082019050818103600083015261317081613134565b9050919050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b60006131ad60098361292a565b91506131b882613177565b602082019050919050565b600060208201905081810360008301526131dc816131a0565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000613219600f8361292a565b9150613224826131e3565b602082019050919050565b600060208201905081810360008301526132488161320c565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000613285601d8361292a565b91506132908261324f565b602082019050919050565b600060208201905081810360008301526132b481613278565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b60006132f160158361292a565b91506132fc826132bb565b602082019050919050565b60006020820190508181036000830152613320816132e4565b9050919050565b60008151905061333681612a08565b92915050565b600060208284031215613352576133516129d1565b5b600061336084828501613327565b91505092915050565b600060408201905061337e6000830185612c3b565b61338b6020830184612c3b565b9392505050565b600081519050919050565b600081905092915050565b60006133b382613392565b6133bd818561339d565b93506133cd81856020860161293b565b80840191505092915050565b60006133e582846133a8565b915081905092915050565b7f4661696c656420616464696e67206c6971756964697479000000000000000000600082015250565b600061342660178361292a565b9150613431826133f0565b602082019050919050565b6000602082019050818103600083015261345581613419565b9050919050565b6000819050919050565b600061348161347c613477846129d6565b61345c565b6129d6565b9050919050565b600061349382613466565b9050919050565b60006134a582613488565b9050919050565b6134b58161349a565b82525050565b60006020820190506134d060008301846134ac565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b600061350c601d8361292a565b9150613517826134d6565b602082019050919050565b6000602082019050818103600083015261353b816134ff565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b6000613578600b8361292a565b915061358382613542565b602082019050919050565b600060208201905081810360008301526135a78161356b565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006135e460118361292a565b91506135ef826135ae565b602082019050919050565b60006020820190508181036000830152613613816135d7565b9050919050565b6000819050919050565b600061363f61363a6136358461361a565b61345c565b612a34565b9050919050565b61364f81613624565b82525050565b600060c08201905061366a6000830189612c3b565b6136776020830188612ae0565b6136846040830187613646565b6136916060830186613646565b61369e6080830185612c3b565b6136ab60a0830184612ae0565b979650505050505050565b6000815190506136c581612a3e565b92915050565b6000806000606084860312156136e4576136e36129d1565b5b60006136f2868287016136b6565b9350506020613703868287016136b6565b9250506040613714868287016136b6565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137b1816129f6565b82525050565b60006137c383836137a8565b60208301905092915050565b6000602082019050919050565b60006137e78261377c565b6137f18185613787565b93506137fc83613798565b8060005b8381101561382d57815161381488826137b7565b975061381f836137cf565b925050600181019050613800565b5085935050505092915050565b600060a08201905061384f6000830188612ae0565b61385c6020830187613646565b818103604083015261386e81866137dc565b905061387d6060830185612c3b565b61388a6080830184612ae0565b9695505050505050565b600061389f82612b94565b91506138aa83612b94565b9250828201905061ffff8111156138c4576138c3612d10565b5b9291505056fea2646970667358221220539b78299fc87956af4dcaa4f68ca5b63da6c4bae4b06293fd67f5f5518dcac464736f6c63430008130033

Deployed Bytecode Sourcemap

3327:12548:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6818:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7156:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6548:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7613:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12688:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6642:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13207:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12598:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6904:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3134:137;;;;;;;;;;;;;:::i;:::-;;12782:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2884:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6728:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7380:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12889:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13103:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7015:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8350:805;;;:::i;:::-;;2971:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13002:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6818:80;6866:13;6890:5;;;;;;;;;;;;;;;;;6883:12;;6818:80;:::o;7156:216::-;7231:4;7283:6;7248:11;:23;7260:10;7248:23;;;;;;;;;;;;;;;:32;7272:7;7248:32;;;;;;;;;;;;;;;:41;;;;7326:7;7305:37;;7314:10;7305:37;;;7335:6;7305:37;;;;;;:::i;:::-;;;;;;;;7360:4;7353:11;;7156:216;;;;:::o;6548:88::-;6603:7;3415:1;3482:2;:13;;;;:::i;:::-;3463:15;:33;;;;:::i;:::-;6614:19;;6548:88;:::o;7613:404::-;7713:4;7738:25;7756:6;7738:17;:25::i;:::-;7730:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7833:17;7798:11;:19;7810:6;7798:19;;;;;;;;;;;;;;;:31;7818:10;7798:31;;;;;;;;;;;;;;;;:52;7795:157;;7934:6;7900:11;:19;7912:6;7900:19;;;;;;;;;;;;;;;:31;7920:10;7900:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;7866:11;:19;7878:6;7866:19;;;;;;;;;;;;;;;:31;7886:10;7866:31;;;;;;;;;;;;;;;:74;;;;7795:157;7969:40;7983:6;7991:9;8002:6;7969:13;:40::i;:::-;7962:47;;7613:404;;;;;:::o;12688:86::-;12729:5;12754:12;;;;;;;;;;;12747:19;;12688:86;:::o;6642:80::-;6694:5;3415:1;6703:16;;6642:80;:::o;13207:462::-;2821:6;;;;;;;;;;2807:20;;:10;:20;;;2799:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;13313:16:::1;13379:1;13372:4;13347:22;13332:37;;3415:1;3482:2;:13;;;;:::i;:::-;3463:15;:33;;;;:::i;:::-;13332:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;13313:67;;13411:12;;13399:8;:24;;13391:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13464:8;13449:12;:23;;;;13483:20;13548:1;13541:4;13521:17;13506:32;;3415:1;3482:2;:13;;;;:::i;:::-;3463:15;:33;;;;:::i;:::-;13506:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;13483:66;;13584:16;;13568:12;:32;;13560:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;13649:12;13630:16;:31;;;;13302:367;;13207:462:::0;;:::o;12598:84::-;12638:5;12663:11;;;;;;;;;;;12656:18;;12598:84;:::o;6904:105::-;6970:7;6988:9;:18;6998:7;6988:18;;;;;;;;;;;;;;;;6981:25;;6904:105;;;:::o;3134:137::-;2821:6;;;;;;;;;;2807:20;;:10;:20;;;2799:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3211:1:::1;3194:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3230:32;3259:1;3230:32;;;;;;:::i;:::-;;;;;;;;3134:137::o:0;12782:101::-;12832:7;12859:16;;;;;;;;;;;12852:23;;12782:101;:::o;2884:81::-;2922:7;2950:6;;;;;;;;;;;2943:13;;2884:81;:::o;6728:84::-;6778:13;6802:7;;;;;;;;;;;;;;;;;6795:14;;6728:84;:::o;7380:225::-;7460:4;7485:29;7503:10;7485:17;:29::i;:::-;7477:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;7553:44;7567:10;7579:9;7590:6;7553:13;:44::i;:::-;7546:51;;7380:225;;;;:::o;12889:105::-;12941:7;12968:18;;;;;;;;;;;12961:25;;12889:105;:::o;13103:96::-;13152:7;13179:12;;13172:19;;13103:96;:::o;7015:133::-;7099:7;7117:11;:19;7129:6;7117:19;;;;;;;;;;;;;;;:28;7137:7;7117:28;;;;;;;;;;;;;;;;7110:35;;7015:133;;;;:::o;8350:805::-;2821:6;;;;;;;;;;2807:20;;:10;:20;;;2799:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;5337:4:::1;5324:10;;:17;;;;;;;;;;;;;;;;;;8454:1:::2;8432:24;;:10;;;;;;;;;;;:24;;;8424:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8490:12;;;;;;;;;;;8489:13;8481:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;8553:1;8541:9;:13;:40;;;;8580:1;8558:21;:23;8541:40;8533:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;8659:1;8634:9;:24;8652:4;8634:24;;;;;;;;;;;;;;;;:26;8626:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8728:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8710:58;;;8777:4;8784:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8710:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8697:10;;:113;;;;;;;;;;;;;;;;;;8821:69;8835:9;:24;8853:4;8835:24;;;;;;;;;;;;;;;;8861:21;8884:5;8821:13;:69::i;:::-;8926:10;;8901:9;:21;8911:10;;;;;;;;;;;8901:21;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;8948:17;8970:10;;;;;;;;;;;:15;;8986:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8970:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8947:73;;;9039:12;9031:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9110:12;9090:5;:17;9096:10;;;;;;;;;;;9090:17;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;9133:14;:12;:14::i;:::-;8413:742;5379:5:::1;5366:10;;:18;;;;;;;;;;;;;;;;;;8350:805::o:0;2971:157::-;2821:6;;;;;;;;;;2807:20;;:10;:20;;;2799:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3064:8:::1;3055:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3089:30;3110:8;3089:30;;;;;;:::i;:::-;;;;;;;;2971:157:::0;:::o;13002:95::-;13046:7;13073:16;;13066:23;;13002:95;:::o;11456:279::-;11521:4;11537:16;11556:5;11537:24;;11577:12;;;;;;;;;;;11572:124;;;11608:4;11594:18;;11572:124;;;11635:7;:15;11643:6;11635:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;11654:9;:17;11664:6;11654:17;;;;;;;;;;;;;;;;;;;;;;;;;11635:36;11631:65;;;11689:4;11675:18;;11631:65;11572:124;11716:11;11709:18;;;11456:279;;;:::o;9871:1074::-;9963:4;10006:1;9988:20;;:6;:20;;;9980:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10058:12;;;;;;;;;;;10053:89;;10082:7;:15;10090:6;10082:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;10101:9;:17;10111:6;10101:17;;;;;;;;;;;;;;;;;;;;;;;;;10082:36;10074:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10053:89;10158:10;;;;;;;;;;;10157:11;:31;;;;;10172:5;:16;10178:9;10172:16;;;;;;;;;;;;;;;;;;;;;;;;;10157:31;10152:64;;;10193:20;:18;:20::i;:::-;10152:64;10246:13;;10231:12;:28;:60;;;;;10279:12;;10263;:28;;10231:60;:77;;;;;10295:5;:13;10301:6;10295:13;;;;;;;;;;;;;;;;;;;;;;;;;10231:77;10226:158;;;10347:9;10334:22;;:9;:22;;;10326:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10226:158;10417:4;10399:23;;:6;:23;;;;:53;;;;;10447:4;10426:26;;:9;:26;;;;10399:53;:73;;;;;10466:6;;;;;;;;;;10456:16;;:6;:16;;;;10399:73;10394:179;;;10499:39;10512:6;10520:9;10531:6;10499:12;:39::i;:::-;10491:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10394:179;10583:18;10604:40;10618:6;10626:9;10637:6;10604:13;:40::i;:::-;10583:61;;10655:23;10690:10;10681:6;:19;;;;:::i;:::-;10655:45;;10751:6;10731:9;:17;10741:6;10731:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;10711:9;:17;10721:6;10711:17;;;;;;;;;;;;;;;:46;;;;10782:10;10768;;:24;;;;;;;:::i;:::-;;;;;;;;10849:15;10826:9;:20;10836:9;10826:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;10803:9;:20;10813:9;10803:20;;;;;;;;;;;;;;;:61;;;;10897:9;10880:35;;10889:6;10880:35;;;10908:6;10880:35;;;;;;:::i;:::-;;;;;;;;10933:4;10926:11;;;;9871:1074;;;;;:::o;9163:385::-;9266:24;9293:8;;;;;;;;;;;9266:35;;9317:8;9312:50;;;9357:1;9330:29;;9312:50;9372:28;9387:12;9372:14;:28::i;:::-;9411:18;;;;;;;;;;;:34;;;9453:13;9478:4;9485:12;9499:1;9502;9505:16;9523:15;9411:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;9255:293;9163:385;;;:::o;9556:307::-;9638:3;9634:1;3415;3482:2;:13;;;;:::i;:::-;3463:15;:33;;;;:::i;:::-;9619:16;;;;:::i;:::-;:22;;;;:::i;:::-;9600:12;:41;;;;9691:3;9687:1;3415;3482:2;:13;;;;:::i;:::-;3463:15;:33;;;;:::i;:::-;9672:16;;;;:::i;:::-;:22;;;;:::i;:::-;9653:16;:41;;;;9720:4;9705:12;;:19;;;;;;;;;;;;;;;;;;9750:12;9735;:27;;;;9839:16;;;;;;;;;;;9789:66;;9820:16;;;;;;;;;;;9789:47;;9805:12;;9789:13;;:28;;;;:::i;:::-;:47;;;;:::i;:::-;:66;;;;:::i;:::-;9773:13;:82;;;;9556:307::o;13679:1268::-;5337:4;5324:10;;:17;;;;;;;;;;;;;;;;;;13740:27:::1;13770:10;;13740:40;;13819:11;;13796:19;:34;;:50;;;;;13834:12;;;;;;;;;;;13796:50;13791:1149;;;13892:11;;13869:19;:34;13864:80;;13930:11;;13908:33;;13864:80;13958:20;14036:1;14018:15:::0;::::1;;;;;;;;;;13981:52;;14003:12;;;;;;;;;;;13981:34;;:19;:34;;;;:::i;:::-;:52;;;;:::i;:::-;:56;;;;:::i;:::-;13958:79;;14066:21;14112:12;14090:19;:34;;;;:::i;:::-;14066:58;;3415:1;14159:2;:13;;;;:::i;:::-;14143;:29;14139:639;;;14194:19;14216:21;14194:43;;14284:19;14256:9;:24;14274:4;14256:24;;;;;;;;;;;;;;;;:47;;;;;;;:::i;:::-;;;;;;;;14322:35;14343:13;14322:20;:35::i;:::-;14390:19;14376:10;;:33;;;;;;;:::i;:::-;;;;;;;;14428:19;14474:11;14450:21;:35;;;;:::i;:::-;14428:57;;14524:1;14509:12;;;;;;;;;;;:16;;;14504:259;;;14551:21;14604:15;;;;;;;;;;;14575:44;;14589:12;;;;;;;;;;;14575:26;;:11;:26;;;;:::i;:::-;:44;;;;:::i;:::-;14551:68;;14643:28;14658:12;14643:14;:28::i;:::-;14694:49;14708:12;14722:13;14737:5;14694:13;:49::i;:::-;14528:235;14504:259;14175:603;;14139:639;14792:27;14822:21;14792:51;;14883:1;14861:19;:23;14858:71;;;14888:38;14906:19;14888:17;:38::i;:::-;14858:71;13849:1091;;;13791:1149;13729:1218;5379:5:::0;5366:10;;:18;;;;;;;;;;;;;;;;;;13679:1268::o;10953:495::-;11057:4;11074:21;11098:4;11074:28;;11118:12;;;;;;;;;;;:34;;;;;11135:9;:17;11145:6;11135:17;;;;;;;;;;;;;;;;;;;;;;;;;11134:18;11118:34;:59;;;;;11157:9;:20;11167:9;11157:20;;;;;;;;;;;;;;;;;;;;;;;;;11156:21;11118:59;11113:294;;;11217:12;;11200:14;:29;11195:201;;;11253:5;11234:24;;11195:201;;;11286:5;:16;11292:9;11286:16;;;;;;;;;;;;;;;;;;;;;;;;;11285:17;:79;;;;;11347:16;;11330:14;11307:9;:20;11317:9;11307:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;11285:79;11280:116;;;11388:5;11369:24;;11280:116;11195:201;11113:294;11424:16;11417:23;;;10953:495;;;;;:::o;11743:847::-;11840:7;11860:17;11904:12;;;;;;;;;;;11903:13;:32;;;;11920:7;:15;11928:6;11920:15;;;;;;;;;;;;;;;;;;;;;;;;;11903:32;:54;;;;11939:7;:18;11947:9;11939:18;;;;;;;;;;;;;;;;;;;;;;;;;11903:54;11898:656;;;11988:1;11976:13;;11898:656;;;12013:5;:13;12019:6;12013:13;;;;;;;;;;;;;;;;;;;;;;;;;12008:546;;;12100:16;;;;;;;;;;;12066:50;;12081:16;;;;;;;;;;;12066:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;12050:12;:66;12045:400;;12173:3;12159:11;;;;;;;;;;;12150:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;12138:38;;12045:400;;;12235:16;;;;;;;;;;;12220:31;;:12;;:31;;;;:::i;:::-;12204:12;:47;12199:246;;12310:3;12294:13;;;;;;;;;;;12285:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;12273:40;;12199:246;;;12356:12;;12340;:28;12335:110;;12426:3;12410:13;;;;;;;;;;;12401:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;12389:40;;12335:110;12199:246;12045:400;12008:546;;;12467:5;:16;12473:9;12467:16;;;;;;;;;;;;;;;;;;;;;;;;;12462:92;;;12538:3;12523:12;;;;;;;;;;;12514:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;12502:39;;12462:92;12008:546;11898:656;12573:9;12566:16;;;11743:847;;;;;:::o;8025:317::-;8145:12;8096:11;:26;8116:4;8096:26;;;;;;;;;;;;;;;:46;4995:42;8096:46;;;;;;;;;;;;;;;;:61;8091:244;;;8224:17;8175:11;:26;8195:4;8175:26;;;;;;;;;;;;;;;:46;4995:42;8175:46;;;;;;;;;;;;;;;:66;;;;4995:42;8261:62;;8278:4;8261:62;;;8305:17;8261:62;;;;;;:::i;:::-;;;;;;;;8091:244;8025:317;:::o;14955:366::-;15025:27;15040:11;15025:14;:27::i;:::-;15063:21;15101:1;15087:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15063:40;;15132:4;15114;15119:1;15114:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15158:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15148:4;15153:1;15148:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;15194:18;;;;;;;;;;;:69;;;15264:11;15276:1;15278:4;15291;15297:15;15194:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15014:307;14955:366;:::o;15329:541::-;15391:21;15437;;;;;;;;;;;15415:19;;;;;;;;;;:43;;;;:::i;:::-;15391:67;;15490:1;15473:14;:18;;;15469:394;;;15508:23;15565:14;15534:45;;15543:19;;;;;;;;;;15534:28;;:6;:28;;;;:::i;:::-;:45;;;;:::i;:::-;15508:71;;15594:25;15655:14;15622:47;;15631:21;;;;;;;;;;;15622:30;;:6;:30;;;;:::i;:::-;:47;;;;:::i;:::-;15594:75;;15707:1;15689:15;:19;15684:74;;;15713:16;;;;;;;;;;;:25;;:42;15739:15;15713:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15684:74;15797:1;15777:17;:21;15772:80;;;15803:18;;;;;;;;;;;:27;;:46;15831:17;15803:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15772:80;15493:370;;15469:394;15380:490;15329:541;:::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:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:89::-;4889:7;4929:6;4922:5;4918:18;4907:29;;4853:89;;;:::o;4948:120::-;5020:23;5037:5;5020:23;:::i;:::-;5013:5;5010:34;5000:62;;5058:1;5055;5048:12;5000:62;4948:120;:::o;5074:137::-;5119:5;5157:6;5144:20;5135:29;;5173:32;5199:5;5173:32;:::i;:::-;5074:137;;;;:::o;5217:470::-;5283:6;5291;5340:2;5328:9;5319:7;5315:23;5311:32;5308:119;;;5346:79;;:::i;:::-;5308:119;5466:1;5491:52;5535:7;5526:6;5515:9;5511:22;5491:52;:::i;:::-;5481:62;;5437:116;5592:2;5618:52;5662:7;5653:6;5642:9;5638:22;5618:52;:::i;:::-;5608:62;;5563:117;5217:470;;;;;:::o;5693:329::-;5752:6;5801:2;5789:9;5780:7;5776:23;5772:32;5769:119;;;5807:79;;:::i;:::-;5769:119;5927:1;5952:53;5997:7;5988:6;5977:9;5973:22;5952:53;:::i;:::-;5942:63;;5898:117;5693:329;;;;:::o;6028:118::-;6115:24;6133:5;6115:24;:::i;:::-;6110:3;6103:37;6028:118;;:::o;6152:222::-;6245:4;6283:2;6272:9;6268:18;6260:26;;6296:71;6364:1;6353:9;6349:17;6340:6;6296:71;:::i;:::-;6152:222;;;;:::o;6380:474::-;6448:6;6456;6505:2;6493:9;6484:7;6480:23;6476:32;6473:119;;;6511:79;;:::i;:::-;6473:119;6631:1;6656:53;6701:7;6692:6;6681:9;6677:22;6656:53;:::i;:::-;6646:63;;6602:117;6758:2;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6729:118;6380:474;;;;;:::o;6860:104::-;6905:7;6934:24;6952:5;6934:24;:::i;:::-;6923:35;;6860:104;;;:::o;6970:138::-;7051:32;7077:5;7051:32;:::i;:::-;7044:5;7041:43;7031:71;;7098:1;7095;7088:12;7031:71;6970:138;:::o;7114:155::-;7168:5;7206:6;7193:20;7184:29;;7222:41;7257:5;7222:41;:::i;:::-;7114:155;;;;:::o;7275:345::-;7342:6;7391:2;7379:9;7370:7;7366:23;7362:32;7359:119;;;7397:79;;:::i;:::-;7359:119;7517:1;7542:61;7595:7;7586:6;7575:9;7571:22;7542:61;:::i;:::-;7532:71;;7488:125;7275:345;;;;:::o;7626:180::-;7674:77;7671:1;7664:88;7771:4;7768:1;7761:15;7795:4;7792:1;7785:15;7812:102;7854:8;7901:5;7898:1;7894:13;7873:34;;7812:102;;;:::o;7920:848::-;7981:5;7988:4;8012:6;8003:15;;8036:5;8027:14;;8050:712;8071:1;8061:8;8058:15;8050:712;;;8166:4;8161:3;8157:14;8151:4;8148:24;8145:50;;;8175:18;;:::i;:::-;8145:50;8225:1;8215:8;8211:16;8208:451;;;8640:4;8633:5;8629:16;8620:25;;8208:451;8690:4;8684;8680:15;8672:23;;8720:32;8743:8;8720:32;:::i;:::-;8708:44;;8050:712;;;7920:848;;;;;;;:::o;8774:1073::-;8828:5;9019:8;9009:40;;9040:1;9031:10;;9042:5;;9009:40;9068:4;9058:36;;9085:1;9076:10;;9087:5;;9058:36;9154:4;9202:1;9197:27;;;;9238:1;9233:191;;;;9147:277;;9197:27;9215:1;9206:10;;9217:5;;;9233:191;9278:3;9268:8;9265:17;9262:43;;;9285:18;;:::i;:::-;9262:43;9334:8;9331:1;9327:16;9318:25;;9369:3;9362:5;9359:14;9356:40;;;9376:18;;:::i;:::-;9356:40;9409:5;;;9147:277;;9533:2;9523:8;9520:16;9514:3;9508:4;9505:13;9501:36;9483:2;9473:8;9470:16;9465:2;9459:4;9456:12;9452:35;9436:111;9433:246;;;9589:8;9583:4;9579:19;9570:28;;9624:3;9617:5;9614:14;9611:40;;;9631:18;;:::i;:::-;9611:40;9664:5;;9433:246;9704:42;9742:3;9732:8;9726:4;9723:1;9704:42;:::i;:::-;9689:57;;;;9778:4;9773:3;9769:14;9762:5;9759:25;9756:51;;;9787:18;;:::i;:::-;9756:51;9836:4;9829:5;9825:16;9816:25;;8774:1073;;;;;;:::o;9853:281::-;9911:5;9935:23;9953:4;9935:23;:::i;:::-;9927:31;;9979:25;9995:8;9979:25;:::i;:::-;9967:37;;10023:104;10060:66;10050:8;10044:4;10023:104;:::i;:::-;10014:113;;9853:281;;;;:::o;10140:410::-;10180:7;10203:20;10221:1;10203:20;:::i;:::-;10198:25;;10237:20;10255:1;10237:20;:::i;:::-;10232:25;;10292:1;10289;10285:9;10314:30;10332:11;10314:30;:::i;:::-;10303:41;;10493:1;10484:7;10480:15;10477:1;10474:22;10454:1;10447:9;10427:83;10404:139;;10523:18;;:::i;:::-;10404:139;10188:362;10140:410;;;;:::o;10556:166::-;10696:18;10692:1;10684:6;10680:14;10673:42;10556:166;:::o;10728:366::-;10870:3;10891:67;10955:2;10950:3;10891:67;:::i;:::-;10884:74;;10967:93;11056:3;10967:93;:::i;:::-;11085:2;11080:3;11076:12;11069:19;;10728:366;;;:::o;11100:419::-;11266:4;11304:2;11293:9;11289:18;11281:26;;11353:9;11347:4;11343:20;11339:1;11328:9;11324:17;11317:47;11381:131;11507:4;11381:131;:::i;:::-;11373:139;;11100:419;;;:::o;11525:194::-;11565:4;11585:20;11603:1;11585:20;:::i;:::-;11580:25;;11619:20;11637:1;11619:20;:::i;:::-;11614:25;;11663:1;11660;11656:9;11648:17;;11687:1;11681:4;11678:11;11675:37;;;11692:18;;:::i;:::-;11675:37;11525:194;;;;:::o;11725:174::-;11865:26;11861:1;11853:6;11849:14;11842:50;11725:174;:::o;11905:366::-;12047:3;12068:67;12132:2;12127:3;12068:67;:::i;:::-;12061:74;;12144:93;12233:3;12144:93;:::i;:::-;12262:2;12257:3;12253:12;12246:19;;11905:366;;;:::o;12277:419::-;12443:4;12481:2;12470:9;12466:18;12458:26;;12530:9;12524:4;12520:20;12516:1;12505:9;12501:17;12494:47;12558:131;12684:4;12558:131;:::i;:::-;12550:139;;12277:419;;;:::o;12702:180::-;12750:77;12747:1;12740:88;12847:4;12844:1;12837:15;12871:4;12868:1;12861:15;12888:185;12928:1;12945:20;12963:1;12945:20;:::i;:::-;12940:25;;12979:20;12997:1;12979:20;:::i;:::-;12974:25;;13018:1;13008:35;;13023:18;;:::i;:::-;13008:35;13065:1;13062;13058:9;13053:14;;12888:185;;;;:::o;13079:191::-;13119:3;13138:20;13156:1;13138:20;:::i;:::-;13133:25;;13172:20;13190:1;13172:20;:::i;:::-;13167:25;;13215:1;13212;13208:9;13201:16;;13236:3;13233:1;13230:10;13227:36;;;13243:18;;:::i;:::-;13227:36;13079:191;;;;:::o;13276:160::-;13416:12;13412:1;13404:6;13400:14;13393:36;13276:160;:::o;13442:366::-;13584:3;13605:67;13669:2;13664:3;13605:67;:::i;:::-;13598:74;;13681:93;13770:3;13681:93;:::i;:::-;13799:2;13794:3;13790:12;13783:19;;13442:366;;;:::o;13814:419::-;13980:4;14018:2;14007:9;14003:18;13995:26;;14067:9;14061:4;14057:20;14053:1;14042:9;14038:17;14031:47;14095:131;14221:4;14095:131;:::i;:::-;14087:139;;13814:419;;;:::o;14239:164::-;14379:16;14375:1;14367:6;14363:14;14356:40;14239:164;:::o;14409:366::-;14551:3;14572:67;14636:2;14631:3;14572:67;:::i;:::-;14565:74;;14648:93;14737:3;14648:93;:::i;:::-;14766:2;14761:3;14757:12;14750:19;;14409:366;;;:::o;14781:419::-;14947:4;14985:2;14974:9;14970:18;14962:26;;15034:9;15028:4;15024:20;15020:1;15009:9;15005:17;14998:47;15062:131;15188:4;15062:131;:::i;:::-;15054:139;;14781:419;;;:::o;15206:159::-;15346:11;15342:1;15334:6;15330:14;15323:35;15206:159;:::o;15371:365::-;15513:3;15534:66;15598:1;15593:3;15534:66;:::i;:::-;15527:73;;15609:93;15698:3;15609:93;:::i;:::-;15727:2;15722:3;15718:12;15711:19;;15371:365;;;:::o;15742:419::-;15908:4;15946:2;15935:9;15931:18;15923:26;;15995:9;15989:4;15985:20;15981:1;15970:9;15966:17;15959:47;16023:131;16149:4;16023:131;:::i;:::-;16015:139;;15742:419;;;:::o;16167:165::-;16307:17;16303:1;16295:6;16291:14;16284:41;16167:165;:::o;16338:366::-;16480:3;16501:67;16565:2;16560:3;16501:67;:::i;:::-;16494:74;;16577:93;16666:3;16577:93;:::i;:::-;16695:2;16690:3;16686:12;16679:19;;16338:366;;;:::o;16710:419::-;16876:4;16914:2;16903:9;16899:18;16891:26;;16963:9;16957:4;16953:20;16949:1;16938:9;16934:17;16927:47;16991:131;17117:4;16991:131;:::i;:::-;16983:139;;16710:419;;;:::o;17135:179::-;17275:31;17271:1;17263:6;17259:14;17252:55;17135:179;:::o;17320:366::-;17462:3;17483:67;17547:2;17542:3;17483:67;:::i;:::-;17476:74;;17559:93;17648:3;17559:93;:::i;:::-;17677:2;17672:3;17668:12;17661:19;;17320:366;;;:::o;17692:419::-;17858:4;17896:2;17885:9;17881:18;17873:26;;17945:9;17939:4;17935:20;17931:1;17920:9;17916:17;17909:47;17973:131;18099:4;17973:131;:::i;:::-;17965:139;;17692:419;;;:::o;18117:171::-;18257:23;18253:1;18245:6;18241:14;18234:47;18117:171;:::o;18294:366::-;18436:3;18457:67;18521:2;18516:3;18457:67;:::i;:::-;18450:74;;18533:93;18622:3;18533:93;:::i;:::-;18651:2;18646:3;18642:12;18635:19;;18294:366;;;:::o;18666:419::-;18832:4;18870:2;18859:9;18855:18;18847:26;;18919:9;18913:4;18909:20;18905:1;18894:9;18890:17;18883:47;18947:131;19073:4;18947:131;:::i;:::-;18939:139;;18666:419;;;:::o;19091:143::-;19148:5;19179:6;19173:13;19164:22;;19195:33;19222:5;19195:33;:::i;:::-;19091:143;;;;:::o;19240:351::-;19310:6;19359:2;19347:9;19338:7;19334:23;19330:32;19327:119;;;19365:79;;:::i;:::-;19327:119;19485:1;19510:64;19566:7;19557:6;19546:9;19542:22;19510:64;:::i;:::-;19500:74;;19456:128;19240:351;;;;:::o;19597:332::-;19718:4;19756:2;19745:9;19741:18;19733:26;;19769:71;19837:1;19826:9;19822:17;19813:6;19769:71;:::i;:::-;19850:72;19918:2;19907:9;19903:18;19894:6;19850:72;:::i;:::-;19597:332;;;;;:::o;19935:98::-;19986:6;20020:5;20014:12;20004:22;;19935:98;;;:::o;20039:147::-;20140:11;20177:3;20162:18;;20039:147;;;;:::o;20192:386::-;20296:3;20324:38;20356:5;20324:38;:::i;:::-;20378:88;20459:6;20454:3;20378:88;:::i;:::-;20371:95;;20475:65;20533:6;20528:3;20521:4;20514:5;20510:16;20475:65;:::i;:::-;20565:6;20560:3;20556:16;20549:23;;20300:278;20192:386;;;;:::o;20584:271::-;20714:3;20736:93;20825:3;20816:6;20736:93;:::i;:::-;20729:100;;20846:3;20839:10;;20584:271;;;;:::o;20861:173::-;21001:25;20997:1;20989:6;20985:14;20978:49;20861:173;:::o;21040:366::-;21182:3;21203:67;21267:2;21262:3;21203:67;:::i;:::-;21196:74;;21279:93;21368:3;21279:93;:::i;:::-;21397:2;21392:3;21388:12;21381:19;;21040:366;;;:::o;21412:419::-;21578:4;21616:2;21605:9;21601:18;21593:26;;21665:9;21659:4;21655:20;21651:1;21640:9;21636:17;21629:47;21693:131;21819:4;21693:131;:::i;:::-;21685:139;;21412:419;;;:::o;21837:60::-;21865:3;21886:5;21879:12;;21837:60;;;:::o;21903:142::-;21953:9;21986:53;22004:34;22013:24;22031:5;22013:24;:::i;:::-;22004:34;:::i;:::-;21986:53;:::i;:::-;21973:66;;21903:142;;;:::o;22051:126::-;22101:9;22134:37;22165:5;22134:37;:::i;:::-;22121:50;;22051:126;;;:::o;22183:134::-;22241:9;22274:37;22305:5;22274:37;:::i;:::-;22261:50;;22183:134;;;:::o;22323:147::-;22418:45;22457:5;22418:45;:::i;:::-;22413:3;22406:58;22323:147;;:::o;22476:238::-;22577:4;22615:2;22604:9;22600:18;22592:26;;22628:79;22704:1;22693:9;22689:17;22680:6;22628:79;:::i;:::-;22476:238;;;;:::o;22720:179::-;22860:31;22856:1;22848:6;22844:14;22837:55;22720:179;:::o;22905:366::-;23047:3;23068:67;23132:2;23127:3;23068:67;:::i;:::-;23061:74;;23144:93;23233:3;23144:93;:::i;:::-;23262:2;23257:3;23253:12;23246:19;;22905:366;;;:::o;23277:419::-;23443:4;23481:2;23470:9;23466:18;23458:26;;23530:9;23524:4;23520:20;23516:1;23505:9;23501:17;23494:47;23558:131;23684:4;23558:131;:::i;:::-;23550:139;;23277:419;;;:::o;23702:161::-;23842:13;23838:1;23830:6;23826:14;23819:37;23702:161;:::o;23869:366::-;24011:3;24032:67;24096:2;24091:3;24032:67;:::i;:::-;24025:74;;24108:93;24197:3;24108:93;:::i;:::-;24226:2;24221:3;24217:12;24210:19;;23869:366;;;:::o;24241:419::-;24407:4;24445:2;24434:9;24430:18;24422:26;;24494:9;24488:4;24484:20;24480:1;24469:9;24465:17;24458:47;24522:131;24648:4;24522:131;:::i;:::-;24514:139;;24241:419;;;:::o;24666:167::-;24806:19;24802:1;24794:6;24790:14;24783:43;24666:167;:::o;24839:366::-;24981:3;25002:67;25066:2;25061:3;25002:67;:::i;:::-;24995:74;;25078:93;25167:3;25078:93;:::i;:::-;25196:2;25191:3;25187:12;25180:19;;24839:366;;;:::o;25211:419::-;25377:4;25415:2;25404:9;25400:18;25392:26;;25464:9;25458:4;25454:20;25450:1;25439:9;25435:17;25428:47;25492:131;25618:4;25492:131;:::i;:::-;25484:139;;25211:419;;;:::o;25636:85::-;25681:7;25710:5;25699:16;;25636:85;;;:::o;25727:158::-;25785:9;25818:61;25836:42;25845:32;25871:5;25845:32;:::i;:::-;25836:42;:::i;:::-;25818:61;:::i;:::-;25805:74;;25727:158;;;:::o;25891:147::-;25986:45;26025:5;25986:45;:::i;:::-;25981:3;25974:58;25891:147;;:::o;26044:807::-;26293:4;26331:3;26320:9;26316:19;26308:27;;26345:71;26413:1;26402:9;26398:17;26389:6;26345:71;:::i;:::-;26426:72;26494:2;26483:9;26479:18;26470:6;26426:72;:::i;:::-;26508:80;26584:2;26573:9;26569:18;26560:6;26508:80;:::i;:::-;26598;26674:2;26663:9;26659:18;26650:6;26598:80;:::i;:::-;26688:73;26756:3;26745:9;26741:19;26732:6;26688:73;:::i;:::-;26771;26839:3;26828:9;26824:19;26815:6;26771:73;:::i;:::-;26044:807;;;;;;;;;:::o;26857:143::-;26914:5;26945:6;26939:13;26930:22;;26961:33;26988:5;26961:33;:::i;:::-;26857:143;;;;:::o;27006:663::-;27094:6;27102;27110;27159:2;27147:9;27138:7;27134:23;27130:32;27127:119;;;27165:79;;:::i;:::-;27127:119;27285:1;27310:64;27366:7;27357:6;27346:9;27342:22;27310:64;:::i;:::-;27300:74;;27256:128;27423:2;27449:64;27505:7;27496:6;27485:9;27481:22;27449:64;:::i;:::-;27439:74;;27394:129;27562:2;27588:64;27644:7;27635:6;27624:9;27620:22;27588:64;:::i;:::-;27578:74;;27533:129;27006:663;;;;;:::o;27675:180::-;27723:77;27720:1;27713:88;27820:4;27817:1;27810:15;27844:4;27841:1;27834:15;27861:180;27909:77;27906:1;27899:88;28006:4;28003:1;27996:15;28030:4;28027:1;28020:15;28047:114;28114:6;28148:5;28142:12;28132:22;;28047:114;;;:::o;28167:184::-;28266:11;28300:6;28295:3;28288:19;28340:4;28335:3;28331:14;28316:29;;28167:184;;;;:::o;28357:132::-;28424:4;28447:3;28439:11;;28477:4;28472:3;28468:14;28460:22;;28357:132;;;:::o;28495:108::-;28572:24;28590:5;28572:24;:::i;:::-;28567:3;28560:37;28495:108;;:::o;28609:179::-;28678:10;28699:46;28741:3;28733:6;28699:46;:::i;:::-;28777:4;28772:3;28768:14;28754:28;;28609:179;;;;:::o;28794:113::-;28864:4;28896;28891:3;28887:14;28879:22;;28794:113;;;:::o;28943:732::-;29062:3;29091:54;29139:5;29091:54;:::i;:::-;29161:86;29240:6;29235:3;29161:86;:::i;:::-;29154:93;;29271:56;29321:5;29271:56;:::i;:::-;29350:7;29381:1;29366:284;29391:6;29388:1;29385:13;29366:284;;;29467:6;29461:13;29494:63;29553:3;29538:13;29494:63;:::i;:::-;29487:70;;29580:60;29633:6;29580:60;:::i;:::-;29570:70;;29426:224;29413:1;29410;29406:9;29401:14;;29366:284;;;29370:14;29666:3;29659:10;;29067:608;;;28943:732;;;;:::o;29681:831::-;29944:4;29982:3;29971:9;29967:19;29959:27;;29996:71;30064:1;30053:9;30049:17;30040:6;29996:71;:::i;:::-;30077:80;30153:2;30142:9;30138:18;30129:6;30077:80;:::i;:::-;30204:9;30198:4;30194:20;30189:2;30178:9;30174:18;30167:48;30232:108;30335:4;30326:6;30232:108;:::i;:::-;30224:116;;30350:72;30418:2;30407:9;30403:18;30394:6;30350:72;:::i;:::-;30432:73;30500:3;30489:9;30485:19;30476:6;30432:73;:::i;:::-;29681:831;;;;;;;;:::o;30518:193::-;30557:3;30576:19;30593:1;30576:19;:::i;:::-;30571:24;;30609:19;30626:1;30609:19;:::i;:::-;30604:24;;30651:1;30648;30644:9;30637:16;;30674:6;30669:3;30666:15;30663:41;;;30684:18;;:::i;:::-;30663:41;30518:193;;;;:::o

Swarm Source

ipfs://539b78299fc87956af4dcaa4f68ca5b63da6c4bae4b06293fd67f5f5518dcac4
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.