ETH Price: $3,173.50 (+3.00%)

Token

SNAPCHAT (👻)
 

Overview

Max Total Supply

10,000,000,000 👻

Holders

60

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
50,400,475.031019946 👻

Value
$0.00
0xd24b891825af7a1c4ae730db222a6d6ada9ec275
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:
SNAP

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*

4Chan and Reddit Tiktok are the past.

SnapChat - On The Road To Be The #1 independent coin in the world! Welcome all Snapers, Nice to Meme You.

TAX / 0

Website: https://t.me/snapchatcoineth
Twitter: https://twitter.com/SnapChat_Coin
Telegram: https://t.me/TTOKPortal
                                            
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

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);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    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 SNAP is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "SNAPCHAT";
    string private constant _symbol = unicode"👻";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 10000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 200; // 10000;
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 200;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 2500;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 6500;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 4;
    uint256 private swapThreshold = ( _totalSupply * 2000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0xcDdF7a92d14E8b8F1302152BfDeCA060FaCAc96e; 
    address internal constant marketing_receiver = 0xcDdF7a92d14E8b8F1302152BfDeCA060FaCAc96e;
    address internal constant liquidity_receiver = 0xcDdF7a92d14E8b8F1302152BfDeCA060FaCAc96e;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function openTrading(bool enabled) external onlyOwner {if(enabled){tradingAllowed = true;}}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function blacklist(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function setFees(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setLimits(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

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

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

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

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

}

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":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","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"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000716565b6402540be40062000026919062000767565b60015560c860025560c860035560c86004556000600a60146101000a81548160ff0219169083151502179055506000600b556109c4600c556000600d556000600e556109c4600f5561196460105560006011556127106012556001601360006101000a81548160ff0219169083151502179055506004601655620186a06107d0600154620000b5919062000767565b620000c19190620007f7565b601755620186a0600a600154620000d9919062000767565b620000e59190620007f7565b601855348015620000f557600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c5919062000899565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200022d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000253919062000899565b6040518363ffffffff1660e01b815260040162000272929190620008dc565b6020604051808303816000875af115801562000292573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b8919062000899565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cddf7a92d14e8b8f1302152bfdeca060facac96e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073cddf7a92d14e8b8f1302152bfdeca060facac96e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200056c91906200091a565b60405180910390a3505062000937565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060a57808604811115620005e257620005e16200057c565b5b6001851615620005f25780820291505b80810290506200060285620005ab565b9450620005c2565b94509492505050565b600082620006255760019050620006f8565b81620006355760009050620006f8565b81600181146200064e576002811462000659576200068f565b6001915050620006f8565b60ff8411156200066e576200066d6200057c565b5b8360020a9150848211156200068857620006876200057c565b5b50620006f8565b5060208310610133831016604e8410600b8410161715620006c95782820a905083811115620006c357620006c26200057c565b5b620006f8565b620006d88484846001620005b8565b92509050818404811115620006f257620006f16200057c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200072382620006ff565b9150620007308362000709565b92506200075f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000613565b905092915050565b60006200077482620006ff565b91506200078183620006ff565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007bd57620007bc6200057c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200080482620006ff565b91506200081183620006ff565b925082620008245762000823620007c8565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008618262000834565b9050919050565b620008738162000854565b81146200087f57600080fd5b50565b600081519050620008938162000868565b92915050565b600060208284031215620008b257620008b16200082f565b5b6000620008c28482850162000882565b91505092915050565b620008d68162000854565b82525050565b6000604082019050620008f36000830185620008cb565b620009026020830184620008cb565b9392505050565b6200091481620006ff565b82525050565b600060208201905062000931600083018462000909565b92915050565b6135b280620009476000396000f3fe6080604052600436106101445760003560e01c806348ff2b8b116100b6578063a8aa1b311161006f578063a8aa1b311461047d578063a9059cbb146104a8578063da2e3bad146104e5578063dd62ed3e1461050e578063e94dd17c1461054b578063f2fde38b146105745761014b565b806348ff2b8b1461036b57806370a082311461039457806378109e54146103d15780637d1db4a5146103fc578063893d20e81461042757806395d89b41146104525761014b565b806323b872dd1161010857806323b872dd146102375780632a9b8072146102745780632f54bf6e1461029d578063313ce567146102da5780633f4218e014610305578063404e5129146103425761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b8578063189ae5f2146101e35780631f976b7e1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561059d565b6040516101729190612618565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906126d3565b6105da565b6040516101af919061272e565b60405180910390f35b3480156101c457600080fd5b506101cd6105f1565b6040516101da9190612758565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190612773565b610632565b005b34801561021857600080fd5b50610221610792565b60405161022e9190612758565b60405180910390f35b34801561024357600080fd5b5061025e600480360381019061025991906127c6565b6107bb565b60405161026b919061272e565b60405180910390f35b34801561028057600080fd5b5061029b60048036038101906102969190612845565b610886565b005b3480156102a957600080fd5b506102c460048036038101906102bf9190612872565b6108f3565b6040516102d1919061272e565b60405180910390f35b3480156102e657600080fd5b506102ef61094c565b6040516102fc91906128bb565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190612872565b610955565b604051610339919061272e565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906128d6565b610975565b005b34801561037757600080fd5b50610392600480360381019061038d91906128d6565b610a18565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612872565b610abb565b6040516103c89190612758565b60405180910390f35b3480156103dd57600080fd5b506103e6610b04565b6040516103f39190612758565b60405180910390f35b34801561040857600080fd5b50610411610b2d565b60405161041e9190612758565b60405180910390f35b34801561043357600080fd5b5061043c610b56565b6040516104499190612925565b60405180910390f35b34801561045e57600080fd5b50610467610b7f565b6040516104749190612618565b60405180910390f35b34801561048957600080fd5b50610492610bbc565b60405161049f9190612925565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca91906126d3565b610be2565b6040516104dc919061272e565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612940565b610bf9565b005b34801561051a57600080fd5b50610535600480360381019061053091906129e2565b610cf8565b6040516105429190612758565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612773565b610d7f565b005b34801561058057600080fd5b5061059b60048036038101906105969190612a60565b610e33565b005b60606040518060400160405280600881526020017f534e415043484154000000000000000000000000000000000000000000000000815250905090565b60006105e7338484610ef5565b6001905092915050565b600061062d6106006000610abb565b61061f61060e61dead610abb565b6001546110be90919063ffffffff16565b6110be90919063ffffffff16565b905090565b61063b336108f3565b61067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190612ad9565b60405180910390fd5b6000612710846106886105f1565b6106929190612b28565b61069c9190612bb1565b90506000612710846106ac6105f1565b6106b69190612b28565b6106c09190612bb1565b90506000612710846106d06105f1565b6106da9190612b28565b6106e49190612bb1565b9050856002819055508460038190555083600481905550600061072c6103e861071e60056107106105f1565b6110d490919063ffffffff16565b6110ea90919063ffffffff16565b905080841015801561073e5750808310155b801561074a5750808210155b610789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078090612c54565b60405180910390fd5b50505050505050565b60006012546003546107a26105f1565b6107ac9190612b28565b6107b69190612bb1565b905090565b60006107c8848484611100565b61087b84336108768560405180606001604052806028815260200161355560289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112f99092919063ffffffff16565b610ef5565b600190509392505050565b61088f336108f3565b6108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c590612ad9565b60405180910390fd5b80156108f0576001600a60146101000a81548160ff0219169083151502179055505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b61097e336108f3565b6109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b490612ad9565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a21336108f3565b610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5790612ad9565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610b146105f1565b610b1e9190612b28565b610b289190612bb1565b905090565b6000601254600254610b3d6105f1565b610b479190612b28565b610b519190612bb1565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017ff09f91bb00000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bef338484611100565b6001905092915050565b610c02336108f3565b610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3890612ad9565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610c8860016012546110ea90919063ffffffff16565b600f5411158015610cb05750610caa60016012546110ea90919063ffffffff16565b60105411155b610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690612ce6565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d88336108f3565b610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe90612ad9565b60405180910390fd5b82601681905550610df8620186a0610dea846001546110d490919063ffffffff16565b6110ea90919063ffffffff16565b601781905550610e28620186a0610e1a836001546110d490919063ffffffff16565b6110ea90919063ffffffff16565b601881905550505050565b610e3c336108f3565b610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290612ad9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610eea9190612d65565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90612df2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90612e84565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110b19190612758565b60405180910390a3505050565b600081836110cc9190612ea4565b905092915050565b600081836110e29190612b28565b905092915050565b600081836110f89190612bb1565b905092915050565b61110b83838361134e565b61111583836114bf565b6111208383836115bc565b61112a838361179a565b611135838383611865565b611140838383611aa4565b61119281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110be90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006111e18484611acd565b6111eb57816111f7565b6111f6848484611b7b565b5b905061124b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112eb9190612758565b60405180910390a350505050565b6000838311158290611341576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113389190612618565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b490612f4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390612fdc565b60405180910390fd5b6000811161146f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114669061306e565b60405180910390fd5b61147883610abb565b8111156114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b190613100565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115635750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115b857600a60149054906101000a900460ff166115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae9061316c565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116605750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116ba5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116f4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561179557611701610b04565b61175382600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2390919063ffffffff16565b1115611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b906131d8565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118415750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118615760016014600082825461185991906131f8565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ad576118c2610792565b811115806119195750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061196d5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a390613278565b60405180910390fd5b5b6119b5610b2d565b81111580611a0c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a605750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9690613278565b60405180910390fd5b505050565b611aaf838383611d39565b15611ac857611abf601754611e73565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b735750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611b8885856120c4565b1115611d18576000611bc0611b9d86866120c4565b611bb2601254866110ea90919063ffffffff16565b6110d490919063ffffffff16565b9050611c1481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2390919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb49190612758565b60405180910390a36000600e541115611cfd57611cfc3061dead611cf7600e54611ce9601254896110ea90919063ffffffff16565b6110d490919063ffffffff16565b611100565b5b611d1081846110be90919063ffffffff16565b915050611d1c565b8190505b9392505050565b60008183611d3191906131f8565b905092915050565b60008060185483101590506000601754611d5230610abb565b10159050601560009054906101000a900460ff16158015611d7f5750601360009054906101000a900460ff165b8015611d975750600a60149054906101000a900460ff165b8015611da05750815b8015611df65750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e4f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611e5f575060165460145410155b8015611e685750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611ee16002611ed3600d54611ec5600c54611eb76001600b54611d2390919063ffffffff16565b611d2390919063ffffffff16565b611d2390919063ffffffff16565b6110d490919063ffffffff16565b90506000611f0c82611efe600b54866110d490919063ffffffff16565b6110ea90919063ffffffff16565b90506000611f2382856110be90919063ffffffff16565b90506000479050611f3382612253565b6000611f4882476110be90919063ffffffff16565b90506000611f73611f64600b54886110be90919063ffffffff16565b836110ea90919063ffffffff16565b90506000611f8c600b54836110d490919063ffffffff16565b90506000811115611fa257611fa18682612496565b5b6000611fcc600c54611fbe6002866110d490919063ffffffff16565b6110d490919063ffffffff16565b905060008111156120335773cddf7a92d14e8b8f1302152bfdeca060facac96e73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612031573d6000803e3d6000fd5b505b6000479050600081111561209d5773cddf7a92d14e8b8f1302152bfdeca060facac96e73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561209b573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121675750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121895761218260646012546110be90919063ffffffff16565b905061224d565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e857601054905061224d565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361224757600f54905061224d565b60115490505b92915050565b6000600267ffffffffffffffff8111156122705761226f613298565b5b60405190808252806020026020018201604052801561229e5781602001602082028036833780820191505090505b50905030816000815181106122b6576122b56132c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612381919061330b565b81600181518110612395576123946132c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123fc30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ef5565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612460959493929190613431565b600060405180830381600087803b15801561247a57600080fd5b505af115801561248e573d6000803e3d6000fd5b505050505050565b6124c330600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ef5565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073cddf7a92d14e8b8f1302152bfdeca060facac96e426040518863ffffffff1660e01b815260040161253e9695949392919061348b565b60606040518083038185885af115801561255c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125819190613501565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125c25780820151818401526020810190506125a7565b60008484015250505050565b6000601f19601f8301169050919050565b60006125ea82612588565b6125f48185612593565b93506126048185602086016125a4565b61260d816125ce565b840191505092915050565b6000602082019050818103600083015261263281846125df565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061266a8261263f565b9050919050565b61267a8161265f565b811461268557600080fd5b50565b60008135905061269781612671565b92915050565b6000819050919050565b6126b08161269d565b81146126bb57600080fd5b50565b6000813590506126cd816126a7565b92915050565b600080604083850312156126ea576126e961263a565b5b60006126f885828601612688565b9250506020612709858286016126be565b9150509250929050565b60008115159050919050565b61272881612713565b82525050565b6000602082019050612743600083018461271f565b92915050565b6127528161269d565b82525050565b600060208201905061276d6000830184612749565b92915050565b60008060006060848603121561278c5761278b61263a565b5b600061279a868287016126be565b93505060206127ab868287016126be565b92505060406127bc868287016126be565b9150509250925092565b6000806000606084860312156127df576127de61263a565b5b60006127ed86828701612688565b93505060206127fe86828701612688565b925050604061280f868287016126be565b9150509250925092565b61282281612713565b811461282d57600080fd5b50565b60008135905061283f81612819565b92915050565b60006020828403121561285b5761285a61263a565b5b600061286984828501612830565b91505092915050565b6000602082840312156128885761288761263a565b5b600061289684828501612688565b91505092915050565b600060ff82169050919050565b6128b58161289f565b82525050565b60006020820190506128d060008301846128ac565b92915050565b600080604083850312156128ed576128ec61263a565b5b60006128fb85828601612688565b925050602061290c85828601612830565b9150509250929050565b61291f8161265f565b82525050565b600060208201905061293a6000830184612916565b92915050565b600080600080600080600060e0888a03121561295f5761295e61263a565b5b600061296d8a828b016126be565b975050602061297e8a828b016126be565b965050604061298f8a828b016126be565b95505060606129a08a828b016126be565b94505060806129b18a828b016126be565b93505060a06129c28a828b016126be565b92505060c06129d38a828b016126be565b91505092959891949750929550565b600080604083850312156129f9576129f861263a565b5b6000612a0785828601612688565b9250506020612a1885828601612688565b9150509250929050565b6000612a2d8261263f565b9050919050565b612a3d81612a22565b8114612a4857600080fd5b50565b600081359050612a5a81612a34565b92915050565b600060208284031215612a7657612a7561263a565b5b6000612a8484828501612a4b565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612ac3600683612593565b9150612ace82612a8d565b602082019050919050565b60006020820190508181036000830152612af281612ab6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b338261269d565b9150612b3e8361269d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b7757612b76612af9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bbc8261269d565b9150612bc78361269d565b925082612bd757612bd6612b82565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612c3e602e83612593565b9150612c4982612be2565b604082019050919050565b60006020820190508181036000830152612c6d81612c31565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612cd0602c83612593565b9150612cdb82612c74565b604082019050919050565b60006020820190508181036000830152612cff81612cc3565b9050919050565b6000819050919050565b6000612d2b612d26612d218461263f565b612d06565b61263f565b9050919050565b6000612d3d82612d10565b9050919050565b6000612d4f82612d32565b9050919050565b612d5f81612d44565b82525050565b6000602082019050612d7a6000830184612d56565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ddc602483612593565b9150612de782612d80565b604082019050919050565b60006020820190508181036000830152612e0b81612dcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e6e602283612593565b9150612e7982612e12565b604082019050919050565b60006020820190508181036000830152612e9d81612e61565b9050919050565b6000612eaf8261269d565b9150612eba8361269d565b9250828203905081811115612ed257612ed1612af9565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f34602583612593565b9150612f3f82612ed8565b604082019050919050565b60006020820190508181036000830152612f6381612f27565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fc6602383612593565b9150612fd182612f6a565b604082019050919050565b60006020820190508181036000830152612ff581612fb9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613058602983612593565b915061306382612ffc565b604082019050919050565b600060208201905081810360008301526130878161304b565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130ea603183612593565b91506130f58261308e565b604082019050919050565b60006020820190508181036000830152613119816130dd565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613156600e83612593565b915061316182613120565b602082019050919050565b6000602082019050818103600083015261318581613149565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006131c2601e83612593565b91506131cd8261318c565b602082019050919050565b600060208201905081810360008301526131f1816131b5565b9050919050565b60006132038261269d565b915061320e8361269d565b925082820190508082111561322657613225612af9565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613262601183612593565b915061326d8261322c565b602082019050919050565b6000602082019050818103600083015261329181613255565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061330581612671565b92915050565b6000602082840312156133215761332061263a565b5b600061332f848285016132f6565b91505092915050565b6000819050919050565b600061335d61335861335384613338565b612d06565b61269d565b9050919050565b61336d81613342565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133a88161265f565b82525050565b60006133ba838361339f565b60208301905092915050565b6000602082019050919050565b60006133de82613373565b6133e8818561337e565b93506133f38361338f565b8060005b8381101561342457815161340b88826133ae565b9750613416836133c6565b9250506001810190506133f7565b5085935050505092915050565b600060a0820190506134466000830188612749565b6134536020830187613364565b818103604083015261346581866133d3565b90506134746060830185612916565b6134816080830184612749565b9695505050505050565b600060c0820190506134a06000830189612916565b6134ad6020830188612749565b6134ba6040830187613364565b6134c76060830186613364565b6134d46080830185612916565b6134e160a0830184612749565b979650505050505050565b6000815190506134fb816126a7565b92915050565b60008060006060848603121561351a5761351961263a565b5b6000613528868287016134ec565b9350506020613539868287016134ec565b925050604061354a868287016134ec565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d499b00d6e0fd82d93743b861395b00e84948e24d4f01eff0da254603bdd648664736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806348ff2b8b116100b6578063a8aa1b311161006f578063a8aa1b311461047d578063a9059cbb146104a8578063da2e3bad146104e5578063dd62ed3e1461050e578063e94dd17c1461054b578063f2fde38b146105745761014b565b806348ff2b8b1461036b57806370a082311461039457806378109e54146103d15780637d1db4a5146103fc578063893d20e81461042757806395d89b41146104525761014b565b806323b872dd1161010857806323b872dd146102375780632a9b8072146102745780632f54bf6e1461029d578063313ce567146102da5780633f4218e014610305578063404e5129146103425761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b8578063189ae5f2146101e35780631f976b7e1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561059d565b6040516101729190612618565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906126d3565b6105da565b6040516101af919061272e565b60405180910390f35b3480156101c457600080fd5b506101cd6105f1565b6040516101da9190612758565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190612773565b610632565b005b34801561021857600080fd5b50610221610792565b60405161022e9190612758565b60405180910390f35b34801561024357600080fd5b5061025e600480360381019061025991906127c6565b6107bb565b60405161026b919061272e565b60405180910390f35b34801561028057600080fd5b5061029b60048036038101906102969190612845565b610886565b005b3480156102a957600080fd5b506102c460048036038101906102bf9190612872565b6108f3565b6040516102d1919061272e565b60405180910390f35b3480156102e657600080fd5b506102ef61094c565b6040516102fc91906128bb565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190612872565b610955565b604051610339919061272e565b60405180910390f35b34801561034e57600080fd5b50610369600480360381019061036491906128d6565b610975565b005b34801561037757600080fd5b50610392600480360381019061038d91906128d6565b610a18565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612872565b610abb565b6040516103c89190612758565b60405180910390f35b3480156103dd57600080fd5b506103e6610b04565b6040516103f39190612758565b60405180910390f35b34801561040857600080fd5b50610411610b2d565b60405161041e9190612758565b60405180910390f35b34801561043357600080fd5b5061043c610b56565b6040516104499190612925565b60405180910390f35b34801561045e57600080fd5b50610467610b7f565b6040516104749190612618565b60405180910390f35b34801561048957600080fd5b50610492610bbc565b60405161049f9190612925565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca91906126d3565b610be2565b6040516104dc919061272e565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190612940565b610bf9565b005b34801561051a57600080fd5b50610535600480360381019061053091906129e2565b610cf8565b6040516105429190612758565b60405180910390f35b34801561055757600080fd5b50610572600480360381019061056d9190612773565b610d7f565b005b34801561058057600080fd5b5061059b60048036038101906105969190612a60565b610e33565b005b60606040518060400160405280600881526020017f534e415043484154000000000000000000000000000000000000000000000000815250905090565b60006105e7338484610ef5565b6001905092915050565b600061062d6106006000610abb565b61061f61060e61dead610abb565b6001546110be90919063ffffffff16565b6110be90919063ffffffff16565b905090565b61063b336108f3565b61067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190612ad9565b60405180910390fd5b6000612710846106886105f1565b6106929190612b28565b61069c9190612bb1565b90506000612710846106ac6105f1565b6106b69190612b28565b6106c09190612bb1565b90506000612710846106d06105f1565b6106da9190612b28565b6106e49190612bb1565b9050856002819055508460038190555083600481905550600061072c6103e861071e60056107106105f1565b6110d490919063ffffffff16565b6110ea90919063ffffffff16565b905080841015801561073e5750808310155b801561074a5750808210155b610789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078090612c54565b60405180910390fd5b50505050505050565b60006012546003546107a26105f1565b6107ac9190612b28565b6107b69190612bb1565b905090565b60006107c8848484611100565b61087b84336108768560405180606001604052806028815260200161355560289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112f99092919063ffffffff16565b610ef5565b600190509392505050565b61088f336108f3565b6108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c590612ad9565b60405180910390fd5b80156108f0576001600a60146101000a81548160ff0219169083151502179055505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60076020528060005260406000206000915054906101000a900460ff1681565b61097e336108f3565b6109bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b490612ad9565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a21336108f3565b610a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5790612ad9565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610b146105f1565b610b1e9190612b28565b610b289190612bb1565b905090565b6000601254600254610b3d6105f1565b610b479190612b28565b610b519190612bb1565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017ff09f91bb00000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bef338484611100565b6001905092915050565b610c02336108f3565b610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3890612ad9565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610c8860016012546110ea90919063ffffffff16565b600f5411158015610cb05750610caa60016012546110ea90919063ffffffff16565b60105411155b610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce690612ce6565b60405180910390fd5b50505050505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d88336108f3565b610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe90612ad9565b60405180910390fd5b82601681905550610df8620186a0610dea846001546110d490919063ffffffff16565b6110ea90919063ffffffff16565b601781905550610e28620186a0610e1a836001546110d490919063ffffffff16565b6110ea90919063ffffffff16565b601881905550505050565b610e3c336108f3565b610e7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7290612ad9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610eea9190612d65565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5b90612df2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90612e84565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110b19190612758565b60405180910390a3505050565b600081836110cc9190612ea4565b905092915050565b600081836110e29190612b28565b905092915050565b600081836110f89190612bb1565b905092915050565b61110b83838361134e565b61111583836114bf565b6111208383836115bc565b61112a838361179a565b611135838383611865565b611140838383611aa4565b61119281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110be90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006111e18484611acd565b6111eb57816111f7565b6111f6848484611b7b565b5b905061124b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2390919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112eb9190612758565b60405180910390a350505050565b6000838311158290611341576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113389190612618565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b490612f4a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390612fdc565b60405180910390fd5b6000811161146f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114669061306e565b60405180910390fd5b61147883610abb565b8111156114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b190613100565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115635750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156115b857600a60149054906101000a900460ff166115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae9061316c565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116605750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116ba5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116f4575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561179557611701610b04565b61175382600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2390919063ffffffff16565b1115611794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178b906131d8565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118415750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118615760016014600082825461185991906131f8565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ad576118c2610792565b811115806119195750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061196d5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a390613278565b60405180910390fd5b5b6119b5610b2d565b81111580611a0c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a605750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9690613278565b60405180910390fd5b505050565b611aaf838383611d39565b15611ac857611abf601754611e73565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b735750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611b8885856120c4565b1115611d18576000611bc0611b9d86866120c4565b611bb2601254866110ea90919063ffffffff16565b6110d490919063ffffffff16565b9050611c1481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d2390919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cb49190612758565b60405180910390a36000600e541115611cfd57611cfc3061dead611cf7600e54611ce9601254896110ea90919063ffffffff16565b6110d490919063ffffffff16565b611100565b5b611d1081846110be90919063ffffffff16565b915050611d1c565b8190505b9392505050565b60008183611d3191906131f8565b905092915050565b60008060185483101590506000601754611d5230610abb565b10159050601560009054906101000a900460ff16158015611d7f5750601360009054906101000a900460ff165b8015611d975750600a60149054906101000a900460ff165b8015611da05750815b8015611df65750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e4f5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611e5f575060165460145410155b8015611e685750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611ee16002611ed3600d54611ec5600c54611eb76001600b54611d2390919063ffffffff16565b611d2390919063ffffffff16565b611d2390919063ffffffff16565b6110d490919063ffffffff16565b90506000611f0c82611efe600b54866110d490919063ffffffff16565b6110ea90919063ffffffff16565b90506000611f2382856110be90919063ffffffff16565b90506000479050611f3382612253565b6000611f4882476110be90919063ffffffff16565b90506000611f73611f64600b54886110be90919063ffffffff16565b836110ea90919063ffffffff16565b90506000611f8c600b54836110d490919063ffffffff16565b90506000811115611fa257611fa18682612496565b5b6000611fcc600c54611fbe6002866110d490919063ffffffff16565b6110d490919063ffffffff16565b905060008111156120335773cddf7a92d14e8b8f1302152bfdeca060facac96e73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612031573d6000803e3d6000fd5b505b6000479050600081111561209d5773cddf7a92d14e8b8f1302152bfdeca060facac96e73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561209b573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121675750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121895761218260646012546110be90919063ffffffff16565b905061224d565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121e857601054905061224d565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361224757600f54905061224d565b60115490505b92915050565b6000600267ffffffffffffffff8111156122705761226f613298565b5b60405190808252806020026020018201604052801561229e5781602001602082028036833780820191505090505b50905030816000815181106122b6576122b56132c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612381919061330b565b81600181518110612395576123946132c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123fc30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ef5565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612460959493929190613431565b600060405180830381600087803b15801561247a57600080fd5b505af115801561248e573d6000803e3d6000fd5b505050505050565b6124c330600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610ef5565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073cddf7a92d14e8b8f1302152bfdeca060facac96e426040518863ffffffff1660e01b815260040161253e9695949392919061348b565b60606040518083038185885af115801561255c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906125819190613501565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156125c25780820151818401526020810190506125a7565b60008484015250505050565b6000601f19601f8301169050919050565b60006125ea82612588565b6125f48185612593565b93506126048185602086016125a4565b61260d816125ce565b840191505092915050565b6000602082019050818103600083015261263281846125df565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061266a8261263f565b9050919050565b61267a8161265f565b811461268557600080fd5b50565b60008135905061269781612671565b92915050565b6000819050919050565b6126b08161269d565b81146126bb57600080fd5b50565b6000813590506126cd816126a7565b92915050565b600080604083850312156126ea576126e961263a565b5b60006126f885828601612688565b9250506020612709858286016126be565b9150509250929050565b60008115159050919050565b61272881612713565b82525050565b6000602082019050612743600083018461271f565b92915050565b6127528161269d565b82525050565b600060208201905061276d6000830184612749565b92915050565b60008060006060848603121561278c5761278b61263a565b5b600061279a868287016126be565b93505060206127ab868287016126be565b92505060406127bc868287016126be565b9150509250925092565b6000806000606084860312156127df576127de61263a565b5b60006127ed86828701612688565b93505060206127fe86828701612688565b925050604061280f868287016126be565b9150509250925092565b61282281612713565b811461282d57600080fd5b50565b60008135905061283f81612819565b92915050565b60006020828403121561285b5761285a61263a565b5b600061286984828501612830565b91505092915050565b6000602082840312156128885761288761263a565b5b600061289684828501612688565b91505092915050565b600060ff82169050919050565b6128b58161289f565b82525050565b60006020820190506128d060008301846128ac565b92915050565b600080604083850312156128ed576128ec61263a565b5b60006128fb85828601612688565b925050602061290c85828601612830565b9150509250929050565b61291f8161265f565b82525050565b600060208201905061293a6000830184612916565b92915050565b600080600080600080600060e0888a03121561295f5761295e61263a565b5b600061296d8a828b016126be565b975050602061297e8a828b016126be565b965050604061298f8a828b016126be565b95505060606129a08a828b016126be565b94505060806129b18a828b016126be565b93505060a06129c28a828b016126be565b92505060c06129d38a828b016126be565b91505092959891949750929550565b600080604083850312156129f9576129f861263a565b5b6000612a0785828601612688565b9250506020612a1885828601612688565b9150509250929050565b6000612a2d8261263f565b9050919050565b612a3d81612a22565b8114612a4857600080fd5b50565b600081359050612a5a81612a34565b92915050565b600060208284031215612a7657612a7561263a565b5b6000612a8484828501612a4b565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612ac3600683612593565b9150612ace82612a8d565b602082019050919050565b60006020820190508181036000830152612af281612ab6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b338261269d565b9150612b3e8361269d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b7757612b76612af9565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612bbc8261269d565b9150612bc78361269d565b925082612bd757612bd6612b82565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612c3e602e83612593565b9150612c4982612be2565b604082019050919050565b60006020820190508181036000830152612c6d81612c31565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612cd0602c83612593565b9150612cdb82612c74565b604082019050919050565b60006020820190508181036000830152612cff81612cc3565b9050919050565b6000819050919050565b6000612d2b612d26612d218461263f565b612d06565b61263f565b9050919050565b6000612d3d82612d10565b9050919050565b6000612d4f82612d32565b9050919050565b612d5f81612d44565b82525050565b6000602082019050612d7a6000830184612d56565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ddc602483612593565b9150612de782612d80565b604082019050919050565b60006020820190508181036000830152612e0b81612dcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e6e602283612593565b9150612e7982612e12565b604082019050919050565b60006020820190508181036000830152612e9d81612e61565b9050919050565b6000612eaf8261269d565b9150612eba8361269d565b9250828203905081811115612ed257612ed1612af9565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f34602583612593565b9150612f3f82612ed8565b604082019050919050565b60006020820190508181036000830152612f6381612f27565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612fc6602383612593565b9150612fd182612f6a565b604082019050919050565b60006020820190508181036000830152612ff581612fb9565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613058602983612593565b915061306382612ffc565b604082019050919050565b600060208201905081810360008301526130878161304b565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130ea603183612593565b91506130f58261308e565b604082019050919050565b60006020820190508181036000830152613119816130dd565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613156600e83612593565b915061316182613120565b602082019050919050565b6000602082019050818103600083015261318581613149565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006131c2601e83612593565b91506131cd8261318c565b602082019050919050565b600060208201905081810360008301526131f1816131b5565b9050919050565b60006132038261269d565b915061320e8361269d565b925082820190508082111561322657613225612af9565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613262601183612593565b915061326d8261322c565b602082019050919050565b6000602082019050818103600083015261329181613255565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061330581612671565b92915050565b6000602082840312156133215761332061263a565b5b600061332f848285016132f6565b91505092915050565b6000819050919050565b600061335d61335861335384613338565b612d06565b61269d565b9050919050565b61336d81613342565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133a88161265f565b82525050565b60006133ba838361339f565b60208301905092915050565b6000602082019050919050565b60006133de82613373565b6133e8818561337e565b93506133f38361338f565b8060005b8381101561342457815161340b88826133ae565b9750613416836133c6565b9250506001810190506133f7565b5085935050505092915050565b600060a0820190506134466000830188612749565b6134536020830187613364565b818103604083015261346581866133d3565b90506134746060830185612916565b6134816080830184612749565b9695505050505050565b600060c0820190506134a06000830189612916565b6134ad6020830188612749565b6134ba6040830187613364565b6134c76060830186613364565b6134d46080830185612916565b6134e160a0830184612749565b979650505050505050565b6000815190506134fb816126a7565b92915050565b60008060006060848603121561351a5761351961263a565b5b6000613528868287016134ec565b9350506020613539868287016134ec565b925050604061354a868287016134ec565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d499b00d6e0fd82d93743b861395b00e84948e24d4f01eff0da254603bdd648664736f6c63430008100033

Deployed Bytecode Sourcemap

4945:11981:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7317:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8462:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8601:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10776:580;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8978:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16269:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7540:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3325:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7467:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5506:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8242:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8348:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7721:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8739:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8859:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7637:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7390:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5624:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7830:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10246:522;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7975:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14706:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3418:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7317:67;7354:13;7377:5;;;;;;;;;;;;;;;;;7370:12;;7317:67;:::o;8462:133::-;8537:4;8544:37;8553:10;8565:7;8574:6;8544:8;:37::i;:::-;8589:4;8582:11;;8462:133;;;;:::o;8601:132::-;8654:7;8671:60;8709:21;8727:1;8709:9;:21::i;:::-;8671:33;8688:15;6372:42;8688:9;:15::i;:::-;8671:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8664:67;;8601:132;:::o;10776:580::-;3284:19;3292:10;3284:7;:19::i;:::-;3276:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10872:13:::1;10913:5;10905:4;10889:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10888:30;;;;:::i;:::-;10872:46;;10929:19;10978:5;10968:6;10952:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10951:32;;;;:::i;:::-;10929:54;;10994:17;11042:5;11031:7;11015:13;:11;:13::i;:::-;:23;;;;:::i;:::-;11014:33;;;;:::i;:::-;10994:53;;11080:4;11058:19;:26;;;;11117:6;11095:19;:28;;;;11154:7;11134:17;:27;;;;11172:13;11188:30;11213:4;11188:20;11206:1;11188:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;11172:46;;11246:5;11237;:14;;:38;;;;;11270:5;11255:11;:20;;11237:38;:60;;;;;11292:5;11279:9;:18;;11237:60;11229:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10861:495;;;;10776:580:::0;;;:::o;8978:119::-;9029:7;9084:11;;9062:19;;9046:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;9039:56;;8978:119;:::o;16269:309::-;16367:4;16384:36;16394:6;16402:9;16413:6;16384:9;:36::i;:::-;16431:117;16440:6;16448:10;16460:87;16496:6;16460:87;;;;;;;;;;;;;;;;;:11;:19;16472:6;16460:19;;;;;;;;;;;;;;;:31;16480:10;16460:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;16431:8;:117::i;:::-;16566:4;16559:11;;16269:309;;;;;:::o;7540:91::-;3284:19;3292:10;3284:7;:19::i;:::-;3276:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7598:7:::1;7595:35;;;7624:4;7607:14;;:21;;;;;;;;;;;;;;;;;;7595:35;7540:91:::0;:::o;3325:87::-;3380:4;3405:5;;;;;;;;;;;3394:16;;:7;:16;;;3387:23;;3325:87;;;:::o;7467:67::-;7508:5;5156:1;7516:16;;7467:67;:::o;5506:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8242:100::-;3284:19;3292:10;3284:7;:19::i;:::-;3276:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8332:8:::1;8314:5;:15;8320:8;8314:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;8242:100:::0;;:::o;8348:108::-;3284:19;3292:10;3284:7;:19::i;:::-;3276:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8446:8:::1;8422:11;:21;8434:8;8422:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8348:108:::0;;:::o;7721:103::-;7787:7;7804:9;:18;7814:7;7804:18;;;;;;;;;;;;;;;;7797:25;;7721:103;;;:::o;8739:114::-;8787:7;8840:11;;8820:17;;8804:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8797:54;;8739:114;:::o;8859:113::-;8904:7;8959:11;;8937:19;;8921:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8914:56;;8859:113;:::o;7637:78::-;7689:7;7707:5;;;;;;;;;;;7700:12;;7637:78;:::o;7390:71::-;7429:13;7452:7;;;;;;;;;;;;;;;;;7445:14;;7390:71;:::o;5624:19::-;;;;;;;;;;;;;:::o;7830:139::-;7908:4;7915:40;7925:10;7937:9;7948:6;7915:9;:40::i;:::-;7963:4;7956:11;;7830:139;;;;:::o;10246:522::-;3284:19;3292:10;3284:7;:19::i;:::-;3276:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10432:10:::1;10417:12;:25;;;;10468:10;10453:12;:25;;;;10499:5;10489:7;:15;;;;10532:12;10515:14;:29;;;;10566:6;10555:8;:17;;;;10593:5;10583:7;:15;;;;10623:6;10609:11;:20;;;;10660:18;10676:1;10660:11;;:15;;:18;;;;:::i;:::-;10648:8;;:30;;:63;;;;;10693:18;10709:1;10693:11;;:15;;:18;;;;:::i;:::-;10682:7;;:29;;10648:63;10640:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;10246:522:::0;;;;;;;:::o;7975:127::-;8056:7;8073:11;:18;8085:5;8073:18;;;;;;;;;;;;;;;:27;8092:7;8073:27;;;;;;;;;;;;;;;;8066:34;;7975:127;;;;:::o;14706:315::-;3284:19;3292:10;3284:7;:19::i;:::-;3276:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14848:11:::1;14835:10;:24;;;;14877:53;14922:6;14877:32;14894:14;14877:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;14861:13;:69;;;;14959:54;15005:6;14959:33;14976:15;14959:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;14942:14;:71;;;;14706:315:::0;;;:::o;3418:111::-;3284:19;3292:10;3284:7;:19::i;:::-;3276:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3492:3:::1;3484:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3502:25;3523:3;3502:25;;;;;;:::i;:::-;;;;;;;;3418:111:::0;:::o;16586:335::-;16696:1;16679:19;;:5;:19;;;16671:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16777:1;16758:21;;:7;:21;;;16750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16859:6;16829:11;:18;16841:5;16829:18;;;;;;;;;;;;;;;:27;16848:7;16829:27;;;;;;;;;;;;;;;:36;;;;16897:7;16881:32;;16890:5;16881:32;;;16906:6;16881:32;;;;;;:::i;:::-;;;;;;;;16586:335;;;:::o;511:82::-;569:7;590:1;586;:5;;;;:::i;:::-;579:12;;511:82;;;;:::o;599:::-;657:7;678:1;674;:5;;;;:::i;:::-;667:12;;599:82;;;;:::o;687:::-;745:7;766:1;762;:5;;;;:::i;:::-;755:12;;687:82;;;;:::o;9552:686::-;9641:37;9652:6;9660:9;9671:6;9641:10;:37::i;:::-;9689:38;9709:6;9717:9;9689:19;:38::i;:::-;9738:41;9753:6;9761:9;9772:6;9738:14;:41::i;:::-;9791:35;9808:6;9816:9;9791:16;:35::i;:::-;9837:39;9850:6;9858:9;9869:6;9837:12;:39::i;:::-;9888:35;9897:6;9905:9;9916:6;9888:8;:35::i;:::-;9954:29;9976:6;9954:9;:17;9964:6;9954:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9934:9;:17;9944:6;9934:17;;;;;;;;;;;;;;;:49;;;;9994:22;10019:32;10033:6;10041:9;10019:13;:32::i;:::-;:78;;10091:6;10019:78;;;10054:34;10062:6;10070:9;10081:6;10054:7;:34::i;:::-;10019:78;9994:103;;10131:40;10156:14;10131:9;:20;10141:9;10131:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10108:9;:20;10118:9;10108:20;;;;;;;;;;;;;;;:63;;;;10204:9;10187:43;;10196:6;10187:43;;;10215:14;10187:43;;;;;;:::i;:::-;;;;;;;;9630:608;9552:686;;;:::o;1724:162::-;1810:7;1853:1;1848;:6;;1856:12;1840:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1882:1;1878;:5;1871:12;;1724:162;;;;;:::o;9105:439::-;9227:1;9209:20;;:6;:20;;;9201:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9311:1;9290:23;;:9;:23;;;9282:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9389:1;9372:6;:19;9364:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9466:17;9476:6;9466:9;:17::i;:::-;9456:6;:27;;9448:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9105:439;;;:::o;11364:191::-;11457:11;:19;11469:6;11457:19;;;;;;;;;;;;;;;;;;;;;;;;;11456:20;:47;;;;;11481:11;:22;11493:9;11481:22;;;;;;;;;;;;;;;;;;;;;;;;;11480:23;11456:47;11453:95;;;11513:14;;;;;;;;;;;11505:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11453:95;11364:191;;:::o;11567:333::-;11671:11;:19;11683:6;11671:19;;;;;;;;;;;;;;;;;;;;;;;;;11670:20;:47;;;;;11695:11;:22;11707:9;11695:22;;;;;;;;;;;;;;;;;;;;;;;;;11694:23;11670:47;:77;;;;;11742:4;;;;;;;;;;;11721:26;;:9;:26;;;;11670:77;:107;;;;;6372:42;11751:26;;:9;:26;;;;11670:107;11667:226;;;11839:17;:15;:17::i;:::-;11802:32;11827:6;11802:9;:20;11812:9;11802:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11801:55;;11793:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11667:226;11567:333;;;:::o;11908:159::-;12005:4;;;;;;;;;;;11992:17;;:9;:17;;;:41;;;;;12014:11;:19;12026:6;12014:19;;;;;;;;;;;;;;;;;;;;;;;;;12013:20;11992:41;11989:71;;;12056:1;12035:9;;:23;;;;;;;:::i;:::-;;;;;;;;11989:71;11908:159;;:::o;12075:349::-;12186:4;;;;;;;;;;;12176:14;;:6;:14;;;12173:130;;12210:20;:18;:20::i;:::-;12200:6;:30;;:53;;;;12234:11;:19;12246:6;12234:19;;;;;;;;;;;;;;;;;;;;;;;;;12200:53;:79;;;;12257:11;:22;12269:9;12257:22;;;;;;;;;;;;;;;;;;;;;;;;;12200:79;12192:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12173:130;12331:14;:12;:14::i;:::-;12321:6;:24;;:47;;;;12349:11;:19;12361:6;12349:19;;;;;;;;;;;;;;;;;;;;;;;;;12321:47;:73;;;;12372:11;:22;12384:9;12372:22;;;;;;;;;;;;;;;;;;;;;;;;;12321:73;12313:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12075:349;;;:::o;15029:197::-;15121:41;15136:6;15144:9;15155:6;15121:14;:41::i;:::-;15118:101;;;15164:29;15179:13;;15164:14;:29::i;:::-;15215:1;15195:9;:22;;;;15118:101;15029:197;;;:::o;15234:160::-;15315:4;15340:11;:19;15352:6;15340:19;;;;;;;;;;;;;;;;;;;;;;;;;15339:20;:47;;;;;15364:11;:22;15376:9;15364:22;;;;;;;;;;;;;;;;;;;;;;;;;15363:23;15339:47;15332:54;;15234:160;;;;:::o;15715:546::-;15801:7;15857:1;15824:30;15836:6;15844:9;15824:11;:30::i;:::-;:34;15821:418;;;15870:17;15890:59;15918:30;15930:6;15938:9;15918:11;:30::i;:::-;15890:23;15901:11;;15890:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15870:79;;15987:39;16016:9;15987;:24;16005:4;15987:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15960:9;:24;15978:4;15960:24;;;;;;;;;;;;;;;:66;;;;16067:4;16042:42;;16051:6;16042:42;;;16074:9;16042:42;;;;;;:::i;:::-;;;;;;;;16116:1;16098:7;;:20;16095:104;;;16120:77;16138:4;6372:42;16160:36;16188:7;;16160:23;16171:11;;16160:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;16120:9;:77::i;:::-;16095:104;16216:21;16227:9;16216:6;:10;;:21;;;;:::i;:::-;16209:28;;;;;15821:418;16247:6;16240:13;;15715:546;;;;;;:::o;423:82::-;481:7;502:1;498;:5;;;;:::i;:::-;491:12;;423:82;;;;:::o;14299:399::-;14397:4;14414:13;14440:14;;14430:6;:24;;14414:40;;14465:19;14515:13;;14487:24;14505:4;14487:9;:24::i;:::-;:41;;14465:63;;14547:8;;;;;;;;;;;14546:9;:24;;;;;14559:11;;;;;;;;;;;14546:24;:42;;;;;14574:14;;;;;;;;;;;14546:42;:54;;;;;14592:8;14546:54;:78;;;;;14605:11;:19;14617:6;14605:19;;;;;;;;;;;;;;;;;;;;;;;;;14604:20;14546:78;:99;;;;;14641:4;;;;;;;;;;;14628:17;;:9;:17;;;14546:99;:126;;;;;14662:10;;14649:9;;:23;;14546:126;:144;;;;;14676:14;14546:144;14539:151;;;;14299:399;;;;;:::o;12432:1066::-;6304:4;6293:8;;:15;;;;;;;;;;;;;;;;;;12503:20:::1;12526:66;12590:1;12527:57;12569:14;;12527:37;12551:12;;12527:19;12544:1;12527:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12526:63;;:66;;;;:::i;:::-;12503:89;;12603:32;12638:42;12667:12;12638:24;12649:12;;12638:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;12603:77;;12691:14;12708:36;12719:24;12708:6;:10;;:36;;;;:::i;:::-;12691:53;;12755:22;12780:21;12755:46;;12812:24;12829:6;12812:16;:24::i;:::-;12847:20;12870:41;12896:14;12870:21;:25;;:41;;;;:::i;:::-;12847:64;;12922:19;12943:48;12960:30;12977:12;;12960;:16;;:30;;;;:::i;:::-;12943:12;:16;;:48;;;;:::i;:::-;12922:69;;13002:29;13034;13050:12;;13034:11;:15;;:29;;;;:::i;:::-;13002:61;;13109:1;13077:21;:34;13074:103;;;13113:61;13126:24;13152:21;13113:12;:61::i;:::-;13074:103;13187:20;13210:36;13233:12;;13210:18;13226:1;13210:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;13187:59;;13275:1;13260:12;:16;13257:73;;;6567:42;13278:36;;:50;13315:12;13278:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13257:73;13340:24;13367:21;13340:48;;13429:1;13402:16;:29;13399:92;;;6470:42;13433:38;;:56;13472:16;13433:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13399:92;12492:1006;;;;;;;;;6324:5:::0;6313:8;;:16;;;;;;;;;;;;;;;;;;12432:1066;:::o;15402:305::-;15481:7;15504:5;:13;15510:6;15504:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;15521:5;:16;15527:9;15521:16;;;;;;;;;;;;;;;;;;;;;;;;;15504:33;15501:76;;;15546:29;15570:3;15546:11;;:15;;:29;;;;:::i;:::-;15539:36;;;;15501:76;15603:4;;;;;;;;;;;15590:17;;:9;:17;;;15587:38;;15616:7;;15609:14;;;;15587:38;15648:4;;;;;;;;;;;15638:14;;:6;:14;;;15635:36;;15661:8;;15654:15;;;;15635:36;15688:11;;15681:18;;15402:305;;;;;:::o;13857:434::-;13923:21;13961:1;13947:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13923:40;;13992:4;13974;13979:1;13974:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14018:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14008:4;14013:1;14008:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14042:53;14059:4;14074:6;;;;;;;;;;;14083:11;14042:8;:53::i;:::-;14106:6;;;;;;;;;;;:57;;;14178:11;14204:1;14220:4;14247;14267:15;14106:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13912:379;13857:434;:::o;13506:343::-;13587:53;13604:4;13619:6;;;;;;;;;;;13628:11;13587:8;:53::i;:::-;13651:6;;;;;;;;;;;:22;;;13681:9;13714:4;13734:11;13760:1;13776;6663:42;13825:15;13651:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13506:343;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:::-;4500:6;4508;4516;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;4423:619;;;;;:::o;5048:116::-;5118:21;5133:5;5118:21;:::i;:::-;5111:5;5108:32;5098:60;;5154:1;5151;5144:12;5098:60;5048:116;:::o;5170:133::-;5213:5;5251:6;5238:20;5229:29;;5267:30;5291:5;5267:30;:::i;:::-;5170:133;;;;:::o;5309:323::-;5365:6;5414:2;5402:9;5393:7;5389:23;5385:32;5382:119;;;5420:79;;:::i;:::-;5382:119;5540:1;5565:50;5607:7;5598:6;5587:9;5583:22;5565:50;:::i;:::-;5555:60;;5511:114;5309:323;;;;:::o;5638:329::-;5697:6;5746:2;5734:9;5725:7;5721:23;5717:32;5714:119;;;5752:79;;:::i;:::-;5714:119;5872:1;5897:53;5942:7;5933:6;5922:9;5918:22;5897:53;:::i;:::-;5887:63;;5843:117;5638:329;;;;:::o;5973:86::-;6008:7;6048:4;6041:5;6037:16;6026:27;;5973:86;;;:::o;6065:112::-;6148:22;6164:5;6148:22;:::i;:::-;6143:3;6136:35;6065:112;;:::o;6183:214::-;6272:4;6310:2;6299:9;6295:18;6287:26;;6323:67;6387:1;6376:9;6372:17;6363:6;6323:67;:::i;:::-;6183:214;;;;:::o;6403:468::-;6468:6;6476;6525:2;6513:9;6504:7;6500:23;6496:32;6493:119;;;6531:79;;:::i;:::-;6493:119;6651:1;6676:53;6721:7;6712:6;6701:9;6697:22;6676:53;:::i;:::-;6666:63;;6622:117;6778:2;6804:50;6846:7;6837:6;6826:9;6822:22;6804:50;:::i;:::-;6794:60;;6749:115;6403:468;;;;;:::o;6877:118::-;6964:24;6982:5;6964:24;:::i;:::-;6959:3;6952:37;6877:118;;:::o;7001:222::-;7094:4;7132:2;7121:9;7117:18;7109:26;;7145:71;7213:1;7202:9;7198:17;7189:6;7145:71;:::i;:::-;7001:222;;;;:::o;7229:1203::-;7342:6;7350;7358;7366;7374;7382;7390;7439:3;7427:9;7418:7;7414:23;7410:33;7407:120;;;7446:79;;:::i;:::-;7407:120;7566:1;7591:53;7636:7;7627:6;7616:9;7612:22;7591:53;:::i;:::-;7581:63;;7537:117;7693:2;7719:53;7764:7;7755:6;7744:9;7740:22;7719:53;:::i;:::-;7709:63;;7664:118;7821:2;7847:53;7892:7;7883:6;7872:9;7868:22;7847:53;:::i;:::-;7837:63;;7792:118;7949:2;7975:53;8020:7;8011:6;8000:9;7996:22;7975:53;:::i;:::-;7965:63;;7920:118;8077:3;8104:53;8149:7;8140:6;8129:9;8125:22;8104:53;:::i;:::-;8094:63;;8048:119;8206:3;8233:53;8278:7;8269:6;8258:9;8254:22;8233:53;:::i;:::-;8223:63;;8177:119;8335:3;8362:53;8407:7;8398:6;8387:9;8383:22;8362:53;:::i;:::-;8352:63;;8306:119;7229:1203;;;;;;;;;;:::o;8438:474::-;8506:6;8514;8563:2;8551:9;8542:7;8538:23;8534:32;8531:119;;;8569:79;;:::i;:::-;8531:119;8689:1;8714:53;8759:7;8750:6;8739:9;8735:22;8714:53;:::i;:::-;8704:63;;8660:117;8816:2;8842:53;8887:7;8878:6;8867:9;8863:22;8842:53;:::i;:::-;8832:63;;8787:118;8438:474;;;;;:::o;8918:104::-;8963:7;8992:24;9010:5;8992:24;:::i;:::-;8981:35;;8918:104;;;:::o;9028:138::-;9109:32;9135:5;9109:32;:::i;:::-;9102:5;9099:43;9089:71;;9156:1;9153;9146:12;9089:71;9028:138;:::o;9172:155::-;9226:5;9264:6;9251:20;9242:29;;9280:41;9315:5;9280:41;:::i;:::-;9172:155;;;;:::o;9333:345::-;9400:6;9449:2;9437:9;9428:7;9424:23;9420:32;9417:119;;;9455:79;;:::i;:::-;9417:119;9575:1;9600:61;9653:7;9644:6;9633:9;9629:22;9600:61;:::i;:::-;9590:71;;9546:125;9333:345;;;;:::o;9684:156::-;9824:8;9820:1;9812:6;9808:14;9801:32;9684:156;:::o;9846:365::-;9988:3;10009:66;10073:1;10068:3;10009:66;:::i;:::-;10002:73;;10084:93;10173:3;10084:93;:::i;:::-;10202:2;10197:3;10193:12;10186:19;;9846:365;;;:::o;10217:419::-;10383:4;10421:2;10410:9;10406:18;10398:26;;10470:9;10464:4;10460:20;10456:1;10445:9;10441:17;10434:47;10498:131;10624:4;10498:131;:::i;:::-;10490:139;;10217:419;;;:::o;10642:180::-;10690:77;10687:1;10680:88;10787:4;10784:1;10777:15;10811:4;10808:1;10801:15;10828:348;10868:7;10891:20;10909:1;10891:20;:::i;:::-;10886:25;;10925:20;10943:1;10925:20;:::i;:::-;10920:25;;11113:1;11045:66;11041:74;11038:1;11035:81;11030:1;11023:9;11016:17;11012:105;11009:131;;;11120:18;;:::i;:::-;11009:131;11168:1;11165;11161:9;11150:20;;10828:348;;;;:::o;11182:180::-;11230:77;11227:1;11220:88;11327:4;11324:1;11317:15;11351:4;11348:1;11341:15;11368:185;11408:1;11425:20;11443:1;11425:20;:::i;:::-;11420:25;;11459:20;11477:1;11459:20;:::i;:::-;11454:25;;11498:1;11488:35;;11503:18;;:::i;:::-;11488:35;11545:1;11542;11538:9;11533:14;;11368:185;;;;:::o;11559:233::-;11699:34;11695:1;11687:6;11683:14;11676:58;11768:16;11763:2;11755:6;11751:15;11744:41;11559:233;:::o;11798:366::-;11940:3;11961:67;12025:2;12020:3;11961:67;:::i;:::-;11954:74;;12037:93;12126:3;12037:93;:::i;:::-;12155:2;12150:3;12146:12;12139:19;;11798:366;;;:::o;12170:419::-;12336:4;12374:2;12363:9;12359:18;12351:26;;12423:9;12417:4;12413:20;12409:1;12398:9;12394:17;12387:47;12451:131;12577:4;12451:131;:::i;:::-;12443:139;;12170:419;;;:::o;12595:231::-;12735:34;12731:1;12723:6;12719:14;12712:58;12804:14;12799:2;12791:6;12787:15;12780:39;12595:231;:::o;12832:366::-;12974:3;12995:67;13059:2;13054:3;12995:67;:::i;:::-;12988:74;;13071:93;13160:3;13071:93;:::i;:::-;13189:2;13184:3;13180:12;13173:19;;12832:366;;;:::o;13204:419::-;13370:4;13408:2;13397:9;13393:18;13385:26;;13457:9;13451:4;13447:20;13443:1;13432:9;13428:17;13421:47;13485:131;13611:4;13485:131;:::i;:::-;13477:139;;13204:419;;;:::o;13629:60::-;13657:3;13678:5;13671:12;;13629:60;;;:::o;13695:142::-;13745:9;13778:53;13796:34;13805:24;13823:5;13805:24;:::i;:::-;13796:34;:::i;:::-;13778:53;:::i;:::-;13765:66;;13695:142;;;:::o;13843:126::-;13893:9;13926:37;13957:5;13926:37;:::i;:::-;13913:50;;13843:126;;;:::o;13975:134::-;14033:9;14066:37;14097:5;14066:37;:::i;:::-;14053:50;;13975:134;;;:::o;14115:147::-;14210:45;14249:5;14210:45;:::i;:::-;14205:3;14198:58;14115:147;;:::o;14268:238::-;14369:4;14407:2;14396:9;14392:18;14384:26;;14420:79;14496:1;14485:9;14481:17;14472:6;14420:79;:::i;:::-;14268:238;;;;:::o;14512:223::-;14652:34;14648:1;14640:6;14636:14;14629:58;14721:6;14716:2;14708:6;14704:15;14697:31;14512:223;:::o;14741:366::-;14883:3;14904:67;14968:2;14963:3;14904:67;:::i;:::-;14897:74;;14980:93;15069:3;14980:93;:::i;:::-;15098:2;15093:3;15089:12;15082:19;;14741:366;;;:::o;15113:419::-;15279:4;15317:2;15306:9;15302:18;15294:26;;15366:9;15360:4;15356:20;15352:1;15341:9;15337:17;15330:47;15394:131;15520:4;15394:131;:::i;:::-;15386:139;;15113:419;;;:::o;15538:221::-;15678:34;15674:1;15666:6;15662:14;15655:58;15747:4;15742:2;15734:6;15730:15;15723:29;15538:221;:::o;15765:366::-;15907:3;15928:67;15992:2;15987:3;15928:67;:::i;:::-;15921:74;;16004:93;16093:3;16004:93;:::i;:::-;16122:2;16117:3;16113:12;16106:19;;15765:366;;;:::o;16137:419::-;16303:4;16341:2;16330:9;16326:18;16318:26;;16390:9;16384:4;16380:20;16376:1;16365:9;16361:17;16354:47;16418:131;16544:4;16418:131;:::i;:::-;16410:139;;16137:419;;;:::o;16562:194::-;16602:4;16622:20;16640:1;16622:20;:::i;:::-;16617:25;;16656:20;16674:1;16656:20;:::i;:::-;16651:25;;16700:1;16697;16693:9;16685:17;;16724:1;16718:4;16715:11;16712:37;;;16729:18;;:::i;:::-;16712:37;16562:194;;;;:::o;16762:224::-;16902:34;16898:1;16890:6;16886:14;16879:58;16971:7;16966:2;16958:6;16954:15;16947:32;16762:224;:::o;16992:366::-;17134:3;17155:67;17219:2;17214:3;17155:67;:::i;:::-;17148:74;;17231:93;17320:3;17231:93;:::i;:::-;17349:2;17344:3;17340:12;17333:19;;16992:366;;;:::o;17364:419::-;17530:4;17568:2;17557:9;17553:18;17545:26;;17617:9;17611:4;17607:20;17603:1;17592:9;17588:17;17581:47;17645:131;17771:4;17645:131;:::i;:::-;17637:139;;17364:419;;;:::o;17789:222::-;17929:34;17925:1;17917:6;17913:14;17906:58;17998:5;17993:2;17985:6;17981:15;17974:30;17789:222;:::o;18017:366::-;18159:3;18180:67;18244:2;18239:3;18180:67;:::i;:::-;18173:74;;18256:93;18345:3;18256:93;:::i;:::-;18374:2;18369:3;18365:12;18358:19;;18017:366;;;:::o;18389:419::-;18555:4;18593:2;18582:9;18578:18;18570:26;;18642:9;18636:4;18632:20;18628:1;18617:9;18613:17;18606:47;18670:131;18796:4;18670:131;:::i;:::-;18662:139;;18389:419;;;:::o;18814:228::-;18954:34;18950:1;18942:6;18938:14;18931:58;19023:11;19018:2;19010:6;19006:15;18999:36;18814:228;:::o;19048:366::-;19190:3;19211:67;19275:2;19270:3;19211:67;:::i;:::-;19204:74;;19287:93;19376:3;19287:93;:::i;:::-;19405:2;19400:3;19396:12;19389:19;;19048:366;;;:::o;19420:419::-;19586:4;19624:2;19613:9;19609:18;19601:26;;19673:9;19667:4;19663:20;19659:1;19648:9;19644:17;19637:47;19701:131;19827:4;19701:131;:::i;:::-;19693:139;;19420:419;;;:::o;19845:236::-;19985:34;19981:1;19973:6;19969:14;19962:58;20054:19;20049:2;20041:6;20037:15;20030:44;19845:236;:::o;20087:366::-;20229:3;20250:67;20314:2;20309:3;20250:67;:::i;:::-;20243:74;;20326:93;20415:3;20326:93;:::i;:::-;20444:2;20439:3;20435:12;20428:19;;20087:366;;;:::o;20459:419::-;20625:4;20663:2;20652:9;20648:18;20640:26;;20712:9;20706:4;20702:20;20698:1;20687:9;20683:17;20676:47;20740:131;20866:4;20740:131;:::i;:::-;20732:139;;20459:419;;;:::o;20884:164::-;21024:16;21020:1;21012:6;21008:14;21001:40;20884:164;:::o;21054:366::-;21196:3;21217:67;21281:2;21276:3;21217:67;:::i;:::-;21210:74;;21293:93;21382:3;21293:93;:::i;:::-;21411:2;21406:3;21402:12;21395:19;;21054:366;;;:::o;21426:419::-;21592:4;21630:2;21619:9;21615:18;21607:26;;21679:9;21673:4;21669:20;21665:1;21654:9;21650:17;21643:47;21707:131;21833:4;21707:131;:::i;:::-;21699:139;;21426:419;;;:::o;21851:180::-;21991:32;21987:1;21979:6;21975:14;21968:56;21851:180;:::o;22037:366::-;22179:3;22200:67;22264:2;22259:3;22200:67;:::i;:::-;22193:74;;22276:93;22365:3;22276:93;:::i;:::-;22394:2;22389:3;22385:12;22378:19;;22037:366;;;:::o;22409:419::-;22575:4;22613:2;22602:9;22598:18;22590:26;;22662:9;22656:4;22652:20;22648:1;22637:9;22633:17;22626:47;22690:131;22816:4;22690:131;:::i;:::-;22682:139;;22409:419;;;:::o;22834:191::-;22874:3;22893:20;22911:1;22893:20;:::i;:::-;22888:25;;22927:20;22945:1;22927:20;:::i;:::-;22922:25;;22970:1;22967;22963:9;22956:16;;22991:3;22988:1;22985:10;22982:36;;;22998:18;;:::i;:::-;22982:36;22834:191;;;;:::o;23031:167::-;23171:19;23167:1;23159:6;23155:14;23148:43;23031:167;:::o;23204:366::-;23346:3;23367:67;23431:2;23426:3;23367:67;:::i;:::-;23360:74;;23443:93;23532:3;23443:93;:::i;:::-;23561:2;23556:3;23552:12;23545:19;;23204:366;;;:::o;23576:419::-;23742:4;23780:2;23769:9;23765:18;23757:26;;23829:9;23823:4;23819:20;23815:1;23804:9;23800:17;23793:47;23857:131;23983:4;23857:131;:::i;:::-;23849:139;;23576:419;;;:::o;24001:180::-;24049:77;24046:1;24039:88;24146:4;24143:1;24136:15;24170:4;24167:1;24160:15;24187:180;24235:77;24232:1;24225:88;24332:4;24329:1;24322:15;24356:4;24353:1;24346:15;24373:143;24430:5;24461:6;24455:13;24446:22;;24477:33;24504:5;24477:33;:::i;:::-;24373:143;;;;:::o;24522:351::-;24592:6;24641:2;24629:9;24620:7;24616:23;24612:32;24609:119;;;24647:79;;:::i;:::-;24609:119;24767:1;24792:64;24848:7;24839:6;24828:9;24824:22;24792:64;:::i;:::-;24782:74;;24738:128;24522:351;;;;:::o;24879:85::-;24924:7;24953:5;24942:16;;24879:85;;;:::o;24970:158::-;25028:9;25061:61;25079:42;25088:32;25114:5;25088:32;:::i;:::-;25079:42;:::i;:::-;25061:61;:::i;:::-;25048:74;;24970:158;;;:::o;25134:147::-;25229:45;25268:5;25229:45;:::i;:::-;25224:3;25217:58;25134:147;;:::o;25287:114::-;25354:6;25388:5;25382:12;25372:22;;25287:114;;;:::o;25407:184::-;25506:11;25540:6;25535:3;25528:19;25580:4;25575:3;25571:14;25556:29;;25407:184;;;;:::o;25597:132::-;25664:4;25687:3;25679:11;;25717:4;25712:3;25708:14;25700:22;;25597:132;;;:::o;25735:108::-;25812:24;25830:5;25812:24;:::i;:::-;25807:3;25800:37;25735:108;;:::o;25849:179::-;25918:10;25939:46;25981:3;25973:6;25939:46;:::i;:::-;26017:4;26012:3;26008:14;25994:28;;25849:179;;;;:::o;26034:113::-;26104:4;26136;26131:3;26127:14;26119:22;;26034:113;;;:::o;26183:732::-;26302:3;26331:54;26379:5;26331:54;:::i;:::-;26401:86;26480:6;26475:3;26401:86;:::i;:::-;26394:93;;26511:56;26561:5;26511:56;:::i;:::-;26590:7;26621:1;26606:284;26631:6;26628:1;26625:13;26606:284;;;26707:6;26701:13;26734:63;26793:3;26778:13;26734:63;:::i;:::-;26727:70;;26820:60;26873:6;26820:60;:::i;:::-;26810:70;;26666:224;26653:1;26650;26646:9;26641:14;;26606:284;;;26610:14;26906:3;26899:10;;26307:608;;;26183:732;;;;:::o;26921:831::-;27184:4;27222:3;27211:9;27207:19;27199:27;;27236:71;27304:1;27293:9;27289:17;27280:6;27236:71;:::i;:::-;27317:80;27393:2;27382:9;27378:18;27369:6;27317:80;:::i;:::-;27444:9;27438:4;27434:20;27429:2;27418:9;27414:18;27407:48;27472:108;27575:4;27566:6;27472:108;:::i;:::-;27464:116;;27590:72;27658:2;27647:9;27643:18;27634:6;27590:72;:::i;:::-;27672:73;27740:3;27729:9;27725:19;27716:6;27672:73;:::i;:::-;26921:831;;;;;;;;:::o;27758:807::-;28007:4;28045:3;28034:9;28030:19;28022:27;;28059:71;28127:1;28116:9;28112:17;28103:6;28059:71;:::i;:::-;28140:72;28208:2;28197:9;28193:18;28184:6;28140:72;:::i;:::-;28222:80;28298:2;28287:9;28283:18;28274:6;28222:80;:::i;:::-;28312;28388:2;28377:9;28373:18;28364:6;28312:80;:::i;:::-;28402:73;28470:3;28459:9;28455:19;28446:6;28402:73;:::i;:::-;28485;28553:3;28542:9;28538:19;28529:6;28485:73;:::i;:::-;27758:807;;;;;;;;;:::o;28571:143::-;28628:5;28659:6;28653:13;28644:22;;28675:33;28702:5;28675:33;:::i;:::-;28571:143;;;;:::o;28720:663::-;28808:6;28816;28824;28873:2;28861:9;28852:7;28848:23;28844:32;28841:119;;;28879:79;;:::i;:::-;28841:119;28999:1;29024:64;29080:7;29071:6;29060:9;29056:22;29024:64;:::i;:::-;29014:74;;28970:128;29137:2;29163:64;29219:7;29210:6;29199:9;29195:22;29163:64;:::i;:::-;29153:74;;29108:129;29276:2;29302:64;29358:7;29349:6;29338:9;29334:22;29302:64;:::i;:::-;29292:74;;29247:129;28720:663;;;;;:::o

Swarm Source

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