ETH Price: $3,837.09 (+2.45%)
Gas: 4 Gwei

Token

Lunar (LUNAR)
 

Overview

Max Total Supply

100,000,000 LUNAR

Holders

587 ( -0.511%)

Total Transfers

-

Market

Price

$0.00 @ 0.000001 ETH (-0.48%)

Onchain Market Cap

$237,247.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Lunar.Bet is revolutionizing online casinos with a variety of secure games, highlighted by a Jackpot game. Win big through $LUNAR token purchases, boosting community engagement and offering a unique gaming experience. Join us and be part of the future of online gaming.

Market

Volume (24H):$2,058.69
Market Capitalization:$0.00
Circulating Supply:0.00 LUNAR
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Lunar

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-21
*/

/**
https://t.me/LunarBetPortal

https://twitter.com/Lunar_bet

https://lunar.bet/
*/ 

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

contract Lunar is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Lunar';
    string private constant _symbol = 'LUNAR';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 50;
    uint256 private jackpotFee = 250;
    uint256 private developmentFee = 175;
    uint256 private holdersjackpotFee = 25;
    uint256 private tokencollectionFee = 0;
    uint256 private miscFee = 0;
    uint256 private totalFee = 500;
    uint256 private sellFee = 500;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 public swapThreshold = ( _totalSupply * 2 ) / 4000;
    uint256 public _minTokenAmount = ( _totalSupply * 1 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal liquidity_receiver = 0xEe2b5021adBb5A3CA7C8e3f0088711D097391088;
    address internal development_receiver = 0x12E2D89901A7B3C41232bF9158Af8CE8D6E12251;
    address internal jackpot_receiver = 0x930458f87afC79d227fD6FBF37bd46D0d1b54b47;
    address internal holdersjackpot_receiver = 0x03CF4588A344A525595b562fbBEEa351E8e28830;
    address internal tokencollection_receiver = 0x7AF8d5a795eD013953Bb7ddC7956f0d218C64BBb;
    address internal misc_receiver = 0xaa7df58fc5B297c9996e7f4ebD13E8205207B0fc;
    

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

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function launch() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisfeeExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(address(0)));}

    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);
        swapbackCounters(sender, recipient);
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function setnewFees(uint256 _liquidity, uint256 _jackpot, uint256 _development, uint256 _holdersjackpot, uint256 _tokencollection, uint256 _misc, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        jackpotFee = _jackpot;
        developmentFee = _development;
        holdersjackpotFee = _holdersjackpot;
        tokencollectionFee = _tokencollection;
        miscFee = _misc;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(10) && sellFee <= denominator.div(10), "totalFee and sellFee cannot be more than 10%");

    }

    function changeReceiverAddresses(address _liquidity_receiver, address _jackpot_receiver, address _development_receiver, address _holdersjackpot_receiver, address _tokencollection_receiver, address _misc_receiver) external onlyOwner {
        liquidity_receiver = _liquidity_receiver;
        jackpot_receiver = _jackpot_receiver;
        development_receiver = _development_receiver;
        holdersjackpot_receiver = _holdersjackpot_receiver;
        tokencollection_receiver = _tokencollection_receiver;
        misc_receiver = _misc_receiver;
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}

    }

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

    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
    uint256 totalFeeWithouttokencollection = liquidityFee.add(jackpotFee).add(developmentFee).add(holdersjackpotFee).add(miscFee);
    uint256 _denominator = totalFeeWithouttokencollection.mul(2).add(tokencollectionFee);
    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).sub(tokencollectionFee));
    uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);

    if (ETHToAddLiquidityWith > 0) {
        addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
    }

    uint256 jackpotAmt = unitBalance.mul(jackpotFee).mul(2);
    if (jackpotAmt > 0) {
        payable(jackpot_receiver).transfer(jackpotAmt);
    }

    uint256 developmentAmt = unitBalance.mul(developmentFee).mul(2);
    if (developmentAmt > 0) {
        payable(development_receiver).transfer(developmentAmt);
    }

    uint256 holdersjackpotAmt = unitBalance.mul(holdersjackpotFee).mul(2);
    if (holdersjackpotAmt > 0) {
        payable(holdersjackpot_receiver).transfer(holdersjackpotAmt);
    }

    uint256 tokencollectionFeeTokens = tokens.mul(tokencollectionFee);
    uint256 tokencollectionAmt = tokencollectionFeeTokens.div(_denominator);
    if (tokencollectionAmt > 0) {
        _balances[address(this)] = _balances[address(this)].sub(tokencollectionAmt);
        _balances[tokencollection_receiver] = _balances[tokencollection_receiver].add(tokencollectionAmt);
        emit Transfer(address(this), tokencollection_receiver, tokencollectionAmt);
    }

    uint256 miscAmt = address(this).balance;
    if (miscAmt > 0) {
        payable(misc_receiver).transfer(miscAmt);
    }
}

    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(1) && 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(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function setMinTokenAmountForSwap(uint256 newMinTokenAmount) external onlyOwner {
        require(newMinTokenAmount > 0 && newMinTokenAmount <= 100000, "Minimum token amount must be greater than 0 and less than 0.1% of total supply");
        _minTokenAmount = newMinTokenAmount * (10 ** _decimals);
    }

    function changeSwapthreshold(uint256 _swapThreshold) public onlyOwner {
        require(_swapThreshold > 0 && _swapThreshold <= 1000000, "Swap threshold must be greater than 0 and less than 1% of total supply");
        swapThreshold = _swapThreshold * (10 ** _decimals);
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        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);
    }

    // Function to withdraw tokens from the contract
    function withdrawTokens(address tokenAddress, address to, uint256 amount) external onlyOwner {
    require(tokenAddress != address(0), "Token address cannot be the zero address");
    require(to != address(0), "Withdrawal address cannot be the zero address");
    require(tokenAddress != address(this), "Cannot withdraw the native token"); // Added check
    require(IERC20(tokenAddress).balanceOf(address(this)) >= amount, "Insufficient token balance in contract");

    bool sent = IERC20(tokenAddress).transfer(to, amount);
    require(sent, "Token transfer failed");
    }

    // Function to withdraw Ether from the contract
    function withdrawETH(uint256 amount) external onlyOwner {
        require(amount <= address(this).balance, "Insufficient balance in contract");
        payable(owner).transfer(amount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_minTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidity_receiver","type":"address"},{"internalType":"address","name":"_jackpot_receiver","type":"address"},{"internalType":"address","name":"_development_receiver","type":"address"},{"internalType":"address","name":"_holdersjackpot_receiver","type":"address"},{"internalType":"address","name":"_tokencollection_receiver","type":"address"},{"internalType":"address","name":"_misc_receiver","type":"address"}],"name":"changeReceiverAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"changeSwapthreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinTokenAmount","type":"uint256"}],"name":"setMinTokenAmountForSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisfeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_jackpot","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_holdersjackpot","type":"uint256"},{"internalType":"uint256","name":"_tokencollection","type":"uint256"},{"internalType":"uint256","name":"_misc","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setnewFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000518565b62000022906305f5e1006200052f565b60018181556006805460ff60a01b19169055603260075560fa60085560af6009556019600a555f600b819055600c8190556101f4600d819055600e55600f556127106010556011805460ff19169091179055610fa090620000859060026200052f565b62000091919062000549565b601455620186a06001546001620000a991906200052f565b620000b5919062000549565b601555601680546001600160a01b031990811673ee2b5021adbb5a3ca7c8e3f0088711d097391088179091556017805482167312e2d89901a7b3c41232bf9158af8ce8d6e1225117905560188054821673930458f87afc79d227fd6fbf37bd46d0d1b54b471790556019805482167303cf4588a344a525595b562fbbeea351e8e28830179055601a80548216737af8d5a795ed013953bb7ddc7956f0d218c64bbb179055601b805490911673aa7df58fc5b297c9996e7f4ebd13e8205207b0fc17905534801562000184575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa158015620001e9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020f919062000569565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200025b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000281919062000569565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002cc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002f2919062000569565b600580546001600160a01b038581166001600160a01b031992831617909255600680548484169216919091179055305f908152600460209081526040808320805460ff199081166001908117909255601654861685528285208054821683179055601854861685528285208054821683179055601754861685528285208054821683179055601954861685528285208054821683179055601a54861685528285208054821683179055601b5490951684528184208054861682179055338085528285208054909616821790955554600283528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000591565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200045d57815f190482111562000441576200044162000409565b808516156200044f57918102915b93841c939080029062000422565b509250929050565b5f82620004755750600162000512565b816200048357505f62000512565b81600181146200049c5760028114620004a757620004c7565b600191505062000512565b60ff841115620004bb57620004bb62000409565b50506001821b62000512565b5060208310610133831016604e8410600b8410161715620004ec575081810a62000512565b620004f883836200041d565b805f19048211156200050e576200050e62000409565b0290505b92915050565b5f6200052860ff84168362000465565b9392505050565b808202811582820484141762000512576200051262000409565b5f826200056457634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200057a575f80fd5b81516001600160a01b038116811462000528575f80fd5b611eed806200059f5f395ff3fe60806040526004361061014a575f3560e01c806370a08231116100b3578063a9059cbb1161006d578063a9059cbb146103e2578063d37e917714610401578063dac9853e14610420578063dd62ed3e1461043f578063f14210a614610483578063f2fde38b146104a2575f80fd5b806370a08231146102f45780637c1e6f9c14610328578063893d20e81461034757806395d89b41146103775780639abba4e6146103a4578063a8aa1b31146103c3575f80fd5b80632f54bf6e116101045780632f54bf6e1461022b578063313ce5671461025857806338ffa798146102735780633f4218e0146102885780635e35359e146102b65780636e78ac23146102d5575f80fd5b806301339c21146101555780630445b6671461016b57806306fdde0314610193578063095ea7b3146101c957806318160ddd146101f857806323b872dd1461020c575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b506101696104c1565b005b348015610176575f80fd5b5061018060145481565b6040519081526020015b60405180910390f35b34801561019e575f80fd5b50604080518082019091526005815264263ab730b960d91b60208201525b60405161018a91906119d3565b3480156101d4575f80fd5b506101e86101e3366004611a35565b610508565b604051901515815260200161018a565b348015610203575f80fd5b5061018061051e565b348015610217575f80fd5b506101e8610226366004611a5f565b61055a565b348015610236575f80fd5b506101e8610245366004611a9d565b5f546001600160a01b0391821691161490565b348015610263575f80fd5b506040516009815260200161018a565b34801561027e575f80fd5b5061018060155481565b348015610293575f80fd5b506101e86102a2366004611a9d565b60046020525f908152604090205460ff1681565b3480156102c1575f80fd5b506101696102d0366004611a5f565b6105c2565b3480156102e0575f80fd5b506101696102ef366004611ab8565b61089b565b3480156102ff575f80fd5b5061018061030e366004611a9d565b6001600160a01b03165f9081526002602052604090205490565b348015610333575f80fd5b50610169610342366004611b11565b610989565b348015610352575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b348015610382575f80fd5b50604080518082019091526005815264262aa720a960d91b60208201526101bc565b3480156103af575f80fd5b506101696103be366004611b8f565b610a21565b3480156103ce575f80fd5b5060065461035f906001600160a01b031681565b3480156103ed575f80fd5b506101e86103fc366004611a35565b610af9565b34801561040c575f80fd5b5061016961041b366004611bb3565b610b05565b34801561042b575f80fd5b5061016961043a366004611b8f565b610b58565b34801561044a575f80fd5b50610180610459366004611bea565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561048e575f80fd5b5061016961049d366004611b8f565b610c38565b3480156104ad575f80fd5b506101696104bc366004611a9d565b610ceb565b5f546001600160a01b031633146104f35760405162461bcd60e51b81526004016104ea90611c16565b60405180910390fd5b6006805460ff60a01b1916600160a01b179055565b5f610514338484610d67565b5060015b92915050565b5f80805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5460015461055591610e8a565b905090565b5f610566848484610e95565b6105b784336105b285604051806060016040528060288152602001611e90602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610fa1565b610d67565b5060015b9392505050565b5f546001600160a01b031633146105eb5760405162461bcd60e51b81526004016104ea90611c16565b6001600160a01b0383166106525760405162461bcd60e51b815260206004820152602860248201527f546f6b656e20616464726573732063616e6e6f7420626520746865207a65726f604482015267206164647265737360c01b60648201526084016104ea565b6001600160a01b0382166106be5760405162461bcd60e51b815260206004820152602d60248201527f5769746864726177616c20616464726573732063616e6e6f742062652074686560448201526c207a65726f206164647265737360981b60648201526084016104ea565b306001600160a01b038416036107165760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420776974686472617720746865206e617469766520746f6b656e60448201526064016104ea565b6040516370a0823160e01b815230600482015281906001600160a01b038516906370a0823190602401602060405180830381865afa15801561075a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077e9190611c36565b10156107db5760405162461bcd60e51b815260206004820152602660248201527f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f6044820152651b9d1c9858dd60d21b60648201526084016104ea565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390525f919085169063a9059cbb906044016020604051808303815f875af115801561082a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084e9190611c4d565b9050806108955760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b60448201526064016104ea565b50505050565b5f546001600160a01b031633146108c45760405162461bcd60e51b81526004016104ea90611c16565b600789905560088890556009879055600a868155600b869055600c859055600d849055600e839055600f8290556010546108fd91610fcc565b600d541115801561091d575060105461091790600a610fcc565b600e5411155b61097e5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2031302560a01b60648201526084016104ea565b505050505050505050565b5f546001600160a01b031633146109b25760405162461bcd60e51b81526004016104ea90611c16565b601680546001600160a01b03199081166001600160a01b0398891617909155601880548216968816969096179095556017805486169487169490941790935560198054851692861692909217909155601a80548416918516919091179055601b80549092169216919091179055565b5f546001600160a01b03163314610a4a5760405162461bcd60e51b81526004016104ea90611c16565b5f81118015610a5c5750620f42408111155b610add5760405162461bcd60e51b815260206004820152604660248201527f53776170207468726573686f6c64206d7573742062652067726561746572207460448201527f68616e203020616e64206c657373207468616e203125206f6620746f74616c20606482015265737570706c7960d01b608482015260a4016104ea565b610ae96009600a611d5c565b610af39082611d6a565b60145550565b5f610514338484610e95565b5f546001600160a01b03163314610b2e5760405162461bcd60e51b81526004016104ea90611c16565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610b815760405162461bcd60e51b81526004016104ea90611c16565b5f81118015610b935750620186a08111155b610c1c5760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d20746f6b656e20616d6f756e74206d7573742062652067726560448201527f61746572207468616e203020616e64206c657373207468616e20302e3125206f60648201526d6620746f74616c20737570706c7960901b608482015260a4016104ea565b610c286009600a611d5c565b610c329082611d6a565b60155550565b5f546001600160a01b03163314610c615760405162461bcd60e51b81526004016104ea90611c16565b47811115610cb15760405162461bcd60e51b815260206004820181905260248201527f496e73756666696369656e742062616c616e636520696e20636f6e747261637460448201526064016104ea565b5f80546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610ce7573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610d145760405162461bcd60e51b81526004016104ea90611c16565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610dc95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104ea565b6001600160a01b038216610e2a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104ea565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105bb8284611d81565b610ea0838383610fd7565b610eaa8383611184565b610eb48383611213565b610ebf838383611268565b6001600160a01b0383165f90815260026020526040902054610ee19082610e8a565b6001600160a01b0384165f90815260026020526040812091909155610f06848461128c565b610f105781610f1b565b610f1b8484846112d0565b6001600160a01b0384165f90815260026020526040902054909150610f409082611391565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f939085815260200190565b60405180910390a350505050565b5f8184841115610fc45760405162461bcd60e51b81526004016104ea91906119d3565b505050900390565b5f6105bb8284611d94565b6001600160a01b03831661103b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ea565b6001600160a01b03821661109d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ea565b5f81116110fe5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104ea565b6001600160a01b0383165f9081526002602052604090205481111561117f5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104ea565b505050565b6001600160a01b0382165f9081526004602052604090205460ff161580156111c457506001600160a01b0381165f9081526004602052604090205460ff16155b15610ce757600654600160a01b900460ff16610ce75760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104ea565b6006546001600160a01b03828116911614801561124857506001600160a01b0382165f9081526004602052604090205460ff16155b15610ce757600160125f82825461125f9190611db3565b90915550505050565b61127383838361139c565b1561117f5761128360145461144c565b5f601255505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156105bb5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806112dc858561177d565b111561138a575f6113046112f0868661177d565b6010546112fe908690610fcc565b906117c7565b305f908152600260205260409020549091506113209082611391565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113709085815260200190565b60405180910390a36113828382610e8a565b9150506105bb565b5092915050565b5f6105bb8284611db3565b601554601454305f9081526002602052604081205460135491938510159211159060ff161580156113cf575060115460ff165b80156113e45750600654600160a01b900460ff165b80156113ed5750815b801561141157506001600160a01b0386165f9081526004602052604090205460ff16155b801561142a57506006546001600160a01b038681169116145b80156114395750600160125410155b80156114425750805b9695505050505050565b6013805460ff19166001179055600c54600a546009546008546007545f946114869490936114809391928492839190611391565b90611391565b90505f6114a3600b546114806002856117c790919063ffffffff16565b90505f6114c5826114bf600754876117c790919063ffffffff16565b90610fcc565b90505f6114d28583610e8a565b9050476114de826117d2565b5f6114e94783610e8a565b90505f611517611510600b5461150a6007548a610e8a90919063ffffffff16565b90610e8a565b8390610fcc565b90505f61152f600754836117c790919063ffffffff16565b90508015611541576115418682611922565b5f61155c60026112fe600854866117c790919063ffffffff16565b9050801561159d576018546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561159b573d5f803e3d5ffd5b505b5f6115b860026112fe600954876117c790919063ffffffff16565b905080156115f9576017546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156115f7573d5f803e3d5ffd5b505b5f61161460026112fe600a54886117c790919063ffffffff16565b90508015611655576019546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611653573d5f803e3d5ffd5b505b5f61166b600b548e6117c790919063ffffffff16565b90505f611678828d610fcc565b9050801561172257305f908152600260205260409020546116999082610e8a565b305f9081526002602052604080822092909255601a546001600160a01b0316815220546116c69082611391565b601a80546001600160a01b039081165f90815260026020908152604091829020949094559154915184815291169130917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b47801561176257601b546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611760573d5f803e3d5ffd5b505b50506013805460ff1916905550505050505050505050505050565b6006545f906001600160a01b039081169083160361179e5750600e54610518565b6006546001600160a01b03908116908416036117bd5750600d54610518565b50600f5492915050565b5f6105bb8284611d6a565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061180557611805611dc6565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561185c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118809190611dda565b8160018151811061189357611893611dc6565b6001600160a01b0392831660209182029290920101526005546118b99130911684610d67565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906118f19085905f90869030904290600401611df5565b5f604051808303815f87803b158015611908575f80fd5b505af115801561191a573d5f803e3d5ffd5b505050505050565b60055461193a9030906001600160a01b031684610d67565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156119a7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906119cc9190611e64565b5050505050565b5f6020808352835180828501525f5b818110156119fe578581018301518582016040015282016119e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a32575f80fd5b50565b5f8060408385031215611a46575f80fd5b8235611a5181611a1e565b946020939093013593505050565b5f805f60608486031215611a71575f80fd5b8335611a7c81611a1e565b92506020840135611a8c81611a1e565b929592945050506040919091013590565b5f60208284031215611aad575f80fd5b81356105bb81611a1e565b5f805f805f805f805f6101208a8c031215611ad1575f80fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b5f805f805f8060c08789031215611b26575f80fd5b8635611b3181611a1e565b95506020870135611b4181611a1e565b94506040870135611b5181611a1e565b93506060870135611b6181611a1e565b92506080870135611b7181611a1e565b915060a0870135611b8181611a1e565b809150509295509295509295565b5f60208284031215611b9f575f80fd5b5035919050565b8015158114611a32575f80fd5b5f8060408385031215611bc4575f80fd5b8235611bcf81611a1e565b91506020830135611bdf81611ba6565b809150509250929050565b5f8060408385031215611bfb575f80fd5b8235611c0681611a1e565b91506020830135611bdf81611a1e565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f60208284031215611c46575f80fd5b5051919050565b5f60208284031215611c5d575f80fd5b81516105bb81611ba6565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611cb657815f1904821115611c9c57611c9c611c68565b80851615611ca957918102915b93841c9390800290611c81565b509250929050565b5f82611ccc57506001610518565b81611cd857505f610518565b8160018114611cee5760028114611cf857611d14565b6001915050610518565b60ff841115611d0957611d09611c68565b50506001821b610518565b5060208310610133831016604e8410600b8410161715611d37575081810a610518565b611d418383611c7c565b805f1904821115611d5457611d54611c68565b029392505050565b5f6105bb60ff841683611cbe565b808202811582820484141761051857610518611c68565b8181038181111561051857610518611c68565b5f82611dae57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561051857610518611c68565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611dea575f80fd5b81516105bb81611a1e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611e435784516001600160a01b031683529383019391830191600101611e1e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611e76575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200ef7746c92b18c89e1a9e90346f217f0e5473278f8b0afecbe0ee4b844f5b6e264736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c806370a08231116100b3578063a9059cbb1161006d578063a9059cbb146103e2578063d37e917714610401578063dac9853e14610420578063dd62ed3e1461043f578063f14210a614610483578063f2fde38b146104a2575f80fd5b806370a08231146102f45780637c1e6f9c14610328578063893d20e81461034757806395d89b41146103775780639abba4e6146103a4578063a8aa1b31146103c3575f80fd5b80632f54bf6e116101045780632f54bf6e1461022b578063313ce5671461025857806338ffa798146102735780633f4218e0146102885780635e35359e146102b65780636e78ac23146102d5575f80fd5b806301339c21146101555780630445b6671461016b57806306fdde0314610193578063095ea7b3146101c957806318160ddd146101f857806323b872dd1461020c575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b506101696104c1565b005b348015610176575f80fd5b5061018060145481565b6040519081526020015b60405180910390f35b34801561019e575f80fd5b50604080518082019091526005815264263ab730b960d91b60208201525b60405161018a91906119d3565b3480156101d4575f80fd5b506101e86101e3366004611a35565b610508565b604051901515815260200161018a565b348015610203575f80fd5b5061018061051e565b348015610217575f80fd5b506101e8610226366004611a5f565b61055a565b348015610236575f80fd5b506101e8610245366004611a9d565b5f546001600160a01b0391821691161490565b348015610263575f80fd5b506040516009815260200161018a565b34801561027e575f80fd5b5061018060155481565b348015610293575f80fd5b506101e86102a2366004611a9d565b60046020525f908152604090205460ff1681565b3480156102c1575f80fd5b506101696102d0366004611a5f565b6105c2565b3480156102e0575f80fd5b506101696102ef366004611ab8565b61089b565b3480156102ff575f80fd5b5061018061030e366004611a9d565b6001600160a01b03165f9081526002602052604090205490565b348015610333575f80fd5b50610169610342366004611b11565b610989565b348015610352575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b348015610382575f80fd5b50604080518082019091526005815264262aa720a960d91b60208201526101bc565b3480156103af575f80fd5b506101696103be366004611b8f565b610a21565b3480156103ce575f80fd5b5060065461035f906001600160a01b031681565b3480156103ed575f80fd5b506101e86103fc366004611a35565b610af9565b34801561040c575f80fd5b5061016961041b366004611bb3565b610b05565b34801561042b575f80fd5b5061016961043a366004611b8f565b610b58565b34801561044a575f80fd5b50610180610459366004611bea565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b34801561048e575f80fd5b5061016961049d366004611b8f565b610c38565b3480156104ad575f80fd5b506101696104bc366004611a9d565b610ceb565b5f546001600160a01b031633146104f35760405162461bcd60e51b81526004016104ea90611c16565b60405180910390fd5b6006805460ff60a01b1916600160a01b179055565b5f610514338484610d67565b5060015b92915050565b5f80805260026020527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b5460015461055591610e8a565b905090565b5f610566848484610e95565b6105b784336105b285604051806060016040528060288152602001611e90602891396001600160a01b038a165f9081526003602090815260408083203384529091529020549190610fa1565b610d67565b5060015b9392505050565b5f546001600160a01b031633146105eb5760405162461bcd60e51b81526004016104ea90611c16565b6001600160a01b0383166106525760405162461bcd60e51b815260206004820152602860248201527f546f6b656e20616464726573732063616e6e6f7420626520746865207a65726f604482015267206164647265737360c01b60648201526084016104ea565b6001600160a01b0382166106be5760405162461bcd60e51b815260206004820152602d60248201527f5769746864726177616c20616464726573732063616e6e6f742062652074686560448201526c207a65726f206164647265737360981b60648201526084016104ea565b306001600160a01b038416036107165760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420776974686472617720746865206e617469766520746f6b656e60448201526064016104ea565b6040516370a0823160e01b815230600482015281906001600160a01b038516906370a0823190602401602060405180830381865afa15801561075a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061077e9190611c36565b10156107db5760405162461bcd60e51b815260206004820152602660248201527f496e73756666696369656e7420746f6b656e2062616c616e636520696e20636f6044820152651b9d1c9858dd60d21b60648201526084016104ea565b60405163a9059cbb60e01b81526001600160a01b038381166004830152602482018390525f919085169063a9059cbb906044016020604051808303815f875af115801561082a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084e9190611c4d565b9050806108955760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881d1c985b9cd9995c8819985a5b1959605a1b60448201526064016104ea565b50505050565b5f546001600160a01b031633146108c45760405162461bcd60e51b81526004016104ea90611c16565b600789905560088890556009879055600a868155600b869055600c859055600d849055600e839055600f8290556010546108fd91610fcc565b600d541115801561091d575060105461091790600a610fcc565b600e5411155b61097e5760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2031302560a01b60648201526084016104ea565b505050505050505050565b5f546001600160a01b031633146109b25760405162461bcd60e51b81526004016104ea90611c16565b601680546001600160a01b03199081166001600160a01b0398891617909155601880548216968816969096179095556017805486169487169490941790935560198054851692861692909217909155601a80548416918516919091179055601b80549092169216919091179055565b5f546001600160a01b03163314610a4a5760405162461bcd60e51b81526004016104ea90611c16565b5f81118015610a5c5750620f42408111155b610add5760405162461bcd60e51b815260206004820152604660248201527f53776170207468726573686f6c64206d7573742062652067726561746572207460448201527f68616e203020616e64206c657373207468616e203125206f6620746f74616c20606482015265737570706c7960d01b608482015260a4016104ea565b610ae96009600a611d5c565b610af39082611d6a565b60145550565b5f610514338484610e95565b5f546001600160a01b03163314610b2e5760405162461bcd60e51b81526004016104ea90611c16565b6001600160a01b03919091165f908152600460205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610b815760405162461bcd60e51b81526004016104ea90611c16565b5f81118015610b935750620186a08111155b610c1c5760405162461bcd60e51b815260206004820152604e60248201527f4d696e696d756d20746f6b656e20616d6f756e74206d7573742062652067726560448201527f61746572207468616e203020616e64206c657373207468616e20302e3125206f60648201526d6620746f74616c20737570706c7960901b608482015260a4016104ea565b610c286009600a611d5c565b610c329082611d6a565b60155550565b5f546001600160a01b03163314610c615760405162461bcd60e51b81526004016104ea90611c16565b47811115610cb15760405162461bcd60e51b815260206004820181905260248201527f496e73756666696369656e742062616c616e636520696e20636f6e747261637460448201526064016104ea565b5f80546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610ce7573d5f803e3d5ffd5b5050565b5f546001600160a01b03163314610d145760405162461bcd60e51b81526004016104ea90611c16565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610dc95760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104ea565b6001600160a01b038216610e2a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104ea565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105bb8284611d81565b610ea0838383610fd7565b610eaa8383611184565b610eb48383611213565b610ebf838383611268565b6001600160a01b0383165f90815260026020526040902054610ee19082610e8a565b6001600160a01b0384165f90815260026020526040812091909155610f06848461128c565b610f105781610f1b565b610f1b8484846112d0565b6001600160a01b0384165f90815260026020526040902054909150610f409082611391565b6001600160a01b038085165f8181526002602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f939085815260200190565b60405180910390a350505050565b5f8184841115610fc45760405162461bcd60e51b81526004016104ea91906119d3565b505050900390565b5f6105bb8284611d94565b6001600160a01b03831661103b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104ea565b6001600160a01b03821661109d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104ea565b5f81116110fe5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104ea565b6001600160a01b0383165f9081526002602052604090205481111561117f5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104ea565b505050565b6001600160a01b0382165f9081526004602052604090205460ff161580156111c457506001600160a01b0381165f9081526004602052604090205460ff16155b15610ce757600654600160a01b900460ff16610ce75760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104ea565b6006546001600160a01b03828116911614801561124857506001600160a01b0382165f9081526004602052604090205460ff16155b15610ce757600160125f82825461125f9190611db3565b90915550505050565b61127383838361139c565b1561117f5761128360145461144c565b5f601255505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156105bb5750506001600160a01b03165f9081526004602052604090205460ff1615919050565b5f806112dc858561177d565b111561138a575f6113046112f0868661177d565b6010546112fe908690610fcc565b906117c7565b305f908152600260205260409020549091506113209082611391565b305f81815260026020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906113709085815260200190565b60405180910390a36113828382610e8a565b9150506105bb565b5092915050565b5f6105bb8284611db3565b601554601454305f9081526002602052604081205460135491938510159211159060ff161580156113cf575060115460ff165b80156113e45750600654600160a01b900460ff165b80156113ed5750815b801561141157506001600160a01b0386165f9081526004602052604090205460ff16155b801561142a57506006546001600160a01b038681169116145b80156114395750600160125410155b80156114425750805b9695505050505050565b6013805460ff19166001179055600c54600a546009546008546007545f946114869490936114809391928492839190611391565b90611391565b90505f6114a3600b546114806002856117c790919063ffffffff16565b90505f6114c5826114bf600754876117c790919063ffffffff16565b90610fcc565b90505f6114d28583610e8a565b9050476114de826117d2565b5f6114e94783610e8a565b90505f611517611510600b5461150a6007548a610e8a90919063ffffffff16565b90610e8a565b8390610fcc565b90505f61152f600754836117c790919063ffffffff16565b90508015611541576115418682611922565b5f61155c60026112fe600854866117c790919063ffffffff16565b9050801561159d576018546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561159b573d5f803e3d5ffd5b505b5f6115b860026112fe600954876117c790919063ffffffff16565b905080156115f9576017546040516001600160a01b039091169082156108fc029083905f818181858888f193505050501580156115f7573d5f803e3d5ffd5b505b5f61161460026112fe600a54886117c790919063ffffffff16565b90508015611655576019546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611653573d5f803e3d5ffd5b505b5f61166b600b548e6117c790919063ffffffff16565b90505f611678828d610fcc565b9050801561172257305f908152600260205260409020546116999082610e8a565b305f9081526002602052604080822092909255601a546001600160a01b0316815220546116c69082611391565b601a80546001600160a01b039081165f90815260026020908152604091829020949094559154915184815291169130917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b47801561176257601b546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015611760573d5f803e3d5ffd5b505b50506013805460ff1916905550505050505050505050505050565b6006545f906001600160a01b039081169083160361179e5750600e54610518565b6006546001600160a01b03908116908416036117bd5750600d54610518565b50600f5492915050565b5f6105bb8284611d6a565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061180557611805611dc6565b6001600160a01b03928316602091820292909201810191909152600554604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561185c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118809190611dda565b8160018151811061189357611893611dc6565b6001600160a01b0392831660209182029290920101526005546118b99130911684610d67565b60055460405163791ac94760e01b81526001600160a01b039091169063791ac947906118f19085905f90869030904290600401611df5565b5f604051808303815f87803b158015611908575f80fd5b505af115801561191a573d5f803e3d5ffd5b505050505050565b60055461193a9030906001600160a01b031684610d67565b60055460165460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156119a7573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906119cc9190611e64565b5050505050565b5f6020808352835180828501525f5b818110156119fe578581018301518582016040015282016119e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611a32575f80fd5b50565b5f8060408385031215611a46575f80fd5b8235611a5181611a1e565b946020939093013593505050565b5f805f60608486031215611a71575f80fd5b8335611a7c81611a1e565b92506020840135611a8c81611a1e565b929592945050506040919091013590565b5f60208284031215611aad575f80fd5b81356105bb81611a1e565b5f805f805f805f805f6101208a8c031215611ad1575f80fd5b505087359960208901359950604089013598606081013598506080810135975060a0810135965060c0810135955060e08101359450610100013592509050565b5f805f805f8060c08789031215611b26575f80fd5b8635611b3181611a1e565b95506020870135611b4181611a1e565b94506040870135611b5181611a1e565b93506060870135611b6181611a1e565b92506080870135611b7181611a1e565b915060a0870135611b8181611a1e565b809150509295509295509295565b5f60208284031215611b9f575f80fd5b5035919050565b8015158114611a32575f80fd5b5f8060408385031215611bc4575f80fd5b8235611bcf81611a1e565b91506020830135611bdf81611ba6565b809150509250929050565b5f8060408385031215611bfb575f80fd5b8235611c0681611a1e565b91506020830135611bdf81611a1e565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f60208284031215611c46575f80fd5b5051919050565b5f60208284031215611c5d575f80fd5b81516105bb81611ba6565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115611cb657815f1904821115611c9c57611c9c611c68565b80851615611ca957918102915b93841c9390800290611c81565b509250929050565b5f82611ccc57506001610518565b81611cd857505f610518565b8160018114611cee5760028114611cf857611d14565b6001915050610518565b60ff841115611d0957611d09611c68565b50506001821b610518565b5060208310610133831016604e8410600b8410161715611d37575081810a610518565b611d418383611c7c565b805f1904821115611d5457611d54611c68565b029392505050565b5f6105bb60ff841683611cbe565b808202811582820484141761051857610518611c68565b8181038181111561051857610518611c68565b5f82611dae57634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561051857610518611c68565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611dea575f80fd5b81516105bb81611a1e565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611e435784516001600160a01b031683529383019391830191600101611e1e565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611e76575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200ef7746c92b18c89e1a9e90346f217f0e5473278f8b0afecbe0ee4b844f5b6e264736f6c63430008140033

Deployed Bytecode Sourcemap

4706:12990:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7591:61;;;;;;;;;;;;;:::i;:::-;;5743:58;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5743:58:0;;;;;;;;7368:67;;;;;;;;;;-1:-1:-1;7428:5:0;;;;;;;;;;;;-1:-1:-1;;;7428:5:0;;;;7368:67;;;;;;;:::i;8380:133::-;;;;;;;;;;-1:-1:-1;8380:133:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8380:133:0;1205:187:1;8519:111:0;;;;;;;;;;;;;:::i;16139:309::-;;;;;;;;;;-1:-1:-1;16139:309:0;;;;;:::i;:::-;;:::i;3086:87::-;;;;;;;;;;-1:-1:-1;3086:87:0;;;;;:::i;:::-;3141:4;3166:5;-1:-1:-1;;;;;3155:16:0;;;3166:5;;3155:16;;3086:87;7518:67;;;;;;;;;;-1:-1:-1;7518:67:0;;4909:1;2252:36:1;;2240:2;2225:18;7518:67:0;2110:184:1;5808:62:0;;;;;;;;;;;;;;;;5105:44;;;;;;;;;;-1:-1:-1;5105:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16853:584;;;;;;;;;;-1:-1:-1;16853:584:0;;;;;:::i;:::-;;:::i;9675:668::-;;;;;;;;;;-1:-1:-1;9675:668:0;;;;;:::i;:::-;;:::i;7742:103::-;;;;;;;;;;-1:-1:-1;7742:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7825:18:0;7808:7;7825:18;;;:9;:18;;;;;;;7742:103;10351:558;;;;;;;;;;-1:-1:-1;10351:558:0;;;;;:::i;:::-;;:::i;7658:78::-;;;;;;;;;;-1:-1:-1;7710:7:0;7728:5;-1:-1:-1;;;;;7728:5:0;7658:78;;;-1:-1:-1;;;;;4158:32:1;;;4140:51;;4128:2;4113:18;7658:78:0;3994:203:1;7441:71:0;;;;;;;;;;-1:-1:-1;7503:7:0;;;;;;;;;;;;-1:-1:-1;;;7503:7:0;;;;7441:71;;15411:280;;;;;;;;;;-1:-1:-1;15411:280:0;;;;;:::i;:::-;;:::i;5177:19::-;;;;;;;;;;-1:-1:-1;5177:19:0;;;;-1:-1:-1;;;;;5177:19:0;;;7851:139;;;;;;;;;;-1:-1:-1;7851:139:0;;;;;:::i;:::-;;:::i;8263:111::-;;;;;;;;;;-1:-1:-1;8263:111:0;;;;;:::i;:::-;;:::i;15095:308::-;;;;;;;;;;-1:-1:-1;15095:308:0;;;;;:::i;:::-;;:::i;7996:127::-;;;;;;;;;;-1:-1:-1;7996:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8094:18:0;;;8077:7;8094:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7996:127;17498:193;;;;;;;;;;-1:-1:-1;17498:193:0;;;;;:::i;:::-;;:::i;3179:111::-;;;;;;;;;;-1:-1:-1;3179:111:0;;;;;:::i;:::-;;:::i;7591:61::-;3141:4;3166:5;-1:-1:-1;;;;;3166:5:0;3053:10;3155:16;3037:38;;;;-1:-1:-1;;;3037:38:0;;;;;;;:::i;:::-;;;;;;;;;7629:14:::1;:21:::0;;-1:-1:-1;;;;7629:21:0::1;-1:-1:-1::0;;;7629:21:0::1;::::0;;7591:61::o;8380:133::-;8455:4;8462:37;8471:10;8483:7;8492:6;8462:8;:37::i;:::-;-1:-1:-1;8507:4:0;8380:133;;;;;:::o;8519:111::-;8572:7;7825:18;;;:9;:18;;;;8589:12;;:39;;:16;:39::i;:::-;8582:46;;8519:111;:::o;16139:309::-;16237:4;16254:36;16264:6;16272:9;16283:6;16254:9;:36::i;:::-;16301:117;16310:6;16318:10;16330:87;16366:6;16330:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16330:19:0;;;;;;:11;:19;;;;;;;;16350:10;16330:31;;;;;;;;;:87;:35;:87::i;:::-;16301:8;:117::i;:::-;-1:-1:-1;16436:4:0;16139:309;;;;;;:::o;16853:584::-;3141:4;3166:5;-1:-1:-1;;;;;3166:5:0;3053:10;3155:16;3037:38;;;;-1:-1:-1;;;3037:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16961:26:0;::::1;16953:79;;;::::0;-1:-1:-1;;;16953:79:0;;6086:2:1;16953:79:0::1;::::0;::::1;6068:21:1::0;6125:2;6105:18;;;6098:30;6164:34;6144:18;;;6137:62;-1:-1:-1;;;6215:18:1;;;6208:38;6263:19;;16953:79:0::1;5884:404:1::0;16953:79:0::1;-1:-1:-1::0;;;;;17047:16:0;::::1;17039:74;;;::::0;-1:-1:-1;;;17039:74:0;;6495:2:1;17039:74:0::1;::::0;::::1;6477:21:1::0;6534:2;6514:18;;;6507:30;6573:34;6553:18;;;6546:62;-1:-1:-1;;;6624:18:1;;;6617:43;6677:19;;17039:74:0::1;6293:409:1::0;17039:74:0::1;17152:4;-1:-1:-1::0;;;;;17128:29:0;::::1;::::0;17120:74:::1;;;::::0;-1:-1:-1;;;17120:74:0;;6909:2:1;17120:74:0::1;::::0;::::1;6891:21:1::0;;;6928:18;;;6921:30;6987:34;6967:18;;;6960:62;7039:18;;17120:74:0::1;6707:356:1::0;17120:74:0::1;17224:45;::::0;-1:-1:-1;;;17224:45:0;;17263:4:::1;17224:45;::::0;::::1;4140:51:1::0;17273:6:0;;-1:-1:-1;;;;;17224:30:0;::::1;::::0;::::1;::::0;4113:18:1;;17224:45:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:55;;17216:106;;;::::0;-1:-1:-1;;;17216:106:0;;7459:2:1;17216:106:0::1;::::0;::::1;7441:21:1::0;7498:2;7478:18;;;7471:30;7537:34;7517:18;;;7510:62;-1:-1:-1;;;7588:18:1;;;7581:36;7634:19;;17216:106:0::1;7257:402:1::0;17216:106:0::1;17343:41;::::0;-1:-1:-1;;;17343:41:0;;-1:-1:-1;;;;;7856:32:1;;;17343:41:0::1;::::0;::::1;7838:51:1::0;7905:18;;;7898:34;;;17331:9:0::1;::::0;17343:29;;::::1;::::0;::::1;::::0;7811:18:1;;17343:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17331:53;;17399:4;17391:38;;;::::0;-1:-1:-1;;;17391:38:0;;8395:2:1;17391:38:0::1;::::0;::::1;8377:21:1::0;8434:2;8414:18;;;8407:30;-1:-1:-1;;;8453:18:1;;;8446:51;8514:18;;17391:38:0::1;8193:345:1::0;17391:38:0::1;16946:491;16853:584:::0;;;:::o;9675:668::-;3141:4;3166:5;-1:-1:-1;;;;;3166:5:0;3053:10;3155:16;3037:38;;;;-1:-1:-1;;;3037:38:0;;;;;;;:::i;:::-;9898:12:::1;:25:::0;;;9934:10:::1;:21:::0;;;9966:14:::1;:29:::0;;;10006:17:::1;:35:::0;;;10052:18:::1;:37:::0;;;10100:7:::1;:15:::0;;;10126:8:::1;:17:::0;;;10154:7:::1;:15:::0;;;10180:11:::1;:20:::0;;;10231:11:::1;::::0;:19:::1;::::0;:15:::1;:19::i;:::-;10219:8;;:31;;:65;;;;-1:-1:-1::0;10265:11:0::1;::::0;:19:::1;::::0;10281:2:::1;10265:15;:19::i;:::-;10254:7;;:30;;10219:65;10211:122;;;::::0;-1:-1:-1;;;10211:122:0;;8745:2:1;10211:122:0::1;::::0;::::1;8727:21:1::0;8784:2;8764:18;;;8757:30;8823:34;8803:18;;;8796:62;-1:-1:-1;;;8874:18:1;;;8867:42;8926:19;;10211:122:0::1;8543:408:1::0;10211:122:0::1;9675:668:::0;;;;;;;;;:::o;10351:558::-;3141:4;3166:5;-1:-1:-1;;;;;3166:5:0;3053:10;3155:16;3037:38;;;;-1:-1:-1;;;3037:38:0;;;;;;;:::i;:::-;10594:18:::1;:40:::0;;-1:-1:-1;;;;;;10594:40:0;;::::1;-1:-1:-1::0;;;;;10594:40:0;;::::1;;::::0;;;10645:16:::1;:36:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;10692:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;10747:23:::1;:50:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;10808:24:::1;:52:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;10871:13:::1;:30:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;10351:558::o;15411:280::-;3141:4;3166:5;-1:-1:-1;;;;;3166:5:0;3053:10;3155:16;3037:38;;;;-1:-1:-1;;;3037:38:0;;;;;;;:::i;:::-;15517:1:::1;15500:14;:18;:47;;;;;15540:7;15522:14;:25;;15500:47;15492:130;;;::::0;-1:-1:-1;;;15492:130:0;;9158:2:1;15492:130:0::1;::::0;::::1;9140:21:1::0;9197:2;9177:18;;;9170:30;9236:34;9216:18;;;9209:62;9307:34;9287:18;;;9280:62;-1:-1:-1;;;9358:19:1;;;9351:37;9405:19;;15492:130:0::1;8956:474:1::0;15492:130:0::1;15667:15;4909:1;15667:2;:15;:::i;:::-;15649:34;::::0;:14;:34:::1;:::i;:::-;15633:13;:50:::0;-1:-1:-1;15411:280:0:o;7851:139::-;7929:4;7936:40;7946:10;7958:9;7969:6;7936:9;:40::i;8263:111::-;3141:4;3166:5;-1:-1:-1;;;;;3166:5:0;3053:10;3155:16;3037:38;;;;-1:-1:-1;;;3037:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8340:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8340:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8263:111::o;15095:308::-;3141:4;3166:5;-1:-1:-1;;;;;3166:5:0;3053:10;3155:16;3037:38;;;;-1:-1:-1;;;3037:38:0;;;;;;;:::i;:::-;15214:1:::1;15194:17;:21;:52;;;;;15240:6;15219:17;:27;;15194:52;15186:143;;;::::0;-1:-1:-1;;;15186:143:0;;11325:2:1;15186:143:0::1;::::0;::::1;11307:21:1::0;11364:2;11344:18;;;11337:30;11403:34;11383:18;;;11376:62;11474:34;11454:18;;;11447:62;-1:-1:-1;;;11525:19:1;;;11518:45;11580:19;;15186:143:0::1;11123:482:1::0;15186:143:0::1;15379:15;4909:1;15379:2;:15;:::i;:::-;15358:37;::::0;:17;:37:::1;:::i;:::-;15340:15;:55:::0;-1:-1:-1;15095:308:0:o;17498:193::-;3141:4;3166:5;-1:-1:-1;;;;;3166:5:0;3053:10;3155:16;3037:38;;;;-1:-1:-1;;;3037:38:0;;;;;;;:::i;:::-;17583:21:::1;17573:6;:31;;17565:76;;;::::0;-1:-1:-1;;;17565:76:0;;11812:2:1;17565:76:0::1;::::0;::::1;11794:21:1::0;;;11831:18;;;11824:30;11890:34;11870:18;;;11863:62;11942:18;;17565:76:0::1;11610:356:1::0;17565:76:0::1;17660:5;::::0;;17652:31:::1;::::0;-1:-1:-1;;;;;17660:5:0;;::::1;::::0;17652:31;::::1;;;::::0;17676:6;;17652:31;17660:5;17652:31;17676:6;17660:5;17652:31;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17498:193:::0;:::o;3179:111::-;3141:4;3166:5;-1:-1:-1;;;;;3166:5:0;3053:10;3155:16;3037:38;;;;-1:-1:-1;;;3037:38:0;;;;;;;:::i;:::-;3245:5:::1;:11:::0;;-1:-1:-1;;;;;;3245:11:0::1;-1:-1:-1::0;;;;;3245:11:0;::::1;::::0;;::::1;::::0;;;3263:25:::1;::::0;4140:51:1;;;3263:25:0::1;::::0;4128:2:1;4113:18;3263:25:0::1;;;;;;;3179:111:::0;:::o;16456:335::-;-1:-1:-1;;;;;16549:19:0;;16541:68;;;;-1:-1:-1;;;16541:68:0;;12389:2:1;16541:68:0;;;12371:21:1;12428:2;12408:18;;;12401:30;12467:34;12447:18;;;12440:62;-1:-1:-1;;;12518:18:1;;;12511:34;12562:19;;16541:68:0;12187:400:1;16541:68:0;-1:-1:-1;;;;;16628:21:0;;16620:68;;;;-1:-1:-1;;;16620:68:0;;12794:2:1;16620:68:0;;;12776:21:1;12833:2;12813:18;;;12806:30;12872:34;12852:18;;;12845:62;-1:-1:-1;;;12923:18:1;;;12916:32;12965:19;;16620:68:0;12592:398:1;16620:68:0;-1:-1:-1;;;;;16699:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16751:32;;160:25:1;;;16751:32:0;;133:18:1;16751:32:0;;;;;;;16456:335;;;:::o;272:82::-;330:7;347:5;351:1;347;:5;:::i;9085:582::-;9174:37;9185:6;9193:9;9204:6;9174:10;:37::i;:::-;9222:38;9242:6;9250:9;9222:19;:38::i;:::-;9271:35;9288:6;9296:9;9271:16;:35::i;:::-;9317;9326:6;9334:9;9345:6;9317:8;:35::i;:::-;-1:-1:-1;;;;;9383:17:0;;;;;;:9;:17;;;;;;:29;;9405:6;9383:21;:29::i;:::-;-1:-1:-1;;;;;9363:17:0;;;;;;:9;:17;;;;;:49;;;;9448:32;9373:6;9470:9;9448:13;:32::i;:::-;:78;;9520:6;9448:78;;;9483:34;9491:6;9499:9;9510:6;9483:7;:34::i;:::-;-1:-1:-1;;;;;9560:20:0;;;;;;:9;:20;;;;;;9423:103;;-1:-1:-1;9560:40:0;;9423:103;9560:24;:40::i;:::-;-1:-1:-1;;;;;9537:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9616:43;;;;;;;;;;9644:14;160:25:1;;148:2;133:18;;14:177;9616:43:0;;;;;;;;9163:504;9085:582;;;:::o;1485:162::-;1571:7;1617:12;1609:6;;;;1601:29;;;;-1:-1:-1;;;1601:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1639:5:0;;;1485:162::o;448:82::-;506:7;523:5;527:1;523;:5;:::i;8638:439::-;-1:-1:-1;;;;;8742:20:0;;8734:70;;;;-1:-1:-1;;;8734:70:0;;13552:2:1;8734:70:0;;;13534:21:1;13591:2;13571:18;;;13564:30;13630:34;13610:18;;;13603:62;-1:-1:-1;;;13681:18:1;;;13674:35;13726:19;;8734:70:0;13350:401:1;8734:70:0;-1:-1:-1;;;;;8823:23:0;;8815:71;;;;-1:-1:-1;;;8815:71:0;;13958:2:1;8815:71:0;;;13940:21:1;13997:2;13977:18;;;13970:30;14036:34;14016:18;;;14009:62;-1:-1:-1;;;14087:18:1;;;14080:33;14130:19;;8815:71:0;13756:399:1;8815:71:0;8922:1;8905:6;:19;8897:73;;;;-1:-1:-1;;;8897:73:0;;14362:2:1;8897:73:0;;;14344:21:1;14401:2;14381:18;;;14374:30;14440:34;14420:18;;;14413:62;-1:-1:-1;;;14491:18:1;;;14484:39;14540:19;;8897:73:0;14160:405:1;8897:73:0;-1:-1:-1;;;;;7825:18:0;;7808:7;7825:18;;;:9;:18;;;;;;8989:6;:27;;8981:88;;;;-1:-1:-1;;;8981:88:0;;14772:2:1;8981:88:0;;;14754:21:1;14811:2;14791:18;;;14784:30;14850:34;14830:18;;;14823:62;-1:-1:-1;;;14901:18:1;;;14894:47;14958:19;;8981:88:0;14570:413:1;8981:88:0;8638:439;;;:::o;10917:193::-;-1:-1:-1;;;;;11010:19:0;;;;;;:11;:19;;;;;;;;11009:20;:47;;;;-1:-1:-1;;;;;;11034:22:0;;;;;;:11;:22;;;;;;;;11033:23;11009:47;11006:95;;;11066:14;;-1:-1:-1;;;11066:14:0;;;;11058:41;;;;-1:-1:-1;;;11058:41:0;;15190:2:1;11058:41:0;;;15172:21:1;15229:2;15209:18;;;15202:30;-1:-1:-1;;;15248:18:1;;;15241:44;15302:18;;11058:41:0;14988:338:1;11118:161:0;11215:4;;-1:-1:-1;;;;;11202:17:0;;;11215:4;;11202:17;:41;;;;-1:-1:-1;;;;;;11224:19:0;;;;;;:11;:19;;;;;;;;11223:20;11202:41;11199:71;;;11266:1;11245:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11118:161:0;;:::o;14495:197::-;14587:41;14602:6;14610:9;14621:6;14587:14;:41::i;:::-;14584:101;;;14630:29;14645:13;;14630:14;:29::i;:::-;14681:1;14661:9;:22;14495:197;;;:::o;14700:160::-;-1:-1:-1;;;;;14806:19:0;;14781:4;14806:19;;;:11;:19;;;;;;;;14805:20;:47;;;;-1:-1:-1;;;;;;;14830:22:0;;;;;:11;:22;;;;;;;;14829:23;;14700:160;-1:-1:-1;14700:160:0:o;15699:432::-;15785:7;15841:1;15808:30;15820:6;15828:9;15808:11;:30::i;:::-;:34;15805:304;;;15854:17;15874:59;15902:30;15914:6;15922:9;15902:11;:30::i;:::-;15885:11;;15874:23;;:6;;:10;:23::i;:::-;:27;;:59::i;:::-;15989:4;15971:24;;;;:9;:24;;;;;;15854:79;;-1:-1:-1;15971:39:0;;15854:79;15971:28;:39::i;:::-;15962:4;15944:24;;;;:9;:24;;;;;;;:66;;;;16026:42;;-1:-1:-1;;;;;16026:42:0;;;;;;;16058:9;160:25:1;;148:2;133:18;;14:177;16026:42:0;;;;;;;;16086:21;:6;16097:9;16086:10;:21::i;:::-;16079:28;;;;;15805:304;-1:-1:-1;16117:6:0;15699:432;-1:-1:-1;;15699:432:0:o;184:82::-;242:7;259:5;263:1;259;:5;:::i;14087:400::-;14228:15;;14304:13;;14294:4;14185;7825:18;;;:9;:18;;;;;;14336:8;;14185:4;;14218:25;;;;-1:-1:-1;14276:41:0;;14336:8;;14335:9;:24;;;;-1:-1:-1;14348:11:0;;;;14335:24;:42;;;;-1:-1:-1;14363:14:0;;-1:-1:-1;;;14363:14:0;;;;14335:42;:54;;;;;14381:8;14335:54;:78;;;;-1:-1:-1;;;;;;14394:19:0;;;;;;:11;:19;;;;;;;;14393:20;14335:78;:99;;;;-1:-1:-1;14430:4:0;;-1:-1:-1;;;;;14417:17:0;;;14430:4;;14417:17;14335:99;:126;;;;;14459:1;14438:9;;:23;;14335:126;:144;;;;;14465:14;14335:144;14328:151;14087:400;-1:-1:-1;;;;;;14087:400:0:o;11287:1999::-;5899:8;:15;;-1:-1:-1;;5899:15:0;5910:4;5899:15;;;11471:7:::1;::::0;11448:17:::1;::::0;11428:14:::1;::::0;11412:10:::1;::::0;11395:12:::1;::::0;5899:8;;11395:84:::1;::::0;11471:7;;11395:71:::1;::::0;11448:17;;11395:71;;;;:12;:16:::1;:28::i;:::-;:32:::0;::::1;:48::i;:84::-;11354:125;;11486:20;11509:61;11551:18;;11509:37;11544:1;11509:30;:34;;:37;;;;:::i;:61::-;11486:84;;11577:32;11612:42;11641:12;11612:24;11623:12;;11612:6;:10;;:24;;;;:::i;:::-;:28:::0;::::1;:42::i;:::-;11577:77:::0;-1:-1:-1;11661:14:0::1;11678:36;:6:::0;11577:77;11678:10:::1;:36::i;:::-;11661:53:::0;-1:-1:-1;11748:21:0::1;11776:24;11661:53:::0;11776:16:::1;:24::i;:::-;11807:20;11830:41;:21;11856:14:::0;11830:25:::1;:41::i;:::-;11807:64;;11878:19;11900:72;11917:54;11952:18;;11917:30;11934:12;;11917;:16;;:30;;;;:::i;:::-;:34:::0;::::1;:54::i;:::-;11900:12:::0;;:16:::1;:72::i;:::-;11878:94;;11979:29;12011;12027:12;;12011:11;:15;;:29;;;;:::i;:::-;11979:61:::0;-1:-1:-1;12053:25:0;;12049:111:::1;;12091:61;12104:24;12130:21;12091:12;:61::i;:::-;12168:18;12189:34;12221:1;12189:27;12205:10;;12189:11;:15;;:27;;;;:::i;:34::-;12168:55:::0;-1:-1:-1;12234:14:0;;12230:85:::1;;12269:16;::::0;12261:46:::1;::::0;-1:-1:-1;;;;;12269:16:0;;::::1;::::0;12261:46;::::1;;;::::0;12296:10;;12269:16:::1;12261:46:::0;12269:16;12261:46;12296:10;12269:16;12261:46;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12230:85;12323:22;12348:38;12384:1;12348:31;12364:14;;12348:11;:15;;:31;;;;:::i;:38::-;12323:63:::0;-1:-1:-1;12397:18:0;;12393:97:::1;;12436:20;::::0;12428:54:::1;::::0;-1:-1:-1;;;;;12436:20:0;;::::1;::::0;12428:54;::::1;;;::::0;12467:14;;12436:20:::1;12428:54:::0;12436:20;12428:54;12467:14;12436:20;12428:54;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12393:97;12498:25;12526:41;12565:1;12526:34;12542:17;;12526:11;:15;;:34;;;;:::i;:41::-;12498:69:::0;-1:-1:-1;12578:21:0;;12574:106:::1;;12620:23;::::0;12612:60:::1;::::0;-1:-1:-1;;;;;12620:23:0;;::::1;::::0;12612:60;::::1;;;::::0;12654:17;;12620:23:::1;12612:60:::0;12620:23;12612:60;12654:17;12620:23;12612:60;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12574:106;12688:32;12723:30;12734:18;;12723:6;:10;;:30;;;;:::i;:::-;12688:65:::0;-1:-1:-1;12760:26:0::1;12789:42;12688:65:::0;12818:12;12789:28:::1;:42::i;:::-;12760:71:::0;-1:-1:-1;12842:22:0;;12838:315:::1;;12922:4;12904:24;::::0;;;:9:::1;:24;::::0;;;;;:48:::1;::::0;12933:18;12904:28:::1;:48::i;:::-;12895:4;12877:24;::::0;;;:9:::1;:24;::::0;;;;;:75;;;;13011:24:::1;::::0;-1:-1:-1;;;;;13011:24:0::1;13001:35:::0;;;;:59:::1;::::0;13041:18;13001:39:::1;:59::i;:::-;12973:24;::::0;;-1:-1:-1;;;;;12973:24:0;;::::1;12963:35;::::0;;;:9:::1;:35;::::0;;;;;;;;:97;;;;13100:24;;13076:69;;160:25:1;;;13100:24:0;::::1;::::0;13093:4:::1;::::0;13076:69:::1;::::0;133:18:1;13076:69:0::1;;;;;;;12838:315;13179:21;13211:11:::0;;13207:76:::1;;13243:13;::::0;13235:40:::1;::::0;-1:-1:-1;;;;;13243:13:0;;::::1;::::0;13235:40;::::1;;;::::0;13267:7;;13243:13:::1;13235:40:::0;13243:13;13235:40;13267:7;13243:13;13235:40;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13207:76;-1:-1:-1::0;;5919:8:0;:16;;-1:-1:-1;;5919:16:0;;;-1:-1:-1;;;;;;;;;;;;;11287:1999:0:o;14868:219::-;14983:4;;14947:7;;-1:-1:-1;;;;;14983:4:0;;;14970:17;;;;14967:38;;-1:-1:-1;14996:7:0;;14989:14;;14967:38;15028:4;;-1:-1:-1;;;;;15028:4:0;;;15018:14;;;;15015:36;;-1:-1:-1;15041:8:0;;15034:15;;15015:36;-1:-1:-1;15068:11:0;;14868:219;;;;:::o;360:82::-;418:7;435:5;439:1;435;:5;:::i;13645:434::-;13735:16;;;13749:1;13735:16;;;;;;;;13711:21;;13735:16;;;;;;;;;;-1:-1:-1;13735:16:0;13711:40;;13780:4;13762;13767:1;13762:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13762:23:0;;;:7;;;;;;;;;;:23;;;;13806:6;;:13;;;-1:-1:-1;;;13806:13:0;;;;:6;;;;;:11;;:13;;;;;13762:7;;13806:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13796:4;13801:1;13796:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13796:23:0;;;:7;;;;;;;;;:23;13862:6;;13830:53;;13847:4;;13862:6;13871:11;13830:8;:53::i;:::-;13894:6;;:177;;-1:-1:-1;;;13894:177:0;;-1:-1:-1;;;;;13894:6:0;;;;:57;;:177;;13966:11;;13894:6;;14008:4;;14035;;14055:15;;13894:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13700:379;13645:434;:::o;13294:343::-;13407:6;;13375:53;;13392:4;;-1:-1:-1;;;;;13407:6:0;13416:11;13375:8;:53::i;:::-;13439:6;;13580:18;;13439:190;;-1:-1:-1;;;13439:190:0;;13502:4;13439:190;;;17307:34:1;17357:18;;;17350:34;;;13439:6:0;17400:18:1;;;17393:34;;;17443:18;;;17436:34;-1:-1:-1;;;;;13580:18:0;;;17486:19:1;;;17479:44;13613:15:0;17539:19:1;;;17532:35;13439:6:0;;;:22;;13469:9;;17241:19:1;;13439:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13294:343;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:247::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;2025:9;2012:23;2044:31;2069:5;2044:31;:::i;2299:730::-;2430:6;2438;2446;2454;2462;2470;2478;2486;2494;2547:3;2535:9;2526:7;2522:23;2518:33;2515:53;;;2564:1;2561;2554:12;2515:53;-1:-1:-1;;2587:23:1;;;2657:2;2642:18;;2629:32;;-1:-1:-1;2708:2:1;2693:18;;2680:32;;2759:2;2744:18;;2731:32;;-1:-1:-1;2810:3:1;2795:19;;2782:33;;-1:-1:-1;2862:3:1;2847:19;;2834:33;;-1:-1:-1;2914:3:1;2899:19;;2886:33;;-1:-1:-1;2966:3:1;2951:19;;2938:33;;-1:-1:-1;3018:3:1;3003:19;2990:33;;-1:-1:-1;2299:730:1;-1:-1:-1;2299:730:1:o;3034:955::-;3138:6;3146;3154;3162;3170;3178;3231:3;3219:9;3210:7;3206:23;3202:33;3199:53;;;3248:1;3245;3238:12;3199:53;3287:9;3274:23;3306:31;3331:5;3306:31;:::i;:::-;3356:5;-1:-1:-1;3413:2:1;3398:18;;3385:32;3426:33;3385:32;3426:33;:::i;:::-;3478:7;-1:-1:-1;3537:2:1;3522:18;;3509:32;3550:33;3509:32;3550:33;:::i;:::-;3602:7;-1:-1:-1;3661:2:1;3646:18;;3633:32;3674:33;3633:32;3674:33;:::i;:::-;3726:7;-1:-1:-1;3785:3:1;3770:19;;3757:33;3799;3757;3799;:::i;:::-;3851:7;-1:-1:-1;3910:3:1;3895:19;;3882:33;3924;3882;3924;:::i;:::-;3976:7;3966:17;;;3034:955;;;;;;;;:::o;4202:180::-;4261:6;4314:2;4302:9;4293:7;4289:23;4285:32;4282:52;;;4330:1;4327;4320:12;4282:52;-1:-1:-1;4353:23:1;;4202:180;-1:-1:-1;4202:180:1:o;4387:118::-;4473:5;4466:13;4459:21;4452:5;4449:32;4439:60;;4495:1;4492;4485:12;4510:382;4575:6;4583;4636:2;4624:9;4615:7;4611:23;4607:32;4604:52;;;4652:1;4649;4642:12;4604:52;4691:9;4678:23;4710:31;4735:5;4710:31;:::i;:::-;4760:5;-1:-1:-1;4817:2:1;4802:18;;4789:32;4830:30;4789:32;4830:30;:::i;:::-;4879:7;4869:17;;;4510:382;;;;;:::o;4897:388::-;4965:6;4973;5026:2;5014:9;5005:7;5001:23;4997:32;4994:52;;;5042:1;5039;5032:12;4994:52;5081:9;5068:23;5100:31;5125:5;5100:31;:::i;:::-;5150:5;-1:-1:-1;5207:2:1;5192:18;;5179:32;5220:33;5179:32;5220:33;:::i;5550:329::-;5752:2;5734:21;;;5791:1;5771:18;;;5764:29;-1:-1:-1;;;5824:2:1;5809:18;;5802:36;5870:2;5855:18;;5550:329::o;7068:184::-;7138:6;7191:2;7179:9;7170:7;7166:23;7162:32;7159:52;;;7207:1;7204;7197:12;7159:52;-1:-1:-1;7230:16:1;;7068:184;-1:-1:-1;7068:184:1:o;7943:245::-;8010:6;8063:2;8051:9;8042:7;8038:23;8034:32;8031:52;;;8079:1;8076;8069:12;8031:52;8111:9;8105:16;8130:28;8152:5;8130:28;:::i;9435:127::-;9496:10;9491:3;9487:20;9484:1;9477:31;9527:4;9524:1;9517:15;9551:4;9548:1;9541:15;9567:422;9656:1;9699:5;9656:1;9713:270;9734:7;9724:8;9721:21;9713:270;;;9793:4;9789:1;9785:6;9781:17;9775:4;9772:27;9769:53;;;9802:18;;:::i;:::-;9852:7;9842:8;9838:22;9835:55;;;9872:16;;;;9835:55;9951:22;;;;9911:15;;;;9713:270;;;9717:3;9567:422;;;;;:::o;9994:806::-;10043:5;10073:8;10063:80;;-1:-1:-1;10114:1:1;10128:5;;10063:80;10162:4;10152:76;;-1:-1:-1;10199:1:1;10213:5;;10152:76;10244:4;10262:1;10257:59;;;;10330:1;10325:130;;;;10237:218;;10257:59;10287:1;10278:10;;10301:5;;;10325:130;10362:3;10352:8;10349:17;10346:43;;;10369:18;;:::i;:::-;-1:-1:-1;;10425:1:1;10411:16;;10440:5;;10237:218;;10539:2;10529:8;10526:16;10520:3;10514:4;10511:13;10507:36;10501:2;10491:8;10488:16;10483:2;10477:4;10474:12;10470:35;10467:77;10464:159;;;-1:-1:-1;10576:19:1;;;10608:5;;10464:159;10655:34;10680:8;10674:4;10655:34;:::i;:::-;10725:6;10721:1;10717:6;10713:19;10704:7;10701:32;10698:58;;;10736:18;;:::i;:::-;10774:20;;9994:806;-1:-1:-1;;;9994:806:1:o;10805:140::-;10863:5;10892:47;10933:4;10923:8;10919:19;10913:4;10892:47;:::i;10950:168::-;11023:9;;;11054;;11071:15;;;11065:22;;11051:37;11041:71;;11092:18;;:::i;12995:128::-;13062:9;;;13083:11;;;13080:37;;;13097:18;;:::i;13128:217::-;13168:1;13194;13184:132;;13238:10;13233:3;13229:20;13226:1;13219:31;13273:4;13270:1;13263:15;13301:4;13298:1;13291:15;13184:132;-1:-1:-1;13330:9:1;;13128:217::o;15331:125::-;15396:9;;;15417:10;;;15414:36;;;15430:18;;:::i;15593:127::-;15654:10;15649:3;15645:20;15642:1;15635:31;15685:4;15682:1;15675:15;15709:4;15706:1;15699:15;15725:251;15795:6;15848:2;15836:9;15827:7;15823:23;15819:32;15816:52;;;15864:1;15861;15854:12;15816:52;15896:9;15890:16;15915:31;15940:5;15915:31;:::i;15981:980::-;16243:4;16291:3;16280:9;16276:19;16322:6;16311:9;16304:25;16348:2;16386:6;16381:2;16370:9;16366:18;16359:34;16429:3;16424:2;16413:9;16409:18;16402:31;16453:6;16488;16482:13;16519:6;16511;16504:22;16557:3;16546:9;16542:19;16535:26;;16596:2;16588:6;16584:15;16570:29;;16617:1;16627:195;16641:6;16638:1;16635:13;16627:195;;;16706:13;;-1:-1:-1;;;;;16702:39:1;16690:52;;16797:15;;;;16762:12;;;;16738:1;16656:9;16627:195;;;-1:-1:-1;;;;;;;16878:32:1;;;;16873:2;16858:18;;16851:60;-1:-1:-1;;;16942:3:1;16927:19;16920:35;16839:3;15981:980;-1:-1:-1;;;15981:980:1:o;17578:306::-;17666:6;17674;17682;17735:2;17723:9;17714:7;17710:23;17706:32;17703:52;;;17751:1;17748;17741:12;17703:52;17780:9;17774:16;17764:26;;17830:2;17819:9;17815:18;17809:25;17799:35;;17874:2;17863:9;17859:18;17853:25;17843:35;;17578:306;;;;;:::o

Swarm Source

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