ETH Price: $2,608.36 (-5.44%)

Token

Three pillars of gods (造化三神)
 

Overview

Max Total Supply

1,000,000,000 造化三神

Holders

31

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,537,120.601262251 造化三神

Value
$0.00
0x20e79b970Ae92bf4eCf60a7e368b5F42C42d3416
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:
Zoka

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-06
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.13;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

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

/**
 * Allows for contract ownership along with multi-address authorization
 */
abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract Zoka is IERC20, Auth {
    using SafeMath for uint256;

    address private WETH;
    address private DEAD = 0x000000000000000000000000000000000000dEaD;
    address private ZERO = 0x0000000000000000000000000000000000000000;

    string private constant  _name = "Three pillars of gods";
    string private constant _symbol = unicode"造化三神";
    uint8 private constant _decimals = 9;

    uint256 private _totalSupply = 1_000_000_000 * (10 ** _decimals);
    //max wallet holding of 2% 
    uint256 public _maxWalletToken = ( _totalSupply * 3 ) / 100;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
            
    uint256 public buyFeeRate = 3;
    uint256 public sellFeeRate = 3;
    uint256 private feeDenominator = 100;

    address payable public marketingWallet = payable(0x619a80cd5d5BFC77025c3cbA9dFC1D48557b1935);

    IDEXRouter public router;
    address public pair;

    bool private tradingOpen;
    bool private buyLimitEnable = true;
    bool private maxWalletEnable = true;
    uint256 private maxBuy = ( _totalSupply * 1 ) / 100;
    uint256 public numTokensSellToAddToLiquidity = ( _totalSupply * 1 ) / 1000;
    
    bool private 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;

        isTxLimitExempt[msg.sender] = true;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingWallet] = true;       

        _balances[msg.sender] = _totalSupply;
    
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

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

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

    function 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(!authorizations[sender] && !authorizations[recipient]){ 
            require(tradingOpen, "Trading not yet enabled.");
        }
        
        // max wallet code
        if (maxWalletEnable && !authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingWallet){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
        }
        
        // Checks max transaction limit
        if(buyLimitEnable) checkTxLimit(sender, amount);

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }      

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
    
        bool shouldSwapBack = (overMinTokenBalance && recipient==pair && balanceOf(address(this)) > 0);
        if(shouldSwapBack){ swapBack(numTokensSellToAddToLiquidity); }

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

        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        
        _balances[recipient] = _balances[recipient].add(amountReceived);

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

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= maxBuy || isTxLimitExempt[sender], "TX Limit Exceeded");
    }
 
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return ( !(isFeeExempt[sender] || isFeeExempt[recipient]) &&  (sender == pair || recipient == pair) );
   }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 transferFeeRate = recipient == pair ? sellFeeRate : buyFeeRate;
        uint256 feeAmount;
        feeAmount = amount.mul(transferFeeRate).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);   

        return amount.sub(feeAmount);
    }

    function swapBack(uint256 amount) internal swapping {
        swapTokensForEth(amount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            marketingWallet,
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        
        // add the liquidity
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp
        );
    }

    function swapToken() public onlyOwner {

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
    
        bool shouldSwapBack = (overMinTokenBalance && balanceOf(address(this)) > 0);
        if(shouldSwapBack){ 
            swapTokensForEth(numTokensSellToAddToLiquidity);
         }
    }

    function openTrading() external onlyOwner {
        tradingOpen = true;
    }    
  
    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function setFee (uint256 _sellFeeRate, uint256 _buyFeeRate) external onlyOwner {
        sellFeeRate = _sellFeeRate;
        buyFeeRate = _buyFeeRate;
    }

    function setMaxBuy (uint256 _percent) external onlyOwner {
        maxBuy = ( _totalSupply * _percent ) / 100;
    }
  
    function manualSend() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingWallet).transfer(contractETHBalance);
    }

    function manualBurn(uint256 amount) external onlyOwner returns (bool) {
        return _basicTransfer(address(this), DEAD, amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function setMarketingWallet(address _marketingWallet) external onlyOwner {
        marketingWallet = payable(_marketingWallet);
    } 

    function removeLimit() external onlyOwner {
        buyLimitEnable = false;
        maxWalletEnable = false;
    }

    function setSwapThresholdAmount (uint256 amount) external onlyOwner {
        require (amount <= _totalSupply.div(100), "can't exceed 1%");
        numTokensSellToAddToLiquidity = amount * 10 ** 9;
    } 

    function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

}

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":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":"adr","type":"address"}],"name":"isAuthorized","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":"uint256","name":"amount","type":"uint256"}],"name":"manualBurn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"numTokensSellToAddToLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFeeRate","type":"uint256"},{"internalType":"uint256","name":"_buyFeeRate","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setMaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000099919062000933565b633b9aca00620000aa919062000984565b60055560646003600554620000c0919062000984565b620000cc919062000a14565b6006556003600b556003600c556064600d5573619a80cd5d5bfc77025c3cba9dfc1d48557b1935600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060156101000a81548160ff0219169083151502179055506001601060166101000a81548160ff021916908315150217905550606460016005546200017c919062000984565b62000188919062000a14565b6011556103e860016005546200019f919062000984565b620001ab919062000a14565b601255348015620001bb57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e919062000ab6565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000412919062000ab6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b81526004016200047092919062000af9565b6020604051808303816000875af115801562000490573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b6919062000ab6565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200078b919062000b37565b60405180910390a362000b54565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200082757808604811115620007ff57620007fe62000799565b5b60018516156200080f5780820291505b80810290506200081f85620007c8565b9450620007df565b94509492505050565b60008262000842576001905062000915565b8162000852576000905062000915565b81600181146200086b57600281146200087657620008ac565b600191505062000915565b60ff8411156200088b576200088a62000799565b5b8360020a915084821115620008a557620008a462000799565b5b5062000915565b5060208310610133831016604e8410600b8410161715620008e65782820a905083811115620008e057620008df62000799565b5b62000915565b620008f58484846001620007d5565b925090508184048111156200090f576200090e62000799565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000940826200091c565b91506200094d8362000926565b92506200097c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000830565b905092915050565b600062000991826200091c565b91506200099e836200091c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620009da57620009d962000799565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a21826200091c565b915062000a2e836200091c565b92508262000a415762000a40620009e5565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a7e8262000a51565b9050919050565b62000a908162000a71565b811462000a9c57600080fd5b50565b60008151905062000ab08162000a85565b92915050565b60006020828403121562000acf5762000ace62000a4c565b5b600062000adf8482850162000a9f565b91505092915050565b62000af38162000a71565b82525050565b600060408201905062000b10600083018562000ae8565b62000b1f602083018462000ae8565b9392505050565b62000b31816200091c565b82525050565b600060208201905062000b4e600083018462000b26565b92915050565b6133838062000b646000396000f3fe6080604052600436106102135760003560e01c806378109e5411610118578063dc73e49c116100a0578063f42938901161006f578063f429389014610798578063f53bc835146107af578063f84ba65d146107d8578063f887ea4014610801578063fe9fbb801461082c5761021a565b8063dc73e49c146106f2578063dd62ed3e14610709578063f0b37c0414610746578063f2fde38b1461076f5761021a565b8063a8aa1b31116100e7578063a8aa1b311461061f578063a9059cbb1461064a578063b6a5d7de14610687578063c9567bf9146106b0578063d12a7688146106c75761021a565b806378109e541461057557806382bf293c146105a0578063893d20e8146105c957806395d89b41146105f45761021a565b806352f7c9881161019b578063622565891161016a57806362256589146104a2578063658d4b7f146104b95780636b1b4987146104e257806370a082311461050d57806375f0a8741461054a5761021a565b806352f7c988146103e8578063571ac8b0146104115780635b149feb1461044e5780635d098b38146104795761021a565b806323b872dd116101e257806323b872dd146102ef57806329e04b4a1461032c5780632b112e49146103555780632f54bf6e14610380578063313ce567146103bd5761021a565b806306fdde031461021f578063095ea7b31461024a57806318160ddd1461028757806323b63585146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610869565b60405161024191906127dd565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190612898565b6108a6565b60405161027e91906128f3565b60405180910390f35b34801561029357600080fd5b5061029c610998565b6040516102a9919061291d565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612938565b6109a2565b6040516102e691906128f3565b60405180910390f35b3480156102fb57600080fd5b5061031660048036038101906103119190612965565b610a20565b60405161032391906128f3565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190612938565b610c20565b005b34801561036157600080fd5b5061036a610cd9565b604051610377919061291d565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a291906129b8565b610d5b565b6040516103b491906128f3565b60405180910390f35b3480156103c957600080fd5b506103d2610db4565b6040516103df9190612a01565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190612a1c565b610dbd565b005b34801561041d57600080fd5b50610438600480360381019061043391906129b8565b610e17565b60405161044591906128f3565b60405180910390f35b34801561045a57600080fd5b50610463610e4a565b604051610470919061291d565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b91906129b8565b610e50565b005b3480156104ae57600080fd5b506104b7610edc565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612a88565b610f5c565b005b3480156104ee57600080fd5b506104f7610fff565b604051610504919061291d565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f91906129b8565b611005565b604051610541919061291d565b60405180910390f35b34801561055657600080fd5b5061055f61104e565b60405161056c9190612ae9565b60405180910390f35b34801561058157600080fd5b5061058a611074565b604051610597919061291d565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190612938565b61107a565b005b3480156105d557600080fd5b506105de6110e5565b6040516105eb9190612b13565b60405180910390f35b34801561060057600080fd5b5061060961110e565b60405161061691906127dd565b60405180910390f35b34801561062b57600080fd5b5061063461114b565b6040516106419190612b13565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190612898565b611171565b60405161067e91906128f3565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a991906129b8565b611186565b005b3480156106bc57600080fd5b506106c5611228565b005b3480156106d357600080fd5b506106dc61128d565b6040516106e9919061291d565b60405180910390f35b3480156106fe57600080fd5b50610707611293565b005b34801561071557600080fd5b50610730600480360381019061072b9190612b2e565b611322565b60405161073d919061291d565b60405180910390f35b34801561075257600080fd5b5061076d600480360381019061076891906129b8565b6113a9565b005b34801561077b57600080fd5b5061079660048036038101906107919190612b9a565b61144c565b005b3480156107a457600080fd5b506107ad611565565b005b3480156107bb57600080fd5b506107d660048036038101906107d19190612938565b61161e565b005b3480156107e457600080fd5b506107ff60048036038101906107fa9190612a88565b611689565b005b34801561080d57600080fd5b5061081661172c565b6040516108239190612c26565b60405180910390f35b34801561083857600080fd5b50610853600480360381019061084e91906129b8565b611752565b60405161086091906128f3565b60405180910390f35b60606040518060400160405280601581526020017f54687265652070696c6c617273206f6620676f64730000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610986919061291d565b60405180910390a36001905092915050565b6000600554905090565b60006109ad33610d5b565b6109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e390612c8d565b60405180910390fd5b610a1930600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a8565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c0c57610b8b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197b9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c178484846119df565b90509392505050565b610c2933610d5b565b610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90612c8d565b60405180910390fd5b610c7e6064600554611fc690919063ffffffff16565b811115610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790612cf9565b60405180910390fd5b633b9aca0081610cd09190612d48565b60128190555050565b6000610d56610d09600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611005565b610d48610d37600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611005565b60055461201090919063ffffffff16565b61201090919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610dc633610d5b565b610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90612c8d565b60405180910390fd5b81600c8190555080600b819055505050565b6000610e43827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108a6565b9050919050565b600c5481565b610e5933610d5b565b610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90612c8d565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ee533610d5b565b610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90612c8d565b60405180910390fd5b6000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff021916908315150217905550565b610f6533610d5b565b610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612c8d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b61108333610d5b565b6110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b990612c8d565b60405180910390fd5b6064816005546110d29190612d48565b6110dc9190612dd1565b60068190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600c81526020017fe980a0e58c96e4b889e7a59e0000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061117e3384846119df565b905092915050565b61118f33610d5b565b6111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590612c8d565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61123133610d5b565b611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126790612c8d565b60405180910390fd5b6001601060146101000a81548160ff021916908315150217905550565b60125481565b61129c33610d5b565b6112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d290612c8d565b60405180910390fd5b60006112e630611005565b90506000601254821015905060008180156113095750600061130730611005565b115b9050801561131d5761131c60125461205a565b5b505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113b233610d5b565b6113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890612c8d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61145533610d5b565b611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b90612c8d565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161155a9190612e23565b60405180910390a150565b61156e33610d5b565b6115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a490612c8d565b60405180910390fd5b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561161a573d6000803e3d6000fd5b5050565b61162733610d5b565b611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90612c8d565b60405180910390fd5b6064816005546116769190612d48565b6116809190612dd1565b60118190555050565b61169233611752565b6116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612e8a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611833826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197b9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118c882600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611968919061291d565b60405180910390a3600190509392505050565b60008383111582906119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba91906127dd565b60405180910390fd5b50600083856119d29190612eaa565b9050809150509392505050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a855750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ada57601060149054906101000a900460ff16611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad090612f2a565b60405180910390fd5b5b601060169054906101000a900460ff168015611b405750600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b7857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bd25750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c2c5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c865750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cea576000611c9684611005565b90506006548382611ca79190612f4a565b1115611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf90613012565b60405180910390fd5b505b601060159054906101000a900460ff1615611d0a57611d098483612282565b5b601360009054906101000a900460ff1615611d3157611d2a8484846117a8565b9050611fbf565b6000611d3c30611005565b9050600060125482101590506000818015611da45750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611db857506000611db630611005565b115b90508015611dcc57611dcb60125461231f565b5b611e55856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197b9092919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ea48888612361565b611eae5785611eba565b611eb98888886124be565b5b9050611f0e81600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fae919061291d565b60405180910390a360019450505050505b9392505050565b600061200883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612667565b905092915050565b600061205283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061197b565b905092915050565b6000600267ffffffffffffffff81111561207757612076613032565b5b6040519080825280602002602001820160405280156120a55781602001602082028036833780820191505090505b50905030816000815181106120bd576120bc613061565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061212e5761212d613061565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016121ee959493929190613189565b600060405180830381600087803b15801561220857600080fd5b505af115801561221c573d6000803e3d6000fd5b505050505050565b60008082846122339190612f4a565b905083811015612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f9061322f565b60405180910390fd5b8091505092915050565b601154811115806122dc5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61231b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123129061329b565b60405180910390fd5b5050565b6001601360006101000a81548160ff0219169083151502179055506123438161205a565b6000601360006101000a81548160ff02191690831515021790555050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124045750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1580156124b65750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806124b55750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461251e57600b54612522565b600c545b9050600061254d600d5461253f84876126ca90919063ffffffff16565b611fc690919063ffffffff16565b90506125a181600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612641919061291d565b60405180910390a361265c818561201090919063ffffffff16565b925050509392505050565b600080831182906126ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a591906127dd565b60405180910390fd5b50600083856126bd9190612dd1565b9050809150509392505050565b60008083036126dc576000905061273e565b600082846126ea9190612d48565b90508284826126f99190612dd1565b14612739576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127309061332d565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561277e578082015181840152602081019050612763565b8381111561278d576000848401525b50505050565b6000601f19601f8301169050919050565b60006127af82612744565b6127b9818561274f565b93506127c9818560208601612760565b6127d281612793565b840191505092915050565b600060208201905081810360008301526127f781846127a4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061282f82612804565b9050919050565b61283f81612824565b811461284a57600080fd5b50565b60008135905061285c81612836565b92915050565b6000819050919050565b61287581612862565b811461288057600080fd5b50565b6000813590506128928161286c565b92915050565b600080604083850312156128af576128ae6127ff565b5b60006128bd8582860161284d565b92505060206128ce85828601612883565b9150509250929050565b60008115159050919050565b6128ed816128d8565b82525050565b600060208201905061290860008301846128e4565b92915050565b61291781612862565b82525050565b6000602082019050612932600083018461290e565b92915050565b60006020828403121561294e5761294d6127ff565b5b600061295c84828501612883565b91505092915050565b60008060006060848603121561297e5761297d6127ff565b5b600061298c8682870161284d565b935050602061299d8682870161284d565b92505060406129ae86828701612883565b9150509250925092565b6000602082840312156129ce576129cd6127ff565b5b60006129dc8482850161284d565b91505092915050565b600060ff82169050919050565b6129fb816129e5565b82525050565b6000602082019050612a1660008301846129f2565b92915050565b60008060408385031215612a3357612a326127ff565b5b6000612a4185828601612883565b9250506020612a5285828601612883565b9150509250929050565b612a65816128d8565b8114612a7057600080fd5b50565b600081359050612a8281612a5c565b92915050565b60008060408385031215612a9f57612a9e6127ff565b5b6000612aad8582860161284d565b9250506020612abe85828601612a73565b9150509250929050565b6000612ad382612804565b9050919050565b612ae381612ac8565b82525050565b6000602082019050612afe6000830184612ada565b92915050565b612b0d81612824565b82525050565b6000602082019050612b286000830184612b04565b92915050565b60008060408385031215612b4557612b446127ff565b5b6000612b538582860161284d565b9250506020612b648582860161284d565b9150509250929050565b612b7781612ac8565b8114612b8257600080fd5b50565b600081359050612b9481612b6e565b92915050565b600060208284031215612bb057612baf6127ff565b5b6000612bbe84828501612b85565b91505092915050565b6000819050919050565b6000612bec612be7612be284612804565b612bc7565b612804565b9050919050565b6000612bfe82612bd1565b9050919050565b6000612c1082612bf3565b9050919050565b612c2081612c05565b82525050565b6000602082019050612c3b6000830184612c17565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612c7760068361274f565b9150612c8282612c41565b602082019050919050565b60006020820190508181036000830152612ca681612c6a565b9050919050565b7f63616e2774206578636565642031250000000000000000000000000000000000600082015250565b6000612ce3600f8361274f565b9150612cee82612cad565b602082019050919050565b60006020820190508181036000830152612d1281612cd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d5382612862565b9150612d5e83612862565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d9757612d96612d19565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ddc82612862565b9150612de783612862565b925082612df757612df6612da2565b5b828204905092915050565b6000612e0d82612bf3565b9050919050565b612e1d81612e02565b82525050565b6000602082019050612e386000830184612e14565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612e74600b8361274f565b9150612e7f82612e3e565b602082019050919050565b60006020820190508181036000830152612ea381612e67565b9050919050565b6000612eb582612862565b9150612ec083612862565b925082821015612ed357612ed2612d19565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6000612f1460188361274f565b9150612f1f82612ede565b602082019050919050565b60006020820190508181036000830152612f4381612f07565b9050919050565b6000612f5582612862565b9150612f6083612862565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f9557612f94612d19565b5b828201905092915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000612ffc603e8361274f565b915061300782612fa0565b604082019050919050565b6000602082019050818103600083015261302b81612fef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006130b56130b06130ab84613090565b612bc7565b612862565b9050919050565b6130c58161309a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61310081612824565b82525050565b600061311283836130f7565b60208301905092915050565b6000602082019050919050565b6000613136826130cb565b61314081856130d6565b935061314b836130e7565b8060005b8381101561317c5781516131638882613106565b975061316e8361311e565b92505060018101905061314f565b5085935050505092915050565b600060a08201905061319e600083018861290e565b6131ab60208301876130bc565b81810360408301526131bd818661312b565b90506131cc6060830185612e14565b6131d9608083018461290e565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613219601b8361274f565b9150613224826131e3565b602082019050919050565b600060208201905081810360008301526132488161320c565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061328560118361274f565b91506132908261324f565b602082019050919050565b600060208201905081810360008301526132b481613278565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061331760218361274f565b9150613322826132bb565b604082019050919050565b600060208201905081810360008301526133468161330a565b905091905056fea2646970667358221220a5005bd073ad000cea95ef88a5dcc5b2471261a657238cf5261704e8b6903d8764736f6c634300080d0033

Deployed Bytecode

0x6080604052600436106102135760003560e01c806378109e5411610118578063dc73e49c116100a0578063f42938901161006f578063f429389014610798578063f53bc835146107af578063f84ba65d146107d8578063f887ea4014610801578063fe9fbb801461082c5761021a565b8063dc73e49c146106f2578063dd62ed3e14610709578063f0b37c0414610746578063f2fde38b1461076f5761021a565b8063a8aa1b31116100e7578063a8aa1b311461061f578063a9059cbb1461064a578063b6a5d7de14610687578063c9567bf9146106b0578063d12a7688146106c75761021a565b806378109e541461057557806382bf293c146105a0578063893d20e8146105c957806395d89b41146105f45761021a565b806352f7c9881161019b578063622565891161016a57806362256589146104a2578063658d4b7f146104b95780636b1b4987146104e257806370a082311461050d57806375f0a8741461054a5761021a565b806352f7c988146103e8578063571ac8b0146104115780635b149feb1461044e5780635d098b38146104795761021a565b806323b872dd116101e257806323b872dd146102ef57806329e04b4a1461032c5780632b112e49146103555780632f54bf6e14610380578063313ce567146103bd5761021a565b806306fdde031461021f578063095ea7b31461024a57806318160ddd1461028757806323b63585146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b50610234610869565b60405161024191906127dd565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c9190612898565b6108a6565b60405161027e91906128f3565b60405180910390f35b34801561029357600080fd5b5061029c610998565b6040516102a9919061291d565b60405180910390f35b3480156102be57600080fd5b506102d960048036038101906102d49190612938565b6109a2565b6040516102e691906128f3565b60405180910390f35b3480156102fb57600080fd5b5061031660048036038101906103119190612965565b610a20565b60405161032391906128f3565b60405180910390f35b34801561033857600080fd5b50610353600480360381019061034e9190612938565b610c20565b005b34801561036157600080fd5b5061036a610cd9565b604051610377919061291d565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a291906129b8565b610d5b565b6040516103b491906128f3565b60405180910390f35b3480156103c957600080fd5b506103d2610db4565b6040516103df9190612a01565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190612a1c565b610dbd565b005b34801561041d57600080fd5b50610438600480360381019061043391906129b8565b610e17565b60405161044591906128f3565b60405180910390f35b34801561045a57600080fd5b50610463610e4a565b604051610470919061291d565b60405180910390f35b34801561048557600080fd5b506104a0600480360381019061049b91906129b8565b610e50565b005b3480156104ae57600080fd5b506104b7610edc565b005b3480156104c557600080fd5b506104e060048036038101906104db9190612a88565b610f5c565b005b3480156104ee57600080fd5b506104f7610fff565b604051610504919061291d565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f91906129b8565b611005565b604051610541919061291d565b60405180910390f35b34801561055657600080fd5b5061055f61104e565b60405161056c9190612ae9565b60405180910390f35b34801561058157600080fd5b5061058a611074565b604051610597919061291d565b60405180910390f35b3480156105ac57600080fd5b506105c760048036038101906105c29190612938565b61107a565b005b3480156105d557600080fd5b506105de6110e5565b6040516105eb9190612b13565b60405180910390f35b34801561060057600080fd5b5061060961110e565b60405161061691906127dd565b60405180910390f35b34801561062b57600080fd5b5061063461114b565b6040516106419190612b13565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190612898565b611171565b60405161067e91906128f3565b60405180910390f35b34801561069357600080fd5b506106ae60048036038101906106a991906129b8565b611186565b005b3480156106bc57600080fd5b506106c5611228565b005b3480156106d357600080fd5b506106dc61128d565b6040516106e9919061291d565b60405180910390f35b3480156106fe57600080fd5b50610707611293565b005b34801561071557600080fd5b50610730600480360381019061072b9190612b2e565b611322565b60405161073d919061291d565b60405180910390f35b34801561075257600080fd5b5061076d600480360381019061076891906129b8565b6113a9565b005b34801561077b57600080fd5b5061079660048036038101906107919190612b9a565b61144c565b005b3480156107a457600080fd5b506107ad611565565b005b3480156107bb57600080fd5b506107d660048036038101906107d19190612938565b61161e565b005b3480156107e457600080fd5b506107ff60048036038101906107fa9190612a88565b611689565b005b34801561080d57600080fd5b5061081661172c565b6040516108239190612c26565b60405180910390f35b34801561083857600080fd5b50610853600480360381019061084e91906129b8565b611752565b60405161086091906128f3565b60405180910390f35b60606040518060400160405280601581526020017f54687265652070696c6c617273206f6620676f64730000000000000000000000815250905090565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610986919061291d565b60405180910390a36001905092915050565b6000600554905090565b60006109ad33610d5b565b6109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e390612c8d565b60405180910390fd5b610a1930600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117a8565b9050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c0c57610b8b826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197b9092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610c178484846119df565b90509392505050565b610c2933610d5b565b610c68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5f90612c8d565b60405180910390fd5b610c7e6064600554611fc690919063ffffffff16565b811115610cc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb790612cf9565b60405180910390fd5b633b9aca0081610cd09190612d48565b60128190555050565b6000610d56610d09600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611005565b610d48610d37600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611005565b60055461201090919063ffffffff16565b61201090919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b610dc633610d5b565b610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90612c8d565b60405180910390fd5b81600c8190555080600b819055505050565b6000610e43827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108a6565b9050919050565b600c5481565b610e5933610d5b565b610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90612c8d565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ee533610d5b565b610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90612c8d565b60405180910390fd5b6000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff021916908315150217905550565b610f6533610d5b565b610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612c8d565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b5481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b61108333610d5b565b6110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b990612c8d565b60405180910390fd5b6064816005546110d29190612d48565b6110dc9190612dd1565b60068190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600c81526020017fe980a0e58c96e4b889e7a59e0000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061117e3384846119df565b905092915050565b61118f33610d5b565b6111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590612c8d565b60405180910390fd5b60018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61123133610d5b565b611270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126790612c8d565b60405180910390fd5b6001601060146101000a81548160ff021916908315150217905550565b60125481565b61129c33610d5b565b6112db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d290612c8d565b60405180910390fd5b60006112e630611005565b90506000601254821015905060008180156113095750600061130730611005565b115b9050801561131d5761131c60125461205a565b5b505050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113b233610d5b565b6113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890612c8d565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61145533610d5b565b611494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148b90612c8d565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161155a9190612e23565b60405180910390a150565b61156e33610d5b565b6115ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a490612c8d565b60405180910390fd5b6000479050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561161a573d6000803e3d6000fd5b5050565b61162733610d5b565b611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165d90612c8d565b60405180910390fd5b6064816005546116769190612d48565b6116809190612dd1565b60118190555050565b61169233611752565b6116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612e8a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000611833826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197b9092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506118c882600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611968919061291d565b60405180910390a3600190509392505050565b60008383111582906119c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ba91906127dd565b60405180910390fd5b50600083856119d29190612eaa565b9050809150509392505050565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a855750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ada57601060149054906101000a900460ff16611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad090612f2a565b60405180910390fd5b5b601060169054906101000a900460ff168015611b405750600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b7857503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bd25750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c2c5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c865750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cea576000611c9684611005565b90506006548382611ca79190612f4a565b1115611ce8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdf90613012565b60405180910390fd5b505b601060159054906101000a900460ff1615611d0a57611d098483612282565b5b601360009054906101000a900460ff1615611d3157611d2a8484846117a8565b9050611fbf565b6000611d3c30611005565b9050600060125482101590506000818015611da45750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b8015611db857506000611db630611005565b115b90508015611dcc57611dcb60125461231f565b5b611e55856040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461197b9092919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ea48888612361565b611eae5785611eba565b611eb98888886124be565b5b9050611f0e81600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fae919061291d565b60405180910390a360019450505050505b9392505050565b600061200883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612667565b905092915050565b600061205283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061197b565b905092915050565b6000600267ffffffffffffffff81111561207757612076613032565b5b6040519080825280602002602001820160405280156120a55781602001602082028036833780820191505090505b50905030816000815181106120bd576120bc613061565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061212e5761212d613061565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016121ee959493929190613189565b600060405180830381600087803b15801561220857600080fd5b505af115801561221c573d6000803e3d6000fd5b505050505050565b60008082846122339190612f4a565b905083811015612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f9061322f565b60405180910390fd5b8091505092915050565b601154811115806122dc5750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61231b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123129061329b565b60405180910390fd5b5050565b6001601360006101000a81548160ff0219169083151502179055506123438161205a565b6000601360006101000a81548160ff02191690831515021790555050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124045750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1580156124b65750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806124b55750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b5b905092915050565b600080601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461251e57600b54612522565b600c545b9050600061254d600d5461253f84876126ca90919063ffffffff16565b611fc690919063ffffffff16565b90506125a181600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222490919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612641919061291d565b60405180910390a361265c818561201090919063ffffffff16565b925050509392505050565b600080831182906126ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a591906127dd565b60405180910390fd5b50600083856126bd9190612dd1565b9050809150509392505050565b60008083036126dc576000905061273e565b600082846126ea9190612d48565b90508284826126f99190612dd1565b14612739576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127309061332d565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561277e578082015181840152602081019050612763565b8381111561278d576000848401525b50505050565b6000601f19601f8301169050919050565b60006127af82612744565b6127b9818561274f565b93506127c9818560208601612760565b6127d281612793565b840191505092915050565b600060208201905081810360008301526127f781846127a4565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061282f82612804565b9050919050565b61283f81612824565b811461284a57600080fd5b50565b60008135905061285c81612836565b92915050565b6000819050919050565b61287581612862565b811461288057600080fd5b50565b6000813590506128928161286c565b92915050565b600080604083850312156128af576128ae6127ff565b5b60006128bd8582860161284d565b92505060206128ce85828601612883565b9150509250929050565b60008115159050919050565b6128ed816128d8565b82525050565b600060208201905061290860008301846128e4565b92915050565b61291781612862565b82525050565b6000602082019050612932600083018461290e565b92915050565b60006020828403121561294e5761294d6127ff565b5b600061295c84828501612883565b91505092915050565b60008060006060848603121561297e5761297d6127ff565b5b600061298c8682870161284d565b935050602061299d8682870161284d565b92505060406129ae86828701612883565b9150509250925092565b6000602082840312156129ce576129cd6127ff565b5b60006129dc8482850161284d565b91505092915050565b600060ff82169050919050565b6129fb816129e5565b82525050565b6000602082019050612a1660008301846129f2565b92915050565b60008060408385031215612a3357612a326127ff565b5b6000612a4185828601612883565b9250506020612a5285828601612883565b9150509250929050565b612a65816128d8565b8114612a7057600080fd5b50565b600081359050612a8281612a5c565b92915050565b60008060408385031215612a9f57612a9e6127ff565b5b6000612aad8582860161284d565b9250506020612abe85828601612a73565b9150509250929050565b6000612ad382612804565b9050919050565b612ae381612ac8565b82525050565b6000602082019050612afe6000830184612ada565b92915050565b612b0d81612824565b82525050565b6000602082019050612b286000830184612b04565b92915050565b60008060408385031215612b4557612b446127ff565b5b6000612b538582860161284d565b9250506020612b648582860161284d565b9150509250929050565b612b7781612ac8565b8114612b8257600080fd5b50565b600081359050612b9481612b6e565b92915050565b600060208284031215612bb057612baf6127ff565b5b6000612bbe84828501612b85565b91505092915050565b6000819050919050565b6000612bec612be7612be284612804565b612bc7565b612804565b9050919050565b6000612bfe82612bd1565b9050919050565b6000612c1082612bf3565b9050919050565b612c2081612c05565b82525050565b6000602082019050612c3b6000830184612c17565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612c7760068361274f565b9150612c8282612c41565b602082019050919050565b60006020820190508181036000830152612ca681612c6a565b9050919050565b7f63616e2774206578636565642031250000000000000000000000000000000000600082015250565b6000612ce3600f8361274f565b9150612cee82612cad565b602082019050919050565b60006020820190508181036000830152612d1281612cd6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d5382612862565b9150612d5e83612862565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d9757612d96612d19565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ddc82612862565b9150612de783612862565b925082612df757612df6612da2565b5b828204905092915050565b6000612e0d82612bf3565b9050919050565b612e1d81612e02565b82525050565b6000602082019050612e386000830184612e14565b92915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000612e74600b8361274f565b9150612e7f82612e3e565b602082019050919050565b60006020820190508181036000830152612ea381612e67565b9050919050565b6000612eb582612862565b9150612ec083612862565b925082821015612ed357612ed2612d19565b5b828203905092915050565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b6000612f1460188361274f565b9150612f1f82612ede565b602082019050919050565b60006020820190508181036000830152612f4381612f07565b9050919050565b6000612f5582612862565b9150612f6083612862565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612f9557612f94612d19565b5b828201905092915050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000612ffc603e8361274f565b915061300782612fa0565b604082019050919050565b6000602082019050818103600083015261302b81612fef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006130b56130b06130ab84613090565b612bc7565b612862565b9050919050565b6130c58161309a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61310081612824565b82525050565b600061311283836130f7565b60208301905092915050565b6000602082019050919050565b6000613136826130cb565b61314081856130d6565b935061314b836130e7565b8060005b8381101561317c5781516131638882613106565b975061316e8361311e565b92505060018101905061314f565b5085935050505092915050565b600060a08201905061319e600083018861290e565b6131ab60208301876130bc565b81810360408301526131bd818661312b565b90506131cc6060830185612e14565b6131d9608083018461290e565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613219601b8361274f565b9150613224826131e3565b602082019050919050565b600060208201905081810360008301526132488161320c565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061328560118361274f565b91506132908261324f565b602082019050919050565b600060208201905081810360008301526132b481613278565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061331760218361274f565b9150613322826132bb565b604082019050919050565b600060208201905081810360008301526133468161330a565b905091905056fea2646970667358221220a5005bd073ad000cea95ef88a5dcc5b2471261a657238cf5261704e8b6903d8764736f6c634300080d0033

Deployed Bytecode Sourcemap

5539:9615:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7909:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8331:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7639:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14079:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8849:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14649:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14230:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3434:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7733:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13602:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8555:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6407:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14380:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14524:117;;;;;;;;;;;;;:::i;:::-;;13475:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6371:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8079:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6489:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6058:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14864:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7995:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7819:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6621:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8685:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3107:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13382:79;;;;;;;;;;;;;:::i;:::-;;6821:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12971:403;;;;;;;;;;;;;:::i;:::-;;8190:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3277:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3834:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13897:174;;;;;;;;;;;;;:::i;:::-;;13769:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15021:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6590:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3608:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7909:80;7957:13;7981:5;;;;;;;;;;;;;;;;;7974:12;;7909:80;:::o;8331:216::-;8406:4;8458:6;8423:11;:23;8435:10;8423:23;;;;;;;;;;;;;;;:32;8447:7;8423:32;;;;;;;;;;;;;;;:41;;;;8501:7;8480:37;;8489:10;8480:37;;;8510:6;8480:37;;;;;;:::i;:::-;;;;;;;;8535:4;8528:11;;8331:216;;;;:::o;7639:88::-;7694:7;7712:12;;7705:19;;7639:88;:::o;14079:139::-;14143:4;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14167:43:::1;14190:4;14197;;;;;;;;;;;14203:6;14167:14;:43::i;:::-;14160:50;;14079:139:::0;;;:::o;8849:370::-;8949:4;9004:17;8969:11;:19;8981:6;8969:19;;;;;;;;;;;;;;;:31;8989:10;8969:31;;;;;;;;;;;;;;;;:52;8966:186;;9071:69;9107:6;9071:69;;;;;;;;;;;;;;;;;:11;:19;9083:6;9071:19;;;;;;;;;;;;;;;:31;9091:10;9071:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9037:11;:19;9049:6;9037:19;;;;;;;;;;;;;;;:31;9057:10;9037:31;;;;;;;;;;;;;;;:103;;;;8966:186;9171:40;9185:6;9193:9;9204:6;9171:13;:40::i;:::-;9164:47;;8849:370;;;;;:::o;14649:206::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14747:21:::1;14764:3;14747:12;;:16;;:21;;;;:::i;:::-;14737:6;:31;;14728:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;14840:7;14831:6;:16;;;;:::i;:::-;14799:29;:48;;;;14649:206:::0;:::o;14230:142::-;14283:7;14310:54;14348:15;14358:4;;;;;;;;;;;14348:9;:15::i;:::-;14310:33;14327:15;14337:4;;;;;;;;;;;14327:9;:15::i;:::-;14310:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;14303:61;;14230:142;:::o;3434:103::-;3489:4;3524:5;;;;;;;;;;;3513:16;;:7;:16;;;3506:23;;3434:103;;;:::o;7733:80::-;7785:5;5944:1;7794:16;;7733:80;:::o;13602:159::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13706:12:::1;13692:11;:26;;;;13742:11;13729:10;:24;;;;13602:159:::0;;:::o;8555:122::-;8610:4;8634:35;8642:7;8651:17;8634:7;:35::i;:::-;8627:42;;8555:122;;;:::o;6407:30::-;;;;:::o;14380:135::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14490:16:::1;14464:15;;:43;;;;;;;;;;;;;;;;;;14380:135:::0;:::o;14524:117::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14594:5:::1;14577:14;;:22;;;;;;;;;;;;;;;;;;14628:5;14610:15;;:23;;;;;;;;;;;;;;;;;;14524:117::o:0;13475:119::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13580:6:::1;13558:11;:19;13570:6;13558:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13475:119:::0;;:::o;6371:29::-;;;;:::o;8079:105::-;8145:7;8163:9;:18;8173:7;8163:18;;;;;;;;;;;;;;;;8156:25;;8079:105;;;:::o;6489:92::-;;;;;;;;;;;;;:::o;6058:59::-;;;;:::o;14864:149::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15002:3:::1;14983:14;14968:12;;:29;;;;:::i;:::-;14967:38;;;;:::i;:::-;14949:15;:56;;;;14864:149:::0;:::o;7995:78::-;8047:7;8065:5;;;;;;;;;;;8058:12;;7995:78;:::o;7819:84::-;7869:13;7893:7;;;;;;;;;;;;;;;;;7886:14;;7819:84;:::o;6621:19::-;;;;;;;;;;;;;:::o;8685:156::-;8765:4;8789:44;8803:10;8815:9;8826:6;8789:13;:44::i;:::-;8782:51;;8685:156;;;;:::o;3107:94::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3189:4:::1;3167:14:::0;:19:::1;3182:3;3167:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3107:94:::0;:::o;13382:79::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13449:4:::1;13435:11;;:18;;;;;;;;;;;;;;;;;;13382:79::o:0;6821:74::-;;;;:::o;12971:403::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13022:28:::1;13053:24;13071:4;13053:9;:24::i;:::-;13022:55;;13090:24;13141:29;;13117:20;:53;;13090:80;;13187:19;13210;:51;;;;;13260:1;13233:24;13251:4;13233:9;:24::i;:::-;:28;13210:51;13187:75;;13276:14;13273:94;;;13307:47;13324:29;;13307:16;:47::i;:::-;13273:94;13009:365;;;12971:403::o:0;8190:133::-;8274:7;8292:11;:19;8304:6;8292:19;;;;;;;;;;;;;;;:28;8312:7;8292:28;;;;;;;;;;;;;;;;8285:35;;8190:133;;;;:::o;3277:97::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3361:5:::1;3339:14;:19;3354:3;3339:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3277:97:::0;:::o;3834:173::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3918:3:::1;3910:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3954:4;3932:14:::0;:19:::1;3947:3;3932:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3974:25;3995:3;3974:25;;;;;;:::i;:::-;;;;;;;;3834:173:::0;:::o;13897:174::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13949:26:::1;13978:21;13949:50;;14018:15;;;;;;;;;;;14010:33;;:53;14044:18;14010:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13938:133;13897:174::o:0;13769:118::-;2823:19;2831:10;2823:7;:19::i;:::-;2815:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13876:3:::1;13863:8;13848:12;;:23;;;;:::i;:::-;13846:33;;;;:::i;:::-;13837:6;:42;;;;13769:118:::0;:::o;15021:128::-;2992:24;3005:10;2992:12;:24::i;:::-;2984:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;15135:6:::1;15109:15;:23;15125:6;15109:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;15021:128:::0;;:::o;6590:24::-;;;;;;;;;;;;;:::o;3608:107::-;3664:4;3688:14;:19;3703:3;3688:19;;;;;;;;;;;;;;;;;;;;;;;;;3681:26;;3608:107;;;:::o;10797:330::-;10890:4;10927:53;10949:6;10927:53;;;;;;;;;;;;;;;;;:9;:17;10937:6;10927:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10907:9;:17;10917:6;10907:17;;;;;;;;;;;;;;;:73;;;;11014:32;11039:6;11014:9;:20;11024:9;11014:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10991:9;:20;11001:9;10991:20;;;;;;;;;;;;;;;:55;;;;11079:9;11062:35;;11071:6;11062:35;;;11090:6;11062:35;;;;;;:::i;:::-;;;;;;;;11115:4;11108:11;;10797:330;;;;;:::o;493:192::-;579:7;612:1;607;:6;;615:12;599:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;639:9;655:1;651;:5;;;;:::i;:::-;639:17;;676:1;669:8;;;493:192;;;;;:::o;9227:1558::-;9319:4;9340:14;:22;9355:6;9340:22;;;;;;;;;;;;;;;;;;;;;;;;;9339:23;:53;;;;;9367:14;:25;9382:9;9367:25;;;;;;;;;;;;;;;;;;;;;;;;;9366:26;9339:53;9336:133;;;9417:11;;;;;;;;;;;9409:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;9336:133;9521:15;;;;;;;;;;;:42;;;;;9541:14;:22;9556:6;9541:22;;;;;;;;;;;;;;;;;;;;;;;;;9540:23;9521:42;:72;;;;;9588:4;9567:26;;:9;:26;;;;9521:72;:103;;;;;9619:4;;;;;;;;;;;9598:26;;:9;:26;;;;9521:103;:124;;;;;9641:4;;;;;;;;;;;9628:17;;:9;:17;;;;9521:124;:156;;;;;9662:15;;;;;;;;;;;9649:28;;:9;:28;;;;9521:156;9517:358;;;9693:18;9714:20;9724:9;9714;:20::i;:::-;9693:41;;9782:15;;9771:6;9758:10;:19;;;;:::i;:::-;9757:40;;9749:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;9678:197;9517:358;9939:14;;;;;;;;;;;9936:47;;;9955:28;9968:6;9976;9955:12;:28::i;:::-;9936:47;9999:6;;;;;;;;;;;9996:63;;;10015:41;10030:6;10038:9;10049:6;10015:14;:41::i;:::-;10008:48;;;;9996:63;10077:28;10108:24;10126:4;10108:9;:24::i;:::-;10077:55;;10145:24;10196:29;;10172:20;:53;;10145:80;;10242:19;10265;:38;;;;;10299:4;;;;;;;;;;;10288:15;;:9;:15;;;10265:38;:70;;;;;10334:1;10307:24;10325:4;10307:9;:24::i;:::-;:28;10265:70;10242:94;;10350:14;10347:62;;;10367:39;10376:29;;10367:8;:39::i;:::-;10347:62;10441:53;10463:6;10441:53;;;;;;;;;;;;;;;;;:9;:17;10451:6;10441:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10421:9;:17;10431:6;10421:17;;;;;;;;;;;;;;;:73;;;;10507:22;10532:32;10546:6;10554:9;10532:13;:32::i;:::-;:78;;10604:6;10532:78;;;10567:34;10575:6;10583:9;10594:6;10567:7;:34::i;:::-;10532:78;10507:103;;10654:40;10679:14;10654:9;:20;10664:9;10654:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10631:9;:20;10641:9;10631:20;;;;;;;;;;;;;;;:63;;;;10729:9;10712:43;;10721:6;10712:43;;;10740:14;10712:43;;;;;;:::i;:::-;;;;;;;;10773:4;10766:11;;;;;;9227:1558;;;;;;:::o;947:132::-;1005:7;1032:39;1036:1;1039;1032:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1025:46;;947:132;;;;:::o;351:136::-;409:7;436:43;440:1;443;436:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;429:50;;351:136;;;;:::o;12094:491::-;12222:21;12260:1;12246:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12222:40;;12291:4;12273;12278:1;12273:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12317:4;;;;;;;;;;;12307;12312:1;12307:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;12360:6;;;;;;;;;;;:57;;;12432:11;12458:1;12502:4;12521:15;;;;;;;;;;;12551;12360:217;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12149:436;12094:491;:::o;164:181::-;222:7;242:9;258:1;254;:5;;;;:::i;:::-;242:17;;283:1;278;:6;;270:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;336:1;329:8;;;164:181;;;;:::o;11135:160::-;11232:6;;11222;:16;;:43;;;;11242:15;:23;11258:6;11242:23;;;;;;;;;;;;;;;;;;;;;;;;;11222:43;11214:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;11135:160;;:::o;11987:95::-;6967:4;6958:6;;:13;;;;;;;;;;;;;;;;;;12050:24:::1;12067:6;12050:16;:24::i;:::-;6985:5:::0;6976:6;;:14;;;;;;;;;;;;;;;;;;11987:95;:::o;11304:206::-;11385:4;11413:11;:19;11425:6;11413:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;11436:11;:22;11448:9;11436:22;;;;;;;;;;;;;;;;;;;;;;;;;11413:45;11411:48;:90;;;;;11475:4;;;;;;;;;;;11465:14;;:6;:14;;;:35;;;;11496:4;;;;;;;;;;;11483:17;;:9;:17;;;11465:35;11411:90;11402:101;;11304:206;;;;:::o;11518:461::-;11604:7;11624:23;11663:4;;;;;;;;;;;11650:17;;:9;:17;;;:44;;11684:10;;11650:44;;;11670:11;;11650:44;11624:70;;11705:17;11745:47;11777:14;;11745:27;11756:15;11745:6;:10;;:27;;;;:::i;:::-;:31;;:47;;;;:::i;:::-;11733:59;;11830:39;11859:9;11830;:24;11848:4;11830:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11803:9;:24;11821:4;11803:24;;;;;;;;;;;;;;;:66;;;;11910:4;11885:42;;11894:6;11885:42;;;11917:9;11885:42;;;;;;:::i;:::-;;;;;;;;11950:21;11961:9;11950:6;:10;;:21;;;;:::i;:::-;11943:28;;;;11518:461;;;;;:::o;1085:345::-;1171:7;1270:1;1266;:5;1273:12;1258:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1297:9;1313:1;1309;:5;;;;:::i;:::-;1297:17;;1421:1;1414:8;;;1085:345;;;;;:::o;691:250::-;749:7;778:1;773;:6;769:47;;803:1;796:8;;;;769:47;828:9;844:1;840;:5;;;;:::i;:::-;828:17;;873:1;868;864;:5;;;;:::i;:::-;:10;856:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;932:1;925:8;;;691:250;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:329::-;4865:6;4914:2;4902:9;4893:7;4889:23;4885:32;4882:119;;;4920:79;;:::i;:::-;4882:119;5040:1;5065:53;5110:7;5101:6;5090:9;5086:22;5065:53;:::i;:::-;5055:63;;5011:117;4806:329;;;;:::o;5141:86::-;5176:7;5216:4;5209:5;5205:16;5194:27;;5141:86;;;:::o;5233:112::-;5316:22;5332:5;5316:22;:::i;:::-;5311:3;5304:35;5233:112;;:::o;5351:214::-;5440:4;5478:2;5467:9;5463:18;5455:26;;5491:67;5555:1;5544:9;5540:17;5531:6;5491:67;:::i;:::-;5351:214;;;;:::o;5571:474::-;5639:6;5647;5696:2;5684:9;5675:7;5671:23;5667:32;5664:119;;;5702:79;;:::i;:::-;5664:119;5822:1;5847:53;5892:7;5883:6;5872:9;5868:22;5847:53;:::i;:::-;5837:63;;5793:117;5949:2;5975:53;6020:7;6011:6;6000:9;5996:22;5975:53;:::i;:::-;5965:63;;5920:118;5571:474;;;;;:::o;6051:116::-;6121:21;6136:5;6121:21;:::i;:::-;6114:5;6111:32;6101:60;;6157:1;6154;6147:12;6101:60;6051:116;:::o;6173:133::-;6216:5;6254:6;6241:20;6232:29;;6270:30;6294:5;6270:30;:::i;:::-;6173:133;;;;:::o;6312:468::-;6377:6;6385;6434:2;6422:9;6413:7;6409:23;6405:32;6402:119;;;6440:79;;:::i;:::-;6402:119;6560:1;6585:53;6630:7;6621:6;6610:9;6606:22;6585:53;:::i;:::-;6575:63;;6531:117;6687:2;6713:50;6755:7;6746:6;6735:9;6731:22;6713:50;:::i;:::-;6703:60;;6658:115;6312:468;;;;;:::o;6786:104::-;6831:7;6860:24;6878:5;6860:24;:::i;:::-;6849:35;;6786:104;;;:::o;6896:142::-;6999:32;7025:5;6999:32;:::i;:::-;6994:3;6987:45;6896:142;;:::o;7044:254::-;7153:4;7191:2;7180:9;7176:18;7168:26;;7204:87;7288:1;7277:9;7273:17;7264:6;7204:87;:::i;:::-;7044:254;;;;:::o;7304:118::-;7391:24;7409:5;7391:24;:::i;:::-;7386:3;7379:37;7304:118;;:::o;7428:222::-;7521:4;7559:2;7548:9;7544:18;7536:26;;7572:71;7640:1;7629:9;7625:17;7616:6;7572:71;:::i;:::-;7428:222;;;;:::o;7656:474::-;7724:6;7732;7781:2;7769:9;7760:7;7756:23;7752:32;7749:119;;;7787:79;;:::i;:::-;7749:119;7907:1;7932:53;7977:7;7968:6;7957:9;7953:22;7932:53;:::i;:::-;7922:63;;7878:117;8034:2;8060:53;8105:7;8096:6;8085:9;8081:22;8060:53;:::i;:::-;8050:63;;8005:118;7656:474;;;;;:::o;8136:138::-;8217:32;8243:5;8217:32;:::i;:::-;8210:5;8207:43;8197:71;;8264:1;8261;8254:12;8197:71;8136:138;:::o;8280:155::-;8334:5;8372:6;8359:20;8350:29;;8388:41;8423:5;8388:41;:::i;:::-;8280:155;;;;:::o;8441:345::-;8508:6;8557:2;8545:9;8536:7;8532:23;8528:32;8525:119;;;8563:79;;:::i;:::-;8525:119;8683:1;8708:61;8761:7;8752:6;8741:9;8737:22;8708:61;:::i;:::-;8698:71;;8654:125;8441:345;;;;:::o;8792:60::-;8820:3;8841:5;8834:12;;8792:60;;;:::o;8858:142::-;8908:9;8941:53;8959:34;8968:24;8986:5;8968:24;:::i;:::-;8959:34;:::i;:::-;8941:53;:::i;:::-;8928:66;;8858:142;;;:::o;9006:126::-;9056:9;9089:37;9120:5;9089:37;:::i;:::-;9076:50;;9006:126;;;:::o;9138:144::-;9206:9;9239:37;9270:5;9239:37;:::i;:::-;9226:50;;9138:144;;;:::o;9288:167::-;9393:55;9442:5;9393:55;:::i;:::-;9388:3;9381:68;9288:167;;:::o;9461:258::-;9572:4;9610:2;9599:9;9595:18;9587:26;;9623:89;9709:1;9698:9;9694:17;9685:6;9623:89;:::i;:::-;9461:258;;;;:::o;9725:156::-;9865:8;9861:1;9853:6;9849:14;9842:32;9725:156;:::o;9887:365::-;10029:3;10050:66;10114:1;10109:3;10050:66;:::i;:::-;10043:73;;10125:93;10214:3;10125:93;:::i;:::-;10243:2;10238:3;10234:12;10227:19;;9887:365;;;:::o;10258:419::-;10424:4;10462:2;10451:9;10447:18;10439:26;;10511:9;10505:4;10501:20;10497:1;10486:9;10482:17;10475:47;10539:131;10665:4;10539:131;:::i;:::-;10531:139;;10258:419;;;:::o;10683:165::-;10823:17;10819:1;10811:6;10807:14;10800:41;10683:165;:::o;10854:366::-;10996:3;11017:67;11081:2;11076:3;11017:67;:::i;:::-;11010:74;;11093:93;11182:3;11093:93;:::i;:::-;11211:2;11206:3;11202:12;11195:19;;10854:366;;;:::o;11226:419::-;11392:4;11430:2;11419:9;11415:18;11407:26;;11479:9;11473:4;11469:20;11465:1;11454:9;11450:17;11443:47;11507:131;11633:4;11507:131;:::i;:::-;11499:139;;11226:419;;;:::o;11651:180::-;11699:77;11696:1;11689:88;11796:4;11793:1;11786:15;11820:4;11817:1;11810:15;11837:348;11877:7;11900:20;11918:1;11900:20;:::i;:::-;11895:25;;11934:20;11952:1;11934:20;:::i;:::-;11929:25;;12122:1;12054:66;12050:74;12047:1;12044:81;12039:1;12032:9;12025:17;12021:105;12018:131;;;12129:18;;:::i;:::-;12018:131;12177:1;12174;12170:9;12159:20;;11837:348;;;;:::o;12191:180::-;12239:77;12236:1;12229:88;12336:4;12333:1;12326:15;12360:4;12357:1;12350:15;12377:185;12417:1;12434:20;12452:1;12434:20;:::i;:::-;12429:25;;12468:20;12486:1;12468:20;:::i;:::-;12463:25;;12507:1;12497:35;;12512:18;;:::i;:::-;12497:35;12554:1;12551;12547:9;12542:14;;12377:185;;;;:::o;12568:134::-;12626:9;12659:37;12690:5;12659:37;:::i;:::-;12646:50;;12568:134;;;:::o;12708:147::-;12803:45;12842:5;12803:45;:::i;:::-;12798:3;12791:58;12708:147;;:::o;12861:238::-;12962:4;13000:2;12989:9;12985:18;12977:26;;13013:79;13089:1;13078:9;13074:17;13065:6;13013:79;:::i;:::-;12861:238;;;;:::o;13105:161::-;13245:13;13241:1;13233:6;13229:14;13222:37;13105:161;:::o;13272:366::-;13414:3;13435:67;13499:2;13494:3;13435:67;:::i;:::-;13428:74;;13511:93;13600:3;13511:93;:::i;:::-;13629:2;13624:3;13620:12;13613:19;;13272:366;;;:::o;13644:419::-;13810:4;13848:2;13837:9;13833:18;13825:26;;13897:9;13891:4;13887:20;13883:1;13872:9;13868:17;13861:47;13925:131;14051:4;13925:131;:::i;:::-;13917:139;;13644:419;;;:::o;14069:191::-;14109:4;14129:20;14147:1;14129:20;:::i;:::-;14124:25;;14163:20;14181:1;14163:20;:::i;:::-;14158:25;;14202:1;14199;14196:8;14193:34;;;14207:18;;:::i;:::-;14193:34;14252:1;14249;14245:9;14237:17;;14069:191;;;;:::o;14266:174::-;14406:26;14402:1;14394:6;14390:14;14383:50;14266:174;:::o;14446:366::-;14588:3;14609:67;14673:2;14668:3;14609:67;:::i;:::-;14602:74;;14685:93;14774:3;14685:93;:::i;:::-;14803:2;14798:3;14794:12;14787:19;;14446:366;;;:::o;14818:419::-;14984:4;15022:2;15011:9;15007:18;14999:26;;15071:9;15065:4;15061:20;15057:1;15046:9;15042:17;15035:47;15099:131;15225:4;15099:131;:::i;:::-;15091:139;;14818:419;;;:::o;15243:305::-;15283:3;15302:20;15320:1;15302:20;:::i;:::-;15297:25;;15336:20;15354:1;15336:20;:::i;:::-;15331:25;;15490:1;15422:66;15418:74;15415:1;15412:81;15409:107;;;15496:18;;:::i;:::-;15409:107;15540:1;15537;15533:9;15526:16;;15243:305;;;;:::o;15554:249::-;15694:34;15690:1;15682:6;15678:14;15671:58;15763:32;15758:2;15750:6;15746:15;15739:57;15554:249;:::o;15809:366::-;15951:3;15972:67;16036:2;16031:3;15972:67;:::i;:::-;15965:74;;16048:93;16137:3;16048:93;:::i;:::-;16166:2;16161:3;16157:12;16150:19;;15809:366;;;:::o;16181:419::-;16347:4;16385:2;16374:9;16370:18;16362:26;;16434:9;16428:4;16424:20;16420:1;16409:9;16405:17;16398:47;16462:131;16588:4;16462:131;:::i;:::-;16454:139;;16181:419;;;:::o;16606:180::-;16654:77;16651:1;16644:88;16751:4;16748:1;16741:15;16775:4;16772:1;16765:15;16792:180;16840:77;16837:1;16830:88;16937:4;16934:1;16927:15;16961:4;16958:1;16951:15;16978:85;17023:7;17052:5;17041:16;;16978:85;;;:::o;17069:158::-;17127:9;17160:61;17178:42;17187:32;17213:5;17187:32;:::i;:::-;17178:42;:::i;:::-;17160:61;:::i;:::-;17147:74;;17069:158;;;:::o;17233:147::-;17328:45;17367:5;17328:45;:::i;:::-;17323:3;17316:58;17233:147;;:::o;17386:114::-;17453:6;17487:5;17481:12;17471:22;;17386:114;;;:::o;17506:184::-;17605:11;17639:6;17634:3;17627:19;17679:4;17674:3;17670:14;17655:29;;17506:184;;;;:::o;17696:132::-;17763:4;17786:3;17778:11;;17816:4;17811:3;17807:14;17799:22;;17696:132;;;:::o;17834:108::-;17911:24;17929:5;17911:24;:::i;:::-;17906:3;17899:37;17834:108;;:::o;17948:179::-;18017:10;18038:46;18080:3;18072:6;18038:46;:::i;:::-;18116:4;18111:3;18107:14;18093:28;;17948:179;;;;:::o;18133:113::-;18203:4;18235;18230:3;18226:14;18218:22;;18133:113;;;:::o;18282:732::-;18401:3;18430:54;18478:5;18430:54;:::i;:::-;18500:86;18579:6;18574:3;18500:86;:::i;:::-;18493:93;;18610:56;18660:5;18610:56;:::i;:::-;18689:7;18720:1;18705:284;18730:6;18727:1;18724:13;18705:284;;;18806:6;18800:13;18833:63;18892:3;18877:13;18833:63;:::i;:::-;18826:70;;18919:60;18972:6;18919:60;:::i;:::-;18909:70;;18765:224;18752:1;18749;18745:9;18740:14;;18705:284;;;18709:14;19005:3;18998:10;;18406:608;;;18282:732;;;;:::o;19020:847::-;19291:4;19329:3;19318:9;19314:19;19306:27;;19343:71;19411:1;19400:9;19396:17;19387:6;19343:71;:::i;:::-;19424:80;19500:2;19489:9;19485:18;19476:6;19424:80;:::i;:::-;19551:9;19545:4;19541:20;19536:2;19525:9;19521:18;19514:48;19579:108;19682:4;19673:6;19579:108;:::i;:::-;19571:116;;19697:80;19773:2;19762:9;19758:18;19749:6;19697:80;:::i;:::-;19787:73;19855:3;19844:9;19840:19;19831:6;19787:73;:::i;:::-;19020:847;;;;;;;;:::o;19873:177::-;20013:29;20009:1;20001:6;19997:14;19990:53;19873:177;:::o;20056:366::-;20198:3;20219:67;20283:2;20278:3;20219:67;:::i;:::-;20212:74;;20295:93;20384:3;20295:93;:::i;:::-;20413:2;20408:3;20404:12;20397:19;;20056:366;;;:::o;20428:419::-;20594:4;20632:2;20621:9;20617:18;20609:26;;20681:9;20675:4;20671:20;20667:1;20656:9;20652:17;20645:47;20709:131;20835:4;20709:131;:::i;:::-;20701:139;;20428:419;;;:::o;20853:167::-;20993:19;20989:1;20981:6;20977:14;20970:43;20853:167;:::o;21026:366::-;21168:3;21189:67;21253:2;21248:3;21189:67;:::i;:::-;21182:74;;21265:93;21354:3;21265:93;:::i;:::-;21383:2;21378:3;21374:12;21367:19;;21026:366;;;:::o;21398:419::-;21564:4;21602:2;21591:9;21587:18;21579:26;;21651:9;21645:4;21641:20;21637:1;21626:9;21622:17;21615:47;21679:131;21805:4;21679:131;:::i;:::-;21671:139;;21398:419;;;:::o;21823:220::-;21963:34;21959:1;21951:6;21947:14;21940:58;22032:3;22027:2;22019:6;22015:15;22008:28;21823:220;:::o;22049:366::-;22191:3;22212:67;22276:2;22271:3;22212:67;:::i;:::-;22205:74;;22288:93;22377:3;22288:93;:::i;:::-;22406:2;22401:3;22397:12;22390:19;;22049:366;;;:::o;22421:419::-;22587:4;22625:2;22614:9;22610:18;22602:26;;22674:9;22668:4;22664:20;22660:1;22649:9;22645:17;22638:47;22702:131;22828:4;22702:131;:::i;:::-;22694:139;;22421:419;;;:::o

Swarm Source

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