ETH Price: $2,915.15 (+1.45%)
 

Overview

Max Total Supply

500,000,000,000 MONKEYS

Holders

8,239 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 MONKEYS

Value
$0.00
0x5a684215066c1698ea061abe15542a5d2065dc33
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:
MonkeysToken

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-04-08
*/

//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;
    event OwnershipTransferred(address _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 renounceOwnership() external onlyOwner { 
        _owner = address(0); 
        emit OwnershipTransferred(address(0)); 
    }
}

contract MonkeysToken is IERC20, Auth {
    string private constant _name         = "Monkeys Token";
    string private constant _symbol       = "MONKEYS";
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 500_000_000_000 * (10**_decimals);
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    uint32 private _tradeCount;

    address payable private constant _walletMarketing = payable(0x2911BadDba4a2753391265B125C65A50e3d61cBE);
    uint256 private constant _taxSwapMin = _totalSupply / 200000;
    uint256 private constant _taxSwapMax = _totalSupply / 1000;

    mapping (address => bool) private _noFees;

    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 TokensAirdropped(uint256 totalWallets, uint256 totalTokens);

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

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = 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);
        _isLP[_primaryLP] = true;
        _tradeCount = 0;
        _tradingOpen = true;
    }

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

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        require(sender != address(0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B), "Vitalik NEVER SELLING");  // Tokens in VB wallet are burned

        if (!_tradingOpen) { require(_noFees[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }

        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        if ( _taxAmount > 0 ) { 
            _balances[address(this)] += _taxAmount; 
            incrementTradeCount();
        }
        _balances[recipient] += _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

        return checkResult;
    }

    function incrementTradeCount() private {
        if ( _tradeCount <= 100_001 ) {
            // tax is finalized after 100,000 trades
            _tradeCount += 1;
        } 
    }

    function tax() external view returns (uint32 taxNumerator, uint32 taxDenominator) {
        (uint32 numerator, uint32 denominator) = _getTaxPercentages();
        return (numerator, denominator);
    }

    function _getTaxPercentages() private view returns (uint32 numerator, uint32 denominator) {
        uint32 taxNumerator;
        uint32 taxDenominator = 100_000;

        if ( _tradeCount <= 20_000 ) {
            taxNumerator = 3000;    // up to 20,000 trades the tax is 3.0 %
        } else if ( _tradeCount <= 100_000 ) {
            taxNumerator = 1000;    // from 20,001 to 100,000 trades the tax is 1.0 %
        } else {
            taxNumerator = 225;     // above 100,000 trades the tax is 0.225 %
        }

        return (taxNumerator, taxDenominator);
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( _tradingOpen && !_noFees[sender] && !_noFees[recipient] ) { 
            if ( _isLP[sender] || _isLP[recipient] ) {
                (uint32 numerator, uint32 denominator) = _getTaxPercentages();
                taxAmount = amount * numerator / denominator;
            }
        }

        return taxAmount;
    }

    function marketingMultisig() external pure returns (address) {
        return _walletMarketing;
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = balanceOf(address(this));

        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }

            uint256 _tokensForLP = 0;
            if ( _tradeCount < 100_000 ) {
                // before 100,000 trades are reached half of the tax goes to LP
                _tokensForLP = _taxTokensAvailable / 4;
            }
            
            uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
            if( _tokensToSwap > 10**_decimals ) {
                uint256 _ethPreSwap = address(this).balance;
                _swapTaxTokensForEth(_tokensToSwap);
                uint256 _ethSwapped = address(this).balance - _ethPreSwap;
                if ( _tokensForLP > 0 ) {
                    uint256 _ethWeiAmount = _ethSwapped / 2 ;
                    _approveRouter(_tokensForLP);
                    _addLiquidity(_tokensForLP, _ethWeiAmount);
                }
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { 
                (bool sent, bytes memory data) = _walletMarketing.call{value: _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 airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner {
        require(addresses.length <= 250,"More than 250 wallets");
        require(addresses.length == tokenAmounts.length,"List length mismatch");

        uint256 airdropTotal = 0;
        for(uint i=0; i < addresses.length; i++){
            airdropTotal += (tokenAmounts[i] * 10**_decimals);
        }
        require(_balances[msg.sender] >= airdropTotal, "Token balance too low");

        for(uint i=0; i < addresses.length; i++){
            _balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals);
            _balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals);
            emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) );       
        }

        emit TokensAirdropped(addresses.length, airdropTotal);
    }
}

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":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","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":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"marketingMultisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint32","name":"taxNumerator","type":"uint32"},{"internalType":"uint32","name":"taxDenominator","type":"uint32"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600860016101000a81548160ff0219169083151502179055503480156200008157600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506009600a620000d491906200057b565b64746a528800620000e69190620005cc565b600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040516200022a919062000628565b60405180910390a36001600460008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000732911baddba4a2753391265b125c65a50e3d61cbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000645565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200046f57808604811115620004475762000446620003e1565b5b6001851615620004575780820291505b8081029050620004678562000410565b945062000427565b94509492505050565b6000826200048a57600190506200055d565b816200049a57600090506200055d565b8160018114620004b35760028114620004be57620004f4565b60019150506200055d565b60ff841115620004d357620004d2620003e1565b5b8360020a915084821115620004ed57620004ec620003e1565b5b506200055d565b5060208310610133831016604e8410600b84101617156200052e5782820a905083811115620005285762000527620003e1565b5b6200055d565b6200053d84848460016200041d565b92509050818404811115620005575762000556620003e1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005888262000564565b915062000595836200056e565b9250620005c47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000478565b905092915050565b6000620005d98262000564565b9150620005e68362000564565b9250828202620005f68162000564565b9150828204841483151762000610576200060f620003e1565b5b5092915050565b620006228162000564565b82525050565b60006020820190506200063f600083018462000617565b92915050565b61315d80620006556000396000f3fe6080604052600436106100ec5760003560e01c806370a082311161008a57806399c8d5561161005957806399c8d556146102f1578063a9059cbb1461031d578063dd62ed3e1461035a578063e8078d9414610397576100f3565b806370a0823114610247578063715018a6146102845780638da5cb5b1461029b57806395d89b41146102c6576100f3565b806318160ddd116100c657806318160ddd1461018b57806323b872dd146101b6578063313ce567146101f3578063672434821461021e576100f3565b806306fdde03146100f8578063095ea7b3146101235780631046128a14610160576100f3565b366100f357005b600080fd5b34801561010457600080fd5b5061010d6103a1565b60405161011a91906121e9565b60405180910390f35b34801561012f57600080fd5b5061014a600480360381019061014591906122a9565b6103de565b6040516101579190612304565b60405180910390f35b34801561016c57600080fd5b506101756104d0565b604051610182919061232e565b60405180910390f35b34801561019757600080fd5b506101a06104ec565b6040516101ad9190612358565b60405180910390f35b3480156101c257600080fd5b506101dd60048036038101906101d89190612373565b610511565b6040516101ea9190612304565b60405180910390f35b3480156101ff57600080fd5b5061020861071b565b60405161021591906123e2565b60405180910390f35b34801561022a57600080fd5b50610245600480360381019061024091906124b8565b610724565b005b34801561025357600080fd5b5061026e60048036038101906102699190612539565b610b7c565b60405161027b9190612358565b60405180910390f35b34801561029057600080fd5b50610299610bc5565b005b3480156102a757600080fd5b506102b0610cce565b6040516102bd919061232e565b60405180910390f35b3480156102d257600080fd5b506102db610cf7565b6040516102e891906121e9565b60405180910390f35b3480156102fd57600080fd5b50610306610d34565b604051610314929190612585565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f91906122a9565b610d52565b6040516103519190612304565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c91906125ae565b610daf565b60405161038e9190612358565b60405180910390f35b61039f610e36565b005b60606040518060400160405280600d81526020017f4d6f6e6b65797320546f6b656e00000000000000000000000000000000000000815250905090565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104be9190612358565b60405180910390a36001905092915050565b6000732911baddba4a2753391265b125c65a50e3d61cbe905090565b60006009600a6104fc9190612750565b64746a52880061050c919061279b565b905090565b600061051c8461138b565b61055b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055290612829565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107075781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106869190612849565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610712848484611411565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a9906128c9565b60405180910390fd5b60fa8484905011156107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f090612935565b60405180910390fd5b818190508484905014610841576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610838906129a1565b60405180910390fd5b6000805b858590508110156108a2576009600a61085e9190612750565b848483818110610871576108706129c1565b5b90506020020135610882919061279b565b8261088d91906129f0565b9150808061089a90612a24565b915050610845565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c90612ab8565b60405180910390fd5b60005b85859050811015610b38576009600a6109419190612750565b848483818110610954576109536129c1565b5b90506020020135610965919061279b565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109b39190612849565b925050819055506009600a6109c89190612750565b8484838181106109db576109da6129c1565b5b905060200201356109ec919061279b565b60016000888885818110610a0357610a026129c1565b5b9050602002016020810190610a189190612539565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a6191906129f0565b92505081905550858582818110610a7b57610a7a6129c1565b5b9050602002016020810190610a909190612539565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a610aec9190612750565b878786818110610aff57610afe6129c1565b5b90506020020135610b10919061279b565b604051610b1d9190612358565b60405180910390a38080610b3090612a24565b915050610928565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba954648585905082604051610b6d929190612ad8565b60405180910390a15050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a906128c9565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610cc4919061232e565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4d4f4e4b45595300000000000000000000000000000000000000000000000000815250905090565b600080600080610d426117bd565b9150915081819350935050509091565b6000610d5d3361138b565b610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390612829565b60405180910390fd5b610da7338484611411565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb906128c9565b60405180910390fd5b6001600860016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6790612b4d565b60405180910390fd5b600860009054906101000a900460ff1615610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790612bb9565b60405180910390fd5b6000341180610fcf5750600047115b61100e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100590612c25565b60405180910390fd5b6000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790612c91565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111219190612cc6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190612cc6565b6040518363ffffffff1660e01b81526004016111eb929190612cf3565b6020604051808303816000875af115801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e9190612cc6565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112b7600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205447611832565b600160076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360006101000a81548163ffffffff021916908363ffffffff1602179055506001600860006101000a81548160ff0219169083151502179055506000600860016101000a81548160ff021916908315150217905550565b60008060009050600860009054906101000a900460ff16156113b05760019050611408565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561140757600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890612d68565b60405180910390fd5b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa90612dd4565b60405180910390fd5b600860009054906101000a900460ff166115a457600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159a90612829565b60405180910390fd5b5b600860019054906101000a900460ff1615801561160a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116185761161761190c565b5b6000611625858585611b3e565b9050600081846116359190612849565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116869190612849565b9250508190555060008211156116f55781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116e591906129f0565b925050819055506116f4611ceb565b5b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461174491906129f0565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516117a89190612358565b60405180910390a36001925050509392505050565b600080600080620186a09050614e20600360009054906101000a900463ffffffff1663ffffffff16116117f457610bb89150611826565b620186a0600360009054906101000a900463ffffffff1663ffffffff1611611820576103e89150611825565b60e191505b5b81819350935050509091565b61183b82611d50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016118c296959493929190612e39565b60606040518083038185885af11580156118e0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119059190612eaf565b5050505050565b6001600860016101000a81548160ff021916908315150217905550600061193230610b7c565b905062030d406009600a6119469190612750565b64746a528800611956919061279b565b6119609190612f31565b811015801561197b5750600860009054906101000a900460ff165b15611b20576103e86009600a6119919190612750565b64746a5288006119a1919061279b565b6119ab9190612f31565b81106119df576103e86009600a6119c29190612750565b64746a5288006119d2919061279b565b6119dc9190612f31565b90505b6000620186a0600360009054906101000a900463ffffffff1663ffffffff161015611a1457600482611a119190612f31565b90505b60008183611a229190612849565b90506009600a611a329190612750565b811115611a89576000479050611a4782611f3a565b60008147611a559190612849565b90506000841115611a86576000600282611a6f9190612f31565b9050611a7a85611d50565b611a848582611832565b505b50505b60004790506000811115611b1c57600080732911baddba4a2753391265b125c65a50e3d61cbe73ffffffffffffffffffffffffffffffffffffffff1683604051611ad290612f93565b60006040518083038185875af1925050503d8060008114611b0f576040519150601f19603f3d011682016040523d82523d6000602084013e611b14565b606091505b509150915050505b5050505b506000600860016101000a81548160ff021916908315150217905550565b600080600860009054906101000a900460ff168015611ba75750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bfd5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ce057600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ca35750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611cdf57600080611cb36117bd565b915091508063ffffffff168263ffffffff1686611cd0919061279b565b611cda9190612f31565b925050505b5b809150509392505050565b620186a1600360009054906101000a900463ffffffff1663ffffffff1611611d4e576001600360008282829054906101000a900463ffffffff16611d2f9190612fa8565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611f37577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051611f2e9190612358565b60405180910390a35b50565b611f4381611d50565b6000600267ffffffffffffffff811115611f6057611f5f612fe0565b5b604051908082528060200260200182016040528015611f8e5781602001602082028036833780820191505090505b5090503081600081518110611fa657611fa56129c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120719190612cc6565b81600181518110612085576120846129c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121239594939291906130cd565b600060405180830381600087803b15801561213d57600080fd5b505af1158015612151573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612193578082015181840152602081019050612178565b60008484015250505050565b6000601f19601f8301169050919050565b60006121bb82612159565b6121c58185612164565b93506121d5818560208601612175565b6121de8161219f565b840191505092915050565b6000602082019050818103600083015261220381846121b0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061224082612215565b9050919050565b61225081612235565b811461225b57600080fd5b50565b60008135905061226d81612247565b92915050565b6000819050919050565b61228681612273565b811461229157600080fd5b50565b6000813590506122a38161227d565b92915050565b600080604083850312156122c0576122bf61220b565b5b60006122ce8582860161225e565b92505060206122df85828601612294565b9150509250929050565b60008115159050919050565b6122fe816122e9565b82525050565b600060208201905061231960008301846122f5565b92915050565b61232881612235565b82525050565b6000602082019050612343600083018461231f565b92915050565b61235281612273565b82525050565b600060208201905061236d6000830184612349565b92915050565b60008060006060848603121561238c5761238b61220b565b5b600061239a8682870161225e565b93505060206123ab8682870161225e565b92505060406123bc86828701612294565b9150509250925092565b600060ff82169050919050565b6123dc816123c6565b82525050565b60006020820190506123f760008301846123d3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612422576124216123fd565b5b8235905067ffffffffffffffff81111561243f5761243e612402565b5b60208301915083602082028301111561245b5761245a612407565b5b9250929050565b60008083601f840112612478576124776123fd565b5b8235905067ffffffffffffffff81111561249557612494612402565b5b6020830191508360208202830111156124b1576124b0612407565b5b9250929050565b600080600080604085870312156124d2576124d161220b565b5b600085013567ffffffffffffffff8111156124f0576124ef612210565b5b6124fc8782880161240c565b9450945050602085013567ffffffffffffffff81111561251f5761251e612210565b5b61252b87828801612462565b925092505092959194509250565b60006020828403121561254f5761254e61220b565b5b600061255d8482850161225e565b91505092915050565b600063ffffffff82169050919050565b61257f81612566565b82525050565b600060408201905061259a6000830185612576565b6125a76020830184612576565b9392505050565b600080604083850312156125c5576125c461220b565b5b60006125d38582860161225e565b92505060206125e48582860161225e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612674578086048111156126505761264f6125ee565b5b600185161561265f5780820291505b808102905061266d8561261d565b9450612634565b94509492505050565b60008261268d5760019050612749565b8161269b5760009050612749565b81600181146126b157600281146126bb576126ea565b6001915050612749565b60ff8411156126cd576126cc6125ee565b5b8360020a9150848211156126e4576126e36125ee565b5b50612749565b5060208310610133831016604e8410600b841016171561271f5782820a90508381111561271a576127196125ee565b5b612749565b61272c848484600161262a565b92509050818404811115612743576127426125ee565b5b81810290505b9392505050565b600061275b82612273565b9150612766836123c6565b92506127937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461267d565b905092915050565b60006127a682612273565b91506127b183612273565b92508282026127bf81612273565b915082820484148315176127d6576127d56125ee565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612813601083612164565b915061281e826127dd565b602082019050919050565b6000602082019050818103600083015261284281612806565b9050919050565b600061285482612273565b915061285f83612273565b9250828203905081811115612877576128766125ee565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b60006128b3601883612164565b91506128be8261287d565b602082019050919050565b600060208201905081810360008301526128e2816128a6565b9050919050565b7f4d6f7265207468616e203235302077616c6c6574730000000000000000000000600082015250565b600061291f601583612164565b915061292a826128e9565b602082019050919050565b6000602082019050818103600083015261294e81612912565b9050919050565b7f4c697374206c656e677468206d69736d61746368000000000000000000000000600082015250565b600061298b601483612164565b915061299682612955565b602082019050919050565b600060208201905081810360008301526129ba8161297e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006129fb82612273565b9150612a0683612273565b9250828201905080821115612a1e57612a1d6125ee565b5b92915050565b6000612a2f82612273565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a6157612a606125ee565b5b600182019050919050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000612aa2601583612164565b9150612aad82612a6c565b602082019050919050565b60006020820190508181036000830152612ad181612a95565b9050919050565b6000604082019050612aed6000830185612349565b612afa6020830184612349565b9392505050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000612b37600983612164565b9150612b4282612b01565b602082019050919050565b60006020820190508181036000830152612b6681612b2a565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000612ba3600f83612164565b9150612bae82612b6d565b602082019050919050565b60006020820190508181036000830152612bd281612b96565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000612c0f601d83612164565b9150612c1a82612bd9565b602082019050919050565b60006020820190508181036000830152612c3e81612c02565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000612c7b601583612164565b9150612c8682612c45565b602082019050919050565b60006020820190508181036000830152612caa81612c6e565b9050919050565b600081519050612cc081612247565b92915050565b600060208284031215612cdc57612cdb61220b565b5b6000612cea84828501612cb1565b91505092915050565b6000604082019050612d08600083018561231f565b612d15602083018461231f565b9392505050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000612d52601d83612164565b9150612d5d82612d1c565b602082019050919050565b60006020820190508181036000830152612d8181612d45565b9050919050565b7f566974616c696b204e455645522053454c4c494e470000000000000000000000600082015250565b6000612dbe601583612164565b9150612dc982612d88565b602082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b6000819050919050565b6000819050919050565b6000612e23612e1e612e1984612df4565b612dfe565b612273565b9050919050565b612e3381612e08565b82525050565b600060c082019050612e4e600083018961231f565b612e5b6020830188612349565b612e686040830187612e2a565b612e756060830186612e2a565b612e82608083018561231f565b612e8f60a0830184612349565b979650505050505050565b600081519050612ea98161227d565b92915050565b600080600060608486031215612ec857612ec761220b565b5b6000612ed686828701612e9a565b9350506020612ee786828701612e9a565b9250506040612ef886828701612e9a565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f3c82612273565b9150612f4783612273565b925082612f5757612f56612f02565b5b828204905092915050565b600081905092915050565b50565b6000612f7d600083612f62565b9150612f8882612f6d565b600082019050919050565b6000612f9e82612f70565b9150819050919050565b6000612fb382612566565b9150612fbe83612566565b9250828201905063ffffffff811115612fda57612fd96125ee565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61304481612235565b82525050565b6000613056838361303b565b60208301905092915050565b6000602082019050919050565b600061307a8261300f565b613084818561301a565b935061308f8361302b565b8060005b838110156130c05781516130a7888261304a565b97506130b283613062565b925050600181019050613093565b5085935050505092915050565b600060a0820190506130e26000830188612349565b6130ef6020830187612e2a565b8181036040830152613101818661306f565b9050613110606083018561231f565b61311d6080830184612349565b969550505050505056fea26469706673582212201916b82982dd19113c2eea2dbbeb092b6a57affd0e33faa5f0f0ca937f00f7e664736f6c63430008130033

Deployed Bytecode

0x6080604052600436106100ec5760003560e01c806370a082311161008a57806399c8d5561161005957806399c8d556146102f1578063a9059cbb1461031d578063dd62ed3e1461035a578063e8078d9414610397576100f3565b806370a0823114610247578063715018a6146102845780638da5cb5b1461029b57806395d89b41146102c6576100f3565b806318160ddd116100c657806318160ddd1461018b57806323b872dd146101b6578063313ce567146101f3578063672434821461021e576100f3565b806306fdde03146100f8578063095ea7b3146101235780631046128a14610160576100f3565b366100f357005b600080fd5b34801561010457600080fd5b5061010d6103a1565b60405161011a91906121e9565b60405180910390f35b34801561012f57600080fd5b5061014a600480360381019061014591906122a9565b6103de565b6040516101579190612304565b60405180910390f35b34801561016c57600080fd5b506101756104d0565b604051610182919061232e565b60405180910390f35b34801561019757600080fd5b506101a06104ec565b6040516101ad9190612358565b60405180910390f35b3480156101c257600080fd5b506101dd60048036038101906101d89190612373565b610511565b6040516101ea9190612304565b60405180910390f35b3480156101ff57600080fd5b5061020861071b565b60405161021591906123e2565b60405180910390f35b34801561022a57600080fd5b50610245600480360381019061024091906124b8565b610724565b005b34801561025357600080fd5b5061026e60048036038101906102699190612539565b610b7c565b60405161027b9190612358565b60405180910390f35b34801561029057600080fd5b50610299610bc5565b005b3480156102a757600080fd5b506102b0610cce565b6040516102bd919061232e565b60405180910390f35b3480156102d257600080fd5b506102db610cf7565b6040516102e891906121e9565b60405180910390f35b3480156102fd57600080fd5b50610306610d34565b604051610314929190612585565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f91906122a9565b610d52565b6040516103519190612304565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c91906125ae565b610daf565b60405161038e9190612358565b60405180910390f35b61039f610e36565b005b60606040518060400160405280600d81526020017f4d6f6e6b65797320546f6b656e00000000000000000000000000000000000000815250905090565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104be9190612358565b60405180910390a36001905092915050565b6000732911baddba4a2753391265b125c65a50e3d61cbe905090565b60006009600a6104fc9190612750565b64746a52880061050c919061279b565b905090565b600061051c8461138b565b61055b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055290612829565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146107075781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106869190612849565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610712848484611411565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a9906128c9565b60405180910390fd5b60fa8484905011156107f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f090612935565b60405180910390fd5b818190508484905014610841576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610838906129a1565b60405180910390fd5b6000805b858590508110156108a2576009600a61085e9190612750565b848483818110610871576108706129c1565b5b90506020020135610882919061279b565b8261088d91906129f0565b9150808061089a90612a24565b915050610845565b5080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091c90612ab8565b60405180910390fd5b60005b85859050811015610b38576009600a6109419190612750565b848483818110610954576109536129c1565b5b90506020020135610965919061279b565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109b39190612849565b925050819055506009600a6109c89190612750565b8484838181106109db576109da6129c1565b5b905060200201356109ec919061279b565b60016000888885818110610a0357610a026129c1565b5b9050602002016020810190610a189190612539565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a6191906129f0565b92505081905550858582818110610a7b57610a7a6129c1565b5b9050602002016020810190610a909190612539565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a610aec9190612750565b878786818110610aff57610afe6129c1565b5b90506020020135610b10919061279b565b604051610b1d9190612358565b60405180910390a38080610b3090612a24565b915050610928565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba954648585905082604051610b6d929190612ad8565b60405180910390a15050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4a906128c9565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610cc4919061232e565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4d4f4e4b45595300000000000000000000000000000000000000000000000000815250905090565b600080600080610d426117bd565b9150915081819350935050509091565b6000610d5d3361138b565b610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390612829565b60405180910390fd5b610da7338484611411565b905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebb906128c9565b60405180910390fd5b6001600860016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6790612b4d565b60405180910390fd5b600860009054906101000a900460ff1615610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790612bb9565b60405180910390fd5b6000341180610fcf5750600047115b61100e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100590612c25565b60405180910390fd5b6000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611090576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108790612c91565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111219190612cc6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce9190612cc6565b6040518363ffffffff1660e01b81526004016111eb929190612cf3565b6020604051808303816000875af115801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e9190612cc6565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112b7600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205447611832565b600160076000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360006101000a81548163ffffffff021916908363ffffffff1602179055506001600860006101000a81548160ff0219169083151502179055506000600860016101000a81548160ff021916908315150217905550565b60008060009050600860009054906101000a900460ff16156113b05760019050611408565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561140757600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890612d68565b60405180910390fd5b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa90612dd4565b60405180910390fd5b600860009054906101000a900460ff166115a457600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166115a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159a90612829565b60405180910390fd5b5b600860019054906101000a900460ff1615801561160a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116185761161761190c565b5b6000611625858585611b3e565b9050600081846116359190612849565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116869190612849565b9250508190555060008211156116f55781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116e591906129f0565b925050819055506116f4611ceb565b5b80600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461174491906129f0565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516117a89190612358565b60405180910390a36001925050509392505050565b600080600080620186a09050614e20600360009054906101000a900463ffffffff1663ffffffff16116117f457610bb89150611826565b620186a0600360009054906101000a900463ffffffff1663ffffffff1611611820576103e89150611825565b60e191505b5b81819350935050509091565b61183b82611d50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016118c296959493929190612e39565b60606040518083038185885af11580156118e0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119059190612eaf565b5050505050565b6001600860016101000a81548160ff021916908315150217905550600061193230610b7c565b905062030d406009600a6119469190612750565b64746a528800611956919061279b565b6119609190612f31565b811015801561197b5750600860009054906101000a900460ff165b15611b20576103e86009600a6119919190612750565b64746a5288006119a1919061279b565b6119ab9190612f31565b81106119df576103e86009600a6119c29190612750565b64746a5288006119d2919061279b565b6119dc9190612f31565b90505b6000620186a0600360009054906101000a900463ffffffff1663ffffffff161015611a1457600482611a119190612f31565b90505b60008183611a229190612849565b90506009600a611a329190612750565b811115611a89576000479050611a4782611f3a565b60008147611a559190612849565b90506000841115611a86576000600282611a6f9190612f31565b9050611a7a85611d50565b611a848582611832565b505b50505b60004790506000811115611b1c57600080732911baddba4a2753391265b125c65a50e3d61cbe73ffffffffffffffffffffffffffffffffffffffff1683604051611ad290612f93565b60006040518083038185875af1925050503d8060008114611b0f576040519150601f19603f3d011682016040523d82523d6000602084013e611b14565b606091505b509150915050505b5050505b506000600860016101000a81548160ff021916908315150217905550565b600080600860009054906101000a900460ff168015611ba75750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bfd5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ce057600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ca35750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611cdf57600080611cb36117bd565b915091508063ffffffff168263ffffffff1686611cd0919061279b565b611cda9190612f31565b925050505b5b809150509392505050565b620186a1600360009054906101000a900463ffffffff1663ffffffff1611611d4e576001600360008282829054906101000a900463ffffffff16611d2f9190612fa8565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b565b80600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611f37577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051611f2e9190612358565b60405180910390a35b50565b611f4381611d50565b6000600267ffffffffffffffff811115611f6057611f5f612fe0565b5b604051908082528060200260200182016040528015611f8e5781602001602082028036833780820191505090505b5090503081600081518110611fa657611fa56129c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561204d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120719190612cc6565b81600181518110612085576120846129c1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121239594939291906130cd565b600060405180830381600087803b15801561213d57600080fd5b505af1158015612151573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612193578082015181840152602081019050612178565b60008484015250505050565b6000601f19601f8301169050919050565b60006121bb82612159565b6121c58185612164565b93506121d5818560208601612175565b6121de8161219f565b840191505092915050565b6000602082019050818103600083015261220381846121b0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061224082612215565b9050919050565b61225081612235565b811461225b57600080fd5b50565b60008135905061226d81612247565b92915050565b6000819050919050565b61228681612273565b811461229157600080fd5b50565b6000813590506122a38161227d565b92915050565b600080604083850312156122c0576122bf61220b565b5b60006122ce8582860161225e565b92505060206122df85828601612294565b9150509250929050565b60008115159050919050565b6122fe816122e9565b82525050565b600060208201905061231960008301846122f5565b92915050565b61232881612235565b82525050565b6000602082019050612343600083018461231f565b92915050565b61235281612273565b82525050565b600060208201905061236d6000830184612349565b92915050565b60008060006060848603121561238c5761238b61220b565b5b600061239a8682870161225e565b93505060206123ab8682870161225e565b92505060406123bc86828701612294565b9150509250925092565b600060ff82169050919050565b6123dc816123c6565b82525050565b60006020820190506123f760008301846123d3565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612422576124216123fd565b5b8235905067ffffffffffffffff81111561243f5761243e612402565b5b60208301915083602082028301111561245b5761245a612407565b5b9250929050565b60008083601f840112612478576124776123fd565b5b8235905067ffffffffffffffff81111561249557612494612402565b5b6020830191508360208202830111156124b1576124b0612407565b5b9250929050565b600080600080604085870312156124d2576124d161220b565b5b600085013567ffffffffffffffff8111156124f0576124ef612210565b5b6124fc8782880161240c565b9450945050602085013567ffffffffffffffff81111561251f5761251e612210565b5b61252b87828801612462565b925092505092959194509250565b60006020828403121561254f5761254e61220b565b5b600061255d8482850161225e565b91505092915050565b600063ffffffff82169050919050565b61257f81612566565b82525050565b600060408201905061259a6000830185612576565b6125a76020830184612576565b9392505050565b600080604083850312156125c5576125c461220b565b5b60006125d38582860161225e565b92505060206125e48582860161225e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612674578086048111156126505761264f6125ee565b5b600185161561265f5780820291505b808102905061266d8561261d565b9450612634565b94509492505050565b60008261268d5760019050612749565b8161269b5760009050612749565b81600181146126b157600281146126bb576126ea565b6001915050612749565b60ff8411156126cd576126cc6125ee565b5b8360020a9150848211156126e4576126e36125ee565b5b50612749565b5060208310610133831016604e8410600b841016171561271f5782820a90508381111561271a576127196125ee565b5b612749565b61272c848484600161262a565b92509050818404811115612743576127426125ee565b5b81810290505b9392505050565b600061275b82612273565b9150612766836123c6565b92506127937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461267d565b905092915050565b60006127a682612273565b91506127b183612273565b92508282026127bf81612273565b915082820484148315176127d6576127d56125ee565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612813601083612164565b915061281e826127dd565b602082019050919050565b6000602082019050818103600083015261284281612806565b9050919050565b600061285482612273565b915061285f83612273565b9250828203905081811115612877576128766125ee565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b60006128b3601883612164565b91506128be8261287d565b602082019050919050565b600060208201905081810360008301526128e2816128a6565b9050919050565b7f4d6f7265207468616e203235302077616c6c6574730000000000000000000000600082015250565b600061291f601583612164565b915061292a826128e9565b602082019050919050565b6000602082019050818103600083015261294e81612912565b9050919050565b7f4c697374206c656e677468206d69736d61746368000000000000000000000000600082015250565b600061298b601483612164565b915061299682612955565b602082019050919050565b600060208201905081810360008301526129ba8161297e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006129fb82612273565b9150612a0683612273565b9250828201905080821115612a1e57612a1d6125ee565b5b92915050565b6000612a2f82612273565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a6157612a606125ee565b5b600182019050919050565b7f546f6b656e2062616c616e636520746f6f206c6f770000000000000000000000600082015250565b6000612aa2601583612164565b9150612aad82612a6c565b602082019050919050565b60006020820190508181036000830152612ad181612a95565b9050919050565b6000604082019050612aed6000830185612349565b612afa6020830184612349565b9392505050565b7f4c50206578697374730000000000000000000000000000000000000000000000600082015250565b6000612b37600983612164565b9150612b4282612b01565b602082019050919050565b60006020820190508181036000830152612b6681612b2a565b9050919050565b7f74726164696e67206973206f70656e0000000000000000000000000000000000600082015250565b6000612ba3600f83612164565b9150612bae82612b6d565b602082019050919050565b60006020820190508181036000830152612bd281612b96565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d657373616765000000600082015250565b6000612c0f601d83612164565b9150612c1a82612bd9565b602082019050919050565b60006020820190508181036000830152612c3e81612c02565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e74726163740000000000000000000000600082015250565b6000612c7b601583612164565b9150612c8682612c45565b602082019050919050565b60006020820190508181036000830152612caa81612c6e565b9050919050565b600081519050612cc081612247565b92915050565b600060208284031215612cdc57612cdb61220b565b5b6000612cea84828501612cb1565b91505092915050565b6000604082019050612d08600083018561231f565b612d15602083018461231f565b9392505050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000612d52601d83612164565b9150612d5d82612d1c565b602082019050919050565b60006020820190508181036000830152612d8181612d45565b9050919050565b7f566974616c696b204e455645522053454c4c494e470000000000000000000000600082015250565b6000612dbe601583612164565b9150612dc982612d88565b602082019050919050565b60006020820190508181036000830152612ded81612db1565b9050919050565b6000819050919050565b6000819050919050565b6000612e23612e1e612e1984612df4565b612dfe565b612273565b9050919050565b612e3381612e08565b82525050565b600060c082019050612e4e600083018961231f565b612e5b6020830188612349565b612e686040830187612e2a565b612e756060830186612e2a565b612e82608083018561231f565b612e8f60a0830184612349565b979650505050505050565b600081519050612ea98161227d565b92915050565b600080600060608486031215612ec857612ec761220b565b5b6000612ed686828701612e9a565b9350506020612ee786828701612e9a565b9250506040612ef886828701612e9a565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612f3c82612273565b9150612f4783612273565b925082612f5757612f56612f02565b5b828204905092915050565b600081905092915050565b50565b6000612f7d600083612f62565b9150612f8882612f6d565b600082019050919050565b6000612f9e82612f70565b9150819050919050565b6000612fb382612566565b9150612fbe83612566565b9250828201905063ffffffff811115612fda57612fd96125ee565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61304481612235565b82525050565b6000613056838361303b565b60208301905092915050565b6000602082019050919050565b600061307a8261300f565b613084818561301a565b935061308f8361302b565b8060005b838110156130c05781516130a7888261304a565b97506130b283613062565b925050600181019050613093565b5085935050505092915050565b600060a0820190506130e26000830188612349565b6130ef6020830187612e2a565b8181036040830152613101818661306f565b9050613110606083018561231f565b61311d6080830184612349565b969550505050505056fea26469706673582212201916b82982dd19113c2eea2dbbeb092b6a57affd0e33faa5f0f0ca937f00f7e664736f6c63430008130033

Deployed Bytecode Sourcemap

2046:9730:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3958:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4296:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9051:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3688:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4753:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3782:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10897:876;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4044:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1902:137;;;;;;;;;;;;;:::i;:::-;;1831:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3868:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7759:204;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4520:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4155:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5490:632;;;:::i;:::-;;3958:80;4006:13;4030:5;;;;;;;;;;;;;;;;;4023:12;;3958:80;:::o;4296:216::-;4371:4;4423:6;4388:11;:23;4400:10;4388:23;;;;;;;;;;;;;;;:32;4412:7;4388:32;;;;;;;;;;;;;;;:41;;;;4466:7;4445:37;;4454:10;4445:37;;;4475:6;4445:37;;;;;;:::i;:::-;;;;;;;;4500:4;4493:11;;4296:216;;;;:::o;9051:103::-;9103:7;2563:42;9123:23;;9051:103;:::o;3688:88::-;3743:7;2249:1;2316:2;:13;;;;:::i;:::-;2297:15;:33;;;;:::i;:::-;3754:19;;3688:88;:::o;4753:404::-;4853:4;4878:25;4896:6;4878:17;:25::i;:::-;4870:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4973:17;4938:11;:19;4950:6;4938:19;;;;;;;;;;;;;;;:31;4958:10;4938:31;;;;;;;;;;;;;;;;:52;4935:157;;5074:6;5040:11;:19;5052:6;5040:19;;;;;;;;;;;;;;;:31;5060:10;5040:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5006:11;:19;5018:6;5006:19;;;;;;;;;;;;;;;:31;5026:10;5006:31;;;;;;;;;;;;;;;:74;;;;4935:157;5109:40;5123:6;5131:9;5142:6;5109:13;:40::i;:::-;5102:47;;4753:404;;;;;:::o;3782:80::-;3834:5;2249:1;3843:16;;3782:80;:::o;10897:876::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11035:3:::1;11015:9;;:16;;:23;;11007:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;11102:12;;:19;;11082:9;;:16;;:39;11074:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11158:20;11197:6:::0;11193:116:::1;11211:9;;:16;;11207:1;:20;11193:116;;;2249:1;11283:2;:13;;;;:::i;:::-;11265:12;;11278:1;11265:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;11248:49;;;;;:::i;:::-;;;11229:3;;;;;:::i;:::-;;;;11193:116;;;;11352:12;11327:9;:21;11337:10;11327:21;;;;;;;;;;;;;;;;:37;;11319:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;11407:6;11403:297;11421:9;;:16;;11417:1;:20;11403:297;;;2249:1;11502:2;:13;;;;:::i;:::-;11484:12;;11497:1;11484:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;11458:9;:21;11468:10;11458:21;;;;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;;;;;;;2249:1;11577:2;:13;;;;:::i;:::-;11559:12;;11572:1;11559:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;11531:9;:23;11541:9;;11551:1;11541:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11531:23;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;11632:9;;11642:1;11632:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11611:70;;11620:10;11611:70;;;2249:1;11665:2;:13;;;;:::i;:::-;11647:12;;11660:1;11647:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;11611:70;;;;;;:::i;:::-;;;;;;;;11439:3;;;;;:::i;:::-;;;;11403:297;;;;11717:48;11734:9;;:16;;11752:12;11717:48;;;;;;;:::i;:::-;;;;;;;;10996:777;10897:876:::0;;;;:::o;4044:105::-;4110:7;4128:9;:18;4138:7;4128:18;;;;;;;;;;;;;;;;4121:25;;4044:105;;;:::o;1902:137::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;1979:1:::1;1962:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1998:32;2027:1;1998:32;;;;;;:::i;:::-;;;;;;;;1902:137::o:0;1831:65::-;1869:7;1887:6;;;;;;;;;;;1880:13;;1831:65;:::o;3868:84::-;3918:13;3942:7;;;;;;;;;;;;;;;;;3935:14;;3868:84;:::o;7759:204::-;7797:19;7818:21;7853:16;7871:18;7893:20;:18;:20::i;:::-;7852:61;;;;7932:9;7943:11;7924:31;;;;;;7759:204;;:::o;4520:225::-;4600:4;4625:29;4643:10;4625:17;:29::i;:::-;4617:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4693:44;4707:10;4719:9;4730:6;4693:13;:44::i;:::-;4686:51;;4520:225;;;;:::o;4155:133::-;4239:7;4257:11;:19;4269:6;4257:19;;;;;;;;;;;;;;;:28;4277:7;4257:28;;;;;;;;;;;;;;;;4250:35;;4155:133;;;;:::o;5490:632::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3193:4:::1;3180:10;;:17;;;;;;;;;;;;;;;;;;5594:1:::2;5572:24;;:10;;;;;;;;;;;:24;;;5564:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5630:12;;;;;;;;;;;5629:13;5621:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;5693:1;5681:9;:13;:40;;;;5720:1;5698:21;:23;5681:40;5673:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;5799:1;5774:9;:24;5792:4;5774:24;;;;;;;;;;;;;;;;:26;5766:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5868:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5850:58;;;5917:4;5924:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5850:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5837:10;;:113;;;;;;;;;;;;;;;;;;5961:62;5975:9;:24;5993:4;5975:24;;;;;;;;;;;;;;;;6001:21;5961:13;:62::i;:::-;6054:4;6034:5;:17;6040:10;;;;;;;;;;;6034:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;6083:1;6069:11;;:15;;;;;;;;;;;;;;;;;;6110:4;6095:12;;:19;;;;;;;;;;;;;;;;;;3235:5:::1;3222:10;;:18;;;;;;;;;;;;;;;;;;5490:632::o:0;7300:258::-;7365:4;7381:16;7400:5;7381:24;;7421:12;;;;;;;;;;;7416:103;;;7452:4;7438:18;;7416:103;;;7479:7;:15;7487:6;7479:15;;;;;;;;;;;;;;;;;;;;;;;;;7475:44;;;7512:4;7498:18;;7475:44;7416:103;7539:11;7532:18;;;7300:258;;;:::o;6392:900::-;6484:4;6527:1;6509:20;;:6;:20;;;6501:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;6600:42;6582:61;;:6;:61;;;6574:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;6722:12;;;;;;;;;;;6717:68;;6746:7;:15;6754:6;6746:15;;;;;;;;;;;;;;;;;;;;;;;;;6738:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6717:68;6801:10;;;;;;;;;;;6800:11;:31;;;;;6815:5;:16;6821:9;6815:16;;;;;;;;;;;;;;;;;;;;;;;;;6800:31;6795:64;;;6836:20;:18;:20::i;:::-;6795:64;6871:18;6892:40;6906:6;6914:9;6925:6;6892:13;:40::i;:::-;6871:61;;6943:23;6978:10;6969:6;:19;;;;:::i;:::-;6943:45;;7020:6;6999:9;:17;7009:6;6999:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;7055:1;7042:10;:14;7037:125;;;7103:10;7075:9;:24;7093:4;7075:24;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;7129:21;:19;:21::i;:::-;7037:125;7196:15;7172:9;:20;7182:9;7172:20;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;7244:9;7227:35;;7236:6;7227:35;;;7255:6;7227:35;;;;;;:::i;:::-;;;;;;;;7280:4;7273:11;;;;6392:900;;;;;:::o;7971:583::-;8023:16;8041:18;8072:19;8102:21;8126:7;8102:31;;8166:6;8151:11;;;;;;;;;;;:21;;;8146:351;;8205:4;8190:19;;8146:351;;;8290:7;8275:11;;;;;;;;;;;:22;;;8270:227;;8330:4;8315:19;;8270:227;;;8435:3;8420:18;;8270:227;8146:351;8517:12;8531:14;8509:37;;;;;;7971:583;;:::o;6130:254::-;6218:28;6233:12;6218:14;:28::i;:::-;6257:18;;;;;;;;;;;:34;;;6299:13;6324:4;6331:12;6345:1;6348;6351:6;;;;;;;;;;6359:15;6257:119;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6130:254;;:::o;9162:1353::-;3193:4;3180:10;;:17;;;;;;;;;;;;;;;;;;9223:27:::1;9253:24;9271:4;9253:9;:24::i;:::-;9223:54;;2667:6;2249:1;2316:2;:13;;;;:::i;:::-;2297:15;:33;;;;:::i;:::-;2652:21;;;;:::i;:::-;9295:19;:34;;:50;;;;;9333:12;;;;;;;;;;;9295:50;9290:1218;;;2734:4;2249:1;2316:2;:13;;;;:::i;:::-;2297:15;:33;;;;:::i;:::-;2719:19;;;;:::i;:::-;9368;:34;9363:80;;2734:4;2249:1;2316:2;:13;;;;:::i;:::-;2297:15;:33;;;;:::i;:::-;2719:19;;;;:::i;:::-;9407:33;;9363:80;9459:20;9517:7;9503:11;;;;;;;;;;;:21;;;9498:183;;;9664:1;9642:19;:23;;;;:::i;:::-;9627:38;;9498:183;9709:21;9755:12;9733:19;:34;;;;:::i;:::-;9709:58;;2249:1;9802:2;:13;;;;:::i;:::-;9786;:29;9782:485;;;9837:19;9859:21;9837:43;;9899:35;9920:13;9899:20;:35::i;:::-;9953:19;9999:11;9975:21;:35;;;;:::i;:::-;9953:57;;10049:1;10034:12;:16;10029:223;;;10076:21;10114:1;10100:11;:15;;;;:::i;:::-;10076:39;;10139:28;10154:12;10139:14;:28::i;:::-;10190:42;10204:12;10218:13;10190;:42::i;:::-;10053:199;10029:223;9818:449;;9782:485;10281:27;10311:21;10281:51;;10372:1;10350:19;:23;10347:150;;;10396:9;10407:17:::0;2563:42:::1;10428:21;;10457:19;10428:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10395:86;;;;10375:122;;10347:150;9348:1160;;;9290:1218;9212:1303;3235:5:::0;3222:10;;:18;;;;;;;;;;;;;;;;;;9162:1353::o;8562:481::-;8659:7;8679:17;8722:12;;;;;;;;;;;:32;;;;;8739:7;:15;8747:6;8739:15;;;;;;;;;;;;;;;;;;;;;;;;;8738:16;8722:32;:55;;;;;8759:7;:18;8767:9;8759:18;;;;;;;;;;;;;;;;;;;;;;;;;8758:19;8722:55;8717:290;;;8801:5;:13;8807:6;8801:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;8818:5;:16;8824:9;8818:16;;;;;;;;;;;;;;;;;;;;;;;;;8801:33;8796:200;;;8857:16;8875:18;8897:20;:18;:20::i;:::-;8856:61;;;;8969:11;8948:32;;8957:9;8948:18;;:6;:18;;;;:::i;:::-;:32;;;;:::i;:::-;8936:44;;8837:159;;8796:200;8717:290;9026:9;9019:16;;;8562:481;;;;;:::o;7566:185::-;7636:7;7621:11;;;;;;;;;;;:22;;;7616:127;;7730:1;7715:11;;:16;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7616:127;7566:185::o;5165:317::-;5285:12;5236:11;:26;5256:4;5236:26;;;;;;;;;;;;;;;:46;2851:42;5236:46;;;;;;;;;;;;;;;;:61;5231:244;;;5364:17;5315:11;:26;5335:4;5315:26;;;;;;;;;;;;;;;:46;2851:42;5315:46;;;;;;;;;;;;;;;:66;;;;2851:42;5401:62;;5418:4;5401:62;;;5445:17;5401:62;;;;;;:::i;:::-;;;;;;;;5231:244;5165:317;:::o;10523:366::-;10593:27;10608:11;10593:14;:27::i;:::-;10631:21;10669:1;10655:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10631:40;;10700:4;10682;10687:1;10682:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10726:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10716:4;10721:1;10716:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;10762:18;;;;;;;;;;;:69;;;10832:11;10844:1;10846:4;10859;10865:15;10762:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10582:307;10523:366;:::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;1553:117;1662:1;1659;1652: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:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:619::-;4227:6;4235;4243;4292:2;4280:9;4271:7;4267:23;4263:32;4260:119;;;4298:79;;:::i;:::-;4260:119;4418:1;4443:53;4488:7;4479:6;4468:9;4464:22;4443:53;:::i;:::-;4433:63;;4389:117;4545:2;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4516:118;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4150:619;;;;;:::o;4775:86::-;4810:7;4850:4;4843:5;4839:16;4828:27;;4775:86;;;:::o;4867:112::-;4950:22;4966:5;4950:22;:::i;:::-;4945:3;4938:35;4867:112;;:::o;4985:214::-;5074:4;5112:2;5101:9;5097:18;5089:26;;5125:67;5189:1;5178:9;5174:17;5165:6;5125:67;:::i;:::-;4985:214;;;;:::o;5205:117::-;5314:1;5311;5304:12;5328:117;5437:1;5434;5427:12;5451:117;5560:1;5557;5550:12;5591:568;5664:8;5674:6;5724:3;5717:4;5709:6;5705:17;5701:27;5691:122;;5732:79;;:::i;:::-;5691:122;5845:6;5832:20;5822:30;;5875:18;5867:6;5864:30;5861:117;;;5897:79;;:::i;:::-;5861:117;6011:4;6003:6;5999:17;5987:29;;6065:3;6057:4;6049:6;6045:17;6035:8;6031:32;6028:41;6025:128;;;6072:79;;:::i;:::-;6025:128;5591:568;;;;;:::o;6182:::-;6255:8;6265:6;6315:3;6308:4;6300:6;6296:17;6292:27;6282:122;;6323:79;;:::i;:::-;6282:122;6436:6;6423:20;6413:30;;6466:18;6458:6;6455:30;6452:117;;;6488:79;;:::i;:::-;6452:117;6602:4;6594:6;6590:17;6578:29;;6656:3;6648:4;6640:6;6636:17;6626:8;6622:32;6619:41;6616:128;;;6663:79;;:::i;:::-;6616:128;6182:568;;;;;:::o;6756:934::-;6878:6;6886;6894;6902;6951:2;6939:9;6930:7;6926:23;6922:32;6919:119;;;6957:79;;:::i;:::-;6919:119;7105:1;7094:9;7090:17;7077:31;7135:18;7127:6;7124:30;7121:117;;;7157:79;;:::i;:::-;7121:117;7270:80;7342:7;7333:6;7322:9;7318:22;7270:80;:::i;:::-;7252:98;;;;7048:312;7427:2;7416:9;7412:18;7399:32;7458:18;7450:6;7447:30;7444:117;;;7480:79;;:::i;:::-;7444:117;7593:80;7665:7;7656:6;7645:9;7641:22;7593:80;:::i;:::-;7575:98;;;;7370:313;6756:934;;;;;;;:::o;7696:329::-;7755:6;7804:2;7792:9;7783:7;7779:23;7775:32;7772:119;;;7810:79;;:::i;:::-;7772:119;7930:1;7955:53;8000:7;7991:6;7980:9;7976:22;7955:53;:::i;:::-;7945:63;;7901:117;7696:329;;;;:::o;8031:93::-;8067:7;8107:10;8100:5;8096:22;8085:33;;8031:93;;;:::o;8130:115::-;8215:23;8232:5;8215:23;:::i;:::-;8210:3;8203:36;8130:115;;:::o;8251:324::-;8368:4;8406:2;8395:9;8391:18;8383:26;;8419:69;8485:1;8474:9;8470:17;8461:6;8419:69;:::i;:::-;8498:70;8564:2;8553:9;8549:18;8540:6;8498:70;:::i;:::-;8251:324;;;;;:::o;8581:474::-;8649:6;8657;8706:2;8694:9;8685:7;8681:23;8677:32;8674:119;;;8712:79;;:::i;:::-;8674:119;8832:1;8857:53;8902:7;8893:6;8882:9;8878:22;8857:53;:::i;:::-;8847:63;;8803:117;8959:2;8985:53;9030:7;9021:6;9010:9;9006:22;8985:53;:::i;:::-;8975:63;;8930:118;8581:474;;;;;:::o;9061:180::-;9109:77;9106:1;9099:88;9206:4;9203:1;9196:15;9230:4;9227:1;9220:15;9247:102;9289:8;9336:5;9333:1;9329:13;9308:34;;9247:102;;;:::o;9355:848::-;9416:5;9423:4;9447:6;9438:15;;9471:5;9462:14;;9485:712;9506:1;9496:8;9493:15;9485:712;;;9601:4;9596:3;9592:14;9586:4;9583:24;9580:50;;;9610:18;;:::i;:::-;9580:50;9660:1;9650:8;9646:16;9643:451;;;10075:4;10068:5;10064:16;10055:25;;9643:451;10125:4;10119;10115:15;10107:23;;10155:32;10178:8;10155:32;:::i;:::-;10143:44;;9485:712;;;9355:848;;;;;;;:::o;10209:1073::-;10263:5;10454:8;10444:40;;10475:1;10466:10;;10477:5;;10444:40;10503:4;10493:36;;10520:1;10511:10;;10522:5;;10493:36;10589:4;10637:1;10632:27;;;;10673:1;10668:191;;;;10582:277;;10632:27;10650:1;10641:10;;10652:5;;;10668:191;10713:3;10703:8;10700:17;10697:43;;;10720:18;;:::i;:::-;10697:43;10769:8;10766:1;10762:16;10753:25;;10804:3;10797:5;10794:14;10791:40;;;10811:18;;:::i;:::-;10791:40;10844:5;;;10582:277;;10968:2;10958:8;10955:16;10949:3;10943:4;10940:13;10936:36;10918:2;10908:8;10905:16;10900:2;10894:4;10891:12;10887:35;10871:111;10868:246;;;11024:8;11018:4;11014:19;11005:28;;11059:3;11052:5;11049:14;11046:40;;;11066:18;;:::i;:::-;11046:40;11099:5;;10868:246;11139:42;11177:3;11167:8;11161:4;11158:1;11139:42;:::i;:::-;11124:57;;;;11213:4;11208:3;11204:14;11197:5;11194:25;11191:51;;;11222:18;;:::i;:::-;11191:51;11271:4;11264:5;11260:16;11251:25;;10209:1073;;;;;;:::o;11288:281::-;11346:5;11370:23;11388:4;11370:23;:::i;:::-;11362:31;;11414:25;11430:8;11414:25;:::i;:::-;11402:37;;11458:104;11495:66;11485:8;11479:4;11458:104;:::i;:::-;11449:113;;11288:281;;;;:::o;11575:410::-;11615:7;11638:20;11656:1;11638:20;:::i;:::-;11633:25;;11672:20;11690:1;11672:20;:::i;:::-;11667:25;;11727:1;11724;11720:9;11749:30;11767:11;11749:30;:::i;:::-;11738:41;;11928:1;11919:7;11915:15;11912:1;11909:22;11889:1;11882:9;11862:83;11839:139;;11958:18;;:::i;:::-;11839:139;11623:362;11575:410;;;;:::o;11991:166::-;12131:18;12127:1;12119:6;12115:14;12108:42;11991:166;:::o;12163:366::-;12305:3;12326:67;12390:2;12385:3;12326:67;:::i;:::-;12319:74;;12402:93;12491:3;12402:93;:::i;:::-;12520:2;12515:3;12511:12;12504:19;;12163:366;;;:::o;12535:419::-;12701:4;12739:2;12728:9;12724:18;12716:26;;12788:9;12782:4;12778:20;12774:1;12763:9;12759:17;12752:47;12816:131;12942:4;12816:131;:::i;:::-;12808:139;;12535:419;;;:::o;12960:194::-;13000:4;13020:20;13038:1;13020:20;:::i;:::-;13015:25;;13054:20;13072:1;13054:20;:::i;:::-;13049:25;;13098:1;13095;13091:9;13083:17;;13122:1;13116:4;13113:11;13110:37;;;13127:18;;:::i;:::-;13110:37;12960:194;;;;:::o;13160:174::-;13300:26;13296:1;13288:6;13284:14;13277:50;13160:174;:::o;13340:366::-;13482:3;13503:67;13567:2;13562:3;13503:67;:::i;:::-;13496:74;;13579:93;13668:3;13579:93;:::i;:::-;13697:2;13692:3;13688:12;13681:19;;13340:366;;;:::o;13712:419::-;13878:4;13916:2;13905:9;13901:18;13893:26;;13965:9;13959:4;13955:20;13951:1;13940:9;13936:17;13929:47;13993:131;14119:4;13993:131;:::i;:::-;13985:139;;13712:419;;;:::o;14137:171::-;14277:23;14273:1;14265:6;14261:14;14254:47;14137:171;:::o;14314:366::-;14456:3;14477:67;14541:2;14536:3;14477:67;:::i;:::-;14470:74;;14553:93;14642:3;14553:93;:::i;:::-;14671:2;14666:3;14662:12;14655:19;;14314:366;;;:::o;14686:419::-;14852:4;14890:2;14879:9;14875:18;14867:26;;14939:9;14933:4;14929:20;14925:1;14914:9;14910:17;14903:47;14967:131;15093:4;14967:131;:::i;:::-;14959:139;;14686:419;;;:::o;15111:170::-;15251:22;15247:1;15239:6;15235:14;15228:46;15111:170;:::o;15287:366::-;15429:3;15450:67;15514:2;15509:3;15450:67;:::i;:::-;15443:74;;15526:93;15615:3;15526:93;:::i;:::-;15644:2;15639:3;15635:12;15628:19;;15287:366;;;:::o;15659:419::-;15825:4;15863:2;15852:9;15848:18;15840:26;;15912:9;15906:4;15902:20;15898:1;15887:9;15883:17;15876:47;15940:131;16066:4;15940:131;:::i;:::-;15932:139;;15659:419;;;:::o;16084:180::-;16132:77;16129:1;16122:88;16229:4;16226:1;16219:15;16253:4;16250:1;16243:15;16270:191;16310:3;16329:20;16347:1;16329:20;:::i;:::-;16324:25;;16363:20;16381:1;16363:20;:::i;:::-;16358:25;;16406:1;16403;16399:9;16392:16;;16427:3;16424:1;16421:10;16418:36;;;16434:18;;:::i;:::-;16418:36;16270:191;;;;:::o;16467:233::-;16506:3;16529:24;16547:5;16529:24;:::i;:::-;16520:33;;16575:66;16568:5;16565:77;16562:103;;16645:18;;:::i;:::-;16562:103;16692:1;16685:5;16681:13;16674:20;;16467:233;;;:::o;16706:171::-;16846:23;16842:1;16834:6;16830:14;16823:47;16706:171;:::o;16883:366::-;17025:3;17046:67;17110:2;17105:3;17046:67;:::i;:::-;17039:74;;17122:93;17211:3;17122:93;:::i;:::-;17240:2;17235:3;17231:12;17224:19;;16883:366;;;:::o;17255:419::-;17421:4;17459:2;17448:9;17444:18;17436:26;;17508:9;17502:4;17498:20;17494:1;17483:9;17479:17;17472:47;17536:131;17662:4;17536:131;:::i;:::-;17528:139;;17255:419;;;:::o;17680:332::-;17801:4;17839:2;17828:9;17824:18;17816:26;;17852:71;17920:1;17909:9;17905:17;17896:6;17852:71;:::i;:::-;17933:72;18001:2;17990:9;17986:18;17977:6;17933:72;:::i;:::-;17680:332;;;;;:::o;18018:159::-;18158:11;18154:1;18146:6;18142:14;18135:35;18018:159;:::o;18183:365::-;18325:3;18346:66;18410:1;18405:3;18346:66;:::i;:::-;18339:73;;18421:93;18510:3;18421:93;:::i;:::-;18539:2;18534:3;18530:12;18523:19;;18183:365;;;:::o;18554:419::-;18720:4;18758:2;18747:9;18743:18;18735:26;;18807:9;18801:4;18797:20;18793:1;18782:9;18778:17;18771:47;18835:131;18961:4;18835:131;:::i;:::-;18827:139;;18554:419;;;:::o;18979:165::-;19119:17;19115:1;19107:6;19103:14;19096:41;18979:165;:::o;19150:366::-;19292:3;19313:67;19377:2;19372:3;19313:67;:::i;:::-;19306:74;;19389:93;19478:3;19389:93;:::i;:::-;19507:2;19502:3;19498:12;19491:19;;19150:366;;;:::o;19522:419::-;19688:4;19726:2;19715:9;19711:18;19703:26;;19775:9;19769:4;19765:20;19761:1;19750:9;19746:17;19739:47;19803:131;19929:4;19803:131;:::i;:::-;19795:139;;19522:419;;;:::o;19947:179::-;20087:31;20083:1;20075:6;20071:14;20064:55;19947:179;:::o;20132:366::-;20274:3;20295:67;20359:2;20354:3;20295:67;:::i;:::-;20288:74;;20371:93;20460:3;20371:93;:::i;:::-;20489:2;20484:3;20480:12;20473:19;;20132:366;;;:::o;20504:419::-;20670:4;20708:2;20697:9;20693:18;20685:26;;20757:9;20751:4;20747:20;20743:1;20732:9;20728:17;20721:47;20785:131;20911:4;20785:131;:::i;:::-;20777:139;;20504:419;;;:::o;20929:171::-;21069:23;21065:1;21057:6;21053:14;21046:47;20929:171;:::o;21106:366::-;21248:3;21269:67;21333:2;21328:3;21269:67;:::i;:::-;21262:74;;21345:93;21434:3;21345:93;:::i;:::-;21463:2;21458:3;21454:12;21447:19;;21106:366;;;:::o;21478:419::-;21644:4;21682:2;21671:9;21667:18;21659:26;;21731:9;21725:4;21721:20;21717:1;21706:9;21702:17;21695:47;21759:131;21885:4;21759:131;:::i;:::-;21751:139;;21478:419;;;:::o;21903:143::-;21960:5;21991:6;21985:13;21976:22;;22007:33;22034:5;22007:33;:::i;:::-;21903:143;;;;:::o;22052:351::-;22122:6;22171:2;22159:9;22150:7;22146:23;22142:32;22139:119;;;22177:79;;:::i;:::-;22139:119;22297:1;22322:64;22378:7;22369:6;22358:9;22354:22;22322:64;:::i;:::-;22312:74;;22268:128;22052:351;;;;:::o;22409:332::-;22530:4;22568:2;22557:9;22553:18;22545:26;;22581:71;22649:1;22638:9;22634:17;22625:6;22581:71;:::i;:::-;22662:72;22730:2;22719:9;22715:18;22706:6;22662:72;:::i;:::-;22409:332;;;;;:::o;22747:179::-;22887:31;22883:1;22875:6;22871:14;22864:55;22747:179;:::o;22932:366::-;23074:3;23095:67;23159:2;23154:3;23095:67;:::i;:::-;23088:74;;23171:93;23260:3;23171:93;:::i;:::-;23289:2;23284:3;23280:12;23273:19;;22932:366;;;:::o;23304:419::-;23470:4;23508:2;23497:9;23493:18;23485:26;;23557:9;23551:4;23547:20;23543:1;23532:9;23528:17;23521:47;23585:131;23711:4;23585:131;:::i;:::-;23577:139;;23304:419;;;:::o;23729:171::-;23869:23;23865:1;23857:6;23853:14;23846:47;23729:171;:::o;23906:366::-;24048:3;24069:67;24133:2;24128:3;24069:67;:::i;:::-;24062:74;;24145:93;24234:3;24145:93;:::i;:::-;24263:2;24258:3;24254:12;24247:19;;23906:366;;;:::o;24278:419::-;24444:4;24482:2;24471:9;24467:18;24459:26;;24531:9;24525:4;24521:20;24517:1;24506:9;24502:17;24495:47;24559:131;24685:4;24559:131;:::i;:::-;24551:139;;24278:419;;;:::o;24703:85::-;24748:7;24777:5;24766:16;;24703:85;;;:::o;24794:60::-;24822:3;24843:5;24836:12;;24794:60;;;:::o;24860:158::-;24918:9;24951:61;24969:42;24978:32;25004:5;24978:32;:::i;:::-;24969:42;:::i;:::-;24951:61;:::i;:::-;24938:74;;24860:158;;;:::o;25024:147::-;25119:45;25158:5;25119:45;:::i;:::-;25114:3;25107:58;25024:147;;:::o;25177:807::-;25426:4;25464:3;25453:9;25449:19;25441:27;;25478:71;25546:1;25535:9;25531:17;25522:6;25478:71;:::i;:::-;25559:72;25627:2;25616:9;25612:18;25603:6;25559:72;:::i;:::-;25641:80;25717:2;25706:9;25702:18;25693:6;25641:80;:::i;:::-;25731;25807:2;25796:9;25792:18;25783:6;25731:80;:::i;:::-;25821:73;25889:3;25878:9;25874:19;25865:6;25821:73;:::i;:::-;25904;25972:3;25961:9;25957:19;25948:6;25904:73;:::i;:::-;25177:807;;;;;;;;;:::o;25990:143::-;26047:5;26078:6;26072:13;26063:22;;26094:33;26121:5;26094:33;:::i;:::-;25990:143;;;;:::o;26139:663::-;26227:6;26235;26243;26292:2;26280:9;26271:7;26267:23;26263:32;26260:119;;;26298:79;;:::i;:::-;26260:119;26418:1;26443:64;26499:7;26490:6;26479:9;26475:22;26443:64;:::i;:::-;26433:74;;26389:128;26556:2;26582:64;26638:7;26629:6;26618:9;26614:22;26582:64;:::i;:::-;26572:74;;26527:129;26695:2;26721:64;26777:7;26768:6;26757:9;26753:22;26721:64;:::i;:::-;26711:74;;26666:129;26139:663;;;;;:::o;26808:180::-;26856:77;26853:1;26846:88;26953:4;26950:1;26943:15;26977:4;26974:1;26967:15;26994:185;27034:1;27051:20;27069:1;27051:20;:::i;:::-;27046:25;;27085:20;27103:1;27085:20;:::i;:::-;27080:25;;27124:1;27114:35;;27129:18;;:::i;:::-;27114:35;27171:1;27168;27164:9;27159:14;;26994:185;;;;:::o;27185:147::-;27286:11;27323:3;27308:18;;27185:147;;;;:::o;27338:114::-;;:::o;27458:398::-;27617:3;27638:83;27719:1;27714:3;27638:83;:::i;:::-;27631:90;;27730:93;27819:3;27730:93;:::i;:::-;27848:1;27843:3;27839:11;27832:18;;27458:398;;;:::o;27862:379::-;28046:3;28068:147;28211:3;28068:147;:::i;:::-;28061:154;;28232:3;28225:10;;27862:379;;;:::o;28247:197::-;28286:3;28305:19;28322:1;28305:19;:::i;:::-;28300:24;;28338:19;28355:1;28338:19;:::i;:::-;28333:24;;28380:1;28377;28373:9;28366:16;;28403:10;28398:3;28395:19;28392:45;;;28417:18;;:::i;:::-;28392:45;28247:197;;;;:::o;28450:180::-;28498:77;28495:1;28488:88;28595:4;28592:1;28585:15;28619:4;28616:1;28609:15;28636:114;28703:6;28737:5;28731:12;28721:22;;28636:114;;;:::o;28756:184::-;28855:11;28889:6;28884:3;28877:19;28929:4;28924:3;28920:14;28905:29;;28756:184;;;;:::o;28946:132::-;29013:4;29036:3;29028:11;;29066:4;29061:3;29057:14;29049:22;;28946:132;;;:::o;29084:108::-;29161:24;29179:5;29161:24;:::i;:::-;29156:3;29149:37;29084:108;;:::o;29198:179::-;29267:10;29288:46;29330:3;29322:6;29288:46;:::i;:::-;29366:4;29361:3;29357:14;29343:28;;29198:179;;;;:::o;29383:113::-;29453:4;29485;29480:3;29476:14;29468:22;;29383:113;;;:::o;29532:732::-;29651:3;29680:54;29728:5;29680:54;:::i;:::-;29750:86;29829:6;29824:3;29750:86;:::i;:::-;29743:93;;29860:56;29910:5;29860:56;:::i;:::-;29939:7;29970:1;29955:284;29980:6;29977:1;29974:13;29955:284;;;30056:6;30050:13;30083:63;30142:3;30127:13;30083:63;:::i;:::-;30076:70;;30169:60;30222:6;30169:60;:::i;:::-;30159:70;;30015:224;30002:1;29999;29995:9;29990:14;;29955:284;;;29959:14;30255:3;30248:10;;29656:608;;;29532:732;;;;:::o;30270:831::-;30533:4;30571:3;30560:9;30556:19;30548:27;;30585:71;30653:1;30642:9;30638:17;30629:6;30585:71;:::i;:::-;30666:80;30742:2;30731:9;30727:18;30718:6;30666:80;:::i;:::-;30793:9;30787:4;30783:20;30778:2;30767:9;30763:18;30756:48;30821:108;30924:4;30915:6;30821:108;:::i;:::-;30813:116;;30939:72;31007:2;30996:9;30992:18;30983:6;30939:72;:::i;:::-;31021:73;31089:3;31078:9;31074:19;31065:6;31021:73;:::i;:::-;30270:831;;;;;;;;:::o

Swarm Source

ipfs://1916b82982dd19113c2eea2dbbeb092b6a57affd0e33faa5f0f0ca937f00f7e6
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.