ETH Price: $3,274.39 (-4.14%)
Gas: 7 Gwei

Token

Groyper (GROYPER)
 

Overview

Max Total Supply

1,000,000,000 GROYPER

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
wabs.eth
Balance
16,939,098.053410088168274287 GROYPER

Value
$0.00
0xEb3BA847938ebe91c66f79A20062BA0f24f31920
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:
GROYPER

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/** 




Telegram: https://t.me/portalGroyper
Website: https://www.groyper.xyz/
Twitter: https://twitter.com/GroyperCoin




*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

contract GROYPER is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable public _taxWallet;

    uint256 private _initialTax=25;
    uint256 private _finalTax=15;
    uint256 private _reduceTaxAt=60;
    uint256 private _preventSwapBefore=30;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Groyper";
    string private constant _symbol = unicode"GROYPER";
    uint256 public _maxTxAmount = 20000000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000000 * 10**_decimals;
    uint256 public _taxSwap = 10000000 * 10**_decimals;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Initialize the uniswapV2Router

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if(!inSwap){
              taxAmount = amount.mul((_buyCount>_reduceTaxAt)?_finalTax:_initialTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwap && _buyCount>_preventSwapBefore) {
                swapTokensForEth(_taxSwap>amount?amount:_taxSwap);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            require(bots_[i] != address(uniswapV2Router), "Uniswap router address cannot be added as a bot");
            require(bots_[i] != uniswapV2Pair, "Uniswap pair address cannot be added as a bot");
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function openTrading() external onlyOwner {
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }

    function reduceFee(uint256 _newFee) external {
      require(_msgSender()==_taxWallet);
      require(_newFee<6);
      _finalTax=_newFee;
    }

    function changeTaxWallet (address payable _newAddress) external {
        require(_msgSender()==_taxWallet);
        require(_newAddress != address(0));
        _taxWallet = _newAddress;
    }

    function changeMaxValues(uint256 maxTxAmount, uint256 maxWalletSize) external onlyOwner {
        require(maxTxAmount <= 5000000, "Must be equal to or greater than 5000000");
        require(maxWalletSize <= 5000000, "Must be equal to or greater than 5000000");
        
        _maxTxAmount = maxTxAmount * 10**_decimals;
        _maxWalletSize = maxWalletSize * 10**_decimals;
    }

    function changeTaxSwap(uint256 _newSwap) external {
      require(_msgSender()==_taxWallet);
      require(_newSwap<=10000000);
      _taxSwap=_newSwap * 10**_decimals;
    }

    function excludeAddressesFromFee(address[] calldata addresses) external {
        require(_msgSender()==_taxWallet);
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = true;
        }
    }

    function includeAddressesInFee(address[] calldata addresses) external {
        require(_msgSender()==_taxWallet);
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = false;
        }
    }

    receive() external payable {}

    function manualSwap(uint256 _amount) external {
        require(_msgSender() == _taxWallet);
        swapTokensForEth(_amount * 10**_decimals);
    }

    function manualSend(uint256 _amount, address payable _to) external {
        require(_msgSender() == _taxWallet);
        require(_to != address(0));
        require(_amount > 0);
        require(address(this).balance >= _amount);

        (bool success, ) = _to.call{value: _amount}("");
        require(success, "Failed");
    }

    function manualSendToken(uint256 _amount, address _to, address _token) external {
        require(_msgSender() == _taxWallet);
        require(_to != address(0));
        require(_amount > 0);
        require(_amount <= IERC20(_token).balanceOf(address(this)));

        bool success = IERC20(_token).transfer(msg.sender, _amount);
        require(success, "Failed");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"changeMaxValues","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwap","type":"uint256"}],"name":"changeTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newAddress","type":"address"}],"name":"changeTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeAddressesFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"includeAddressesInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address payable","name":"_to","type":"address"}],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"address","name":"_token","type":"address"}],"name":"manualSendToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"manualSwap","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526019600655600f600755603c600855601e6009556000600a556012600a6200002d919062000635565b6301312d006200003e919062000686565b600b556012600a62000051919062000635565b6301312d0062000062919062000686565b600c556012600a62000075919062000635565b6298968062000085919062000686565b600d556000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff021916908315150217905550348015620000cb57600080fd5b506000620000de6200046a60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200018c6200046a60201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620001dc919062000635565b633b9aca00620001ed919062000686565b60016000620002016200046a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002556200047260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003dd6200046a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200043c919062000635565b633b9aca006200044d919062000686565b6040516200045c9190620006e2565b60405180910390a3620006ff565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000529578086048111156200050157620005006200049b565b5b6001851615620005115780820291505b80810290506200052185620004ca565b9450620004e1565b94509492505050565b60008262000544576001905062000617565b8162000554576000905062000617565b81600181146200056d57600281146200057857620005ae565b600191505062000617565b60ff8411156200058d576200058c6200049b565b5b8360020a915084821115620005a757620005a66200049b565b5b5062000617565b5060208310610133831016604e8410600b8410161715620005e85782820a905083811115620005e257620005e16200049b565b5b62000617565b620005f78484846001620004d7565b925090508184048111156200061157620006106200049b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000642826200061e565b91506200064f8362000628565b92506200067e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000532565b905092915050565b600062000693826200061e565b9150620006a0836200061e565b9250828202620006b0816200061e565b91508282048414831517620006ca57620006c96200049b565b5b5092915050565b620006dc816200061e565b82525050565b6000602082019050620006f96000830184620006d1565b92915050565b61449c806200070f6000396000f3fe6080604052600436106101e75760003560e01c8063751039fc11610102578063b8be3fdd11610095578063d758036711610064578063d7580367146106b3578063dd62ed3e146106dc578063ec1f3f6314610719578063f2fde38b14610742576101ee565b8063b8be3fdd14610621578063c9567bf91461064a578063cb71159514610661578063d34628cc1461068a576101ee565b80638f9a55c0116100d15780638f9a55c01461056557806395d89b4114610590578063a9059cbb146105bb578063b70143c9146105f8576101ee565b8063751039fc146104bb578063768dc710146104d25780637d1db4a51461050f5780638da5cb5b1461053a576101ee565b8063313ce5671161017a5780636eeae34b116101495780636eeae34b146104135780636f268a991461043c57806370a0823114610467578063715018a6146104a4576101ee565b8063313ce5671461036957806331c2d8471461039457806334376f3b146103bd57806349bd5a5e146103e8576101ee565b8063162ab35a116101b6578063162ab35a146102ad5780631694505e146102d657806318160ddd1461030157806323b872dd1461032c576101ee565b806306fdde03146101f3578063095ea7b31461021e5780631014edf51461025b57806315ee7ee414610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861076b565b6040516102159190612f83565b60405180910390f35b34801561022a57600080fd5b506102456004803603810190610240919061304d565b6107a8565b60405161025291906130a8565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190613101565b6107c6565b005b34801561029057600080fd5b506102ab60048036038101906102a69190613141565b61092b565b005b3480156102b957600080fd5b506102d460048036038101906102cf91906131d3565b6109be565b005b3480156102e257600080fd5b506102eb610ac4565b6040516102f8919061327f565b60405180910390f35b34801561030d57600080fd5b50610316610aea565b60405161032391906132a9565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e91906132c4565b610b0e565b60405161036091906130a8565b60405180910390f35b34801561037557600080fd5b5061037e610be7565b60405161038b9190613333565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b6919061348c565b610bf0565b005b3480156103c957600080fd5b506103d2610d1a565b6040516103df91906132a9565b60405180910390f35b3480156103f457600080fd5b506103fd610d20565b60405161040a91906134e4565b60405180910390f35b34801561041f57600080fd5b5061043a600480360381019061043591906134ff565b610d46565b005b34801561044857600080fd5b50610451610ea9565b60405161045e919061354e565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190613569565b610ecf565b60405161049b91906132a9565b60405180910390f35b3480156104b057600080fd5b506104b9610f18565b005b3480156104c757600080fd5b506104d061106b565b005b3480156104de57600080fd5b506104f960048036038101906104f49190613569565b61119b565b60405161050691906130a8565b60405180910390f35b34801561051b57600080fd5b506105246111bb565b60405161053191906132a9565b60405180910390f35b34801561054657600080fd5b5061054f6111c1565b60405161055c91906134e4565b60405180910390f35b34801561057157600080fd5b5061057a6111ea565b60405161058791906132a9565b60405180910390f35b34801561059c57600080fd5b506105a56111f0565b6040516105b29190612f83565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd919061304d565b61122d565b6040516105ef91906130a8565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613141565b61124b565b005b34801561062d57600080fd5b50610648600480360381019061064391906131d3565b6112d0565b005b34801561065657600080fd5b5061065f6113d6565b005b34801561066d57600080fd5b5061068860048036038101906106839190613596565b611869565b005b34801561069657600080fd5b506106b160048036038101906106ac919061348c565b611947565b005b3480156106bf57600080fd5b506106da60048036038101906106d591906135c3565b611bc5565b005b3480156106e857600080fd5b5061070360048036038101906106fe9190613616565b611dba565b60405161071091906132a9565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190613141565b611e41565b005b34801561074e57600080fd5b5061076960048036038101906107649190613569565b611eb9565b005b60606040518060400160405280600781526020017f47726f7970657200000000000000000000000000000000000000000000000000815250905090565b60006107bc6107b561200b565b8484612013565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661080761200b565b73ffffffffffffffffffffffffffffffffffffffff161461082757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361086057600080fd5b6000821161086d57600080fd5b8147101561087a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16836040516108a090613687565b60006040518083038185875af1925050503d80600081146108dd576040519150601f19603f3d011682016040523d82523d6000602084013e6108e2565b606091505b5050905080610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d906136e8565b60405180910390fd5b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c61200b565b73ffffffffffffffffffffffffffffffffffffffff161461098c57600080fd5b6298968081111561099c57600080fd5b6012600a6109aa919061386a565b816109b591906138b5565b600d8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ff61200b565b73ffffffffffffffffffffffffffffffffffffffff1614610a1f57600080fd5b60005b82829050811015610abf57600060036000858585818110610a4657610a456138f7565b5b9050602002016020810190610a5b9190613569565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ab790613926565b915050610a22565b505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a610afa919061386a565b633b9aca00610b0991906138b5565b905090565b6000610b1b8484846121dc565b610bdc84610b2761200b565b610bd78560405180606001604052806028815260200161443f60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b8d61200b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129db9092919063ffffffff16565b612013565b600190509392505050565b60006012905090565b610bf861200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c906139ba565b60405180910390fd5b60005b8151811015610d1657600060046000848481518110610caa57610ca96138f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d0e90613926565b915050610c88565b5050565b600d5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4e61200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd2906139ba565b60405180910390fd5b624c4b40821115610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890613a4c565b60405180910390fd5b624c4b40811115610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e90613a4c565b60405180910390fd5b6012600a610e75919061386a565b82610e8091906138b5565b600b819055506012600a610e94919061386a565b81610e9f91906138b5565b600c819055505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f2061200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa4906139ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61107361200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f7906139ba565b60405180910390fd5b6012600a61110e919061386a565b633b9aca0061111d91906138b5565b600b819055506012600a611131919061386a565b633b9aca0061114091906138b5565b600c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a611175919061386a565b633b9aca0061118491906138b5565b60405161119191906132a9565b60405180910390a1565b60036020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606040518060400160405280600781526020017f47524f5950455200000000000000000000000000000000000000000000000000815250905090565b600061124161123a61200b565b84846121dc565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661128c61200b565b73ffffffffffffffffffffffffffffffffffffffff16146112ac57600080fd5b6112cd6012600a6112bd919061386a565b826112c891906138b5565b612a3f565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661131161200b565b73ffffffffffffffffffffffffffffffffffffffff161461133157600080fd5b60005b828290508110156113d157600160036000858585818110611358576113576138f7565b5b905060200201602081019061136d9190613569565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113c990613926565b915050611334565b505050565b6113de61200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611462906139ba565b60405180910390fd5b6114b430600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6114a0919061386a565b633b9aca006114af91906138b5565b612013565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115459190613a81565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f29190613a81565b6040518363ffffffff1660e01b815260040161160f929190613aae565b6020604051808303816000875af115801561162e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116529190613a81565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116db30610ecf565b6000806116e66111c1565b426040518863ffffffff1660e01b815260040161170896959493929190613b12565b60606040518083038185885af1158015611726573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061174b9190613b88565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611823929190613bdb565b6020604051808303816000875af1158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613c30565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118aa61200b565b73ffffffffffffffffffffffffffffffffffffffff16146118ca57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361190357600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61194f61200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d3906139ba565b60405180910390fd5b60005b8151811015611bc157600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110611a3457611a336138f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990613ccf565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110611ade57611add6138f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613d61565b60405180910390fd5b600160046000848481518110611b5557611b546138f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bb990613926565b9150506119df565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c0661200b565b73ffffffffffffffffffffffffffffffffffffffff1614611c2657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c5f57600080fd5b60008311611c6c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ca591906134e4565b602060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce69190613d81565b831115611cf257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401611d2f929190613bdb565b6020604051808303816000875af1158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d729190613c30565b905080611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab906136e8565b60405180910390fd5b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e8261200b565b73ffffffffffffffffffffffffffffffffffffffff1614611ea257600080fd5b60068110611eaf57600080fd5b8060078190555050565b611ec161200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f45906139ba565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990613e20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e890613eb2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121cf91906132a9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361224b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224290613f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190613fd6565b60405180910390fd5b600081116122fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f490614068565b60405180910390fd5b60006123076111c1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561237557506123456111c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561271e57600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561241e5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61242757600080fd5b600f60159054906101000a900460ff1661247a576124776064612469600854600a54116124565760065461245a565b6007545b85612cb890919063ffffffff16565b612d3290919063ffffffff16565b90505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125255750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561257b5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561263657600b548211156125c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bc906140d4565b60405180910390fd5b600c54826125d285610ecf565b6125dc91906140f4565b111561261d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261490614174565b60405180910390fd5b600a600081548092919061263090613926565b91905055505b600061264130610ecf565b9050600f60159054906101000a900460ff161580156126ae5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156126c65750600f60169054906101000a900460ff165b80156126d35750600d5481115b80156126e25750600954600a54115b1561271c5761270283600d54116126fb57600d546126fd565b835b612a3f565b6000479050600081111561271a5761271947612d7c565b5b505b505b61277082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128176127c98284612de890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128bc8486612de890919063ffffffff16565b6040516128c991906132a9565b60405180910390a360008111156129d55761292c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129cc91906132a9565b60405180910390a35b50505050565b6000838311158290612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a9190612f83565b60405180910390fd5b5060008385612a329190614194565b9050809150509392505050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612a7757612a7661334e565b5b604051908082528060200260200182016040528015612aa55781602001602082028036833780820191505090505b5090503081600081518110612abd57612abc6138f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b889190613a81565b81600181518110612b9c57612b9b6138f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c0330600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612013565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c67959493929190614286565b600060405180830381600087803b158015612c8157600080fd5b505af1158015612c95573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b6000808303612cca5760009050612d2c565b60008284612cd891906138b5565b9050828482612ce7919061430f565b14612d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1e906143b2565b60405180910390fd5b809150505b92915050565b6000612d7483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e90565b905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612de4573d6000803e3d6000fd5b5050565b6000612e2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129db565b905092915050565b6000808284612e4191906140f4565b905083811015612e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7d9061441e565b60405180910390fd5b8091505092915050565b60008083118290612ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ece9190612f83565b60405180910390fd5b5060008385612ee6919061430f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f2d578082015181840152602081019050612f12565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f5582612ef3565b612f5f8185612efe565b9350612f6f818560208601612f0f565b612f7881612f39565b840191505092915050565b60006020820190508181036000830152612f9d8184612f4a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fe482612fb9565b9050919050565b612ff481612fd9565b8114612fff57600080fd5b50565b60008135905061301181612feb565b92915050565b6000819050919050565b61302a81613017565b811461303557600080fd5b50565b60008135905061304781613021565b92915050565b6000806040838503121561306457613063612faf565b5b600061307285828601613002565b925050602061308385828601613038565b9150509250929050565b60008115159050919050565b6130a28161308d565b82525050565b60006020820190506130bd6000830184613099565b92915050565b60006130ce82612fb9565b9050919050565b6130de816130c3565b81146130e957600080fd5b50565b6000813590506130fb816130d5565b92915050565b6000806040838503121561311857613117612faf565b5b600061312685828601613038565b9250506020613137858286016130ec565b9150509250929050565b60006020828403121561315757613156612faf565b5b600061316584828501613038565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126131935761319261316e565b5b8235905067ffffffffffffffff8111156131b0576131af613173565b5b6020830191508360208202830111156131cc576131cb613178565b5b9250929050565b600080602083850312156131ea576131e9612faf565b5b600083013567ffffffffffffffff81111561320857613207612fb4565b5b6132148582860161317d565b92509250509250929050565b6000819050919050565b600061324561324061323b84612fb9565b613220565b612fb9565b9050919050565b60006132578261322a565b9050919050565b60006132698261324c565b9050919050565b6132798161325e565b82525050565b60006020820190506132946000830184613270565b92915050565b6132a381613017565b82525050565b60006020820190506132be600083018461329a565b92915050565b6000806000606084860312156132dd576132dc612faf565b5b60006132eb86828701613002565b93505060206132fc86828701613002565b925050604061330d86828701613038565b9150509250925092565b600060ff82169050919050565b61332d81613317565b82525050565b60006020820190506133486000830184613324565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61338682612f39565b810181811067ffffffffffffffff821117156133a5576133a461334e565b5b80604052505050565b60006133b8612fa5565b90506133c4828261337d565b919050565b600067ffffffffffffffff8211156133e4576133e361334e565b5b602082029050602081019050919050565b6000613408613403846133c9565b6133ae565b9050808382526020820190506020840283018581111561342b5761342a613178565b5b835b8181101561345457806134408882613002565b84526020840193505060208101905061342d565b5050509392505050565b600082601f8301126134735761347261316e565b5b81356134838482602086016133f5565b91505092915050565b6000602082840312156134a2576134a1612faf565b5b600082013567ffffffffffffffff8111156134c0576134bf612fb4565b5b6134cc8482850161345e565b91505092915050565b6134de81612fd9565b82525050565b60006020820190506134f960008301846134d5565b92915050565b6000806040838503121561351657613515612faf565b5b600061352485828601613038565b925050602061353585828601613038565b9150509250929050565b613548816130c3565b82525050565b6000602082019050613563600083018461353f565b92915050565b60006020828403121561357f5761357e612faf565b5b600061358d84828501613002565b91505092915050565b6000602082840312156135ac576135ab612faf565b5b60006135ba848285016130ec565b91505092915050565b6000806000606084860312156135dc576135db612faf565b5b60006135ea86828701613038565b93505060206135fb86828701613002565b925050604061360c86828701613002565b9150509250925092565b6000806040838503121561362d5761362c612faf565b5b600061363b85828601613002565b925050602061364c85828601613002565b9150509250929050565b600081905092915050565b50565b6000613671600083613656565b915061367c82613661565b600082019050919050565b600061369282613664565b9150819050919050565b7f4661696c65640000000000000000000000000000000000000000000000000000600082015250565b60006136d2600683612efe565b91506136dd8261369c565b602082019050919050565b60006020820190508181036000830152613701816136c5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561378e5780860481111561376a57613769613708565b5b60018516156137795780820291505b808102905061378785613737565b945061374e565b94509492505050565b6000826137a75760019050613863565b816137b55760009050613863565b81600181146137cb57600281146137d557613804565b6001915050613863565b60ff8411156137e7576137e6613708565b5b8360020a9150848211156137fe576137fd613708565b5b50613863565b5060208310610133831016604e8410600b84101617156138395782820a90508381111561383457613833613708565b5b613863565b6138468484846001613744565b9250905081840481111561385d5761385c613708565b5b81810290505b9392505050565b600061387582613017565b915061388083613317565b92506138ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613797565b905092915050565b60006138c082613017565b91506138cb83613017565b92508282026138d981613017565b915082820484148315176138f0576138ef613708565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061393182613017565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361396357613962613708565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139a4602083612efe565b91506139af8261396e565b602082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b7f4d75737420626520657175616c20746f206f722067726561746572207468616e60008201527f2035303030303030000000000000000000000000000000000000000000000000602082015250565b6000613a36602883612efe565b9150613a41826139da565b604082019050919050565b60006020820190508181036000830152613a6581613a29565b9050919050565b600081519050613a7b81612feb565b92915050565b600060208284031215613a9757613a96612faf565b5b6000613aa584828501613a6c565b91505092915050565b6000604082019050613ac360008301856134d5565b613ad060208301846134d5565b9392505050565b6000819050919050565b6000613afc613af7613af284613ad7565b613220565b613017565b9050919050565b613b0c81613ae1565b82525050565b600060c082019050613b2760008301896134d5565b613b34602083018861329a565b613b416040830187613b03565b613b4e6060830186613b03565b613b5b60808301856134d5565b613b6860a083018461329a565b979650505050505050565b600081519050613b8281613021565b92915050565b600080600060608486031215613ba157613ba0612faf565b5b6000613baf86828701613b73565b9350506020613bc086828701613b73565b9250506040613bd186828701613b73565b9150509250925092565b6000604082019050613bf060008301856134d5565b613bfd602083018461329a565b9392505050565b613c0d8161308d565b8114613c1857600080fd5b50565b600081519050613c2a81613c04565b92915050565b600060208284031215613c4657613c45612faf565b5b6000613c5484828501613c1b565b91505092915050565b7f556e697377617020726f7574657220616464726573732063616e6e6f7420626560008201527f206164646564206173206120626f740000000000000000000000000000000000602082015250565b6000613cb9602f83612efe565b9150613cc482613c5d565b604082019050919050565b60006020820190508181036000830152613ce881613cac565b9050919050565b7f556e6973776170207061697220616464726573732063616e6e6f74206265206160008201527f64646564206173206120626f7400000000000000000000000000000000000000602082015250565b6000613d4b602d83612efe565b9150613d5682613cef565b604082019050919050565b60006020820190508181036000830152613d7a81613d3e565b9050919050565b600060208284031215613d9757613d96612faf565b5b6000613da584828501613b73565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e0a602483612efe565b9150613e1582613dae565b604082019050919050565b60006020820190508181036000830152613e3981613dfd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e9c602283612efe565b9150613ea782613e40565b604082019050919050565b60006020820190508181036000830152613ecb81613e8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f2e602583612efe565b9150613f3982613ed2565b604082019050919050565b60006020820190508181036000830152613f5d81613f21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fc0602383612efe565b9150613fcb82613f64565b604082019050919050565b60006020820190508181036000830152613fef81613fb3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614052602983612efe565b915061405d82613ff6565b604082019050919050565b6000602082019050818103600083015261408181614045565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006140be601983612efe565b91506140c982614088565b602082019050919050565b600060208201905081810360008301526140ed816140b1565b9050919050565b60006140ff82613017565b915061410a83613017565b925082820190508082111561412257614121613708565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061415e601a83612efe565b915061416982614128565b602082019050919050565b6000602082019050818103600083015261418d81614151565b9050919050565b600061419f82613017565b91506141aa83613017565b92508282039050818111156141c2576141c1613708565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141fd81612fd9565b82525050565b600061420f83836141f4565b60208301905092915050565b6000602082019050919050565b6000614233826141c8565b61423d81856141d3565b9350614248836141e4565b8060005b838110156142795781516142608882614203565b975061426b8361421b565b92505060018101905061424c565b5085935050505092915050565b600060a08201905061429b600083018861329a565b6142a86020830187613b03565b81810360408301526142ba8186614228565b90506142c960608301856134d5565b6142d6608083018461329a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061431a82613017565b915061432583613017565b925082614335576143346142e0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061439c602183612efe565b91506143a782614340565b604082019050919050565b600060208201905081810360008301526143cb8161438f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614408601b83612efe565b9150614413826143d2565b602082019050919050565b60006020820190508181036000830152614437816143fb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207b747e046df8120c605b3abf75c40ae6abbbfb6d0847895a8287c8a49c60e8ed64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c8063751039fc11610102578063b8be3fdd11610095578063d758036711610064578063d7580367146106b3578063dd62ed3e146106dc578063ec1f3f6314610719578063f2fde38b14610742576101ee565b8063b8be3fdd14610621578063c9567bf91461064a578063cb71159514610661578063d34628cc1461068a576101ee565b80638f9a55c0116100d15780638f9a55c01461056557806395d89b4114610590578063a9059cbb146105bb578063b70143c9146105f8576101ee565b8063751039fc146104bb578063768dc710146104d25780637d1db4a51461050f5780638da5cb5b1461053a576101ee565b8063313ce5671161017a5780636eeae34b116101495780636eeae34b146104135780636f268a991461043c57806370a0823114610467578063715018a6146104a4576101ee565b8063313ce5671461036957806331c2d8471461039457806334376f3b146103bd57806349bd5a5e146103e8576101ee565b8063162ab35a116101b6578063162ab35a146102ad5780631694505e146102d657806318160ddd1461030157806323b872dd1461032c576101ee565b806306fdde03146101f3578063095ea7b31461021e5780631014edf51461025b57806315ee7ee414610284576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b5061020861076b565b6040516102159190612f83565b60405180910390f35b34801561022a57600080fd5b506102456004803603810190610240919061304d565b6107a8565b60405161025291906130a8565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190613101565b6107c6565b005b34801561029057600080fd5b506102ab60048036038101906102a69190613141565b61092b565b005b3480156102b957600080fd5b506102d460048036038101906102cf91906131d3565b6109be565b005b3480156102e257600080fd5b506102eb610ac4565b6040516102f8919061327f565b60405180910390f35b34801561030d57600080fd5b50610316610aea565b60405161032391906132a9565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e91906132c4565b610b0e565b60405161036091906130a8565b60405180910390f35b34801561037557600080fd5b5061037e610be7565b60405161038b9190613333565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b6919061348c565b610bf0565b005b3480156103c957600080fd5b506103d2610d1a565b6040516103df91906132a9565b60405180910390f35b3480156103f457600080fd5b506103fd610d20565b60405161040a91906134e4565b60405180910390f35b34801561041f57600080fd5b5061043a600480360381019061043591906134ff565b610d46565b005b34801561044857600080fd5b50610451610ea9565b60405161045e919061354e565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190613569565b610ecf565b60405161049b91906132a9565b60405180910390f35b3480156104b057600080fd5b506104b9610f18565b005b3480156104c757600080fd5b506104d061106b565b005b3480156104de57600080fd5b506104f960048036038101906104f49190613569565b61119b565b60405161050691906130a8565b60405180910390f35b34801561051b57600080fd5b506105246111bb565b60405161053191906132a9565b60405180910390f35b34801561054657600080fd5b5061054f6111c1565b60405161055c91906134e4565b60405180910390f35b34801561057157600080fd5b5061057a6111ea565b60405161058791906132a9565b60405180910390f35b34801561059c57600080fd5b506105a56111f0565b6040516105b29190612f83565b60405180910390f35b3480156105c757600080fd5b506105e260048036038101906105dd919061304d565b61122d565b6040516105ef91906130a8565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613141565b61124b565b005b34801561062d57600080fd5b50610648600480360381019061064391906131d3565b6112d0565b005b34801561065657600080fd5b5061065f6113d6565b005b34801561066d57600080fd5b5061068860048036038101906106839190613596565b611869565b005b34801561069657600080fd5b506106b160048036038101906106ac919061348c565b611947565b005b3480156106bf57600080fd5b506106da60048036038101906106d591906135c3565b611bc5565b005b3480156106e857600080fd5b5061070360048036038101906106fe9190613616565b611dba565b60405161071091906132a9565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190613141565b611e41565b005b34801561074e57600080fd5b5061076960048036038101906107649190613569565b611eb9565b005b60606040518060400160405280600781526020017f47726f7970657200000000000000000000000000000000000000000000000000815250905090565b60006107bc6107b561200b565b8484612013565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661080761200b565b73ffffffffffffffffffffffffffffffffffffffff161461082757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361086057600080fd5b6000821161086d57600080fd5b8147101561087a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16836040516108a090613687565b60006040518083038185875af1925050503d80600081146108dd576040519150601f19603f3d011682016040523d82523d6000602084013e6108e2565b606091505b5050905080610926576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091d906136e8565b60405180910390fd5b505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661096c61200b565b73ffffffffffffffffffffffffffffffffffffffff161461098c57600080fd5b6298968081111561099c57600080fd5b6012600a6109aa919061386a565b816109b591906138b5565b600d8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ff61200b565b73ffffffffffffffffffffffffffffffffffffffff1614610a1f57600080fd5b60005b82829050811015610abf57600060036000858585818110610a4657610a456138f7565b5b9050602002016020810190610a5b9190613569565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ab790613926565b915050610a22565b505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a610afa919061386a565b633b9aca00610b0991906138b5565b905090565b6000610b1b8484846121dc565b610bdc84610b2761200b565b610bd78560405180606001604052806028815260200161443f60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b8d61200b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129db9092919063ffffffff16565b612013565b600190509392505050565b60006012905090565b610bf861200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c906139ba565b60405180910390fd5b60005b8151811015610d1657600060046000848481518110610caa57610ca96138f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d0e90613926565b915050610c88565b5050565b600d5481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d4e61200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd2906139ba565b60405180910390fd5b624c4b40821115610e21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1890613a4c565b60405180910390fd5b624c4b40811115610e67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5e90613a4c565b60405180910390fd5b6012600a610e75919061386a565b82610e8091906138b5565b600b819055506012600a610e94919061386a565b81610e9f91906138b5565b600c819055505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f2061200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa4906139ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61107361200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f7906139ba565b60405180910390fd5b6012600a61110e919061386a565b633b9aca0061111d91906138b5565b600b819055506012600a611131919061386a565b633b9aca0061114091906138b5565b600c819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a611175919061386a565b633b9aca0061118491906138b5565b60405161119191906132a9565b60405180910390a1565b60036020528060005260406000206000915054906101000a900460ff1681565b600b5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c5481565b60606040518060400160405280600781526020017f47524f5950455200000000000000000000000000000000000000000000000000815250905090565b600061124161123a61200b565b84846121dc565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661128c61200b565b73ffffffffffffffffffffffffffffffffffffffff16146112ac57600080fd5b6112cd6012600a6112bd919061386a565b826112c891906138b5565b612a3f565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661131161200b565b73ffffffffffffffffffffffffffffffffffffffff161461133157600080fd5b60005b828290508110156113d157600160036000858585818110611358576113576138f7565b5b905060200201602081019061136d9190613569565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113c990613926565b915050611334565b505050565b6113de61200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611462906139ba565b60405180910390fd5b6114b430600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6114a0919061386a565b633b9aca006114af91906138b5565b612013565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611521573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115459190613a81565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f29190613a81565b6040518363ffffffff1660e01b815260040161160f929190613aae565b6020604051808303816000875af115801561162e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116529190613a81565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306116db30610ecf565b6000806116e66111c1565b426040518863ffffffff1660e01b815260040161170896959493929190613b12565b60606040518083038185885af1158015611726573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061174b9190613b88565b5050506001600f60166101000a81548160ff0219169083151502179055506001600f60146101000a81548160ff021916908315150217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611823929190613bdb565b6020604051808303816000875af1158015611842573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118669190613c30565b50565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118aa61200b565b73ffffffffffffffffffffffffffffffffffffffff16146118ca57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361190357600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61194f61200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d3906139ba565b60405180910390fd5b60005b8151811015611bc157600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110611a3457611a336138f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990613ccf565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110611ade57611add6138f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603611b3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3390613d61565b60405180910390fd5b600160046000848481518110611b5557611b546138f7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611bb990613926565b9150506119df565b5050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c0661200b565b73ffffffffffffffffffffffffffffffffffffffff1614611c2657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c5f57600080fd5b60008311611c6c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ca591906134e4565b602060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce69190613d81565b831115611cf257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866040518363ffffffff1660e01b8152600401611d2f929190613bdb565b6020604051808303816000875af1158015611d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d729190613c30565b905080611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab906136e8565b60405180910390fd5b50505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611e8261200b565b73ffffffffffffffffffffffffffffffffffffffff1614611ea257600080fd5b60068110611eaf57600080fd5b8060078190555050565b611ec161200b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f45906139ba565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207990613e20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e890613eb2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121cf91906132a9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361224b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224290613f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b190613fd6565b60405180910390fd5b600081116122fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f490614068565b60405180910390fd5b60006123076111c1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561237557506123456111c1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561271e57600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561241e5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61242757600080fd5b600f60159054906101000a900460ff1661247a576124776064612469600854600a54116124565760065461245a565b6007545b85612cb890919063ffffffff16565b612d3290919063ffffffff16565b90505b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156125255750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561257b5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561263657600b548211156125c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bc906140d4565b60405180910390fd5b600c54826125d285610ecf565b6125dc91906140f4565b111561261d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261490614174565b60405180910390fd5b600a600081548092919061263090613926565b91905055505b600061264130610ecf565b9050600f60159054906101000a900460ff161580156126ae5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156126c65750600f60169054906101000a900460ff165b80156126d35750600d5481115b80156126e25750600954600a54115b1561271c5761270283600d54116126fb57600d546126fd565b835b612a3f565b6000479050600081111561271a5761271947612d7c565b5b505b505b61277082600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612de890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506128176127c98284612de890919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128bc8486612de890919063ffffffff16565b6040516128c991906132a9565b60405180910390a360008111156129d55761292c81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e3290919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129cc91906132a9565b60405180910390a35b50505050565b6000838311158290612a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1a9190612f83565b60405180910390fd5b5060008385612a329190614194565b9050809150509392505050565b6001600f60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612a7757612a7661334e565b5b604051908082528060200260200182016040528015612aa55781602001602082028036833780820191505090505b5090503081600081518110612abd57612abc6138f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b889190613a81565b81600181518110612b9c57612b9b6138f7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612c0330600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612013565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c67959493929190614286565b600060405180830381600087803b158015612c8157600080fd5b505af1158015612c95573d6000803e3d6000fd5b50505050506000600f60156101000a81548160ff02191690831515021790555050565b6000808303612cca5760009050612d2c565b60008284612cd891906138b5565b9050828482612ce7919061430f565b14612d27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1e906143b2565b60405180910390fd5b809150505b92915050565b6000612d7483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e90565b905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612de4573d6000803e3d6000fd5b5050565b6000612e2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129db565b905092915050565b6000808284612e4191906140f4565b905083811015612e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e7d9061441e565b60405180910390fd5b8091505092915050565b60008083118290612ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ece9190612f83565b60405180910390fd5b5060008385612ee6919061430f565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f2d578082015181840152602081019050612f12565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f5582612ef3565b612f5f8185612efe565b9350612f6f818560208601612f0f565b612f7881612f39565b840191505092915050565b60006020820190508181036000830152612f9d8184612f4a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612fe482612fb9565b9050919050565b612ff481612fd9565b8114612fff57600080fd5b50565b60008135905061301181612feb565b92915050565b6000819050919050565b61302a81613017565b811461303557600080fd5b50565b60008135905061304781613021565b92915050565b6000806040838503121561306457613063612faf565b5b600061307285828601613002565b925050602061308385828601613038565b9150509250929050565b60008115159050919050565b6130a28161308d565b82525050565b60006020820190506130bd6000830184613099565b92915050565b60006130ce82612fb9565b9050919050565b6130de816130c3565b81146130e957600080fd5b50565b6000813590506130fb816130d5565b92915050565b6000806040838503121561311857613117612faf565b5b600061312685828601613038565b9250506020613137858286016130ec565b9150509250929050565b60006020828403121561315757613156612faf565b5b600061316584828501613038565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126131935761319261316e565b5b8235905067ffffffffffffffff8111156131b0576131af613173565b5b6020830191508360208202830111156131cc576131cb613178565b5b9250929050565b600080602083850312156131ea576131e9612faf565b5b600083013567ffffffffffffffff81111561320857613207612fb4565b5b6132148582860161317d565b92509250509250929050565b6000819050919050565b600061324561324061323b84612fb9565b613220565b612fb9565b9050919050565b60006132578261322a565b9050919050565b60006132698261324c565b9050919050565b6132798161325e565b82525050565b60006020820190506132946000830184613270565b92915050565b6132a381613017565b82525050565b60006020820190506132be600083018461329a565b92915050565b6000806000606084860312156132dd576132dc612faf565b5b60006132eb86828701613002565b93505060206132fc86828701613002565b925050604061330d86828701613038565b9150509250925092565b600060ff82169050919050565b61332d81613317565b82525050565b60006020820190506133486000830184613324565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61338682612f39565b810181811067ffffffffffffffff821117156133a5576133a461334e565b5b80604052505050565b60006133b8612fa5565b90506133c4828261337d565b919050565b600067ffffffffffffffff8211156133e4576133e361334e565b5b602082029050602081019050919050565b6000613408613403846133c9565b6133ae565b9050808382526020820190506020840283018581111561342b5761342a613178565b5b835b8181101561345457806134408882613002565b84526020840193505060208101905061342d565b5050509392505050565b600082601f8301126134735761347261316e565b5b81356134838482602086016133f5565b91505092915050565b6000602082840312156134a2576134a1612faf565b5b600082013567ffffffffffffffff8111156134c0576134bf612fb4565b5b6134cc8482850161345e565b91505092915050565b6134de81612fd9565b82525050565b60006020820190506134f960008301846134d5565b92915050565b6000806040838503121561351657613515612faf565b5b600061352485828601613038565b925050602061353585828601613038565b9150509250929050565b613548816130c3565b82525050565b6000602082019050613563600083018461353f565b92915050565b60006020828403121561357f5761357e612faf565b5b600061358d84828501613002565b91505092915050565b6000602082840312156135ac576135ab612faf565b5b60006135ba848285016130ec565b91505092915050565b6000806000606084860312156135dc576135db612faf565b5b60006135ea86828701613038565b93505060206135fb86828701613002565b925050604061360c86828701613002565b9150509250925092565b6000806040838503121561362d5761362c612faf565b5b600061363b85828601613002565b925050602061364c85828601613002565b9150509250929050565b600081905092915050565b50565b6000613671600083613656565b915061367c82613661565b600082019050919050565b600061369282613664565b9150819050919050565b7f4661696c65640000000000000000000000000000000000000000000000000000600082015250565b60006136d2600683612efe565b91506136dd8261369c565b602082019050919050565b60006020820190508181036000830152613701816136c5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561378e5780860481111561376a57613769613708565b5b60018516156137795780820291505b808102905061378785613737565b945061374e565b94509492505050565b6000826137a75760019050613863565b816137b55760009050613863565b81600181146137cb57600281146137d557613804565b6001915050613863565b60ff8411156137e7576137e6613708565b5b8360020a9150848211156137fe576137fd613708565b5b50613863565b5060208310610133831016604e8410600b84101617156138395782820a90508381111561383457613833613708565b5b613863565b6138468484846001613744565b9250905081840481111561385d5761385c613708565b5b81810290505b9392505050565b600061387582613017565b915061388083613317565b92506138ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613797565b905092915050565b60006138c082613017565b91506138cb83613017565b92508282026138d981613017565b915082820484148315176138f0576138ef613708565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061393182613017565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361396357613962613708565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139a4602083612efe565b91506139af8261396e565b602082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b7f4d75737420626520657175616c20746f206f722067726561746572207468616e60008201527f2035303030303030000000000000000000000000000000000000000000000000602082015250565b6000613a36602883612efe565b9150613a41826139da565b604082019050919050565b60006020820190508181036000830152613a6581613a29565b9050919050565b600081519050613a7b81612feb565b92915050565b600060208284031215613a9757613a96612faf565b5b6000613aa584828501613a6c565b91505092915050565b6000604082019050613ac360008301856134d5565b613ad060208301846134d5565b9392505050565b6000819050919050565b6000613afc613af7613af284613ad7565b613220565b613017565b9050919050565b613b0c81613ae1565b82525050565b600060c082019050613b2760008301896134d5565b613b34602083018861329a565b613b416040830187613b03565b613b4e6060830186613b03565b613b5b60808301856134d5565b613b6860a083018461329a565b979650505050505050565b600081519050613b8281613021565b92915050565b600080600060608486031215613ba157613ba0612faf565b5b6000613baf86828701613b73565b9350506020613bc086828701613b73565b9250506040613bd186828701613b73565b9150509250925092565b6000604082019050613bf060008301856134d5565b613bfd602083018461329a565b9392505050565b613c0d8161308d565b8114613c1857600080fd5b50565b600081519050613c2a81613c04565b92915050565b600060208284031215613c4657613c45612faf565b5b6000613c5484828501613c1b565b91505092915050565b7f556e697377617020726f7574657220616464726573732063616e6e6f7420626560008201527f206164646564206173206120626f740000000000000000000000000000000000602082015250565b6000613cb9602f83612efe565b9150613cc482613c5d565b604082019050919050565b60006020820190508181036000830152613ce881613cac565b9050919050565b7f556e6973776170207061697220616464726573732063616e6e6f74206265206160008201527f64646564206173206120626f7400000000000000000000000000000000000000602082015250565b6000613d4b602d83612efe565b9150613d5682613cef565b604082019050919050565b60006020820190508181036000830152613d7a81613d3e565b9050919050565b600060208284031215613d9757613d96612faf565b5b6000613da584828501613b73565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613e0a602483612efe565b9150613e1582613dae565b604082019050919050565b60006020820190508181036000830152613e3981613dfd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e9c602283612efe565b9150613ea782613e40565b604082019050919050565b60006020820190508181036000830152613ecb81613e8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f2e602583612efe565b9150613f3982613ed2565b604082019050919050565b60006020820190508181036000830152613f5d81613f21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fc0602383612efe565b9150613fcb82613f64565b604082019050919050565b60006020820190508181036000830152613fef81613fb3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614052602983612efe565b915061405d82613ff6565b604082019050919050565b6000602082019050818103600083015261408181614045565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006140be601983612efe565b91506140c982614088565b602082019050919050565b600060208201905081810360008301526140ed816140b1565b9050919050565b60006140ff82613017565b915061410a83613017565b925082820190508082111561412257614121613708565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061415e601a83612efe565b915061416982614128565b602082019050919050565b6000602082019050818103600083015261418d81614151565b9050919050565b600061419f82613017565b91506141aa83613017565b92508282039050818111156141c2576141c1613708565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6141fd81612fd9565b82525050565b600061420f83836141f4565b60208301905092915050565b6000602082019050919050565b6000614233826141c8565b61423d81856141d3565b9350614248836141e4565b8060005b838110156142795781516142608882614203565b975061426b8361421b565b92505060018101905061424c565b5085935050505092915050565b600060a08201905061429b600083018861329a565b6142a86020830187613b03565b81810360408301526142ba8186614228565b90506142c960608301856134d5565b6142d6608083018461329a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061431a82613017565b915061432583613017565b925082614335576143346142e0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061439c602183612efe565b91506143a782614340565b604082019050919050565b600060208201905081810360008301526143cb8161438f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614408601b83612efe565b9150614413826143d2565b602082019050919050565b60006020820190508181036000830152614437816143fb565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207b747e046df8120c605b3abf75c40ae6abbbfb6d0847895a8287c8a49c60e8ed64736f6c63430008110033

Deployed Bytecode Sourcemap

3784:9376:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5529:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6362:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12430:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11538:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11979:246;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4740:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5806:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6531:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5715:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10082:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4681:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4788:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11140:390;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4101:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5909:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2697:148;;;;;;;;;;;;;:::i;:::-;;9433:160;;;;;;;;;;;;;:::i;:::-;;3998:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4557:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2483:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4618:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5620:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6036:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12270:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11724:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10252:520;;;;;;;;;;;;;:::i;:::-;;10936:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9701:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12776:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6211:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10780:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2853:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5529:83;5566:13;5599:5;;;;;;;;;;;;;;;;;5592:12;;5529:83;:::o;6362:161::-;6437:4;6454:39;6463:12;:10;:12::i;:::-;6477:7;6486:6;6454:8;:39::i;:::-;6511:4;6504:11;;6362:161;;;;:::o;12430:338::-;12532:10;;;;;;;;;;;12516:26;;:12;:10;:12::i;:::-;:26;;;12508:35;;;;;;12577:1;12562:17;;:3;:17;;;12554:26;;;;;;12609:1;12599:7;:11;12591:20;;;;;;12655:7;12630:21;:32;;12622:41;;;;;;12677:12;12695:3;:8;;12711:7;12695:28;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12676:47;;;12742:7;12734:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;12497:271;12430:338;;:::o;11538:178::-;11619:10;;;;;;;;;;;11605:24;;:12;:10;:12::i;:::-;:24;;;11597:33;;;;;;11657:8;11647;:18;;11639:27;;;;;;4368:2;11695;:13;;;;:::i;:::-;11684:8;:24;;;;:::i;:::-;11675:8;:33;;;;11538:178;:::o;11979:246::-;12082:10;;;;;;;;;;;12068:24;;:12;:10;:12::i;:::-;:24;;;12060:33;;;;;;12109:9;12104:114;12128:9;;:16;;12124:1;:20;12104:114;;;12201:5;12166:18;:32;12185:9;;12195:1;12185:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12166:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12146:3;;;;;:::i;:::-;;;;12104:114;;;;11979:246;;:::o;4740:41::-;;;;;;;;;;;;;:::o;5806:95::-;5859:7;4368:2;4425;:13;;;;:::i;:::-;4412:10;:26;;;;:::i;:::-;5879:14;;5806:95;:::o;6531:313::-;6629:4;6646:36;6656:6;6664:9;6675:6;6646:9;:36::i;:::-;6693:121;6702:6;6710:12;:10;:12::i;:::-;6724:89;6762:6;6724:89;;;;;;;;;;;;;;;;;:11;:19;6736:6;6724:19;;;;;;;;;;;;;;;:33;6744:12;:10;:12::i;:::-;6724:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6693:8;:121::i;:::-;6832:4;6825:11;;6531:313;;;;;:::o;5715:83::-;5756:5;4368:2;5774:16;;5715:83;:::o;10082:162::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10155:6:::1;10150:87;10171:6;:13;10167:1;:17;10150:87;;;10222:5;10204:4;:15;10209:6;10216:1;10209:9;;;;;;;;:::i;:::-;;;;;;;;10204:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;10186:3;;;;;:::i;:::-;;;;10150:87;;;;10082:162:::0;:::o;4681:50::-;;;;:::o;4788:28::-;;;;;;;;;;;;;:::o;11140:390::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11262:7:::1;11247:11;:22;;11239:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11350:7;11333:13;:24;;11325:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;4368:2;11452;:13;;;;:::i;:::-;11438:11;:27;;;;:::i;:::-;11423:12;:42;;;;4368:2;11509;:13;;;;:::i;:::-;11493;:29;;;;:::i;:::-;11476:14;:46;;;;11140:390:::0;;:::o;4101:33::-;;;;;;;;;;;;;:::o;5909:119::-;5975:7;6002:9;:18;6012:7;6002:18;;;;;;;;;;;;;;;;5995:25;;5909:119;;;:::o;2697:148::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2804:1:::1;2767:40;;2788:6;::::0;::::1;;;;;;;;2767:40;;;;;;;;;;;;2835:1;2818:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2697:148::o:0;9433:160::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4368:2:::1;4425;:13;;;;:::i;:::-;4412:10;:26;;;;:::i;:::-;9487:12;:22;;;;4368:2;4425;:13;;;;:::i;:::-;4412:10;:26;;;;:::i;:::-;9520:14;:22;;;;9558:27;4368:2;4425;:13;;;;:::i;:::-;4412:10;:26;;;;:::i;:::-;9558:27;;;;;;:::i;:::-;;;;;;;;9433:160::o:0;3998:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;4557:54::-;;;;:::o;2483:79::-;2521:7;2548:6;;;;;;;;;;;2541:13;;2483:79;:::o;4618:56::-;;;;:::o;5620:87::-;5659:13;5692:7;;;;;;;;;;;;;;;;;5685:14;;5620:87;:::o;6036:167::-;6114:4;6131:42;6141:12;:10;:12::i;:::-;6155:9;6166:6;6131:9;:42::i;:::-;6191:4;6184:11;;6036:167;;;;:::o;12270:152::-;12351:10;;;;;;;;;;;12335:26;;:12;:10;:12::i;:::-;:26;;;12327:35;;;;;;12373:41;4368:2;12400;:13;;;;:::i;:::-;12390:7;:23;;;;:::i;:::-;12373:16;:41::i;:::-;12270:152;:::o;11724:247::-;11829:10;;;;;;;;;;;11815:24;;:12;:10;:12::i;:::-;:24;;;11807:33;;;;;;11856:9;11851:113;11875:9;;:16;;11871:1;:20;11851:113;;;11948:4;11913:18;:32;11932:9;;11942:1;11932:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11913:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;11893:3;;;;;:::i;:::-;;;;11851:113;;;;11724:247;;:::o;10252:520::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10305:58:::1;10322:4;10337:15;;;;;;;;;;;4368:2;4425;:13;;;;:::i;:::-;4412:10;:26;;;;:::i;:::-;10305:8;:58::i;:::-;10408:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10390:55;;;10454:4;10461:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10390:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10374:13;;:110;;;;;;;;;;;;;;;;;;10495:15;;;;;;;;;;;:31;;;10534:21;10565:4;10571:24;10589:4;10571:9;:24::i;:::-;10596:1;10598::::0;10600:7:::1;:5;:7::i;:::-;10608:15;10495:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10649:4;10635:11;;:18;;;;;;;;;;;;;;;;;;10678:4;10664:11;;:18;;;;;;;;;;;;;;;;;;10700:13;;;;;;;;;;;10693:29;;;10731:15;;;;;;;;;;;10749:14;10693:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10252:520::o:0;10936:196::-;11033:10;;;;;;;;;;;11019:24;;:12;:10;:12::i;:::-;:24;;;11011:33;;;;;;11086:1;11063:25;;:11;:25;;;11055:34;;;;;;11113:11;11100:10;;:24;;;;;;;;;;;;;;;;;;10936:196;:::o;9701:373::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9775:6:::1;9770:297;9791:5;:12;9787:1;:16;9770:297;;;9853:15;;;;;;;;;;;9833:36;;:5;9839:1;9833:8;;;;;;;;:::i;:::-;;;;;;;;:36;;::::0;9825:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9956:13;;;;;;;;;;;9944:25;;:5;9950:1;9944:8;;;;;;;;:::i;:::-;;;;;;;;:25;;::::0;9936:83:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10051:4;10034;:14;10039:5;10045:1;10039:8;;;;;;;;:::i;:::-;;;;;;;;10034:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9805:3;;;;;:::i;:::-;;;;9770:297;;;;9701:373:::0;:::o;12776:381::-;12891:10;;;;;;;;;;;12875:26;;:12;:10;:12::i;:::-;:26;;;12867:35;;;;;;12936:1;12921:17;;:3;:17;;;12913:26;;;;;;12968:1;12958:7;:11;12950:20;;;;;;13007:6;13000:24;;;13033:4;13000:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12989:7;:50;;12981:59;;;;;;13053:12;13075:6;13068:23;;;13092:10;13104:7;13068:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13053:59;;13131:7;13123:26;;;;;;;;;;;;:::i;:::-;;;;;;;;;12856:301;12776:381;;;:::o;6211:143::-;6292:7;6319:11;:18;6331:5;6319:18;;;;;;;;;;;;;;;:27;6338:7;6319:27;;;;;;;;;;;;;;;;6312:34;;6211:143;;;;:::o;10780:148::-;10856:10;;;;;;;;;;;10842:24;;:12;:10;:12::i;:::-;:24;;;10834:33;;;;;;10892:1;10884:7;:9;10876:18;;;;;;10913:7;10903:9;:17;;;;10780:148;:::o;2853:160::-;2620:12;:10;:12::i;:::-;2610:22;;:6;;;;;;;;;;:22;;;2602:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2968:8:::1;2939:38;;2960:6;::::0;::::1;;;;;;;;2939:38;;;;;;;;;;;;2997:8;2988:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2853:160:::0;:::o;238:98::-;291:7;318:10;311:17;;238:98;:::o;6852:335::-;6962:1;6945:19;;:5;:19;;;6937:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7043:1;7024:21;;:7;:21;;;7016:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7125:6;7095:11;:18;7107:5;7095:18;;;;;;;;;;;;;;;:27;7114:7;7095:27;;;;;;;;;;;;;;;:36;;;;7163:7;7147:32;;7156:5;7147:32;;;7172:6;7147:32;;;;;;:::i;:::-;;;;;;;;6852:335;;;:::o;7195:1739::-;7299:1;7283:18;;:4;:18;;;7275:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7376:1;7362:16;;:2;:16;;;7354:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7446:1;7437:6;:10;7429:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7504:17;7546:7;:5;:7::i;:::-;7538:15;;:4;:15;;;;:32;;;;;7563:7;:5;:7::i;:::-;7557:13;;:2;:13;;;;7538:32;7534:1044;;;7596:4;:10;7601:4;7596:10;;;;;;;;;;;;;;;;;;;;;;;;;7595:11;:24;;;;;7611:4;:8;7616:2;7611:8;;;;;;;;;;;;;;;;;;;;;;;;;7610:9;7595:24;7587:33;;;;;;7639:6;;;;;;;;;;;7635:123;;7675:67;7738:3;7675:58;7697:12;;7687:9;;:22;7686:46;;7721:11;;7686:46;;;7711:9;;7686:46;7675:6;:10;;:58;;;;:::i;:::-;:62;;:67;;;;:::i;:::-;7663:79;;7635:123;7786:13;;;;;;;;;;;7778:21;;:4;:21;;;:55;;;;;7817:15;;;;;;;;;;;7803:30;;:2;:30;;;;7778:55;:83;;;;;7839:18;:22;7858:2;7839:22;;;;;;;;;;;;;;;;;;;;;;;;;7837:24;7778:83;7774:313;;;7901:12;;7891:6;:22;;7883:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7996:14;;7986:6;7970:13;7980:2;7970:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;7962:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8060:9;;:11;;;;;;;;;:::i;:::-;;;;;;7774:313;8103:28;8134:24;8152:4;8134:9;:24::i;:::-;8103:55;;8178:6;;;;;;;;;;;8177:7;:32;;;;;8196:13;;;;;;;;;;;8188:21;;:4;:21;;;;8177:32;:47;;;;;8213:11;;;;;;;;;;;8177:47;:80;;;;;8249:8;;8228:20;:29;8177:80;:112;;;;;8271:18;;8261:9;;:28;8177:112;8173:394;;;8310:49;8336:6;8327:8;;:15;:31;;8350:8;;8327:31;;;8343:6;8327:31;8310:16;:49::i;:::-;8378:26;8407:21;8378:50;;8471:1;8450:18;:22;8447:105;;;8497:35;8510:21;8497:12;:35::i;:::-;8447:105;8291:276;8173:394;7572:1006;7534:1044;8606:27;8626:6;8606:9;:15;8616:4;8606:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;8590:9;:15;8600:4;8590:15;;;;;;;;;;;;;;;:43;;;;8658:40;8676:21;8687:9;8676:6;:10;;:21;;;;:::i;:::-;8658:9;:13;8668:2;8658:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;8644:9;:13;8654:2;8644:13;;;;;;;;;;;;;;;:54;;;;8729:2;8714:41;;8723:4;8714:41;;;8733:21;8744:9;8733:6;:10;;:21;;;;:::i;:::-;8714:41;;;;;;:::i;:::-;;;;;;;;8779:1;8769:9;:11;8766:161;;;8819:39;8848:9;8819;:24;8837:4;8819:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;8794:9;:24;8812:4;8794:24;;;;;;;;;;;;;;;:64;;;;8899:4;8876:39;;8885:4;8876:39;;;8905:9;8876:39;;;;;;:::i;:::-;;;;;;;;8766:161;7264:1670;7195:1739;;;:::o;1375:190::-;1461:7;1494:1;1489;:6;;1497:12;1481:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1521:9;1537:1;1533;:5;;;;:::i;:::-;1521:17;;1556:1;1549:8;;;1375:190;;;;;:::o;8942:483::-;5020:4;5011:6;;:13;;;;;;;;;;;;;;;;;;9020:21:::1;9058:1;9044:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9020:40;;9089:4;9071;9076:1;9071:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9115:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9105:4;9110:1;9105:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9148:62;9165:4;9180:15;;;;;;;;;;;9198:11;9148:8;:62::i;:::-;9221:15;;;;;;;;;;;:66;;;9302:11;9328:1;9344:4;9371;9391:15;9221:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9009:416;5056:5:::0;5047:6;;:14;;;;;;;;;;;;;;;;;;8942:483;:::o;1573:246::-;1631:7;1660:1;1655;:6;1651:47;;1685:1;1678:8;;;;1651:47;1708:9;1724:1;1720;:5;;;;:::i;:::-;1708:17;;1753:1;1748;1744;:5;;;;:::i;:::-;:10;1736:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1810:1;1803:8;;;1573:246;;;;;:::o;1827:132::-;1885:7;1912:39;1916:1;1919;1912:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1905:46;;1827:132;;;;:::o;9601:92::-;9658:10;;;;;;;;;;;:19;;:27;9678:6;9658:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9601:92;:::o;1231:136::-;1289:7;1316:43;1320:1;1323;1316:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1309:50;;1231:136;;;;:::o;1044:179::-;1102:7;1122:9;1138:1;1134;:5;;;;:::i;:::-;1122:17;;1163:1;1158;:6;;1150:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1214:1;1207:8;;;1044:179;;;;:::o;1967:189::-;2053:7;2085:1;2081;:5;2088:12;2073:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2112:9;2128:1;2124;:5;;;;:::i;:::-;2112:17;;2147:1;2140:8;;;1967:189;;;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::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:104::-;3491:7;3520:24;3538:5;3520:24;:::i;:::-;3509:35;;3446:104;;;:::o;3556:138::-;3637:32;3663:5;3637:32;:::i;:::-;3630:5;3627:43;3617:71;;3684:1;3681;3674:12;3617:71;3556:138;:::o;3700:155::-;3754:5;3792:6;3779:20;3770:29;;3808:41;3843:5;3808:41;:::i;:::-;3700:155;;;;:::o;3861:490::-;3937:6;3945;3994:2;3982:9;3973:7;3969:23;3965:32;3962:119;;;4000:79;;:::i;:::-;3962:119;4120:1;4145:53;4190:7;4181:6;4170:9;4166:22;4145:53;:::i;:::-;4135:63;;4091:117;4247:2;4273:61;4326:7;4317:6;4306:9;4302:22;4273:61;:::i;:::-;4263:71;;4218:126;3861:490;;;;;:::o;4357:329::-;4416:6;4465:2;4453:9;4444:7;4440:23;4436:32;4433:119;;;4471:79;;:::i;:::-;4433:119;4591:1;4616:53;4661:7;4652:6;4641:9;4637:22;4616:53;:::i;:::-;4606:63;;4562:117;4357:329;;;;:::o;4692:117::-;4801:1;4798;4791:12;4815:117;4924:1;4921;4914:12;4938:117;5047:1;5044;5037:12;5078:568;5151:8;5161:6;5211:3;5204:4;5196:6;5192:17;5188:27;5178:122;;5219:79;;:::i;:::-;5178:122;5332:6;5319:20;5309:30;;5362:18;5354:6;5351:30;5348:117;;;5384:79;;:::i;:::-;5348:117;5498:4;5490:6;5486:17;5474:29;;5552:3;5544:4;5536:6;5532:17;5522:8;5518:32;5515:41;5512:128;;;5559:79;;:::i;:::-;5512:128;5078:568;;;;;:::o;5652:559::-;5738:6;5746;5795:2;5783:9;5774:7;5770:23;5766:32;5763:119;;;5801:79;;:::i;:::-;5763:119;5949:1;5938:9;5934:17;5921:31;5979:18;5971:6;5968:30;5965:117;;;6001:79;;:::i;:::-;5965:117;6114:80;6186:7;6177:6;6166:9;6162:22;6114:80;:::i;:::-;6096:98;;;;5892:312;5652:559;;;;;:::o;6217:60::-;6245:3;6266:5;6259:12;;6217:60;;;:::o;6283:142::-;6333:9;6366:53;6384:34;6393:24;6411:5;6393:24;:::i;:::-;6384:34;:::i;:::-;6366:53;:::i;:::-;6353:66;;6283:142;;;:::o;6431:126::-;6481:9;6514:37;6545:5;6514:37;:::i;:::-;6501:50;;6431:126;;;:::o;6563:152::-;6639:9;6672:37;6703:5;6672:37;:::i;:::-;6659:50;;6563:152;;;:::o;6721:183::-;6834:63;6891:5;6834:63;:::i;:::-;6829:3;6822:76;6721:183;;:::o;6910:274::-;7029:4;7067:2;7056:9;7052:18;7044:26;;7080:97;7174:1;7163:9;7159:17;7150:6;7080:97;:::i;:::-;6910:274;;;;:::o;7190:118::-;7277:24;7295:5;7277:24;:::i;:::-;7272:3;7265:37;7190:118;;:::o;7314:222::-;7407:4;7445:2;7434:9;7430:18;7422:26;;7458:71;7526:1;7515:9;7511:17;7502:6;7458:71;:::i;:::-;7314:222;;;;:::o;7542:619::-;7619:6;7627;7635;7684:2;7672:9;7663:7;7659:23;7655:32;7652:119;;;7690:79;;:::i;:::-;7652:119;7810:1;7835:53;7880:7;7871:6;7860:9;7856:22;7835:53;:::i;:::-;7825:63;;7781:117;7937:2;7963:53;8008:7;7999:6;7988:9;7984:22;7963:53;:::i;:::-;7953:63;;7908:118;8065:2;8091:53;8136:7;8127:6;8116:9;8112:22;8091:53;:::i;:::-;8081:63;;8036:118;7542:619;;;;;:::o;8167:86::-;8202:7;8242:4;8235:5;8231:16;8220:27;;8167:86;;;:::o;8259:112::-;8342:22;8358:5;8342:22;:::i;:::-;8337:3;8330:35;8259:112;;:::o;8377:214::-;8466:4;8504:2;8493:9;8489:18;8481:26;;8517:67;8581:1;8570:9;8566:17;8557:6;8517:67;:::i;:::-;8377:214;;;;:::o;8597:180::-;8645:77;8642:1;8635:88;8742:4;8739:1;8732:15;8766:4;8763:1;8756:15;8783:281;8866:27;8888:4;8866:27;:::i;:::-;8858:6;8854:40;8996:6;8984:10;8981:22;8960:18;8948:10;8945:34;8942:62;8939:88;;;9007:18;;:::i;:::-;8939:88;9047:10;9043:2;9036:22;8826:238;8783:281;;:::o;9070:129::-;9104:6;9131:20;;:::i;:::-;9121:30;;9160:33;9188:4;9180:6;9160:33;:::i;:::-;9070:129;;;:::o;9205:311::-;9282:4;9372:18;9364:6;9361:30;9358:56;;;9394:18;;:::i;:::-;9358:56;9444:4;9436:6;9432:17;9424:25;;9504:4;9498;9494:15;9486:23;;9205:311;;;:::o;9539:710::-;9635:5;9660:81;9676:64;9733:6;9676:64;:::i;:::-;9660:81;:::i;:::-;9651:90;;9761:5;9790:6;9783:5;9776:21;9824:4;9817:5;9813:16;9806:23;;9877:4;9869:6;9865:17;9857:6;9853:30;9906:3;9898:6;9895:15;9892:122;;;9925:79;;:::i;:::-;9892:122;10040:6;10023:220;10057:6;10052:3;10049:15;10023:220;;;10132:3;10161:37;10194:3;10182:10;10161:37;:::i;:::-;10156:3;10149:50;10228:4;10223:3;10219:14;10212:21;;10099:144;10083:4;10078:3;10074:14;10067:21;;10023:220;;;10027:21;9641:608;;9539:710;;;;;:::o;10272:370::-;10343:5;10392:3;10385:4;10377:6;10373:17;10369:27;10359:122;;10400:79;;:::i;:::-;10359:122;10517:6;10504:20;10542:94;10632:3;10624:6;10617:4;10609:6;10605:17;10542:94;:::i;:::-;10533:103;;10349:293;10272:370;;;;:::o;10648:539::-;10732:6;10781:2;10769:9;10760:7;10756:23;10752:32;10749:119;;;10787:79;;:::i;:::-;10749:119;10935:1;10924:9;10920:17;10907:31;10965:18;10957:6;10954:30;10951:117;;;10987:79;;:::i;:::-;10951:117;11092:78;11162:7;11153:6;11142:9;11138:22;11092:78;:::i;:::-;11082:88;;10878:302;10648:539;;;;:::o;11193:118::-;11280:24;11298:5;11280:24;:::i;:::-;11275:3;11268:37;11193:118;;:::o;11317:222::-;11410:4;11448:2;11437:9;11433:18;11425:26;;11461:71;11529:1;11518:9;11514:17;11505:6;11461:71;:::i;:::-;11317:222;;;;:::o;11545:474::-;11613:6;11621;11670:2;11658:9;11649:7;11645:23;11641:32;11638:119;;;11676:79;;:::i;:::-;11638:119;11796:1;11821:53;11866:7;11857:6;11846:9;11842:22;11821:53;:::i;:::-;11811:63;;11767:117;11923:2;11949:53;11994:7;11985:6;11974:9;11970:22;11949:53;:::i;:::-;11939:63;;11894:118;11545:474;;;;;:::o;12025:142::-;12128:32;12154:5;12128:32;:::i;:::-;12123:3;12116:45;12025:142;;:::o;12173:254::-;12282:4;12320:2;12309:9;12305:18;12297:26;;12333:87;12417:1;12406:9;12402:17;12393:6;12333:87;:::i;:::-;12173:254;;;;:::o;12433:329::-;12492:6;12541:2;12529:9;12520:7;12516:23;12512:32;12509:119;;;12547:79;;:::i;:::-;12509:119;12667:1;12692:53;12737:7;12728:6;12717:9;12713:22;12692:53;:::i;:::-;12682:63;;12638:117;12433:329;;;;:::o;12768:345::-;12835:6;12884:2;12872:9;12863:7;12859:23;12855:32;12852:119;;;12890:79;;:::i;:::-;12852:119;13010:1;13035:61;13088:7;13079:6;13068:9;13064:22;13035:61;:::i;:::-;13025:71;;12981:125;12768:345;;;;:::o;13119:619::-;13196:6;13204;13212;13261:2;13249:9;13240:7;13236:23;13232:32;13229:119;;;13267:79;;:::i;:::-;13229:119;13387:1;13412:53;13457:7;13448:6;13437:9;13433:22;13412:53;:::i;:::-;13402:63;;13358:117;13514:2;13540:53;13585:7;13576:6;13565:9;13561:22;13540:53;:::i;:::-;13530:63;;13485:118;13642:2;13668:53;13713:7;13704:6;13693:9;13689:22;13668:53;:::i;:::-;13658:63;;13613:118;13119:619;;;;;:::o;13744:474::-;13812:6;13820;13869:2;13857:9;13848:7;13844:23;13840:32;13837:119;;;13875:79;;:::i;:::-;13837:119;13995:1;14020:53;14065:7;14056:6;14045:9;14041:22;14020:53;:::i;:::-;14010:63;;13966:117;14122:2;14148:53;14193:7;14184:6;14173:9;14169:22;14148:53;:::i;:::-;14138:63;;14093:118;13744:474;;;;;:::o;14224:147::-;14325:11;14362:3;14347:18;;14224:147;;;;:::o;14377:114::-;;:::o;14497:398::-;14656:3;14677:83;14758:1;14753:3;14677:83;:::i;:::-;14670:90;;14769:93;14858:3;14769:93;:::i;:::-;14887:1;14882:3;14878:11;14871:18;;14497:398;;;:::o;14901:379::-;15085:3;15107:147;15250:3;15107:147;:::i;:::-;15100:154;;15271:3;15264:10;;14901:379;;;:::o;15286:156::-;15426:8;15422:1;15414:6;15410:14;15403:32;15286:156;:::o;15448:365::-;15590:3;15611:66;15675:1;15670:3;15611:66;:::i;:::-;15604:73;;15686:93;15775:3;15686:93;:::i;:::-;15804:2;15799:3;15795:12;15788:19;;15448:365;;;:::o;15819:419::-;15985:4;16023:2;16012:9;16008:18;16000:26;;16072:9;16066:4;16062:20;16058:1;16047:9;16043:17;16036:47;16100:131;16226:4;16100:131;:::i;:::-;16092:139;;15819:419;;;:::o;16244:180::-;16292:77;16289:1;16282:88;16389:4;16386:1;16379:15;16413:4;16410:1;16403:15;16430:102;16472:8;16519:5;16516:1;16512:13;16491:34;;16430:102;;;:::o;16538:848::-;16599:5;16606:4;16630:6;16621:15;;16654:5;16645:14;;16668:712;16689:1;16679:8;16676:15;16668:712;;;16784:4;16779:3;16775:14;16769:4;16766:24;16763:50;;;16793:18;;:::i;:::-;16763:50;16843:1;16833:8;16829:16;16826:451;;;17258:4;17251:5;17247:16;17238:25;;16826:451;17308:4;17302;17298:15;17290:23;;17338:32;17361:8;17338:32;:::i;:::-;17326:44;;16668:712;;;16538:848;;;;;;;:::o;17392:1073::-;17446:5;17637:8;17627:40;;17658:1;17649:10;;17660:5;;17627:40;17686:4;17676:36;;17703:1;17694:10;;17705:5;;17676:36;17772:4;17820:1;17815:27;;;;17856:1;17851:191;;;;17765:277;;17815:27;17833:1;17824:10;;17835:5;;;17851:191;17896:3;17886:8;17883:17;17880:43;;;17903:18;;:::i;:::-;17880:43;17952:8;17949:1;17945:16;17936:25;;17987:3;17980:5;17977:14;17974:40;;;17994:18;;:::i;:::-;17974:40;18027:5;;;17765:277;;18151:2;18141:8;18138:16;18132:3;18126:4;18123:13;18119:36;18101:2;18091:8;18088:16;18083:2;18077:4;18074:12;18070:35;18054:111;18051:246;;;18207:8;18201:4;18197:19;18188:28;;18242:3;18235:5;18232:14;18229:40;;;18249:18;;:::i;:::-;18229:40;18282:5;;18051:246;18322:42;18360:3;18350:8;18344:4;18341:1;18322:42;:::i;:::-;18307:57;;;;18396:4;18391:3;18387:14;18380:5;18377:25;18374:51;;;18405:18;;:::i;:::-;18374:51;18454:4;18447:5;18443:16;18434:25;;17392:1073;;;;;;:::o;18471:281::-;18529:5;18553:23;18571:4;18553:23;:::i;:::-;18545:31;;18597:25;18613:8;18597:25;:::i;:::-;18585:37;;18641:104;18678:66;18668:8;18662:4;18641:104;:::i;:::-;18632:113;;18471:281;;;;:::o;18758:410::-;18798:7;18821:20;18839:1;18821:20;:::i;:::-;18816:25;;18855:20;18873:1;18855:20;:::i;:::-;18850:25;;18910:1;18907;18903:9;18932:30;18950:11;18932:30;:::i;:::-;18921:41;;19111:1;19102:7;19098:15;19095:1;19092:22;19072:1;19065:9;19045:83;19022:139;;19141:18;;:::i;:::-;19022:139;18806:362;18758:410;;;;:::o;19174:180::-;19222:77;19219:1;19212:88;19319:4;19316:1;19309:15;19343:4;19340:1;19333:15;19360:233;19399:3;19422:24;19440:5;19422:24;:::i;:::-;19413:33;;19468:66;19461:5;19458:77;19455:103;;19538:18;;:::i;:::-;19455:103;19585:1;19578:5;19574:13;19567:20;;19360:233;;;:::o;19599:182::-;19739:34;19735:1;19727:6;19723:14;19716:58;19599:182;:::o;19787:366::-;19929:3;19950:67;20014:2;20009:3;19950:67;:::i;:::-;19943:74;;20026:93;20115:3;20026:93;:::i;:::-;20144:2;20139:3;20135:12;20128:19;;19787:366;;;:::o;20159:419::-;20325:4;20363:2;20352:9;20348:18;20340:26;;20412:9;20406:4;20402:20;20398:1;20387:9;20383:17;20376:47;20440:131;20566:4;20440:131;:::i;:::-;20432:139;;20159:419;;;:::o;20584:227::-;20724:34;20720:1;20712:6;20708:14;20701:58;20793:10;20788:2;20780:6;20776:15;20769:35;20584:227;:::o;20817:366::-;20959:3;20980:67;21044:2;21039:3;20980:67;:::i;:::-;20973:74;;21056:93;21145:3;21056:93;:::i;:::-;21174:2;21169:3;21165:12;21158:19;;20817:366;;;:::o;21189:419::-;21355:4;21393:2;21382:9;21378:18;21370:26;;21442:9;21436:4;21432:20;21428:1;21417:9;21413:17;21406:47;21470:131;21596:4;21470:131;:::i;:::-;21462:139;;21189:419;;;:::o;21614:143::-;21671:5;21702:6;21696:13;21687:22;;21718:33;21745:5;21718:33;:::i;:::-;21614:143;;;;:::o;21763:351::-;21833:6;21882:2;21870:9;21861:7;21857:23;21853:32;21850:119;;;21888:79;;:::i;:::-;21850:119;22008:1;22033:64;22089:7;22080:6;22069:9;22065:22;22033:64;:::i;:::-;22023:74;;21979:128;21763:351;;;;:::o;22120:332::-;22241:4;22279:2;22268:9;22264:18;22256:26;;22292:71;22360:1;22349:9;22345:17;22336:6;22292:71;:::i;:::-;22373:72;22441:2;22430:9;22426:18;22417:6;22373:72;:::i;:::-;22120:332;;;;;:::o;22458:85::-;22503:7;22532:5;22521:16;;22458:85;;;:::o;22549:158::-;22607:9;22640:61;22658:42;22667:32;22693:5;22667:32;:::i;:::-;22658:42;:::i;:::-;22640:61;:::i;:::-;22627:74;;22549:158;;;:::o;22713:147::-;22808:45;22847:5;22808:45;:::i;:::-;22803:3;22796:58;22713:147;;:::o;22866:807::-;23115:4;23153:3;23142:9;23138:19;23130:27;;23167:71;23235:1;23224:9;23220:17;23211:6;23167:71;:::i;:::-;23248:72;23316:2;23305:9;23301:18;23292:6;23248:72;:::i;:::-;23330:80;23406:2;23395:9;23391:18;23382:6;23330:80;:::i;:::-;23420;23496:2;23485:9;23481:18;23472:6;23420:80;:::i;:::-;23510:73;23578:3;23567:9;23563:19;23554:6;23510:73;:::i;:::-;23593;23661:3;23650:9;23646:19;23637:6;23593:73;:::i;:::-;22866:807;;;;;;;;;:::o;23679:143::-;23736:5;23767:6;23761:13;23752:22;;23783:33;23810:5;23783:33;:::i;:::-;23679:143;;;;:::o;23828:663::-;23916:6;23924;23932;23981:2;23969:9;23960:7;23956:23;23952:32;23949:119;;;23987:79;;:::i;:::-;23949:119;24107:1;24132:64;24188:7;24179:6;24168:9;24164:22;24132:64;:::i;:::-;24122:74;;24078:128;24245:2;24271:64;24327:7;24318:6;24307:9;24303:22;24271:64;:::i;:::-;24261:74;;24216:129;24384:2;24410:64;24466:7;24457:6;24446:9;24442:22;24410:64;:::i;:::-;24400:74;;24355:129;23828:663;;;;;:::o;24497:332::-;24618:4;24656:2;24645:9;24641:18;24633:26;;24669:71;24737:1;24726:9;24722:17;24713:6;24669:71;:::i;:::-;24750:72;24818:2;24807:9;24803:18;24794:6;24750:72;:::i;:::-;24497:332;;;;;:::o;24835:116::-;24905:21;24920:5;24905:21;:::i;:::-;24898:5;24895:32;24885:60;;24941:1;24938;24931:12;24885:60;24835:116;:::o;24957:137::-;25011:5;25042:6;25036:13;25027:22;;25058:30;25082:5;25058:30;:::i;:::-;24957:137;;;;:::o;25100:345::-;25167:6;25216:2;25204:9;25195:7;25191:23;25187:32;25184:119;;;25222:79;;:::i;:::-;25184:119;25342:1;25367:61;25420:7;25411:6;25400:9;25396:22;25367:61;:::i;:::-;25357:71;;25313:125;25100:345;;;;:::o;25451:234::-;25591:34;25587:1;25579:6;25575:14;25568:58;25660:17;25655:2;25647:6;25643:15;25636:42;25451:234;:::o;25691:366::-;25833:3;25854:67;25918:2;25913:3;25854:67;:::i;:::-;25847:74;;25930:93;26019:3;25930:93;:::i;:::-;26048:2;26043:3;26039:12;26032:19;;25691:366;;;:::o;26063:419::-;26229:4;26267:2;26256:9;26252:18;26244:26;;26316:9;26310:4;26306:20;26302:1;26291:9;26287:17;26280:47;26344:131;26470:4;26344:131;:::i;:::-;26336:139;;26063:419;;;:::o;26488:232::-;26628:34;26624:1;26616:6;26612:14;26605:58;26697:15;26692:2;26684:6;26680:15;26673:40;26488:232;:::o;26726:366::-;26868:3;26889:67;26953:2;26948:3;26889:67;:::i;:::-;26882:74;;26965:93;27054:3;26965:93;:::i;:::-;27083:2;27078:3;27074:12;27067:19;;26726:366;;;:::o;27098:419::-;27264:4;27302:2;27291:9;27287:18;27279:26;;27351:9;27345:4;27341:20;27337:1;27326:9;27322:17;27315:47;27379:131;27505:4;27379:131;:::i;:::-;27371:139;;27098:419;;;:::o;27523:351::-;27593:6;27642:2;27630:9;27621:7;27617:23;27613:32;27610:119;;;27648:79;;:::i;:::-;27610:119;27768:1;27793:64;27849:7;27840:6;27829:9;27825:22;27793:64;:::i;:::-;27783:74;;27739:128;27523:351;;;;:::o;27880:223::-;28020:34;28016:1;28008:6;28004:14;27997:58;28089:6;28084:2;28076:6;28072:15;28065:31;27880:223;:::o;28109:366::-;28251:3;28272:67;28336:2;28331:3;28272:67;:::i;:::-;28265:74;;28348:93;28437:3;28348:93;:::i;:::-;28466:2;28461:3;28457:12;28450:19;;28109:366;;;:::o;28481:419::-;28647:4;28685:2;28674:9;28670:18;28662:26;;28734:9;28728:4;28724:20;28720:1;28709:9;28705:17;28698:47;28762:131;28888:4;28762:131;:::i;:::-;28754:139;;28481:419;;;:::o;28906:221::-;29046:34;29042:1;29034:6;29030:14;29023:58;29115:4;29110:2;29102:6;29098:15;29091:29;28906:221;:::o;29133:366::-;29275:3;29296:67;29360:2;29355:3;29296:67;:::i;:::-;29289:74;;29372:93;29461:3;29372:93;:::i;:::-;29490:2;29485:3;29481:12;29474:19;;29133:366;;;:::o;29505:419::-;29671:4;29709:2;29698:9;29694:18;29686:26;;29758:9;29752:4;29748:20;29744:1;29733:9;29729:17;29722:47;29786:131;29912:4;29786:131;:::i;:::-;29778:139;;29505:419;;;:::o;29930:224::-;30070:34;30066:1;30058:6;30054:14;30047:58;30139:7;30134:2;30126:6;30122:15;30115:32;29930:224;:::o;30160:366::-;30302:3;30323:67;30387:2;30382:3;30323:67;:::i;:::-;30316:74;;30399:93;30488:3;30399:93;:::i;:::-;30517:2;30512:3;30508:12;30501:19;;30160:366;;;:::o;30532:419::-;30698:4;30736:2;30725:9;30721:18;30713:26;;30785:9;30779:4;30775:20;30771:1;30760:9;30756:17;30749:47;30813:131;30939:4;30813:131;:::i;:::-;30805:139;;30532:419;;;:::o;30957:222::-;31097:34;31093:1;31085:6;31081:14;31074:58;31166:5;31161:2;31153:6;31149:15;31142:30;30957:222;:::o;31185:366::-;31327:3;31348:67;31412:2;31407:3;31348:67;:::i;:::-;31341:74;;31424:93;31513:3;31424:93;:::i;:::-;31542:2;31537:3;31533:12;31526:19;;31185:366;;;:::o;31557:419::-;31723:4;31761:2;31750:9;31746:18;31738:26;;31810:9;31804:4;31800:20;31796:1;31785:9;31781:17;31774:47;31838:131;31964:4;31838:131;:::i;:::-;31830:139;;31557:419;;;:::o;31982:228::-;32122:34;32118:1;32110:6;32106:14;32099:58;32191:11;32186:2;32178:6;32174:15;32167:36;31982:228;:::o;32216:366::-;32358:3;32379:67;32443:2;32438:3;32379:67;:::i;:::-;32372:74;;32455:93;32544:3;32455:93;:::i;:::-;32573:2;32568:3;32564:12;32557:19;;32216:366;;;:::o;32588:419::-;32754:4;32792:2;32781:9;32777:18;32769:26;;32841:9;32835:4;32831:20;32827:1;32816:9;32812:17;32805:47;32869:131;32995:4;32869:131;:::i;:::-;32861:139;;32588:419;;;:::o;33013:175::-;33153:27;33149:1;33141:6;33137:14;33130:51;33013:175;:::o;33194:366::-;33336:3;33357:67;33421:2;33416:3;33357:67;:::i;:::-;33350:74;;33433:93;33522:3;33433:93;:::i;:::-;33551:2;33546:3;33542:12;33535:19;;33194:366;;;:::o;33566:419::-;33732:4;33770:2;33759:9;33755:18;33747:26;;33819:9;33813:4;33809:20;33805:1;33794:9;33790:17;33783:47;33847:131;33973:4;33847:131;:::i;:::-;33839:139;;33566:419;;;:::o;33991:191::-;34031:3;34050:20;34068:1;34050:20;:::i;:::-;34045:25;;34084:20;34102:1;34084:20;:::i;:::-;34079:25;;34127:1;34124;34120:9;34113:16;;34148:3;34145:1;34142:10;34139:36;;;34155:18;;:::i;:::-;34139:36;33991:191;;;;:::o;34188:176::-;34328:28;34324:1;34316:6;34312:14;34305:52;34188:176;:::o;34370:366::-;34512:3;34533:67;34597:2;34592:3;34533:67;:::i;:::-;34526:74;;34609:93;34698:3;34609:93;:::i;:::-;34727:2;34722:3;34718:12;34711:19;;34370:366;;;:::o;34742:419::-;34908:4;34946:2;34935:9;34931:18;34923:26;;34995:9;34989:4;34985:20;34981:1;34970:9;34966:17;34959:47;35023:131;35149:4;35023:131;:::i;:::-;35015:139;;34742:419;;;:::o;35167:194::-;35207:4;35227:20;35245:1;35227:20;:::i;:::-;35222:25;;35261:20;35279:1;35261:20;:::i;:::-;35256:25;;35305:1;35302;35298:9;35290:17;;35329:1;35323:4;35320:11;35317:37;;;35334:18;;:::i;:::-;35317:37;35167:194;;;;:::o;35367:114::-;35434:6;35468:5;35462:12;35452:22;;35367:114;;;:::o;35487:184::-;35586:11;35620:6;35615:3;35608:19;35660:4;35655:3;35651:14;35636:29;;35487:184;;;;:::o;35677:132::-;35744:4;35767:3;35759:11;;35797:4;35792:3;35788:14;35780:22;;35677:132;;;:::o;35815:108::-;35892:24;35910:5;35892:24;:::i;:::-;35887:3;35880:37;35815:108;;:::o;35929:179::-;35998:10;36019:46;36061:3;36053:6;36019:46;:::i;:::-;36097:4;36092:3;36088:14;36074:28;;35929:179;;;;:::o;36114:113::-;36184:4;36216;36211:3;36207:14;36199:22;;36114:113;;;:::o;36263:732::-;36382:3;36411:54;36459:5;36411:54;:::i;:::-;36481:86;36560:6;36555:3;36481:86;:::i;:::-;36474:93;;36591:56;36641:5;36591:56;:::i;:::-;36670:7;36701:1;36686:284;36711:6;36708:1;36705:13;36686:284;;;36787:6;36781:13;36814:63;36873:3;36858:13;36814:63;:::i;:::-;36807:70;;36900:60;36953:6;36900:60;:::i;:::-;36890:70;;36746:224;36733:1;36730;36726:9;36721:14;;36686:284;;;36690:14;36986:3;36979:10;;36387:608;;;36263:732;;;;:::o;37001:831::-;37264:4;37302:3;37291:9;37287:19;37279:27;;37316:71;37384:1;37373:9;37369:17;37360:6;37316:71;:::i;:::-;37397:80;37473:2;37462:9;37458:18;37449:6;37397:80;:::i;:::-;37524:9;37518:4;37514:20;37509:2;37498:9;37494:18;37487:48;37552:108;37655:4;37646:6;37552:108;:::i;:::-;37544:116;;37670:72;37738:2;37727:9;37723:18;37714:6;37670:72;:::i;:::-;37752:73;37820:3;37809:9;37805:19;37796:6;37752:73;:::i;:::-;37001:831;;;;;;;;:::o;37838:180::-;37886:77;37883:1;37876:88;37983:4;37980:1;37973:15;38007:4;38004:1;37997:15;38024:185;38064:1;38081:20;38099:1;38081:20;:::i;:::-;38076:25;;38115:20;38133:1;38115:20;:::i;:::-;38110:25;;38154:1;38144:35;;38159:18;;:::i;:::-;38144:35;38201:1;38198;38194:9;38189:14;;38024:185;;;;:::o;38215:220::-;38355:34;38351:1;38343:6;38339:14;38332:58;38424:3;38419:2;38411:6;38407:15;38400:28;38215:220;:::o;38441:366::-;38583:3;38604:67;38668:2;38663:3;38604:67;:::i;:::-;38597:74;;38680:93;38769:3;38680:93;:::i;:::-;38798:2;38793:3;38789:12;38782:19;;38441:366;;;:::o;38813:419::-;38979:4;39017:2;39006:9;39002:18;38994:26;;39066:9;39060:4;39056:20;39052:1;39041:9;39037:17;39030:47;39094:131;39220:4;39094:131;:::i;:::-;39086:139;;38813:419;;;:::o;39238:177::-;39378:29;39374:1;39366:6;39362:14;39355:53;39238:177;:::o;39421:366::-;39563:3;39584:67;39648:2;39643:3;39584:67;:::i;:::-;39577:74;;39660:93;39749:3;39660:93;:::i;:::-;39778:2;39773:3;39769:12;39762:19;;39421:366;;;:::o;39793:419::-;39959:4;39997:2;39986:9;39982:18;39974:26;;40046:9;40040:4;40036:20;40032:1;40021:9;40017:17;40010:47;40074:131;40200:4;40074:131;:::i;:::-;40066:139;;39793:419;;;:::o

Swarm Source

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