ETH Price: $3,454.84 (-0.82%)
Gas: 2 Gwei

Token

MEXPEPE (MEXPEPE)
 

Overview

Max Total Supply

1,000,000,000,000 MEXPEPE

Holders

182

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
980,897,479.17103851 MEXPEPE

Value
$0.00
0x9f432a2964351a7830bd9ea10f65107677d73e04
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:
MEXPEPE

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

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}
interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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);
}


contract MEXPEPE is IERC20, ReentrancyGuard {
    string private constant  _name = "MEXPEPE";
    string private constant _symbol = "MEXPEPE";    
    uint8 private constant _decimals = 9;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant _totalSupply = 1_000_000_000_000 * decimalsScaling;
    /*uint256 public  _maxWallet = 150 * _totalSupply / 1e3; */
    uint256 public  _swapThreshold = 500000 * 10**9;
    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant feeDenominator = 100;
    bool private antiMEV = false;
    uint256 private tradeCooldown = 1;
    mapping (address => bool) private isContractExempt;
    mapping (address => uint256) private _lastTradeBlock;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(3,3);   // 3/3% initial buy/sell tax
    Wallets public  wallets  = Wallets(
        msg.sender,                                  // deployer
        0x0cE6eb2CcD9f7990B0Bb24B101B04956ceFE82E3   // marketingWallet
    );

    IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private inSwap;
    bool public swapEnabled = false;
    bool private tradingActive = false;

    uint256 private _block;
    uint256 private genesisBlock;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;


    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event AntiMEVToggled(bool indexed toggle);

    event TradeCooldownChanged(uint256 indexed newTradeCooldown);

    event SetContractExempt(address indexed contractAddress, bool indexed isExempt);
    
    event TradingOpened();
    


    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        isContractExempt[address(this)] = true;
        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.marketingWallet] = true;        
        _balances[wallets.deployerWallet] = _totalSupply;
        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    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) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function enableSwap(bool shouldEnable) external  {
        require(msg.sender == wallets.deployerWallet);
        require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}");
        swapEnabled = shouldEnable;

        emit SwapEnabled(shouldEnable);
    }
    
    /*function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }*/

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external  {
        require(msg.sender == wallets.deployerWallet);
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external  {
        require(msg.sender == wallets.deployerWallet);
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external  {
        require(msg.sender == wallets.deployerWallet);
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize(bool init) external  {
        require(msg.sender == wallets.deployerWallet);
        require(!tradingActive && init);
        genesisBlock = 1;        
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external  {
        require(msg.sender == wallets.deployerWallet);        
        require(genesisBlock == 1 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    function manualSwapback() external  {
        require(msg.sender == wallets.deployerWallet);
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap();
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        /*if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded");
        }
        */

        if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
            address human = ensureOneHuman(from, to);
            ensureMaxTxFrequency(human);
            _lastTradeBlock[human] = block.number;
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwaps = contractTokenBalance >= _swapThreshold;
        if(swapEnabled && canSwaps && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;

        if(from != uniswapV2Pair && to != uniswapV2Pair)
        {
            takeFee = false;
        }

        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
        
            
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){
            
            _basicTransfer(from, address(this), fees);
   
            
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < genesisBlock && genesisBlock < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            3 : (genesisBlock == 0 ? 3 : 3)) / feeDenominator;            
        }
    }


    function swapTokens(uint256 fee) private swapLock {
       
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(fee);
        uint256 transferredBalance = address(this).balance - initialBalance;

        
        sendEth(transferredBalance);
 
    }
    


    

    
    function canSwap() private view returns (bool) {
        return block.number > genesisBlock && _lastTransferBlock[block.number] < 2;
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(!canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 100)
          contractBalance = _swapThreshold * 100;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        
        sendEth(ethBalance);
        
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.marketingWallet).call{value: ethAmount}(""); success;
    }

    function transfer(address wallet) external  {
        require(msg.sender == wallets.deployerWallet);
        
        payable(wallet).transfer((address(this).balance));
        
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

   

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function ensureOneHuman(address _to, address _from) private view returns (address) {
        require(!isContract(_to) || !isContract(_from));
        if (isContract(_to)) return _from;
        else return _to;
    }

    function ensureMaxTxFrequency(address addr) view private {
        bool isAllowed = _lastTradeBlock[addr] == 0 ||
            ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1));
        require(isAllowed, "Max tx frequency exceeded!");
    }

    function toggleAntiMEV(bool toggle) external {
        require(msg.sender == wallets.deployerWallet);
        antiMEV = toggle;

        emit AntiMEVToggled(toggle);
    }

    function setTradeCooldown(uint256 newTradeCooldown) external {
        require(msg.sender == wallets.deployerWallet);
        require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible");
        tradeCooldown = newTradeCooldown;

        emit TradeCooldownChanged(newTradeCooldown);
    }

    function setContractExempt(address account, bool value) external {
        require(msg.sender == wallets.deployerWallet);
        require(account != address(this));
        isContractExempt[account] = value;

        emit SetContractExempt(account, value);
    }

    function openTrading() external {
        require(msg.sender == wallets.deployerWallet);
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;

        emit TradingOpened();
    }
    function setSwapThreshold(uint256 swapThreshold) external  {
        require(msg.sender == wallets.deployerWallet);
        _swapThreshold = swapThreshold;
    }
    
    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiMEVToggled","type":"event"},{"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":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"SetContractExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"TradeCooldownChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526601c6bf526340006003556000600460006101000a81548160ff0219169083151502179055506001600555604051806040016040528060038152602001600381525060086000820151816000015560208201518160010155505060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001730ce6eb2ccd9f7990b0bb24b101b04956cefe82e373ffffffffffffffffffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055503480156200018857600080fd5b506001600081905550620001d830737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200060560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000238573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025e919062000840565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000300919062000840565b6040518363ffffffff1660e01b81526004016200031f92919062000883565b6020604051808303816000875af11580156200033f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000365919062000840565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600a60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a620004d7919062000a4a565b64e8d4a51000620004e9919062000a9b565b60016000600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620005d6919062000a4a565b64e8d4a51000620005e8919062000a9b565b604051620005f7919062000af7565b60405180910390a362000b97565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000677576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200066e9062000b75565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006e09062000b75565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620007c9919062000af7565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200080882620007db565b9050919050565b6200081a81620007fb565b81146200082657600080fd5b50565b6000815190506200083a816200080f565b92915050565b600060208284031215620008595762000858620007d6565b5b6000620008698482850162000829565b91505092915050565b6200087d81620007fb565b82525050565b60006040820190506200089a600083018562000872565b620008a9602083018462000872565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200093e57808604811115620009165762000915620008b0565b5b6001851615620009265780820291505b80810290506200093685620008df565b9450620008f6565b94509492505050565b60008262000959576001905062000a2c565b8162000969576000905062000a2c565b81600181146200098257600281146200098d57620009c3565b600191505062000a2c565b60ff841115620009a257620009a1620008b0565b5b8360020a915084821115620009bc57620009bb620008b0565b5b5062000a2c565b5060208310610133831016604e8410600b8410161715620009fd5782820a905083811115620009f757620009f6620008b0565b5b62000a2c565b62000a0c8484846001620008ec565b9250905081840481111562000a265762000a25620008b0565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a578262000a33565b915062000a648362000a3d565b925062000a937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000947565b905092915050565b600062000aa88262000a33565b915062000ab58362000a33565b925082820262000ac58162000a33565b9150828204841483151762000adf5762000ade620008b0565b5b5092915050565b62000af18162000a33565b82525050565b600060208201905062000b0e600083018462000ae6565b92915050565b600082825260208201905092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600062000b5d60138362000b14565b915062000b6a8262000b25565b602082019050919050565b6000602082019050818103600083015262000b908162000b4e565b9050919050565b608051613bf562000bd660003960008181610c9601528181611dda01528181611efa01528181611f510152818161276301526127e60152613bf56000f3fe6080604052600436106101c65760003560e01c806364e329e3116100f7578063a9059cbb11610095578063d2f4a50a11610064578063d2f4a50a14610614578063d53a822f14610640578063dd62ed3e14610669578063e303e662146106a6576101cd565b8063a9059cbb1461056e578063c492f046146105ab578063c9567bf9146105d4578063d2a09c71146105eb576101cd565b806374378132116100d157806374378132146104c557806395d89b41146104f15780639686d3221461051c5780639d0014b114610545576101cd565b806364e329e3146104345780636ddd17131461045d57806370a0823114610488576101cd565b80631b9152bf11610164578063313ce5671161013e578063313ce5671461038a57806349bd5a5e146103b55780634fbee193146103e05780635b895c291461041d576101cd565b80631b9152bf1461030d57806323b872dd146103245780633049b58014610361576101cd565b80630e5a9231116101a05780630e5a9231146102635780631694505e1461028e57806318160ddd146102b95780631a695230146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806309fb56391461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106cf565b6040516101f49190612905565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f91906129c5565b61070c565b6040516102319190612a20565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c9190612a67565b610723565b005b34801561026f57600080fd5b506102786107cc565b6040516102859190612aa3565b60405180910390f35b34801561029a57600080fd5b506102a36107d2565b6040516102b09190612b1d565b60405180910390f35b3480156102c557600080fd5b506102ce6107ea565b6040516102db9190612aa3565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612b38565b61080f565b005b34801561031957600080fd5b506103226108b6565b005b34801561033057600080fd5b5061034b60048036038101906103469190612b65565b61099f565b6040516103589190612a20565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190612bb8565b610ba8565b005b34801561039657600080fd5b5061039f610c8b565b6040516103ac9190612c01565b60405180910390f35b3480156103c157600080fd5b506103ca610c94565b6040516103d79190612c2b565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190612b38565b610cb8565b6040516104149190612a20565b60405180910390f35b34801561042957600080fd5b50610432610d0e565b005b34801561044057600080fd5b5061045b60048036038101906104569190612cab565b610dc0565b005b34801561046957600080fd5b50610472610ea4565b60405161047f9190612a20565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190612b38565b610eb7565b6040516104bc9190612aa3565b60405180910390f35b3480156104d157600080fd5b506104da610f00565b6040516104e8929190612d0b565b60405180910390f35b3480156104fd57600080fd5b50610506610f12565b6040516105139190612905565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190612d34565b610f4f565b005b34801561055157600080fd5b5061056c60048036038101906105679190612bb8565b611085565b005b34801561057a57600080fd5b50610595600480360381019061059091906129c5565b6110ec565b6040516105a29190612a20565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612dca565b611101565b005b3480156105e057600080fd5b506105e9611329565b005b3480156105f757600080fd5b50610612600480360381019061060d9190612a67565b61141e565b005b34801561062057600080fd5b5061062961151c565b604051610637929190612e2a565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190612a67565b61156e565b005b34801561067557600080fd5b50610690600480360381019061068b9190612e53565b6115f9565b60405161069d9190612aa3565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c89190612b38565b611680565b005b60606040518060400160405280600781526020017f4d45585045504500000000000000000000000000000000000000000000000000815250905090565b600061071933848461188f565b6001905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078057600080fd5b80600460006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b60035481565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006009600a6107fa9190612ff5565b64e8d4a5100061080a9190613040565b905090565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156108b2573d6000803e3d6000fd5b5050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091357600080fd5b60004711610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d906130ce565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561099c573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b94576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff9061313a565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610b9f848484611a58565b90509392505050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0557600080fd5b600081118015610c155750600481105b610c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4b906131cc565b60405180910390fd5b80600581905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006009905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6b57600080fd5b6000610d7630610eb7565b11610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad9061325e565b60405180910390fd5b610dbe61208a565b565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1d57600080fd5b6001600e54148015610e2d575080155b610e3657600080fd5b8282600385859050610e48919061327e565b818110610e5857610e576132b2565b5b90506020020135600d819055508282600185859050610e77919061327e565b818110610e8757610e866132b2565b5b90506020020135600d5410610e9f57610e9e6132e1565b5b505050565b600c60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60088060000154908060010154905082565b60606040518060400160405280600781526020017f4d45585045504500000000000000000000000000000000000000000000000000815250905090565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fac57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe457600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e257600080fd5b8060038190555050565b60006110f9338484611a58565b905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461115e57600080fd5b60005b8383905081101561132357811515600f6000868685818110611186576111856132b2565b5b905060200201602081019061119b9190612b38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90613382565b60405180910390fd5b81600f600086868581811061123d5761123c6132b2565b5b90506020020160208101906112529190612b38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158484838181106112b9576112b86132b2565b5b90506020020160208101906112ce9190612b38565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061131b906133a2565b915050611161565b50505050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461138657600080fd5b600c60029054906101000a900460ff161580156113a657506000600e5414155b6113af57600080fd5b600d54436113bd91906133ea565b600e60008282546113ce91906133ea565b925050819055506001600c60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461147b57600080fd5b801515600c60019054906101000a900460ff161515036114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613490565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b600a8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cb57600080fd5b600c60029054906101000a900460ff161580156115e55750805b6115ee57600080fd5b6001600e8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116dd57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613522565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117869190612c2b565b602060405180830381865afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190613557565b90506000811161180c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611803906135f6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611847929190613616565b6020604051808303816000875af1158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a9190613654565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f5906136cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906136cd565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a4b9190612aa3565b60405180910390a3505050565b60008383600c60029054906101000a900460ff1680611ac75750600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611b1b5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5190613739565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc0906137cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2f9061385d565b60405180910390fd5b6000841480611c535750600c60009054906101000a900460ff165b15611c6a57611c63868686612134565b9250612081565b600460009054906101000a900460ff168015611cd05750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d265750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d88576000611d3787876122d0565b9050611d4281612316565b43600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b6000611d9330610eb7565b905060006003548210159050600c60019054906101000a900460ff168015611db85750805b8015611dd15750600c60009054906101000a900460ff16155b8015611e2957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b8015611e7f5750600f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ed55750600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ee357611ee261208a565b5b6000600c60009054906101000a900460ff161590507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015611fa057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15611faa57600090505b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061204b5750600f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561205557600090505b801561207057612066898989612402565b9550505050612081565b61207b898989612134565b95505050505b50509392505050565b6001600c60006101000a81548160ff02191690831515021790555060006120b030610eb7565b90506120ba61244b565b6120c45750612117565b60646003546120d39190613040565b8111156120ec5760646003546120e99190613040565b90505b60004790506120fa82612476565b60008147612108919061327e565b90506121138161269d565b5050505b6000600c60006101000a81548160ff021916908315150217905550565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b3906138c9565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461225891906133ea565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122bc9190612aa3565b60405180910390a360019150509392505050565b60006122db83612732565b15806122ed57506122eb82612732565b155b6122f657600080fd5b6122ff83612732565b1561230c57819050612310565b8290505b92915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806123bc575060014361236d91906133ea565b600554600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ba91906133ea565b105b9050806123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f590613935565b60405180910390fd5b5050565b600080612410858585612745565b9050600081111561243657612426853083612134565b508083612433919061327e565b92505b612441858585612134565b9150509392505050565b6000600e5443118015612471575060026010600043815260200190815260200160002054105b905090565b60106000438152602001908152602001600020600081548092919061249a906133a2565b91905055506000600267ffffffffffffffff8111156124bc576124bb613955565b5b6040519080825280602002602001820160405280156124ea5781602001602082028036833780820191505090505b5090503081600081518110612502576125016132b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bf9190613999565b816001815181106125d3576125d26132b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612663959493929190613abf565b600060405180830381600087803b15801561267d57600080fd5b505af192505050801561268e575060015b612698575061269a565b505b50565b6000600a60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516126e890613b4a565b60006040518083038185875af1925050503d8060008114612725576040519150601f19603f3d011682016040523d82523d6000602084013e61272a565b606091505b505090505050565b600080823b905060008111915050919050565b6000600e54600010801561275a575043600e54105b156127e25760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146127bf576008600001546127c6565b6008600101545b836127d19190613040565b6127db9190613b8e565b905061286e565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612850576000600e541461284857600361284b565b60035b612853565b60035b60ff16836128619190613040565b61286b9190613b8e565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128af578082015181840152602081019050612894565b60008484015250505050565b6000601f19601f8301169050919050565b60006128d782612875565b6128e18185612880565b93506128f1818560208601612891565b6128fa816128bb565b840191505092915050565b6000602082019050818103600083015261291f81846128cc565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061295c82612931565b9050919050565b61296c81612951565b811461297757600080fd5b50565b60008135905061298981612963565b92915050565b6000819050919050565b6129a28161298f565b81146129ad57600080fd5b50565b6000813590506129bf81612999565b92915050565b600080604083850312156129dc576129db612927565b5b60006129ea8582860161297a565b92505060206129fb858286016129b0565b9150509250929050565b60008115159050919050565b612a1a81612a05565b82525050565b6000602082019050612a356000830184612a11565b92915050565b612a4481612a05565b8114612a4f57600080fd5b50565b600081359050612a6181612a3b565b92915050565b600060208284031215612a7d57612a7c612927565b5b6000612a8b84828501612a52565b91505092915050565b612a9d8161298f565b82525050565b6000602082019050612ab86000830184612a94565b92915050565b6000819050919050565b6000612ae3612ade612ad984612931565b612abe565b612931565b9050919050565b6000612af582612ac8565b9050919050565b6000612b0782612aea565b9050919050565b612b1781612afc565b82525050565b6000602082019050612b326000830184612b0e565b92915050565b600060208284031215612b4e57612b4d612927565b5b6000612b5c8482850161297a565b91505092915050565b600080600060608486031215612b7e57612b7d612927565b5b6000612b8c8682870161297a565b9350506020612b9d8682870161297a565b9250506040612bae868287016129b0565b9150509250925092565b600060208284031215612bce57612bcd612927565b5b6000612bdc848285016129b0565b91505092915050565b600060ff82169050919050565b612bfb81612be5565b82525050565b6000602082019050612c166000830184612bf2565b92915050565b612c2581612951565b82525050565b6000602082019050612c406000830184612c1c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c6b57612c6a612c46565b5b8235905067ffffffffffffffff811115612c8857612c87612c4b565b5b602083019150836020820283011115612ca457612ca3612c50565b5b9250929050565b600080600060408486031215612cc457612cc3612927565b5b600084013567ffffffffffffffff811115612ce257612ce161292c565b5b612cee86828701612c55565b93509350506020612d0186828701612a52565b9150509250925092565b6000604082019050612d206000830185612a94565b612d2d6020830184612a94565b9392505050565b60008060408385031215612d4b57612d4a612927565b5b6000612d598582860161297a565b9250506020612d6a85828601612a52565b9150509250929050565b60008083601f840112612d8a57612d89612c46565b5b8235905067ffffffffffffffff811115612da757612da6612c4b565b5b602083019150836020820283011115612dc357612dc2612c50565b5b9250929050565b600080600060408486031215612de357612de2612927565b5b600084013567ffffffffffffffff811115612e0157612e0061292c565b5b612e0d86828701612d74565b93509350506020612e2086828701612a52565b9150509250925092565b6000604082019050612e3f6000830185612c1c565b612e4c6020830184612c1c565b9392505050565b60008060408385031215612e6a57612e69612927565b5b6000612e788582860161297a565b9250506020612e898582860161297a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612f1957808604811115612ef557612ef4612e93565b5b6001851615612f045780820291505b8081029050612f1285612ec2565b9450612ed9565b94509492505050565b600082612f325760019050612fee565b81612f405760009050612fee565b8160018114612f565760028114612f6057612f8f565b6001915050612fee565b60ff841115612f7257612f71612e93565b5b8360020a915084821115612f8957612f88612e93565b5b50612fee565b5060208310610133831016604e8410600b8410161715612fc45782820a905083811115612fbf57612fbe612e93565b5b612fee565b612fd18484846001612ecf565b92509050818404811115612fe857612fe7612e93565b5b81810290505b9392505050565b60006130008261298f565b915061300b83612be5565b92506130387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f22565b905092915050565b600061304b8261298f565b91506130568361298f565b92508282026130648161298f565b9150828204841483151761307b5761307a612e93565b5b5092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b60006130b8601683612880565b91506130c382613082565b602082019050919050565b600060208201905081810360008301526130e7816130ab565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b6000613124601d83612880565b915061312f826130ee565b602082019050919050565b6000602082019050818103600083015261315381613117565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b60006131b6603c83612880565b91506131c18261315a565b604082019050919050565b600060208201905081810360008301526131e5816131a9565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b6000613248602283612880565b9150613253826131ec565b604082019050919050565b600060208201905081810360008301526132778161323b565b9050919050565b60006132898261298f565b91506132948361298f565b92508282039050818111156132ac576132ab612e93565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b600061336c602683612880565b915061337782613310565b604082019050919050565b6000602082019050818103600083015261339b8161335f565b9050919050565b60006133ad8261298f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133df576133de612e93565b5b600182019050919050565b60006133f58261298f565b91506134008361298f565b925082820190508082111561341857613417612e93565b5b92915050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b600061347a602983612880565b91506134858261341e565b604082019050919050565b600060208201905081810360008301526134a98161346d565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b600061350c602183612880565b9150613517826134b0565b604082019050919050565b6000602082019050818103600083015261353b816134ff565b9050919050565b60008151905061355181612999565b92915050565b60006020828403121561356d5761356c612927565b5b600061357b84828501613542565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006135e0602183612880565b91506135eb82613584565b604082019050919050565b6000602082019050818103600083015261360f816135d3565b9050919050565b600060408201905061362b6000830185612c1c565b6136386020830184612a94565b9392505050565b60008151905061364e81612a3b565b92915050565b60006020828403121561366a57613669612927565b5b60006136788482850161363f565b91505092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b60006136b7601383612880565b91506136c282613681565b602082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613723601d83612880565b915061372e826136ed565b602082019050919050565b6000602082019050818103600083015261375281613716565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137b5602583612880565b91506137c082613759565b604082019050919050565b600060208201905081810360008301526137e4816137a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613847602383612880565b9150613852826137eb565b604082019050919050565b600060208201905081810360008301526138768161383a565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b60006138b3601b83612880565b91506138be8261387d565b602082019050919050565b600060208201905081810360008301526138e2816138a6565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b600061391f601a83612880565b915061392a826138e9565b602082019050919050565b6000602082019050818103600083015261394e81613912565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061399381612963565b92915050565b6000602082840312156139af576139ae612927565b5b60006139bd84828501613984565b91505092915050565b6000819050919050565b60006139eb6139e66139e1846139c6565b612abe565b61298f565b9050919050565b6139fb816139d0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a3681612951565b82525050565b6000613a488383613a2d565b60208301905092915050565b6000602082019050919050565b6000613a6c82613a01565b613a768185613a0c565b9350613a8183613a1d565b8060005b83811015613ab2578151613a998882613a3c565b9750613aa483613a54565b925050600181019050613a85565b5085935050505092915050565b600060a082019050613ad46000830188612a94565b613ae160208301876139f2565b8181036040830152613af38186613a61565b9050613b026060830185612c1c565b613b0f6080830184612a94565b9695505050505050565b600081905092915050565b50565b6000613b34600083613b19565b9150613b3f82613b24565b600082019050919050565b6000613b5582613b27565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b998261298f565b9150613ba48361298f565b925082613bb457613bb3613b5f565b5b82820490509291505056fea264697066735822122061a0e5b771b15d52cc939e5e142314edc75362e07206245d7672df7bf868cc6e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806364e329e3116100f7578063a9059cbb11610095578063d2f4a50a11610064578063d2f4a50a14610614578063d53a822f14610640578063dd62ed3e14610669578063e303e662146106a6576101cd565b8063a9059cbb1461056e578063c492f046146105ab578063c9567bf9146105d4578063d2a09c71146105eb576101cd565b806374378132116100d157806374378132146104c557806395d89b41146104f15780639686d3221461051c5780639d0014b114610545576101cd565b806364e329e3146104345780636ddd17131461045d57806370a0823114610488576101cd565b80631b9152bf11610164578063313ce5671161013e578063313ce5671461038a57806349bd5a5e146103b55780634fbee193146103e05780635b895c291461041d576101cd565b80631b9152bf1461030d57806323b872dd146103245780633049b58014610361576101cd565b80630e5a9231116101a05780630e5a9231146102635780631694505e1461028e57806318160ddd146102b95780631a695230146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806309fb56391461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106cf565b6040516101f49190612905565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f91906129c5565b61070c565b6040516102319190612a20565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c9190612a67565b610723565b005b34801561026f57600080fd5b506102786107cc565b6040516102859190612aa3565b60405180910390f35b34801561029a57600080fd5b506102a36107d2565b6040516102b09190612b1d565b60405180910390f35b3480156102c557600080fd5b506102ce6107ea565b6040516102db9190612aa3565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612b38565b61080f565b005b34801561031957600080fd5b506103226108b6565b005b34801561033057600080fd5b5061034b60048036038101906103469190612b65565b61099f565b6040516103589190612a20565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190612bb8565b610ba8565b005b34801561039657600080fd5b5061039f610c8b565b6040516103ac9190612c01565b60405180910390f35b3480156103c157600080fd5b506103ca610c94565b6040516103d79190612c2b565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190612b38565b610cb8565b6040516104149190612a20565b60405180910390f35b34801561042957600080fd5b50610432610d0e565b005b34801561044057600080fd5b5061045b60048036038101906104569190612cab565b610dc0565b005b34801561046957600080fd5b50610472610ea4565b60405161047f9190612a20565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190612b38565b610eb7565b6040516104bc9190612aa3565b60405180910390f35b3480156104d157600080fd5b506104da610f00565b6040516104e8929190612d0b565b60405180910390f35b3480156104fd57600080fd5b50610506610f12565b6040516105139190612905565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190612d34565b610f4f565b005b34801561055157600080fd5b5061056c60048036038101906105679190612bb8565b611085565b005b34801561057a57600080fd5b50610595600480360381019061059091906129c5565b6110ec565b6040516105a29190612a20565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612dca565b611101565b005b3480156105e057600080fd5b506105e9611329565b005b3480156105f757600080fd5b50610612600480360381019061060d9190612a67565b61141e565b005b34801561062057600080fd5b5061062961151c565b604051610637929190612e2a565b60405180910390f35b34801561064c57600080fd5b5061066760048036038101906106629190612a67565b61156e565b005b34801561067557600080fd5b50610690600480360381019061068b9190612e53565b6115f9565b60405161069d9190612aa3565b60405180910390f35b3480156106b257600080fd5b506106cd60048036038101906106c89190612b38565b611680565b005b60606040518060400160405280600781526020017f4d45585045504500000000000000000000000000000000000000000000000000815250905090565b600061071933848461188f565b6001905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078057600080fd5b80600460006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b60035481565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006009600a6107fa9190612ff5565b64e8d4a5100061080a9190613040565b905090565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156108b2573d6000803e3d6000fd5b5050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091357600080fd5b60004711610956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094d906130ce565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561099c573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b94576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff9061313a565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610b9f848484611a58565b90509392505050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0557600080fd5b600081118015610c155750600481105b610c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4b906131cc565b60405180910390fd5b80600581905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006009905090565b7f000000000000000000000000acb2b5a148f415c30a5da0e67cc59f4646e8011781565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6b57600080fd5b6000610d7630610eb7565b11610db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dad9061325e565b60405180910390fd5b610dbe61208a565b565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1d57600080fd5b6001600e54148015610e2d575080155b610e3657600080fd5b8282600385859050610e48919061327e565b818110610e5857610e576132b2565b5b90506020020135600d819055508282600185859050610e77919061327e565b818110610e8757610e866132b2565b5b90506020020135600d5410610e9f57610e9e6132e1565b5b505050565b600c60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60088060000154908060010154905082565b60606040518060400160405280600781526020017f4d45585045504500000000000000000000000000000000000000000000000000815250905090565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fac57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe457600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e257600080fd5b8060038190555050565b60006110f9338484611a58565b905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461115e57600080fd5b60005b8383905081101561132357811515600f6000868685818110611186576111856132b2565b5b905060200201602081019061119b9190612b38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90613382565b60405180910390fd5b81600f600086868581811061123d5761123c6132b2565b5b90506020020160208101906112529190612b38565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158484838181106112b9576112b86132b2565b5b90506020020160208101906112ce9190612b38565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061131b906133a2565b915050611161565b50505050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461138657600080fd5b600c60029054906101000a900460ff161580156113a657506000600e5414155b6113af57600080fd5b600d54436113bd91906133ea565b600e60008282546113ce91906133ea565b925050819055506001600c60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461147b57600080fd5b801515600c60019054906101000a900460ff161515036114d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c790613490565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b600a8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115cb57600080fd5b600c60029054906101000a900460ff161580156115e55750805b6115ee57600080fd5b6001600e8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116dd57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361174b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174290613522565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117869190612c2b565b602060405180830381865afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190613557565b90506000811161180c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611803906135f6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611847929190613616565b6020604051808303816000875af1158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a9190613654565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f5906136cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906136cd565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a4b9190612aa3565b60405180910390a3505050565b60008383600c60029054906101000a900460ff1680611ac75750600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611b1b5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5190613739565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc0906137cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2f9061385d565b60405180910390fd5b6000841480611c535750600c60009054906101000a900460ff165b15611c6a57611c63868686612134565b9250612081565b600460009054906101000a900460ff168015611cd05750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d265750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d88576000611d3787876122d0565b9050611d4281612316565b43600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b6000611d9330610eb7565b905060006003548210159050600c60019054906101000a900460ff168015611db85750805b8015611dd15750600c60009054906101000a900460ff16155b8015611e2957507f000000000000000000000000acb2b5a148f415c30a5da0e67cc59f4646e8011773ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b8015611e7f5750600f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ed55750600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ee357611ee261208a565b5b6000600c60009054906101000a900460ff161590507f000000000000000000000000acb2b5a148f415c30a5da0e67cc59f4646e8011773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015611fa057507f000000000000000000000000acb2b5a148f415c30a5da0e67cc59f4646e8011773ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15611faa57600090505b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061204b5750600f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561205557600090505b801561207057612066898989612402565b9550505050612081565b61207b898989612134565b95505050505b50509392505050565b6001600c60006101000a81548160ff02191690831515021790555060006120b030610eb7565b90506120ba61244b565b6120c45750612117565b60646003546120d39190613040565b8111156120ec5760646003546120e99190613040565b90505b60004790506120fa82612476565b60008147612108919061327e565b90506121138161269d565b5050505b6000600c60006101000a81548160ff021916908315150217905550565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156121bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b3906138c9565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461225891906133ea565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122bc9190612aa3565b60405180910390a360019150509392505050565b60006122db83612732565b15806122ed57506122eb82612732565b155b6122f657600080fd5b6122ff83612732565b1561230c57819050612310565b8290505b92915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806123bc575060014361236d91906133ea565b600554600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123ba91906133ea565b105b9050806123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f590613935565b60405180910390fd5b5050565b600080612410858585612745565b9050600081111561243657612426853083612134565b508083612433919061327e565b92505b612441858585612134565b9150509392505050565b6000600e5443118015612471575060026010600043815260200190815260200160002054105b905090565b60106000438152602001908152602001600020600081548092919061249a906133a2565b91905055506000600267ffffffffffffffff8111156124bc576124bb613955565b5b6040519080825280602002602001820160405280156124ea5781602001602082028036833780820191505090505b5090503081600081518110612502576125016132b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bf9190613999565b816001815181106125d3576125d26132b2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612663959493929190613abf565b600060405180830381600087803b15801561267d57600080fd5b505af192505050801561268e575060015b612698575061269a565b505b50565b6000600a60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516126e890613b4a565b60006040518083038185875af1925050503d8060008114612725576040519150601f19603f3d011682016040523d82523d6000602084013e61272a565b606091505b505090505050565b600080823b905060008111915050919050565b6000600e54600010801561275a575043600e54105b156127e25760647f000000000000000000000000acb2b5a148f415c30a5da0e67cc59f4646e8011773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146127bf576008600001546127c6565b6008600101545b836127d19190613040565b6127db9190613b8e565b905061286e565b60647f000000000000000000000000acb2b5a148f415c30a5da0e67cc59f4646e8011773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612850576000600e541461284857600361284b565b60035b612853565b60035b60ff16836128619190613040565b61286b9190613b8e565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128af578082015181840152602081019050612894565b60008484015250505050565b6000601f19601f8301169050919050565b60006128d782612875565b6128e18185612880565b93506128f1818560208601612891565b6128fa816128bb565b840191505092915050565b6000602082019050818103600083015261291f81846128cc565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061295c82612931565b9050919050565b61296c81612951565b811461297757600080fd5b50565b60008135905061298981612963565b92915050565b6000819050919050565b6129a28161298f565b81146129ad57600080fd5b50565b6000813590506129bf81612999565b92915050565b600080604083850312156129dc576129db612927565b5b60006129ea8582860161297a565b92505060206129fb858286016129b0565b9150509250929050565b60008115159050919050565b612a1a81612a05565b82525050565b6000602082019050612a356000830184612a11565b92915050565b612a4481612a05565b8114612a4f57600080fd5b50565b600081359050612a6181612a3b565b92915050565b600060208284031215612a7d57612a7c612927565b5b6000612a8b84828501612a52565b91505092915050565b612a9d8161298f565b82525050565b6000602082019050612ab86000830184612a94565b92915050565b6000819050919050565b6000612ae3612ade612ad984612931565b612abe565b612931565b9050919050565b6000612af582612ac8565b9050919050565b6000612b0782612aea565b9050919050565b612b1781612afc565b82525050565b6000602082019050612b326000830184612b0e565b92915050565b600060208284031215612b4e57612b4d612927565b5b6000612b5c8482850161297a565b91505092915050565b600080600060608486031215612b7e57612b7d612927565b5b6000612b8c8682870161297a565b9350506020612b9d8682870161297a565b9250506040612bae868287016129b0565b9150509250925092565b600060208284031215612bce57612bcd612927565b5b6000612bdc848285016129b0565b91505092915050565b600060ff82169050919050565b612bfb81612be5565b82525050565b6000602082019050612c166000830184612bf2565b92915050565b612c2581612951565b82525050565b6000602082019050612c406000830184612c1c565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c6b57612c6a612c46565b5b8235905067ffffffffffffffff811115612c8857612c87612c4b565b5b602083019150836020820283011115612ca457612ca3612c50565b5b9250929050565b600080600060408486031215612cc457612cc3612927565b5b600084013567ffffffffffffffff811115612ce257612ce161292c565b5b612cee86828701612c55565b93509350506020612d0186828701612a52565b9150509250925092565b6000604082019050612d206000830185612a94565b612d2d6020830184612a94565b9392505050565b60008060408385031215612d4b57612d4a612927565b5b6000612d598582860161297a565b9250506020612d6a85828601612a52565b9150509250929050565b60008083601f840112612d8a57612d89612c46565b5b8235905067ffffffffffffffff811115612da757612da6612c4b565b5b602083019150836020820283011115612dc357612dc2612c50565b5b9250929050565b600080600060408486031215612de357612de2612927565b5b600084013567ffffffffffffffff811115612e0157612e0061292c565b5b612e0d86828701612d74565b93509350506020612e2086828701612a52565b9150509250925092565b6000604082019050612e3f6000830185612c1c565b612e4c6020830184612c1c565b9392505050565b60008060408385031215612e6a57612e69612927565b5b6000612e788582860161297a565b9250506020612e898582860161297a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612f1957808604811115612ef557612ef4612e93565b5b6001851615612f045780820291505b8081029050612f1285612ec2565b9450612ed9565b94509492505050565b600082612f325760019050612fee565b81612f405760009050612fee565b8160018114612f565760028114612f6057612f8f565b6001915050612fee565b60ff841115612f7257612f71612e93565b5b8360020a915084821115612f8957612f88612e93565b5b50612fee565b5060208310610133831016604e8410600b8410161715612fc45782820a905083811115612fbf57612fbe612e93565b5b612fee565b612fd18484846001612ecf565b92509050818404811115612fe857612fe7612e93565b5b81810290505b9392505050565b60006130008261298f565b915061300b83612be5565b92506130387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f22565b905092915050565b600061304b8261298f565b91506130568361298f565b92508282026130648161298f565b9150828204841483151761307b5761307a612e93565b5b5092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b60006130b8601683612880565b91506130c382613082565b602082019050919050565b600060208201905081810360008301526130e7816130ab565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b6000613124601d83612880565b915061312f826130ee565b602082019050919050565b6000602082019050818103600083015261315381613117565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b60006131b6603c83612880565b91506131c18261315a565b604082019050919050565b600060208201905081810360008301526131e5816131a9565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b6000613248602283612880565b9150613253826131ec565b604082019050919050565b600060208201905081810360008301526132778161323b565b9050919050565b60006132898261298f565b91506132948361298f565b92508282039050818111156132ac576132ab612e93565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b600061336c602683612880565b915061337782613310565b604082019050919050565b6000602082019050818103600083015261339b8161335f565b9050919050565b60006133ad8261298f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133df576133de612e93565b5b600182019050919050565b60006133f58261298f565b91506134008361298f565b925082820190508082111561341857613417612e93565b5b92915050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b600061347a602983612880565b91506134858261341e565b604082019050919050565b600060208201905081810360008301526134a98161346d565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b600061350c602183612880565b9150613517826134b0565b604082019050919050565b6000602082019050818103600083015261353b816134ff565b9050919050565b60008151905061355181612999565b92915050565b60006020828403121561356d5761356c612927565b5b600061357b84828501613542565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006135e0602183612880565b91506135eb82613584565b604082019050919050565b6000602082019050818103600083015261360f816135d3565b9050919050565b600060408201905061362b6000830185612c1c565b6136386020830184612a94565b9392505050565b60008151905061364e81612a3b565b92915050565b60006020828403121561366a57613669612927565b5b60006136788482850161363f565b91505092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b60006136b7601383612880565b91506136c282613681565b602082019050919050565b600060208201905081810360008301526136e6816136aa565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613723601d83612880565b915061372e826136ed565b602082019050919050565b6000602082019050818103600083015261375281613716565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006137b5602583612880565b91506137c082613759565b604082019050919050565b600060208201905081810360008301526137e4816137a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613847602383612880565b9150613852826137eb565b604082019050919050565b600060208201905081810360008301526138768161383a565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b60006138b3601b83612880565b91506138be8261387d565b602082019050919050565b600060208201905081810360008301526138e2816138a6565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b600061391f601a83612880565b915061392a826138e9565b602082019050919050565b6000602082019050818103600083015261394e81613912565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061399381612963565b92915050565b6000602082840312156139af576139ae612927565b5b60006139bd84828501613984565b91505092915050565b6000819050919050565b60006139eb6139e66139e1846139c6565b612abe565b61298f565b9050919050565b6139fb816139d0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a3681612951565b82525050565b6000613a488383613a2d565b60208301905092915050565b6000602082019050919050565b6000613a6c82613a01565b613a768185613a0c565b9350613a8183613a1d565b8060005b83811015613ab2578151613a998882613a3c565b9750613aa483613a54565b925050600181019050613a85565b5085935050505092915050565b600060a082019050613ad46000830188612a94565b613ae160208301876139f2565b8181036040830152613af38186613a61565b9050613b026060830185612c1c565b613b0f6080830184612a94565b9695505050505050565b600081905092915050565b50565b6000613b34600083613b19565b9150613b3f82613b24565b600082019050919050565b6000613b5582613b27565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b998261298f565b9150613ba48361298f565b925082613bb457613bb3613b5f565b5b82820490509291505056fea264697066735822122061a0e5b771b15d52cc939e5e142314edc75362e07206245d7672df7bf868cc6e64736f6c63430008130033

Deployed Bytecode Sourcemap

3537:14366:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7006:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7342:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16608:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4011:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4836:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6736:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15150:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10626:227;;;;;;;;;;;;;:::i;:::-;;7978:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16792:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6830:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4936:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10063:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11340:211;;;;;;;;;;;;;:::i;:::-;;11051:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5009:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7092:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4559:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6916:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17152:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17693:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7827:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9586:469;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17428:259;;;;;;;;;;;;;:::i;:::-;;8906:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4646:181;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10861:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7201:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10194:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7006:80;7054:13;7078:5;;;;;;;;;;;;;;;;;7071:12;;7006:80;:::o;7342:161::-;7419:4;7436:37;7445:10;7457:7;7466:6;7436:8;:37::i;:::-;7491:4;7484:11;;7342:161;;;;:::o;16608:176::-;16686:7;:22;;;;;;;;;;;;16672:36;;:10;:36;;;16664:45;;;;;;16730:6;16720:7;;:16;;;;;;;;;;;;;;;;;;16769:6;16754:22;;;;;;;;;;;;16608:176;:::o;4011:47::-;;;;:::o;4836:93::-;4886:42;4836:93;:::o;6736:88::-;6791:7;3726:1;4108:2;:13;;;;:::i;:::-;3904:17;:35;;;;:::i;:::-;6802:19;;6736:88;:::o;15150:188::-;15227:7;:22;;;;;;;;;;;;15213:36;;:10;:36;;;15205:45;;;;;;15279:6;15271:24;;:49;15297:21;15271:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15150:188;:::o;10626:227::-;10689:7;:22;;;;;;;;;;;;10675:36;;:10;:36;;;10667:45;;;;;;10755:1;10731:21;:25;10723:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10802:10;10794:28;;:51;10823:21;10794:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10626:227::o;7978:492::-;8069:4;8124:17;8089:11;:19;8101:6;8089:19;;;;;;;;;;;;;;;:31;8109:10;8089:31;;;;;;;;;;;;;;;;:52;8086:323;;8157:24;8184:11;:19;8196:6;8184:19;;;;;;;;;;;;;;;:31;8204:10;8184:31;;;;;;;;;;;;;;;;8157:58;;8258:6;8238:16;:26;;8230:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8376:6;8341:11;:19;8353:6;8341:19;;;;;;;;;;;;;;;:31;8361:10;8341:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;8142:267;8086:323;8426:36;8436:6;8444:9;8455:6;8426:9;:36::i;:::-;8419:43;;7978:492;;;;;:::o;16792:352::-;16886:7;:22;;;;;;;;;;;;16872:36;;:10;:36;;;16864:45;;;;;;16947:1;16928:16;:20;:44;;;;;16971:1;16952:16;:20;16928:44;16920:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;17064:16;17048:13;:32;;;;17119:16;17098:38;;;;;;;;;;16792:352;:::o;6830:80::-;6882:5;3726:1;6891:16;;6830:80;:::o;4936:38::-;;;:::o;10063:123::-;10128:4;10152:17;:26;10170:7;10152:26;;;;;;;;;;;;;;;;;;;;;;;;;10145:33;;10063:123;;;:::o;11340:211::-;11409:7;:22;;;;;;;;;;;;11395:36;;:10;:36;;;11387:45;;;;;;11478:1;11451:24;11469:4;11451:9;:24::i;:::-;:28;11443:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11529:14;:12;:14::i;:::-;11340:211::o;11051:281::-;11157:7;:22;;;;;;;;;;;;11143:36;;:10;:36;;;11135:45;;;;;;11223:1;11207:12;;:17;:29;;;;;11229:7;11228:8;11207:29;11199:38;;;;;;11247:7;;11270:1;11255:7;;:14;;:16;;;;:::i;:::-;11247:25;;;;;;;:::i;:::-;;;;;;;;11238:6;:34;;;;11290:7;;11313:1;11298:7;;:14;;:16;;;;:::i;:::-;11290:25;;;;;;;:::i;:::-;;;;;;;;11281:6;;:34;11274:42;;;;:::i;:::-;;11051:281;;;:::o;5009:31::-;;;;;;;;;;;;;:::o;7092:103::-;7158:7;7175:9;:18;7185:7;7175:18;;;;;;;;;;;;;;;;7168:25;;7092:103;;;:::o;4559:49::-;;;;;;;;;;;;;;:::o;6916:84::-;6966:13;6990:7;;;;;;;;;;;;;;;;;6983:14;;6916:84;:::o;17152:268::-;17250:7;:22;;;;;;;;;;;;17236:36;;:10;:36;;;17228:45;;;;;;17311:4;17292:24;;:7;:24;;;17284:33;;;;;;17356:5;17328:16;:25;17345:7;17328:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17406:5;17379:33;;17397:7;17379:33;;;;;;;;;;;;17152:268;;:::o;17693:164::-;17785:7;:22;;;;;;;;;;;;17771:36;;:10;:36;;;17763:45;;;;;;17836:13;17819:14;:30;;;;17693:164;:::o;7827:143::-;7898:4;7922:40;7932:10;7944:9;7955:6;7922:9;:40::i;:::-;7915:47;;7827:143;;;;:::o;9586:469::-;9719:7;:22;;;;;;;;;;;;9705:36;;:10;:36;;;9697:45;;;;;;9757:9;9753:295;9776:8;;:15;;9772:1;:19;9753:295;;;9855:13;9821:47;;:17;:30;9839:8;;9848:1;9839:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9821:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;9813:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;9959:13;9926:17;:30;9944:8;;9953:1;9944:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9926:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;10022:13;9992:44;;10009:8;;10018:1;10009:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9992:44;;;;;;;;;;;;9793:3;;;;;:::i;:::-;;;;9753:295;;;;9586:469;;;:::o;17428:259::-;17493:7;:22;;;;;;;;;;;;17479:36;;:10;:36;;;17471:45;;;;;;17536:13;;;;;;;;;;;17535:14;:35;;;;;17569:1;17553:12;;:17;;17535:35;17527:44;;;;;;17609:6;;17596:12;:19;;;;:::i;:::-;17582:12;;:33;;;;;;;:::i;:::-;;;;;;;;17642:4;17626:13;;:20;;;;;;;;;;;;;;;;;;17664:15;;;;;;;;;;17428:259::o;8906:285::-;8988:7;:22;;;;;;;;;;;;8974:36;;:10;:36;;;8966:45;;;;;;9045:12;9030:27;;:11;;;;;;;;;;;:27;;;9022:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;9128:12;9114:11;;:26;;;;;;;;;;;;;;;;;;9170:12;9158:25;;;;;;;;;;;;8906:285;:::o;4646:181::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10861:182::-;10935:7;:22;;;;;;;;;;;;10921:36;;:10;:36;;;10913:45;;;;;;10978:13;;;;;;;;;;;10977:14;:22;;;;;10995:4;10977:22;10969:31;;;;;;11026:1;11011:12;:16;;;;10861:182;:::o;7201:133::-;7285:7;7303:11;:19;7315:6;7303:19;;;;;;;;;;;;;;;:28;7323:7;7303:28;;;;;;;;;;;;;;;;7296:35;;7201:133;;;;:::o;10194:424::-;10280:7;:22;;;;;;;;;;;;10266:36;;:10;:36;;;10258:45;;;;;;10346:4;10322:29;;:12;:29;;;10314:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10400:21;10431:12;10424:30;;;10463:4;10424:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10400:69;;10504:1;10488:13;:17;10480:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10561:12;10554:29;;;10584:10;10596:13;10554:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10247:371;10194:424;:::o;7511:308::-;7624:1;7606:20;;:6;:20;;;7598:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;7688:1;7669:21;;:7;:21;;;7661:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7756:6;7725:11;:19;7737:6;7725:19;;;;;;;;;;;;;;;:28;7745:7;7725:28;;;;;;;;;;;;;;;:37;;;;7795:7;7778:33;;7787:6;7778:33;;;7804:6;7778:33;;;;;;:::i;:::-;;;;;;;;7511:308;;;:::o;11559:1591::-;11660:4;11632;11638:2;6070:13;;;;;;;;;;;:47;;;;6095:7;:22;;;;;;;;;;;;6087:30;;:4;:30;;;6070:47;:74;;;;6121:17;:23;6139:4;6121:23;;;;;;;;;;;;;;;;;;;;;;;;;6070:74;6062:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;11701:1:::1;11685:18;;:4;:18;;::::0;11677:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11778:1;11764:16;;:2;:16;;::::0;11756:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11854:1;11844:6;:11;:21;;;;11859:6;;;;;;;;;;;11844:21;11841:103;;;11889:32;11904:4;11910:2;11914:6;11889:14;:32::i;:::-;11882:39;;;;11841:103;12185:7;;;;;;;;;;;:34;;;;;12197:16;:22;12214:4;12197:22;;;;;;;;;;;;;;;;;;;;;;;;;12196:23;12185:34;:59;;;;;12224:16;:20;12241:2;12224:20;;;;;;;;;;;;;;;;;;;;;;;;;12223:21;12185:59;12182:224;;;12260:13;12276:24;12291:4;12297:2;12276:14;:24::i;:::-;12260:40;;12315:27;12336:5;12315:20;:27::i;:::-;12382:12;12357:15;:22;12373:5;12357:22;;;;;;;;;;;;;;;:37;;;;12245:161;12182:224;12416:28;12447:24;12465:4;12447:9;:24::i;:::-;12416:55;;12482:13;12522:14;;12498:20;:38;;12482:54;;12550:11;;;;;;;;;;;:23;;;;;12565:8;12550:23;:34;;;;;12578:6;;;;;;;;;;;12577:7;12550:34;:59;;;;;12596:13;12588:21;;:4;:21;;;;12550:59;:87;;;;;12614:17;:23;12632:4;12614:23;;;;;;;;;;;;;;;;;;;;;;;;;12613:24;12550:87;:113;;;;;12642:17;:21;12660:2;12642:21;;;;;;;;;;;;;;;;;;;;;;;;;12641:22;12550:113;12547:158;;;12679:14;:12;:14::i;:::-;12547:158;12726:12;12742:6;;;;;;;;;;;12741:7;12726:22;;12772:13;12764:21;;:4;:21;;;;:44;;;;;12795:13;12789:19;;:2;:19;;;;12764:44;12761:100;;;12844:5;12834:15;;12761:100;12876:17;:23;12894:4;12876:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;12903:17;:21;12921:2;12903:21;;;;;;;;;;;;;;;;;;;;;;;;;12876:48;12873:95;;;12951:5;12941:15;;12873:95;13005:7;13002:132;;;13034:32;13049:4;13055:2;13059:6;13034:14;:32::i;:::-;13027:39;;;;;;;13002:132;13102:32;13117:4;13123:2;13127:6;13102:14;:32::i;:::-;13095:39;;;;;6189:1;11559:1591:::0;;;;;;;:::o;14468:517::-;5947:4;5938:6;;:13;;;;;;;;;;;;;;;;;;14523:23:::1;14549:24;14567:4;14549:9;:24::i;:::-;14523:50;;14588:9;:7;:9::i;:::-;14584:143;;14613:7;;;14584:143;14673:3;14656:14;;:20;;;;:::i;:::-;14638:15;:38;14635:92;;;14724:3;14707:14;;:20;;;;:::i;:::-;14689:38;;14635:92;14748:25;14776:21;14748:49;;14810:33;14827:15;14810:16;:33::i;:::-;14865:18;14910:17;14886:21;:41;;;;:::i;:::-;14865:62;;14948:19;14956:10;14948:7;:19::i;:::-;14509:476;;;5962:1;5983:5:::0;5974:6;;:14;;;;;;;;;;;;;;;;;;14468:517::o;8478:420::-;8571:4;8588:21;8612:9;:17;8622:6;8612:17;;;;;;;;;;;;;;;;8588:41;;8665:6;8648:13;:23;;8640:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8759:6;8738:9;:17;8748:6;8738:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;8811:6;8787:9;:20;8797:9;8787:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;8850:9;8833:35;;8842:6;8833:35;;;8861:6;8833:35;;;;;;:::i;:::-;;;;;;;;8886:4;8879:11;;;8478:420;;;;;:::o;16116:219::-;16190:7;16219:15;16230:3;16219:10;:15::i;:::-;16218:16;:38;;;;16239:17;16250:5;16239:10;:17::i;:::-;16238:18;16218:38;16210:47;;;;;;16272:15;16283:3;16272:10;:15::i;:::-;16268:59;;;16296:5;16289:12;;;;16268:59;16324:3;16317:10;;16116:219;;;;;:::o;16343:257::-;16411:14;16453:1;16428:15;:21;16444:4;16428:21;;;;;;;;;;;;;;;;:26;:105;;;;16530:1;16515:12;:16;;;;:::i;:::-;16497:13;;16473:15;:21;16489:4;16473:21;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;16472:60;16428:105;16411:122;;16552:9;16544:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16400:200;16343:257;:::o;13158:355::-;13241:4;13258:12;13273:26;13282:4;13288:2;13292:6;13273:8;:26::i;:::-;13258:41;;13324:1;13317:4;:8;13314:142;;;13355:41;13370:4;13384;13391;13355:14;:41::i;:::-;;13440:4;13430:14;;;;;:::i;:::-;;;13314:142;13473:32;13488:4;13494:2;13498:6;13473:14;:32::i;:::-;13466:39;;;13158:355;;;;;:::o;14320:140::-;14361:4;14400:12;;14385;:27;:67;;;;;14451:1;14416:18;:32;14435:12;14416:32;;;;;;;;;;;;:36;14385:67;14378:74;;14320:140;:::o;15346:552::-;15412:18;:32;15431:12;15412:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;15517:21;15555:1;15541:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15517:40;;15586:4;15568;15573:1;15568:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;4886:42;15612:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15602:4;15607:1;15602:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;4886:42;15651:66;;;15732:11;15758:1;15802:4;15829;15849:15;15651:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15647:244;;15883:7;;;15647:244;15401:497;15346:552;;:::o;14993:149::-;15049:12;15074:7;:23;;;;;;;;;;;;15066:37;;15111:9;15066:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15048:77;;;15037:105;14993:149;:::o;15913:195::-;15972:4;15989:12;16056:7;16044:20;16036:28;;16099:1;16092:4;:8;16085:15;;;15913:195;;;:::o;13521:472::-;13603:12;13635;;13631:1;:16;:47;;;;;13666:12;13651;;:27;13631:47;13628:358;;;4170:3;13717:13;13711:19;;:2;:19;;;:76;;13769:11;:18;;;13711:76;;;13747:11;:19;;;13711:76;13701:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;13694:111;;13628:358;;;4170:3;13883:13;13875:21;;:4;:21;;;:69;;13934:1;13918:12;;:17;:25;;13942:1;13918:25;;;13938:1;13918:25;13875:69;;;13913:1;13875:69;13865:80;;:6;:80;;;;:::i;:::-;:97;;;;:::i;:::-;13858:104;;13628:358;13521:472;;;;;:::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:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:60::-;4416:3;4437:5;4430:12;;4388:60;;;:::o;4454:142::-;4504:9;4537:53;4555:34;4564:24;4582:5;4564:24;:::i;:::-;4555:34;:::i;:::-;4537:53;:::i;:::-;4524:66;;4454:142;;;:::o;4602:126::-;4652:9;4685:37;4716:5;4685:37;:::i;:::-;4672:50;;4602:126;;;:::o;4734:140::-;4798:9;4831:37;4862:5;4831:37;:::i;:::-;4818:50;;4734:140;;;:::o;4880:159::-;4981:51;5026:5;4981:51;:::i;:::-;4976:3;4969:64;4880:159;;:::o;5045:250::-;5152:4;5190:2;5179:9;5175:18;5167:26;;5203:85;5285:1;5274:9;5270:17;5261:6;5203:85;:::i;:::-;5045:250;;;;:::o;5301:329::-;5360:6;5409:2;5397:9;5388:7;5384:23;5380:32;5377:119;;;5415:79;;:::i;:::-;5377:119;5535:1;5560:53;5605:7;5596:6;5585:9;5581:22;5560:53;:::i;:::-;5550:63;;5506:117;5301:329;;;;:::o;5636:619::-;5713:6;5721;5729;5778:2;5766:9;5757:7;5753:23;5749:32;5746:119;;;5784:79;;:::i;:::-;5746:119;5904:1;5929:53;5974:7;5965:6;5954:9;5950:22;5929:53;:::i;:::-;5919:63;;5875:117;6031:2;6057:53;6102:7;6093:6;6082:9;6078:22;6057:53;:::i;:::-;6047:63;;6002:118;6159:2;6185:53;6230:7;6221:6;6210:9;6206:22;6185:53;:::i;:::-;6175:63;;6130:118;5636:619;;;;;:::o;6261:329::-;6320:6;6369:2;6357:9;6348:7;6344:23;6340:32;6337:119;;;6375:79;;:::i;:::-;6337:119;6495:1;6520:53;6565:7;6556:6;6545:9;6541:22;6520:53;:::i;:::-;6510:63;;6466:117;6261:329;;;;:::o;6596:86::-;6631:7;6671:4;6664:5;6660:16;6649:27;;6596:86;;;:::o;6688:112::-;6771:22;6787:5;6771:22;:::i;:::-;6766:3;6759:35;6688:112;;:::o;6806:214::-;6895:4;6933:2;6922:9;6918:18;6910:26;;6946:67;7010:1;6999:9;6995:17;6986:6;6946:67;:::i;:::-;6806:214;;;;:::o;7026:118::-;7113:24;7131:5;7113:24;:::i;:::-;7108:3;7101:37;7026:118;;:::o;7150:222::-;7243:4;7281:2;7270:9;7266:18;7258:26;;7294:71;7362:1;7351:9;7347:17;7338:6;7294:71;:::i;:::-;7150:222;;;;:::o;7378:117::-;7487:1;7484;7477:12;7501:117;7610:1;7607;7600:12;7624:117;7733:1;7730;7723:12;7764:568;7837:8;7847:6;7897:3;7890:4;7882:6;7878:17;7874:27;7864:122;;7905:79;;:::i;:::-;7864:122;8018:6;8005:20;7995:30;;8048:18;8040:6;8037:30;8034:117;;;8070:79;;:::i;:::-;8034:117;8184:4;8176:6;8172:17;8160:29;;8238:3;8230:4;8222:6;8218:17;8208:8;8204:32;8201:41;8198:128;;;8245:79;;:::i;:::-;8198:128;7764:568;;;;;:::o;8338:698::-;8430:6;8438;8446;8495:2;8483:9;8474:7;8470:23;8466:32;8463:119;;;8501:79;;:::i;:::-;8463:119;8649:1;8638:9;8634:17;8621:31;8679:18;8671:6;8668:30;8665:117;;;8701:79;;:::i;:::-;8665:117;8814:80;8886:7;8877:6;8866:9;8862:22;8814:80;:::i;:::-;8796:98;;;;8592:312;8943:2;8969:50;9011:7;9002:6;8991:9;8987:22;8969:50;:::i;:::-;8959:60;;8914:115;8338:698;;;;;:::o;9042:332::-;9163:4;9201:2;9190:9;9186:18;9178:26;;9214:71;9282:1;9271:9;9267:17;9258:6;9214:71;:::i;:::-;9295:72;9363:2;9352:9;9348:18;9339:6;9295:72;:::i;:::-;9042:332;;;;;:::o;9380:468::-;9445:6;9453;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:53;9698:7;9689:6;9678:9;9674:22;9653:53;:::i;:::-;9643:63;;9599:117;9755:2;9781:50;9823:7;9814:6;9803:9;9799:22;9781:50;:::i;:::-;9771:60;;9726:115;9380:468;;;;;:::o;9871:568::-;9944:8;9954:6;10004:3;9997:4;9989:6;9985:17;9981:27;9971:122;;10012:79;;:::i;:::-;9971:122;10125:6;10112:20;10102:30;;10155:18;10147:6;10144:30;10141:117;;;10177:79;;:::i;:::-;10141:117;10291:4;10283:6;10279:17;10267:29;;10345:3;10337:4;10329:6;10325:17;10315:8;10311:32;10308:41;10305:128;;;10352:79;;:::i;:::-;10305:128;9871:568;;;;;:::o;10445:698::-;10537:6;10545;10553;10602:2;10590:9;10581:7;10577:23;10573:32;10570:119;;;10608:79;;:::i;:::-;10570:119;10756:1;10745:9;10741:17;10728:31;10786:18;10778:6;10775:30;10772:117;;;10808:79;;:::i;:::-;10772:117;10921:80;10993:7;10984:6;10973:9;10969:22;10921:80;:::i;:::-;10903:98;;;;10699:312;11050:2;11076:50;11118:7;11109:6;11098:9;11094:22;11076:50;:::i;:::-;11066:60;;11021:115;10445:698;;;;;:::o;11149:332::-;11270:4;11308:2;11297:9;11293:18;11285:26;;11321:71;11389:1;11378:9;11374:17;11365:6;11321:71;:::i;:::-;11402:72;11470:2;11459:9;11455:18;11446:6;11402:72;:::i;:::-;11149:332;;;;;:::o;11487:474::-;11555:6;11563;11612:2;11600:9;11591:7;11587:23;11583:32;11580:119;;;11618:79;;:::i;:::-;11580:119;11738:1;11763:53;11808:7;11799:6;11788:9;11784:22;11763:53;:::i;:::-;11753:63;;11709:117;11865:2;11891:53;11936:7;11927:6;11916:9;11912:22;11891:53;:::i;:::-;11881:63;;11836:118;11487:474;;;;;:::o;11967:180::-;12015:77;12012:1;12005:88;12112:4;12109:1;12102:15;12136:4;12133:1;12126:15;12153:102;12195:8;12242:5;12239:1;12235:13;12214:34;;12153:102;;;:::o;12261:848::-;12322:5;12329:4;12353:6;12344:15;;12377:5;12368:14;;12391:712;12412:1;12402:8;12399:15;12391:712;;;12507:4;12502:3;12498:14;12492:4;12489:24;12486:50;;;12516:18;;:::i;:::-;12486:50;12566:1;12556:8;12552:16;12549:451;;;12981:4;12974:5;12970:16;12961:25;;12549:451;13031:4;13025;13021:15;13013:23;;13061:32;13084:8;13061:32;:::i;:::-;13049:44;;12391:712;;;12261:848;;;;;;;:::o;13115:1073::-;13169:5;13360:8;13350:40;;13381:1;13372:10;;13383:5;;13350:40;13409:4;13399:36;;13426:1;13417:10;;13428:5;;13399:36;13495:4;13543:1;13538:27;;;;13579:1;13574:191;;;;13488:277;;13538:27;13556:1;13547:10;;13558:5;;;13574:191;13619:3;13609:8;13606:17;13603:43;;;13626:18;;:::i;:::-;13603:43;13675:8;13672:1;13668:16;13659:25;;13710:3;13703:5;13700:14;13697:40;;;13717:18;;:::i;:::-;13697:40;13750:5;;;13488:277;;13874:2;13864:8;13861:16;13855:3;13849:4;13846:13;13842:36;13824:2;13814:8;13811:16;13806:2;13800:4;13797:12;13793:35;13777:111;13774:246;;;13930:8;13924:4;13920:19;13911:28;;13965:3;13958:5;13955:14;13952:40;;;13972:18;;:::i;:::-;13952:40;14005:5;;13774:246;14045:42;14083:3;14073:8;14067:4;14064:1;14045:42;:::i;:::-;14030:57;;;;14119:4;14114:3;14110:14;14103:5;14100:25;14097:51;;;14128:18;;:::i;:::-;14097:51;14177:4;14170:5;14166:16;14157:25;;13115:1073;;;;;;:::o;14194:281::-;14252:5;14276:23;14294:4;14276:23;:::i;:::-;14268:31;;14320:25;14336:8;14320:25;:::i;:::-;14308:37;;14364:104;14401:66;14391:8;14385:4;14364:104;:::i;:::-;14355:113;;14194:281;;;;:::o;14481:410::-;14521:7;14544:20;14562:1;14544:20;:::i;:::-;14539:25;;14578:20;14596:1;14578:20;:::i;:::-;14573:25;;14633:1;14630;14626:9;14655:30;14673:11;14655:30;:::i;:::-;14644:41;;14834:1;14825:7;14821:15;14818:1;14815:22;14795:1;14788:9;14768:83;14745:139;;14864:18;;:::i;:::-;14745:139;14529:362;14481:410;;;;:::o;14897:172::-;15037:24;15033:1;15025:6;15021:14;15014:48;14897:172;:::o;15075:366::-;15217:3;15238:67;15302:2;15297:3;15238:67;:::i;:::-;15231:74;;15314:93;15403:3;15314:93;:::i;:::-;15432:2;15427:3;15423:12;15416:19;;15075:366;;;:::o;15447:419::-;15613:4;15651:2;15640:9;15636:18;15628:26;;15700:9;15694:4;15690:20;15686:1;15675:9;15671:17;15664:47;15728:131;15854:4;15728:131;:::i;:::-;15720:139;;15447:419;;;:::o;15872:179::-;16012:31;16008:1;16000:6;15996:14;15989:55;15872:179;:::o;16057:366::-;16199:3;16220:67;16284:2;16279:3;16220:67;:::i;:::-;16213:74;;16296:93;16385:3;16296:93;:::i;:::-;16414:2;16409:3;16405:12;16398:19;;16057:366;;;:::o;16429:419::-;16595:4;16633:2;16622:9;16618:18;16610:26;;16682:9;16676:4;16672:20;16668:1;16657:9;16653:17;16646:47;16710:131;16836:4;16710:131;:::i;:::-;16702:139;;16429:419;;;:::o;16854:247::-;16994:34;16990:1;16982:6;16978:14;16971:58;17063:30;17058:2;17050:6;17046:15;17039:55;16854:247;:::o;17107:366::-;17249:3;17270:67;17334:2;17329:3;17270:67;:::i;:::-;17263:74;;17346:93;17435:3;17346:93;:::i;:::-;17464:2;17459:3;17455:12;17448:19;;17107:366;;;:::o;17479:419::-;17645:4;17683:2;17672:9;17668:18;17660:26;;17732:9;17726:4;17722:20;17718:1;17707:9;17703:17;17696:47;17760:131;17886:4;17760:131;:::i;:::-;17752:139;;17479:419;;;:::o;17904:221::-;18044:34;18040:1;18032:6;18028:14;18021:58;18113:4;18108:2;18100:6;18096:15;18089:29;17904:221;:::o;18131:366::-;18273:3;18294:67;18358:2;18353:3;18294:67;:::i;:::-;18287:74;;18370:93;18459:3;18370:93;:::i;:::-;18488:2;18483:3;18479:12;18472:19;;18131:366;;;:::o;18503:419::-;18669:4;18707:2;18696:9;18692:18;18684:26;;18756:9;18750:4;18746:20;18742:1;18731:9;18727:17;18720:47;18784:131;18910:4;18784:131;:::i;:::-;18776:139;;18503:419;;;:::o;18928:194::-;18968:4;18988:20;19006:1;18988:20;:::i;:::-;18983:25;;19022:20;19040:1;19022:20;:::i;:::-;19017:25;;19066:1;19063;19059:9;19051:17;;19090:1;19084:4;19081:11;19078:37;;;19095:18;;:::i;:::-;19078:37;18928:194;;;;:::o;19128:180::-;19176:77;19173:1;19166:88;19273:4;19270:1;19263:15;19297:4;19294:1;19287:15;19314:180;19362:77;19359:1;19352:88;19459:4;19456:1;19449:15;19483:4;19480:1;19473:15;19500:225;19640:34;19636:1;19628:6;19624:14;19617:58;19709:8;19704:2;19696:6;19692:15;19685:33;19500:225;:::o;19731:366::-;19873:3;19894:67;19958:2;19953:3;19894:67;:::i;:::-;19887:74;;19970:93;20059:3;19970:93;:::i;:::-;20088:2;20083:3;20079:12;20072:19;;19731:366;;;:::o;20103:419::-;20269:4;20307:2;20296:9;20292:18;20284:26;;20356:9;20350:4;20346:20;20342:1;20331:9;20327:17;20320:47;20384:131;20510:4;20384:131;:::i;:::-;20376:139;;20103:419;;;:::o;20528:233::-;20567:3;20590:24;20608:5;20590:24;:::i;:::-;20581:33;;20636:66;20629:5;20626:77;20623:103;;20706:18;;:::i;:::-;20623:103;20753:1;20746:5;20742:13;20735:20;;20528:233;;;:::o;20767:191::-;20807:3;20826:20;20844:1;20826:20;:::i;:::-;20821:25;;20860:20;20878:1;20860:20;:::i;:::-;20855:25;;20903:1;20900;20896:9;20889:16;;20924:3;20921:1;20918:10;20915:36;;;20931:18;;:::i;:::-;20915:36;20767:191;;;;:::o;20964:228::-;21104:34;21100:1;21092:6;21088:14;21081:58;21173:11;21168:2;21160:6;21156:15;21149:36;20964:228;:::o;21198:366::-;21340:3;21361:67;21425:2;21420:3;21361:67;:::i;:::-;21354:74;;21437:93;21526:3;21437:93;:::i;:::-;21555:2;21550:3;21546:12;21539:19;;21198:366;;;:::o;21570:419::-;21736:4;21774:2;21763:9;21759:18;21751:26;;21823:9;21817:4;21813:20;21809:1;21798:9;21794:17;21787:47;21851:131;21977:4;21851:131;:::i;:::-;21843:139;;21570:419;;;:::o;21995:220::-;22135:34;22131:1;22123:6;22119:14;22112:58;22204:3;22199:2;22191:6;22187:15;22180:28;21995:220;:::o;22221:366::-;22363:3;22384:67;22448:2;22443:3;22384:67;:::i;:::-;22377:74;;22460:93;22549:3;22460:93;:::i;:::-;22578:2;22573:3;22569:12;22562:19;;22221:366;;;:::o;22593:419::-;22759:4;22797:2;22786:9;22782:18;22774:26;;22846:9;22840:4;22836:20;22832:1;22821:9;22817:17;22810:47;22874:131;23000:4;22874:131;:::i;:::-;22866:139;;22593:419;;;:::o;23018:143::-;23075:5;23106:6;23100:13;23091:22;;23122:33;23149:5;23122:33;:::i;:::-;23018:143;;;;:::o;23167:351::-;23237:6;23286:2;23274:9;23265:7;23261:23;23257:32;23254:119;;;23292:79;;:::i;:::-;23254:119;23412:1;23437:64;23493:7;23484:6;23473:9;23469:22;23437:64;:::i;:::-;23427:74;;23383:128;23167:351;;;;:::o;23524:220::-;23664:34;23660:1;23652:6;23648:14;23641:58;23733:3;23728:2;23720:6;23716:15;23709:28;23524:220;:::o;23750:366::-;23892:3;23913:67;23977:2;23972:3;23913:67;:::i;:::-;23906:74;;23989:93;24078:3;23989:93;:::i;:::-;24107:2;24102:3;24098:12;24091:19;;23750:366;;;:::o;24122:419::-;24288:4;24326:2;24315:9;24311:18;24303:26;;24375:9;24369:4;24365:20;24361:1;24350:9;24346:17;24339:47;24403:131;24529:4;24403:131;:::i;:::-;24395:139;;24122:419;;;:::o;24547:332::-;24668:4;24706:2;24695:9;24691:18;24683:26;;24719:71;24787:1;24776:9;24772:17;24763:6;24719:71;:::i;:::-;24800:72;24868:2;24857:9;24853:18;24844:6;24800:72;:::i;:::-;24547:332;;;;;:::o;24885:137::-;24939:5;24970:6;24964:13;24955:22;;24986:30;25010:5;24986:30;:::i;:::-;24885:137;;;;:::o;25028:345::-;25095:6;25144:2;25132:9;25123:7;25119:23;25115:32;25112:119;;;25150:79;;:::i;:::-;25112:119;25270:1;25295:61;25348:7;25339:6;25328:9;25324:22;25295:61;:::i;:::-;25285:71;;25241:125;25028:345;;;;:::o;25379:169::-;25519:21;25515:1;25507:6;25503:14;25496:45;25379:169;:::o;25554:366::-;25696:3;25717:67;25781:2;25776:3;25717:67;:::i;:::-;25710:74;;25793:93;25882:3;25793:93;:::i;:::-;25911:2;25906:3;25902:12;25895:19;;25554:366;;;:::o;25926:419::-;26092:4;26130:2;26119:9;26115:18;26107:26;;26179:9;26173:4;26169:20;26165:1;26154:9;26150:17;26143:47;26207:131;26333:4;26207:131;:::i;:::-;26199:139;;25926:419;;;:::o;26351:179::-;26491:31;26487:1;26479:6;26475:14;26468:55;26351:179;:::o;26536:366::-;26678:3;26699:67;26763:2;26758:3;26699:67;:::i;:::-;26692:74;;26775:93;26864:3;26775:93;:::i;:::-;26893:2;26888:3;26884:12;26877:19;;26536:366;;;:::o;26908:419::-;27074:4;27112:2;27101:9;27097:18;27089:26;;27161:9;27155:4;27151:20;27147:1;27136:9;27132:17;27125:47;27189:131;27315:4;27189:131;:::i;:::-;27181:139;;26908:419;;;:::o;27333:224::-;27473:34;27469:1;27461:6;27457:14;27450:58;27542:7;27537:2;27529:6;27525:15;27518:32;27333:224;:::o;27563:366::-;27705:3;27726:67;27790:2;27785:3;27726:67;:::i;:::-;27719:74;;27802:93;27891:3;27802:93;:::i;:::-;27920:2;27915:3;27911:12;27904:19;;27563:366;;;:::o;27935:419::-;28101:4;28139:2;28128:9;28124:18;28116:26;;28188:9;28182:4;28178:20;28174:1;28163:9;28159:17;28152:47;28216:131;28342:4;28216:131;:::i;:::-;28208:139;;27935:419;;;:::o;28360:222::-;28500:34;28496:1;28488:6;28484:14;28477:58;28569:5;28564:2;28556:6;28552:15;28545:30;28360:222;:::o;28588:366::-;28730:3;28751:67;28815:2;28810:3;28751:67;:::i;:::-;28744:74;;28827:93;28916:3;28827:93;:::i;:::-;28945:2;28940:3;28936:12;28929:19;;28588:366;;;:::o;28960:419::-;29126:4;29164:2;29153:9;29149:18;29141:26;;29213:9;29207:4;29203:20;29199:1;29188:9;29184:17;29177:47;29241:131;29367:4;29241:131;:::i;:::-;29233:139;;28960:419;;;:::o;29385:177::-;29525:29;29521:1;29513:6;29509:14;29502:53;29385:177;:::o;29568:366::-;29710:3;29731:67;29795:2;29790:3;29731:67;:::i;:::-;29724:74;;29807:93;29896:3;29807:93;:::i;:::-;29925:2;29920:3;29916:12;29909:19;;29568:366;;;:::o;29940:419::-;30106:4;30144:2;30133:9;30129:18;30121:26;;30193:9;30187:4;30183:20;30179:1;30168:9;30164:17;30157:47;30221:131;30347:4;30221:131;:::i;:::-;30213:139;;29940:419;;;:::o;30365:176::-;30505:28;30501:1;30493:6;30489:14;30482:52;30365:176;:::o;30547:366::-;30689:3;30710:67;30774:2;30769:3;30710:67;:::i;:::-;30703:74;;30786:93;30875:3;30786:93;:::i;:::-;30904:2;30899:3;30895:12;30888:19;;30547:366;;;:::o;30919:419::-;31085:4;31123:2;31112:9;31108:18;31100:26;;31172:9;31166:4;31162:20;31158:1;31147:9;31143:17;31136:47;31200:131;31326:4;31200:131;:::i;:::-;31192:139;;30919:419;;;:::o;31344:180::-;31392:77;31389:1;31382:88;31489:4;31486:1;31479:15;31513:4;31510:1;31503:15;31530:143;31587:5;31618:6;31612:13;31603:22;;31634:33;31661:5;31634:33;:::i;:::-;31530:143;;;;:::o;31679:351::-;31749:6;31798:2;31786:9;31777:7;31773:23;31769:32;31766:119;;;31804:79;;:::i;:::-;31766:119;31924:1;31949:64;32005:7;31996:6;31985:9;31981:22;31949:64;:::i;:::-;31939:74;;31895:128;31679:351;;;;:::o;32036:85::-;32081:7;32110:5;32099:16;;32036:85;;;:::o;32127:158::-;32185:9;32218:61;32236:42;32245:32;32271:5;32245:32;:::i;:::-;32236:42;:::i;:::-;32218:61;:::i;:::-;32205:74;;32127:158;;;:::o;32291:147::-;32386:45;32425:5;32386:45;:::i;:::-;32381:3;32374:58;32291:147;;:::o;32444:114::-;32511:6;32545:5;32539:12;32529:22;;32444:114;;;:::o;32564:184::-;32663:11;32697:6;32692:3;32685:19;32737:4;32732:3;32728:14;32713:29;;32564:184;;;;:::o;32754:132::-;32821:4;32844:3;32836:11;;32874:4;32869:3;32865:14;32857:22;;32754:132;;;:::o;32892:108::-;32969:24;32987:5;32969:24;:::i;:::-;32964:3;32957:37;32892:108;;:::o;33006:179::-;33075:10;33096:46;33138:3;33130:6;33096:46;:::i;:::-;33174:4;33169:3;33165:14;33151:28;;33006:179;;;;:::o;33191:113::-;33261:4;33293;33288:3;33284:14;33276:22;;33191:113;;;:::o;33340:732::-;33459:3;33488:54;33536:5;33488:54;:::i;:::-;33558:86;33637:6;33632:3;33558:86;:::i;:::-;33551:93;;33668:56;33718:5;33668:56;:::i;:::-;33747:7;33778:1;33763:284;33788:6;33785:1;33782:13;33763:284;;;33864:6;33858:13;33891:63;33950:3;33935:13;33891:63;:::i;:::-;33884:70;;33977:60;34030:6;33977:60;:::i;:::-;33967:70;;33823:224;33810:1;33807;33803:9;33798:14;;33763:284;;;33767:14;34063:3;34056:10;;33464:608;;;33340:732;;;;:::o;34078:831::-;34341:4;34379:3;34368:9;34364:19;34356:27;;34393:71;34461:1;34450:9;34446:17;34437:6;34393:71;:::i;:::-;34474:80;34550:2;34539:9;34535:18;34526:6;34474:80;:::i;:::-;34601:9;34595:4;34591:20;34586:2;34575:9;34571:18;34564:48;34629:108;34732:4;34723:6;34629:108;:::i;:::-;34621:116;;34747:72;34815:2;34804:9;34800:18;34791:6;34747:72;:::i;:::-;34829:73;34897:3;34886:9;34882:19;34873:6;34829:73;:::i;:::-;34078:831;;;;;;;;:::o;34915:147::-;35016:11;35053:3;35038:18;;34915:147;;;;:::o;35068:114::-;;:::o;35188:398::-;35347:3;35368:83;35449:1;35444:3;35368:83;:::i;:::-;35361:90;;35460:93;35549:3;35460:93;:::i;:::-;35578:1;35573:3;35569:11;35562:18;;35188:398;;;:::o;35592:379::-;35776:3;35798:147;35941:3;35798:147;:::i;:::-;35791:154;;35962:3;35955:10;;35592:379;;;:::o;35977:180::-;36025:77;36022:1;36015:88;36122:4;36119:1;36112:15;36146:4;36143:1;36136:15;36163:185;36203:1;36220:20;36238:1;36220:20;:::i;:::-;36215:25;;36254:20;36272:1;36254:20;:::i;:::-;36249:25;;36293:1;36283:35;;36298:18;;:::i;:::-;36283:35;36340:1;36337;36333:9;36328:14;;36163:185;;;;:::o

Swarm Source

ipfs://61a0e5b771b15d52cc939e5e142314edc75362e07206245d7672df7bf868cc6e
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.