ETH Price: $3,730.78 (-4.78%)

Token

SolidX (SolidX)
 

Overview

Max Total Supply

50,000,000 SolidX

Holders

444 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
11,742.351194126 SolidX

Value
$0.00
0xdd17ecdc204459f54cafd6a0bc6285534afebd1f
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

SolidX is a decentralised crypto service that offers a range of services to enhance transactions and deals in the industry. It provides a transparent escrow system for both deals and over-the-counter trades, ensuring that funds are held in escrow until all parties meet the predefined terms.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SolidX

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 2023-10-17
*/

/**
All your DeFI needs in one place.

https://solidx.tech/
*/

// 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 SolidX is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'SolidX';
    string private constant _symbol = 'SolidX';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 50000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 100; // 100;
    uint256 private _maxTransferPercent = 100;
    uint256 private _maxWalletPercent = 100;
    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 = 0;
    uint256 private marketingFee = 5;
    uint256 private developmentFee = 0;
    uint256 private totalFee = 5;
    uint256 private sellFee = 5;
    uint256 private transferFee = 0;
    uint256 private denominator = 100;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 public swapThreshold = ( _totalSupply * 200 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 1 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x7c000a9551Be0239DDD68F45d89b34b42d5FCf88;
    address internal marketing_receiver = 0xfD23490602AA2A37DdE5edFBE04bAfD103Aba9A1;
    address internal liquidity_receiver = 0x7c000a9551Be0239DDD68F45d89b34b42d5FCf88;

    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[development_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[0x7c000a9551Be0239DDD68F45d89b34b42d5FCf88] = true;
        isFeeExempt[0x3d56fDe97692d248344212952C8b1da7a00e8150] = true;
        isFeeExempt[0x58bd00d39b81f5d4AE847d3D57Eb0d29F51BdF85] = true;
        isFeeExempt[0xe66Cf503814F4d699502A2cA205d910cCB334D89] = 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 enableTrading() 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 _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

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

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

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

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

    function changeTaxReceiverAddresses(address _liquidity_receiver, address _marketing_receiver, address _development_receiver) external onlyOwner {
        liquidity_receiver = _liquidity_receiver;
        marketing_receiver = _marketing_receiver;
        development_receiver = _development_receiver;
    }

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

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

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

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

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

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

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= 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 changeswapthresholdfortaxtokens(uint256 _swapThreshold) public onlyOwner {
        require(_swapThreshold <= totalSupply().mul(2).div(100), "Can't set swapthreshold higher than 2% of total supply");
        swapThreshold = _swapThreshold;
    
    }

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

} //Fix

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_liquidity_receiver","type":"address"},{"internalType":"address","name":"_marketing_receiver","type":"address"},{"internalType":"address","name":"_development_receiver","type":"address"}],"name":"changeTaxReceiverAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","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":"changeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"changeswapthresholdfortaxtokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","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":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisfeeExempt","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"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200051a565b62000022906302faf08062000531565b600181815560646002819055600381905560048190556009805460ff60a01b191690555f600a8190556005600b819055600c829055600d819055600e55600f556010556011805460ff19169091179055620186a090620000849060c862000531565b6200009091906200054b565b601455620186a06001546001620000a8919062000531565b620000b491906200054b565b601555601680546001600160a01b0319908116737c000a9551be0239ddd68f45d89b34b42d5fcf8890811790925560178054821673fd23490602aa2a37dde5edfbe04bafd103aba9a117905560188054909116909117905534801562000118575f80fd5b505f80546001600160a01b031916331781556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9291839163c45a0155916004808201926020929091908290030181865afa1580156200017d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a391906200056b565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021591906200056b565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000260573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028691906200056b565b600880546001600160a01b038581166001600160a01b031992831617909255600980548484169216919091179055305f908152600760209081526040808320805460ff199081166001908117909255601854861685528285208054821683179055601654861685528285208054821683179055601754909516845281842080548616821790557f07e888c430ac65575ff9bdfbb5bf953e23dcf0f709aac25b29672ec822f2502e80548616821790557fbe36fe204f5a87fe0dcea2d99576333b2fabac338ff237986eaefd27b23ea9bb80548616821790557ffc38d1651264f4a3f4a0aacceda04e66d2e28465767bc6bbfd0f8e802e7ad3ed80548616821790557fa92e373d4bde792090bcc7e8ec920a3b15e60f3a4355af0c9b53e952bb8977ba8054861682179055338085528285208054909616821790955554600583528184208190559051908152939450919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505062000593565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200045f57815f19048211156200044357620004436200040b565b808516156200045157918102915b93841c939080029062000424565b509250929050565b5f82620004775750600162000514565b816200048557505f62000514565b81600181146200049e5760028114620004a957620004c9565b600191505062000514565b60ff841115620004bd57620004bd6200040b565b50506001821b62000514565b5060208310610133831016604e8410600b8410161715620004ee575081810a62000514565b620004fa83836200041f565b805f19048211156200051057620005106200040b565b0290505b92915050565b5f6200052a60ff84168362000467565b9392505050565b80820281158282048414176200051457620005146200040b565b5f826200056657634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156200057c575f80fd5b81516001600160a01b03811681146200052a575f80fd5b611a7480620005a15f395ff3fe60806040526004361061014a575f3560e01c80634d808802116100b357806395d89b411161006d57806395d89b411461017d578063a8aa1b31146103bb578063a9059cbb146103da578063d37e9177146103f9578063dd62ed3e14610418578063f2fde38b1461045c575f80fd5b80634d808802146102fc57806370a082311461031b57806378109e541461034f5780637d1db4a514610363578063893d20e8146103775780638a8c523c146103a7575f80fd5b80632e3e3d5e116101045780632e3e3d5e146102275780632f54bf6e14610248578063313ce567146102755780633b297fbd146102905780633f4218e0146102af57806341a5ef78146102dd575f80fd5b80630445b6671461015557806306fdde031461017d578063095ea7b3146101b157806318160ddd146101e05780631f976b7e146101f457806323b872dd14610208575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016a60145481565b6040519081526020015b60405180910390f35b348015610188575f80fd5b5060408051808201825260068152650a6ded8d2c8b60d31b6020820152905161017491906116aa565b3480156101bc575f80fd5b506101d06101cb36600461170c565b61047b565b6040519015158152602001610174565b3480156101eb575f80fd5b5061016a610491565b3480156101ff575f80fd5b5061016a6104cd565b348015610213575f80fd5b506101d0610222366004611736565b6104f0565b348015610232575f80fd5b50610246610241366004611774565b610558565b005b348015610253575f80fd5b506101d061026236600461178b565b5f546001600160a01b0391821691161490565b348015610280575f80fd5b5060405160098152602001610174565b34801561029b575f80fd5b506102466102aa3660046117a6565b61061b565b3480156102ba575f80fd5b506101d06102c936600461178b565b60076020525f908152604090205460ff1681565b3480156102e8575f80fd5b506102466102f73660046117ee565b610683565b348015610307575f80fd5b5061024661031636600461182d565b61075f565b348015610326575f80fd5b5061016a61033536600461178b565b6001600160a01b03165f9081526005602052604090205490565b34801561035a575f80fd5b5061016a61089b565b34801561036e575f80fd5b5061016a6108aa565b348015610382575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610174565b3480156103b2575f80fd5b506102466108b9565b3480156103c6575f80fd5b5060095461038f906001600160a01b031681565b3480156103e5575f80fd5b506101d06103f436600461170c565b6108f7565b348015610404575f80fd5b50610246610413366004611856565b610903565b348015610423575f80fd5b5061016a610432366004611891565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610467575f80fd5b5061024661047636600461178b565b610956565b5f6104873384846109d2565b5060015b92915050565b5f80805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546001546104c891610af5565b905090565b5f6010546003546104dc610491565b6104e691906118d1565b6104c891906118e8565b5f6104fc848484610b00565b61054d843361054885604051806060016040528060288152602001611a17602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610c22565b6109d2565b5060015b9392505050565b5f546001600160a01b0316331461058a5760405162461bcd60e51b815260040161058190611907565b60405180910390fd5b6105a860646105a2600261059c610491565b90610c4d565b90610c58565b8111156106165760405162461bcd60e51b815260206004820152603660248201527f43616e27742073657420737761707468726573686f6c6420686967686572207460448201527568616e203225206f6620746f74616c20737570706c7960501b6064820152608401610581565b601455565b5f546001600160a01b031633146106445760405162461bcd60e51b815260040161058190611907565b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560168054919093169116179055565b5f546001600160a01b031633146106ac5760405162461bcd60e51b815260040161058190611907565b600a868155600b869055600c859055600d849055600e839055600f8290556010546106d691610c58565b600d54111580156106f657506010546106f090600a610c58565b600e5411155b6107575760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2031302560a01b6064820152608401610581565b505050505050565b5f546001600160a01b031633146107885760405162461bcd60e51b815260040161058190611907565b5f606484610794610491565b61079e91906118d1565b6107a891906118e8565b90505f6064846107b6610491565b6107c091906118d1565b6107ca91906118e8565b90505f6064846107d8610491565b6107e291906118d1565b6107ec91906118e8565b60028790556003869055600485905590505f6108116103e86105a2600561059c610491565b90508084101580156108235750808310155b801561082f5750808210155b6108925760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610581565b50505050505050565b5f6010546004546104dc610491565b5f6010546002546104dc610491565b5f546001600160a01b031633146108e25760405162461bcd60e51b815260040161058190611907565b6009805460ff60a01b1916600160a01b179055565b5f610487338484610b00565b5f546001600160a01b0316331461092c5760405162461bcd60e51b815260040161058190611907565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461097f5760405162461bcd60e51b815260040161058190611907565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610a345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610581565b6001600160a01b038216610a955760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610581565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105518284611927565b610b0b838383610c63565b610b158383610e10565b610b20838383610ea3565b610b2a8383610f91565b610b35838383610fe6565b610b40838383611119565b6001600160a01b0383165f90815260056020526040902054610b629082610af5565b6001600160a01b0384165f90815260056020526040812091909155610b87848461113d565b610b915781610b9c565b610b9c848484611181565b6001600160a01b0384165f90815260056020526040902054909150610bc1908261123c565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c149085815260200190565b60405180910390a350505050565b5f8184841115610c455760405162461bcd60e51b815260040161058191906116aa565b505050900390565b5f61055182846118d1565b5f61055182846118e8565b6001600160a01b038316610cc75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610581565b6001600160a01b038216610d295760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610581565b5f8111610d8a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610581565b6001600160a01b0383165f90815260056020526040902054811115610e0b5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610581565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610e5057506001600160a01b0381165f9081526007602052604090205460ff16155b15610e9f57600954600160a01b900460ff16610e9f5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610581565b5050565b6001600160a01b0383165f9081526007602052604090205460ff16158015610ee357506001600160a01b0382165f9081526007602052604090205460ff16155b8015610efd57506009546001600160a01b03838116911614155b8015610f1457506001600160a01b03821661dead14155b15610e0b57610f2161089b565b6001600160a01b0383165f90815260056020526040902054610f43908361123c565b1115610e0b5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610581565b6009546001600160a01b038281169116148015610fc657506001600160a01b0382165f9081526007602052604090205460ff16155b15610e9f57600160125f828254610fdd919061193a565b90915550505050565b6009546001600160a01b0384811691161461108a576110036104cd565b8111158061102857506001600160a01b0383165f9081526007602052604090205460ff165b8061104a57506001600160a01b0382165f9081526007602052604090205460ff165b61108a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610581565b6110926108aa565b811115806110b757506001600160a01b0383165f9081526007602052604090205460ff165b806110d957506001600160a01b0382165f9081526007602052604090205460ff165b610e0b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610581565b611124838383611247565b15610e0b576111346014546112f7565b5f601255505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156105515750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061118d8585611467565b1115611235575f6111af6111a18686611467565b60105461059c908690610c58565b305f908152600560205260409020549091506111cb908261123c565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061121b9085815260200190565b60405180910390a361122d8382610af5565b915050610551565b5092915050565b5f610551828461193a565b601554601454305f9081526005602052604081205460135491938510159211159060ff1615801561127a575060115460ff165b801561128f5750600954600160a01b900460ff165b80156112985750815b80156112bc57506001600160a01b0386165f9081526007602052604090205460ff16155b80156112d557506009546001600160a01b038681169116145b80156112e45750600160125410155b80156112ed5750805b9695505050505050565b6013805460ff19166001908117909155600c54600b54600a545f936113309360029361059c93919261132a92839161123c565b9061123c565b90505f61134c826105a2600a5486610c4d90919063ffffffff16565b90505f6113598483610af5565b905047611365826114b1565b5f6113704783610af5565b90505f61139261138b600a5488610af590919063ffffffff16565b8390610c58565b90505f6113aa600a5483610c4d90919063ffffffff16565b905080156113bc576113bc86826115f9565b600b545f906113d09061059c856002610c4d565b90508015611411576017546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561140f573d5f803e3d5ffd5b505b478015611451576016546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561144f573d5f803e3d5ffd5b505b50506013805460ff191690555050505050505050565b6009545f906001600160a01b03908116908316036114885750600e5461048b565b6009546001600160a01b03908116908416036114a75750600d5461048b565b50600f5492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114e4576114e461194d565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561153b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190611961565b816001815181106115725761157261194d565b6001600160a01b03928316602091820292909201015260085461159891309116846109d2565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906115d09085905f9086903090429060040161197c565b5f604051808303815f87803b1580156115e7575f80fd5b505af1158015610757573d5f803e3d5ffd5b6008546116119030906001600160a01b0316846109d2565b60085460185460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561167e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116a391906119eb565b5050505050565b5f6020808352835180828501525f5b818110156116d5578581018301518582016040015282016116b9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611709575f80fd5b50565b5f806040838503121561171d575f80fd5b8235611728816116f5565b946020939093013593505050565b5f805f60608486031215611748575f80fd5b8335611753816116f5565b92506020840135611763816116f5565b929592945050506040919091013590565b5f60208284031215611784575f80fd5b5035919050565b5f6020828403121561179b575f80fd5b8135610551816116f5565b5f805f606084860312156117b8575f80fd5b83356117c3816116f5565b925060208401356117d3816116f5565b915060408401356117e3816116f5565b809150509250925092565b5f805f805f8060c08789031215611803575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f6060848603121561183f575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611867575f80fd5b8235611872816116f5565b915060208301358015158114611886575f80fd5b809150509250929050565b5f80604083850312156118a2575f80fd5b82356118ad816116f5565b91506020830135611886816116f5565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761048b5761048b6118bd565b5f8261190257634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8181038181111561048b5761048b6118bd565b8082018082111561048b5761048b6118bd565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611971575f80fd5b8151610551816116f5565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119ca5784516001600160a01b0316835293830193918301916001016119a5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156119fd575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122047674cccf80b356c2b0bf25b17f545ddf30e876fe6efb7399863f9aff321333964736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014a575f3560e01c80634d808802116100b357806395d89b411161006d57806395d89b411461017d578063a8aa1b31146103bb578063a9059cbb146103da578063d37e9177146103f9578063dd62ed3e14610418578063f2fde38b1461045c575f80fd5b80634d808802146102fc57806370a082311461031b57806378109e541461034f5780637d1db4a514610363578063893d20e8146103775780638a8c523c146103a7575f80fd5b80632e3e3d5e116101045780632e3e3d5e146102275780632f54bf6e14610248578063313ce567146102755780633b297fbd146102905780633f4218e0146102af57806341a5ef78146102dd575f80fd5b80630445b6671461015557806306fdde031461017d578063095ea7b3146101b157806318160ddd146101e05780631f976b7e146101f457806323b872dd14610208575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b5061016a60145481565b6040519081526020015b60405180910390f35b348015610188575f80fd5b5060408051808201825260068152650a6ded8d2c8b60d31b6020820152905161017491906116aa565b3480156101bc575f80fd5b506101d06101cb36600461170c565b61047b565b6040519015158152602001610174565b3480156101eb575f80fd5b5061016a610491565b3480156101ff575f80fd5b5061016a6104cd565b348015610213575f80fd5b506101d0610222366004611736565b6104f0565b348015610232575f80fd5b50610246610241366004611774565b610558565b005b348015610253575f80fd5b506101d061026236600461178b565b5f546001600160a01b0391821691161490565b348015610280575f80fd5b5060405160098152602001610174565b34801561029b575f80fd5b506102466102aa3660046117a6565b61061b565b3480156102ba575f80fd5b506101d06102c936600461178b565b60076020525f908152604090205460ff1681565b3480156102e8575f80fd5b506102466102f73660046117ee565b610683565b348015610307575f80fd5b5061024661031636600461182d565b61075f565b348015610326575f80fd5b5061016a61033536600461178b565b6001600160a01b03165f9081526005602052604090205490565b34801561035a575f80fd5b5061016a61089b565b34801561036e575f80fd5b5061016a6108aa565b348015610382575f80fd5b505f546001600160a01b03165b6040516001600160a01b039091168152602001610174565b3480156103b2575f80fd5b506102466108b9565b3480156103c6575f80fd5b5060095461038f906001600160a01b031681565b3480156103e5575f80fd5b506101d06103f436600461170c565b6108f7565b348015610404575f80fd5b50610246610413366004611856565b610903565b348015610423575f80fd5b5061016a610432366004611891565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b348015610467575f80fd5b5061024661047636600461178b565b610956565b5f6104873384846109d2565b5060015b92915050565b5f80805260056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc546001546104c891610af5565b905090565b5f6010546003546104dc610491565b6104e691906118d1565b6104c891906118e8565b5f6104fc848484610b00565b61054d843361054885604051806060016040528060288152602001611a17602891396001600160a01b038a165f9081526006602090815260408083203384529091529020549190610c22565b6109d2565b5060015b9392505050565b5f546001600160a01b0316331461058a5760405162461bcd60e51b815260040161058190611907565b60405180910390fd5b6105a860646105a2600261059c610491565b90610c4d565b90610c58565b8111156106165760405162461bcd60e51b815260206004820152603660248201527f43616e27742073657420737761707468726573686f6c6420686967686572207460448201527568616e203225206f6620746f74616c20737570706c7960501b6064820152608401610581565b601455565b5f546001600160a01b031633146106445760405162461bcd60e51b815260040161058190611907565b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560168054919093169116179055565b5f546001600160a01b031633146106ac5760405162461bcd60e51b815260040161058190611907565b600a868155600b869055600c859055600d849055600e839055600f8290556010546106d691610c58565b600d54111580156106f657506010546106f090600a610c58565b600e5411155b6107575760405162461bcd60e51b815260206004820152602c60248201527f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60448201526b6f7265207468616e2031302560a01b6064820152608401610581565b505050505050565b5f546001600160a01b031633146107885760405162461bcd60e51b815260040161058190611907565b5f606484610794610491565b61079e91906118d1565b6107a891906118e8565b90505f6064846107b6610491565b6107c091906118d1565b6107ca91906118e8565b90505f6064846107d8610491565b6107e291906118d1565b6107ec91906118e8565b60028790556003869055600485905590505f6108116103e86105a2600561059c610491565b90508084101580156108235750808310155b801561082f5750808210155b6108925760405162461bcd60e51b815260206004820152602e60248201527f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560448201526d206c657373207468616e202e352560901b6064820152608401610581565b50505050505050565b5f6010546004546104dc610491565b5f6010546002546104dc610491565b5f546001600160a01b031633146108e25760405162461bcd60e51b815260040161058190611907565b6009805460ff60a01b1916600160a01b179055565b5f610487338484610b00565b5f546001600160a01b0316331461092c5760405162461bcd60e51b815260040161058190611907565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461097f5760405162461bcd60e51b815260040161058190611907565b5f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a150565b6001600160a01b038316610a345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610581565b6001600160a01b038216610a955760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610581565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6105518284611927565b610b0b838383610c63565b610b158383610e10565b610b20838383610ea3565b610b2a8383610f91565b610b35838383610fe6565b610b40838383611119565b6001600160a01b0383165f90815260056020526040902054610b629082610af5565b6001600160a01b0384165f90815260056020526040812091909155610b87848461113d565b610b915781610b9c565b610b9c848484611181565b6001600160a01b0384165f90815260056020526040902054909150610bc1908261123c565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610c149085815260200190565b60405180910390a350505050565b5f8184841115610c455760405162461bcd60e51b815260040161058191906116aa565b505050900390565b5f61055182846118d1565b5f61055182846118e8565b6001600160a01b038316610cc75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610581565b6001600160a01b038216610d295760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610581565b5f8111610d8a5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610581565b6001600160a01b0383165f90815260056020526040902054811115610e0b5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610581565b505050565b6001600160a01b0382165f9081526007602052604090205460ff16158015610e5057506001600160a01b0381165f9081526007602052604090205460ff16155b15610e9f57600954600160a01b900460ff16610e9f5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610581565b5050565b6001600160a01b0383165f9081526007602052604090205460ff16158015610ee357506001600160a01b0382165f9081526007602052604090205460ff16155b8015610efd57506009546001600160a01b03838116911614155b8015610f1457506001600160a01b03821661dead14155b15610e0b57610f2161089b565b6001600160a01b0383165f90815260056020526040902054610f43908361123c565b1115610e0b5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610581565b6009546001600160a01b038281169116148015610fc657506001600160a01b0382165f9081526007602052604090205460ff16155b15610e9f57600160125f828254610fdd919061193a565b90915550505050565b6009546001600160a01b0384811691161461108a576110036104cd565b8111158061102857506001600160a01b0383165f9081526007602052604090205460ff165b8061104a57506001600160a01b0382165f9081526007602052604090205460ff165b61108a5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610581565b6110926108aa565b811115806110b757506001600160a01b0383165f9081526007602052604090205460ff165b806110d957506001600160a01b0382165f9081526007602052604090205460ff165b610e0b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610581565b611124838383611247565b15610e0b576111346014546112f7565b5f601255505050565b6001600160a01b0382165f9081526007602052604081205460ff161580156105515750506001600160a01b03165f9081526007602052604090205460ff1615919050565b5f8061118d8585611467565b1115611235575f6111af6111a18686611467565b60105461059c908690610c58565b305f908152600560205260409020549091506111cb908261123c565b305f81815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061121b9085815260200190565b60405180910390a361122d8382610af5565b915050610551565b5092915050565b5f610551828461193a565b601554601454305f9081526005602052604081205460135491938510159211159060ff1615801561127a575060115460ff165b801561128f5750600954600160a01b900460ff165b80156112985750815b80156112bc57506001600160a01b0386165f9081526007602052604090205460ff16155b80156112d557506009546001600160a01b038681169116145b80156112e45750600160125410155b80156112ed5750805b9695505050505050565b6013805460ff19166001908117909155600c54600b54600a545f936113309360029361059c93919261132a92839161123c565b9061123c565b90505f61134c826105a2600a5486610c4d90919063ffffffff16565b90505f6113598483610af5565b905047611365826114b1565b5f6113704783610af5565b90505f61139261138b600a5488610af590919063ffffffff16565b8390610c58565b90505f6113aa600a5483610c4d90919063ffffffff16565b905080156113bc576113bc86826115f9565b600b545f906113d09061059c856002610c4d565b90508015611411576017546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561140f573d5f803e3d5ffd5b505b478015611451576016546040516001600160a01b039091169082156108fc029083905f818181858888f1935050505015801561144f573d5f803e3d5ffd5b505b50506013805460ff191690555050505050505050565b6009545f906001600160a01b03908116908316036114885750600e5461048b565b6009546001600160a01b03908116908416036114a75750600d5461048b565b50600f5492915050565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106114e4576114e461194d565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561153b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061155f9190611961565b816001815181106115725761157261194d565b6001600160a01b03928316602091820292909201015260085461159891309116846109d2565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906115d09085905f9086903090429060040161197c565b5f604051808303815f87803b1580156115e7575f80fd5b505af1158015610757573d5f803e3d5ffd5b6008546116119030906001600160a01b0316846109d2565b60085460185460405163f305d71960e01b8152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af115801561167e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116a391906119eb565b5050505050565b5f6020808352835180828501525f5b818110156116d5578581018301518582016040015282016116b9565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611709575f80fd5b50565b5f806040838503121561171d575f80fd5b8235611728816116f5565b946020939093013593505050565b5f805f60608486031215611748575f80fd5b8335611753816116f5565b92506020840135611763816116f5565b929592945050506040919091013590565b5f60208284031215611784575f80fd5b5035919050565b5f6020828403121561179b575f80fd5b8135610551816116f5565b5f805f606084860312156117b8575f80fd5b83356117c3816116f5565b925060208401356117d3816116f5565b915060408401356117e3816116f5565b809150509250925092565b5f805f805f8060c08789031215611803575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b5f805f6060848603121561183f575f80fd5b505081359360208301359350604090920135919050565b5f8060408385031215611867575f80fd5b8235611872816116f5565b915060208301358015158114611886575f80fd5b809150509250929050565b5f80604083850312156118a2575f80fd5b82356118ad816116f5565b91506020830135611886816116f5565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761048b5761048b6118bd565b5f8261190257634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526006908201526510a7aba722a960d11b604082015260600190565b8181038181111561048b5761048b6118bd565b8082018082111561048b5761048b6118bd565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611971575f80fd5b8151610551816116f5565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156119ca5784516001600160a01b0316835293830193918301916001016119a5565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156119fd575f80fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122047674cccf80b356c2b0bf25b17f545ddf30e876fe6efb7399863f9aff321333964736f6c63430008140033

Deployed Bytecode Sourcemap

4680:12045:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5736:62;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5736:62:0;;;;;;;;7236:67;;;;;;;;;;-1:-1:-1;7296:5:0;;;;;;;;;;;-1:-1:-1;;;7296:5:0;;;;7236:67;;;;7296:5;7236:67;:::i;8255:133::-;;;;;;;;;;-1:-1:-1;8255:133:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;8255:133:0;1205:187:1;8394:111:0;;;;;;;;;;;;;:::i;8750:119::-;;;;;;;;;;;;;:::i;16068:309::-;;;;;;;;;;-1:-1:-1;16068:309:0;;;;;:::i;:::-;;:::i;15358:262::-;;;;;;;;;;-1:-1:-1;15358:262:0;;;;;:::i;:::-;;:::i;:::-;;3060:87;;;;;;;;;;-1:-1:-1;3060:87:0;;;;;:::i;:::-;3115:4;3140:5;-1:-1:-1;;;;;3129:16:0;;;3140:5;;3129:16;;3060:87;7386:67;;;;;;;;;;-1:-1:-1;7386:67:0;;4886:1;2437:36:1;;2425:2;2410:18;7386:67:0;2295:184:1;11098:309:0;;;;;;;;;;-1:-1:-1;11098:309:0;;;;;:::i;:::-;;:::i;5231:44::-;;;;;;;;;;-1:-1:-1;5231:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10018:487;;;;;;;;;;-1:-1:-1;10018:487:0;;;;;:::i;:::-;;:::i;10513:577::-;;;;;;;;;;-1:-1:-1;10513:577:0;;;;;:::i;:::-;;:::i;7617:103::-;;;;;;;;;;-1:-1:-1;7617:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;7700:18:0;7683:7;7700:18;;;:9;:18;;;;;;;7617:103;8511:114;;;;;;;;;;;;;:::i;8631:113::-;;;;;;;;;;;;;:::i;7533:78::-;;;;;;;;;;-1:-1:-1;7585:7:0;7603:5;-1:-1:-1;;;;;7603:5:0;7533:78;;;-1:-1:-1;;;;;4031:32:1;;;4013:51;;4001:2;3986:18;7533:78:0;3867:203:1;7459:68:0;;;;;;;;;;;;;:::i;5303:19::-;;;;;;;;;;-1:-1:-1;5303:19:0;;;;-1:-1:-1;;;;;5303:19:0;;;7726:139;;;;;;;;;;-1:-1:-1;7726:139:0;;;;;:::i;:::-;;:::i;8138:111::-;;;;;;;;;;-1:-1:-1;8138:111:0;;;;;:::i;:::-;;:::i;7871:127::-;;;;;;;;;;-1:-1:-1;7871:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7969:18:0;;;7952:7;7969:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7871:127;3153:111;;;;;;;;;;-1:-1:-1;3153:111:0;;;;;:::i;:::-;;:::i;8255:133::-;8330:4;8337:37;8346:10;8358:7;8367:6;8337:8;:37::i;:::-;-1:-1:-1;8382:4:0;8255:133;;;;;:::o;8394:111::-;8447:7;7700:18;;;:9;:18;;;;8464:12;;:39;;:16;:39::i;:::-;8457:46;;8394:111;:::o;8750:119::-;8801:7;8856:11;;8834:19;;8818:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;16068:309::-;16166:4;16183:36;16193:6;16201:9;16212:6;16183:9;:36::i;:::-;16230:117;16239:6;16247:10;16259:87;16295:6;16259:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16259:19:0;;;;;;:11;:19;;;;;;;;16279:10;16259:31;;;;;;;;;:87;:35;:87::i;:::-;16230:8;:117::i;:::-;-1:-1:-1;16365:4:0;16068:309;;;;;;:::o;15358:262::-;3115:4;3140:5;-1:-1:-1;;;;;3140:5:0;3027:10;3129:16;3011:38;;;;-1:-1:-1;;;3011:38:0;;;;;;;:::i;:::-;;;;;;;;;15477:29:::1;15502:3;15477:20;15495:1;15477:13;:11;:13::i;:::-;:17:::0;::::1;:20::i;:::-;:24:::0;::::1;:29::i;:::-;15459:14;:47;;15451:114;;;::::0;-1:-1:-1;;;15451:114:0;;6212:2:1;15451:114:0::1;::::0;::::1;6194:21:1::0;6251:2;6231:18;;;6224:30;6290:34;6270:18;;;6263:62;-1:-1:-1;;;6341:18:1;;;6334:52;6403:19;;15451:114:0::1;6010:418:1::0;15451:114:0::1;15576:13;:30:::0;15358:262::o;11098:309::-;3115:4;3140:5;-1:-1:-1;;;;;3140:5:0;3027:10;3129:16;3011:38;;;;-1:-1:-1;;;3011:38:0;;;;;;;:::i;:::-;11253:18:::1;:40:::0;;-1:-1:-1;;;;;11253:40:0;;::::1;-1:-1:-1::0;;;;;;11253:40:0;;::::1;;::::0;;;11304:18:::1;:40:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;11355:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;11098:309::o;10018:487::-;3115:4;3140:5;-1:-1:-1;;;;;3140:5:0;3027:10;3129:16;3011:38;;;;-1:-1:-1;;;3011:38:0;;;;;;;:::i;:::-;10178:12:::1;:25:::0;;;10214:12:::1;:25:::0;;;10250:14:::1;:29:::0;;;10290:8:::1;:17:::0;;;10318:7:::1;:15:::0;;;10344:11:::1;:20:::0;;;10395:11:::1;::::0;:19:::1;::::0;:15:::1;:19::i;:::-;10383:8;;:31;;:65;;;;-1:-1:-1::0;10429:11:0::1;::::0;:19:::1;::::0;10445:2:::1;10429:15;:19::i;:::-;10418:7;;:30;;10383:65;10375:122;;;::::0;-1:-1:-1;;;10375:122:0;;6635:2:1;10375:122:0::1;::::0;::::1;6617:21:1::0;6674:2;6654:18;;;6647:30;6713:34;6693:18;;;6686:62;-1:-1:-1;;;6764:18:1;;;6757:42;6816:19;;10375:122:0::1;6433:408:1::0;10375:122:0::1;10018:487:::0;;;;;;:::o;10513:577::-;3115:4;3140:5;-1:-1:-1;;;;;3140:5:0;3027:10;3129:16;3011:38;;;;-1:-1:-1;;;3011:38:0;;;;;;;:::i;:::-;10612:13:::1;10653:3;10645:4;10629:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10628:28;;;;:::i;:::-;10612:44;;10667:19;10716:3;10706:6;10690:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10689:30;;;;:::i;:::-;10667:52;;10730:17;10778:3;10767:7;10751:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10750:31;;;;:::i;:::-;10792:19;:26:::0;;;10829:19:::1;:28:::0;;;10868:17:::1;:27:::0;;;10730:51;-1:-1:-1;;10922:30:0::1;10947:4;10922:20;10940:1;10922:13;:11;:13::i;:30::-;10906:46;;10980:5;10971;:14;;:38;;;;;11004:5;10989:11;:20;;10971:38;:60;;;;;11026:5;11013:9;:18;;10971:60;10963:119;;;::::0;-1:-1:-1;;;10963:119:0;;7048:2:1;10963:119:0::1;::::0;::::1;7030:21:1::0;7087:2;7067:18;;;7060:30;7126:34;7106:18;;;7099:62;-1:-1:-1;;;7177:18:1;;;7170:44;7231:19;;10963:119:0::1;6846:410:1::0;10963:119:0::1;10601:489;;;;10513:577:::0;;;:::o;8511:114::-;8559:7;8612:11;;8592:17;;8576:13;:11;:13::i;8631:113::-;8676:7;8731:11;;8709:19;;8693:13;:11;:13::i;7459:68::-;3115:4;3140:5;-1:-1:-1;;;;;3140:5:0;3027:10;3129:16;3011:38;;;;-1:-1:-1;;;3011:38:0;;;;;;;:::i;:::-;7504:14:::1;:21:::0;;-1:-1:-1;;;;7504:21:0::1;-1:-1:-1::0;;;7504:21:0::1;::::0;;7459:68::o;7726:139::-;7804:4;7811:40;7821:10;7833:9;7844:6;7811:9;:40::i;8138:111::-;3115:4;3140:5;-1:-1:-1;;;;;3140:5:0;3027:10;3129:16;3011:38;;;;-1:-1:-1;;;3011:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8215:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;8215:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8138:111::o;3153:::-;3115:4;3140:5;-1:-1:-1;;;;;3140:5:0;3027:10;3129:16;3011:38;;;;-1:-1:-1;;;3011:38:0;;;;;;;:::i;:::-;3219:5:::1;:11:::0;;-1:-1:-1;;;;;;3219:11:0::1;-1:-1:-1::0;;;;;3219:11:0;::::1;::::0;;::::1;::::0;;;3237:25:::1;::::0;4013:51:1;;;3237:25:0::1;::::0;4001:2:1;3986:18;3237:25:0::1;;;;;;;3153:111:::0;:::o;16385:335::-;-1:-1:-1;;;;;16478:19:0;;16470:68;;;;-1:-1:-1;;;16470:68:0;;7679:2:1;16470:68:0;;;7661:21:1;7718:2;7698:18;;;7691:30;7757:34;7737:18;;;7730:62;-1:-1:-1;;;7808:18:1;;;7801:34;7852:19;;16470:68:0;7477:400:1;16470:68:0;-1:-1:-1;;;;;16557:21:0;;16549:68;;;;-1:-1:-1;;;16549:68:0;;8084:2:1;16549:68:0;;;8066:21:1;8123:2;8103:18;;;8096:30;8162:34;8142:18;;;8135:62;-1:-1:-1;;;8213:18:1;;;8206:32;8255:19;;16549:68:0;7882:398:1;16549:68:0;-1:-1:-1;;;;;16628:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16680:32;;160:25:1;;;16680:32:0;;133:18:1;16680:32:0;;;;;;;16385:335;;;:::o;246:82::-;304:7;321:5;325:1;321;:5;:::i;9324:686::-;9413:37;9424:6;9432:9;9443:6;9413:10;:37::i;:::-;9461:38;9481:6;9489:9;9461:19;:38::i;:::-;9510:41;9525:6;9533:9;9544:6;9510:14;:41::i;:::-;9563:35;9580:6;9588:9;9563:16;:35::i;:::-;9609:39;9622:6;9630:9;9641:6;9609:12;:39::i;:::-;9660:35;9669:6;9677:9;9688:6;9660:8;:35::i;:::-;-1:-1:-1;;;;;9726:17:0;;;;;;:9;:17;;;;;;:29;;9748:6;9726:21;:29::i;:::-;-1:-1:-1;;;;;9706:17:0;;;;;;:9;:17;;;;;:49;;;;9791:32;9716:6;9813:9;9791:13;:32::i;:::-;:78;;9863:6;9791:78;;;9826:34;9834:6;9842:9;9853:6;9826:7;:34::i;:::-;-1:-1:-1;;;;;9903:20:0;;;;;;:9;:20;;;;;;9766:103;;-1:-1:-1;9903:40:0;;9766:103;9903:24;:40::i;:::-;-1:-1:-1;;;;;9880:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9959:43;;;;;;;;;;9987:14;160:25:1;;148:2;133:18;;14:177;9959:43:0;;;;;;;;9402:608;9324:686;;;:::o;1459:162::-;1545:7;1591:12;1583:6;;;;1575:29;;;;-1:-1:-1;;;1575:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1613:5:0;;;1459:162::o;334:82::-;392:7;409:5;413:1;409;:5;:::i;422:82::-;480:7;497:5;501:1;497;:5;:::i;8877:439::-;-1:-1:-1;;;;;8981:20:0;;8973:70;;;;-1:-1:-1;;;8973:70:0;;8620:2:1;8973:70:0;;;8602:21:1;8659:2;8639:18;;;8632:30;8698:34;8678:18;;;8671:62;-1:-1:-1;;;8749:18:1;;;8742:35;8794:19;;8973:70:0;8418:401:1;8973:70:0;-1:-1:-1;;;;;9062:23:0;;9054:71;;;;-1:-1:-1;;;9054:71:0;;9026:2:1;9054:71:0;;;9008:21:1;9065:2;9045:18;;;9038:30;9104:34;9084:18;;;9077:62;-1:-1:-1;;;9155:18:1;;;9148:33;9198:19;;9054:71:0;8824:399:1;9054:71:0;9161:1;9144:6;:19;9136:73;;;;-1:-1:-1;;;9136:73:0;;9430:2:1;9136:73:0;;;9412:21:1;9469:2;9449:18;;;9442:30;9508:34;9488:18;;;9481:62;-1:-1:-1;;;9559:18:1;;;9552:39;9608:19;;9136:73:0;9228:405:1;9136:73:0;-1:-1:-1;;;;;7700:18:0;;7683:7;7700:18;;;:9;:18;;;;;;9228:6;:27;;9220:88;;;;-1:-1:-1;;;9220:88:0;;9840:2:1;9220:88:0;;;9822:21:1;9879:2;9859:18;;;9852:30;9918:34;9898:18;;;9891:62;-1:-1:-1;;;9969:18:1;;;9962:47;10026:19;;9220:88:0;9638:413:1;9220:88:0;8877:439;;;:::o;11415:191::-;-1:-1:-1;;;;;11508:19:0;;;;;;:11;:19;;;;;;;;11507:20;:47;;;;-1:-1:-1;;;;;;11532:22:0;;;;;;:11;:22;;;;;;;;11531:23;11507:47;11504:95;;;11564:14;;-1:-1:-1;;;11564:14:0;;;;11556:41;;;;-1:-1:-1;;;11556:41:0;;10258:2:1;11556:41:0;;;10240:21:1;10297:2;10277:18;;;10270:30;-1:-1:-1;;;10316:18:1;;;10309:44;10370:18;;11556:41:0;10056:338:1;11556:41:0;11415:191;;:::o;11618:333::-;-1:-1:-1;;;;;11722:19:0;;;;;;:11;:19;;;;;;;;11721:20;:47;;;;-1:-1:-1;;;;;;11746:22:0;;;;;;:11;:22;;;;;;;;11745:23;11721:47;:77;;;;-1:-1:-1;11793:4:0;;-1:-1:-1;;;;;11772:26:0;;;11793:4;;11772:26;;11721:77;:107;;;;-1:-1:-1;;;;;;11802:26:0;;5976:42;11802:26;;11721:107;11718:226;;;11890:17;:15;:17::i;:::-;-1:-1:-1;;;;;11853:20:0;;;;;;:9;:20;;;;;;:32;;11878:6;11853:24;:32::i;:::-;11852:55;;11844:98;;;;-1:-1:-1;;;11844:98:0;;10601:2:1;11844:98:0;;;10583:21:1;10640:2;10620:18;;;10613:30;10679:32;10659:18;;;10652:60;10729:18;;11844:98:0;10399:354:1;11959:159:0;12056:4;;-1:-1:-1;;;;;12043:17:0;;;12056:4;;12043:17;:41;;;;-1:-1:-1;;;;;;12065:19:0;;;;;;:11;:19;;;;;;;;12064:20;12043:41;12040:71;;;12107:1;12086:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11959:159:0;;:::o;12126:349::-;12237:4;;-1:-1:-1;;;;;12227:14:0;;;12237:4;;12227:14;12224:130;;12261:20;:18;:20::i;:::-;12251:6;:30;;:53;;;-1:-1:-1;;;;;;12285:19:0;;;;;;:11;:19;;;;;;;;12251:53;:79;;;-1:-1:-1;;;;;;12308:22:0;;;;;;:11;:22;;;;;;;;12251:79;12243:109;;;;-1:-1:-1;;;12243:109:0;;11090:2:1;12243:109:0;;;11072:21:1;11129:2;11109:18;;;11102:30;-1:-1:-1;;;11148:18:1;;;11141:47;11205:18;;12243:109:0;10888:341:1;12243:109:0;12382:14;:12;:14::i;:::-;12372:6;:24;;:47;;;-1:-1:-1;;;;;;12400:19:0;;;;;;:11;:19;;;;;;;;12372:47;:73;;;-1:-1:-1;;;;;;12423:22:0;;;;;;:11;:22;;;;;;;;12372:73;12364:103;;;;-1:-1:-1;;;12364:103:0;;11090:2:1;12364:103:0;;;11072:21:1;11129:2;11109:18;;;11102:30;-1:-1:-1;;;11148:18:1;;;11141:47;11205:18;;12364:103:0;10888:341:1;14758:197:0;14850:41;14865:6;14873:9;14884:6;14850:14;:41::i;:::-;14847:101;;;14893:29;14908:13;;14893:14;:29::i;:::-;14944:1;14924:9;:22;14758:197;;;:::o;14963:160::-;-1:-1:-1;;;;;15069:19:0;;15044:4;15069:19;;;:11;:19;;;;;;;;15068:20;:47;;;;-1:-1:-1;;;;;;;15093:22:0;;;;;:11;:22;;;;;;;;15092:23;;14963:160;-1:-1:-1;14963:160:0:o;15628:432::-;15714:7;15770:1;15737:30;15749:6;15757:9;15737:11;:30::i;:::-;:34;15734:304;;;15783:17;15803:59;15831:30;15843:6;15851:9;15831:11;:30::i;:::-;15814:11;;15803:23;;:6;;:10;:23::i;:59::-;15918:4;15900:24;;;;:9;:24;;;;;;15783:79;;-1:-1:-1;15900:39:0;;15783:79;15900:28;:39::i;:::-;15891:4;15873:24;;;;:9;:24;;;;;;;:66;;;;15955:42;;-1:-1:-1;;;;;15955:42:0;;;;;;;15987:9;160:25:1;;148:2;133:18;;14:177;15955:42:0;;;;;;;;16015:21;:6;16026:9;16015:10;:21::i;:::-;16008:28;;;;;15734:304;-1:-1:-1;16046:6:0;15628:432;-1:-1:-1;;15628:432:0:o;158:82::-;216:7;233:5;237:1;233;:5;:::i;14350:400::-;14491:15;;14567:13;;14557:4;14448;7700:18;;;:9;:18;;;;;;14599:8;;14448:4;;14481:25;;;;-1:-1:-1;14539:41:0;;14599:8;;14598:9;:24;;;;-1:-1:-1;14611:11:0;;;;14598:24;:42;;;;-1:-1:-1;14626:14:0;;-1:-1:-1;;;14626:14:0;;;;14598:42;:54;;;;;14644:8;14598:54;:78;;;;-1:-1:-1;;;;;;14657:19:0;;;;;;:11;:19;;;;;;;;14656:20;14598:78;:99;;;;-1:-1:-1;14693:4:0;;-1:-1:-1;;;;;14680:17:0;;;14693:4;;14680:17;14598:99;:126;;;;;14722:1;14701:9;;:23;;14598:126;:144;;;;;14728:14;14598:144;14591:151;14350:400;-1:-1:-1;;;;;;14350:400:0:o;12483:1066::-;5897:8;:15;;-1:-1:-1;;5897:15:0;5908:4;5897:15;;;;;;12620:14:::1;::::0;12602:12:::1;::::0;12578::::1;::::0;5897:8;;12577:66:::1;::::0;12641:1:::1;::::0;12578:57:::1;::::0;12620:14;;12578:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12577:66::-;12554:89;;12654:32;12689:42;12718:12;12689:24;12700:12;;12689:6;:10;;:24;;;;:::i;:42::-;12654:77:::0;-1:-1:-1;12742:14:0::1;12759:36;:6:::0;12654:77;12759:10:::1;:36::i;:::-;12742:53:::0;-1:-1:-1;12831:21:0::1;12863:24;12742:53:::0;12863:16:::1;:24::i;:::-;12898:20;12921:41;:21;12947:14:::0;12921:25:::1;:41::i;:::-;12898:64;;12973:19;12994:48;13011:30;13028:12;;13011;:16;;:30;;;;:::i;:::-;12994:12:::0;;:16:::1;:48::i;:::-;12973:69;;13053:29;13085;13101:12;;13085:11;:15;;:29;;;;:::i;:::-;13053:61:::0;-1:-1:-1;13128:34:0;;13125:103:::1;;13164:61;13177:24;13203:21;13164:12;:61::i;:::-;13284:12;::::0;13238:20:::1;::::0;13261:36:::1;::::0;:18:::1;:11:::0;13277:1:::1;13261:15;:18::i;:36::-;13238:59:::0;-1:-1:-1;13311:16:0;;13308:73:::1;;13337:18;::::0;13329:50:::1;::::0;-1:-1:-1;;;;;13337:18:0;;::::1;::::0;13329:50;::::1;;;::::0;13366:12;;13337:18:::1;13329:50:::0;13337:18;13329:50;13366:12;13337:18;13329:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13308:73;13418:21;13453:29:::0;;13450:92:::1;;13492:20;::::0;13484:56:::1;::::0;-1:-1:-1;;;;;13492:20:0;;::::1;::::0;13484:56;::::1;;;::::0;13523:16;;13492:20:::1;13484:56:::0;13492:20;13484:56;13523:16;13492:20;13484:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13450:92;-1:-1:-1::0;;5917:8:0;:16;;-1:-1:-1;;5917:16:0;;;-1:-1:-1;;;;;;;;12483:1066:0:o;15131:219::-;15246:4;;15210:7;;-1:-1:-1;;;;;15246:4:0;;;15233:17;;;;15230:38;;-1:-1:-1;15259:7:0;;15252:14;;15230:38;15291:4;;-1:-1:-1;;;;;15291:4:0;;;15281:14;;;;15278:36;;-1:-1:-1;15304:8:0;;15297:15;;15278:36;-1:-1:-1;15331:11:0;;15131:219;;;;:::o;13908:434::-;13998:16;;;14012:1;13998:16;;;;;;;;13974:21;;13998:16;;;;;;;;;;-1:-1:-1;13998:16:0;13974:40;;14043:4;14025;14030:1;14025:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14025:23:0;;;:7;;;;;;;;;;:23;;;;14069:6;;:13;;;-1:-1:-1;;;14069:13:0;;;;:6;;;;;:11;;:13;;;;;14025:7;;14069:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14059:4;14064:1;14059:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14059:23:0;;;:7;;;;;;;;;:23;14125:6;;14093:53;;14110:4;;14125:6;14134:11;14093:8;:53::i;:::-;14157:6;;:177;;-1:-1:-1;;;14157:177:0;;-1:-1:-1;;;;;14157:6:0;;;;:57;;:177;;14229:11;;14157:6;;14271:4;;14298;;14318:15;;14157:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13557:343;13670:6;;13638:53;;13655:4;;-1:-1:-1;;;;;13670:6:0;13679:11;13638:8;:53::i;:::-;13702:6;;13843:18;;13702:190;;-1:-1:-1;;;13702:190:0;;13765:4;13702:190;;;13080:34:1;13130:18;;;13123:34;;;13702:6:0;13173:18:1;;;13166:34;;;13216:18;;;13209:34;-1:-1:-1;;;;;13843:18:0;;;13259:19:1;;;13252:44;13876:15:0;13312:19:1;;;13305:35;13702:6:0;;;:22;;13732:9;;13014:19:1;;13702:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13557: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:180::-;1917:6;1970:2;1958:9;1949:7;1945:23;1941:32;1938:52;;;1986:1;1983;1976:12;1938:52;-1:-1:-1;2009:23:1;;1858:180;-1:-1:-1;1858:180:1:o;2043:247::-;2102:6;2155:2;2143:9;2134:7;2130:23;2126:32;2123:52;;;2171:1;2168;2161:12;2123:52;2210:9;2197:23;2229:31;2254:5;2229:31;:::i;2484:529::-;2561:6;2569;2577;2630:2;2618:9;2609:7;2605:23;2601:32;2598:52;;;2646:1;2643;2636:12;2598:52;2685:9;2672:23;2704:31;2729:5;2704:31;:::i;:::-;2754:5;-1:-1:-1;2811:2:1;2796:18;;2783:32;2824:33;2783:32;2824:33;:::i;:::-;2876:7;-1:-1:-1;2935:2:1;2920:18;;2907:32;2948:33;2907:32;2948:33;:::i;:::-;3000:7;2990:17;;;2484:529;;;;;:::o;3018:523::-;3122:6;3130;3138;3146;3154;3162;3215:3;3203:9;3194:7;3190:23;3186:33;3183:53;;;3232:1;3229;3222:12;3183:53;-1:-1:-1;;3255:23:1;;;3325:2;3310:18;;3297:32;;-1:-1:-1;3376:2:1;3361:18;;3348:32;;3427:2;3412:18;;3399:32;;-1:-1:-1;3478:3:1;3463:19;;3450:33;;-1:-1:-1;3530:3:1;3515:19;3502:33;;-1:-1:-1;3018:523:1;-1:-1:-1;3018:523:1:o;3546:316::-;3623:6;3631;3639;3692:2;3680:9;3671:7;3667:23;3663:32;3660:52;;;3708:1;3705;3698:12;3660:52;-1:-1:-1;;3731:23:1;;;3801:2;3786:18;;3773:32;;-1:-1:-1;3852:2:1;3837:18;;;3824:32;;3546:316;-1:-1:-1;3546:316:1:o;4075:416::-;4140:6;4148;4201:2;4189:9;4180:7;4176:23;4172:32;4169:52;;;4217:1;4214;4207:12;4169:52;4256:9;4243:23;4275:31;4300:5;4275:31;:::i;:::-;4325:5;-1:-1:-1;4382:2:1;4367:18;;4354:32;4424:15;;4417:23;4405:36;;4395:64;;4455:1;4452;4445:12;4395:64;4478:7;4468:17;;;4075:416;;;;;:::o;4496:388::-;4564:6;4572;4625:2;4613:9;4604:7;4600:23;4596:32;4593:52;;;4641:1;4638;4631:12;4593:52;4680:9;4667:23;4699:31;4724:5;4699:31;:::i;:::-;4749:5;-1:-1:-1;4806:2:1;4791:18;;4778:32;4819:33;4778:32;4819:33;:::i;5149:127::-;5210:10;5205:3;5201:20;5198:1;5191:31;5241:4;5238:1;5231:15;5265:4;5262:1;5255:15;5281:168;5354:9;;;5385;;5402:15;;;5396:22;;5382:37;5372:71;;5423:18;;:::i;5454:217::-;5494:1;5520;5510:132;;5564:10;5559:3;5555:20;5552:1;5545:31;5599:4;5596:1;5589:15;5627:4;5624:1;5617:15;5510:132;-1:-1:-1;5656:9:1;;5454:217::o;5676:329::-;5878:2;5860:21;;;5917:1;5897:18;;;5890:29;-1:-1:-1;;;5950:2:1;5935:18;;5928:36;5996:2;5981:18;;5676:329::o;8285:128::-;8352:9;;;8373:11;;;8370:37;;;8387:18;;:::i;10758:125::-;10823:9;;;10844:10;;;10841:36;;;10857:18;;:::i;11366:127::-;11427:10;11422:3;11418:20;11415:1;11408:31;11458:4;11455:1;11448:15;11482:4;11479:1;11472:15;11498:251;11568:6;11621:2;11609:9;11600:7;11596:23;11592:32;11589:52;;;11637:1;11634;11627:12;11589:52;11669:9;11663:16;11688:31;11713:5;11688:31;:::i;11754:980::-;12016:4;12064:3;12053:9;12049:19;12095:6;12084:9;12077:25;12121:2;12159:6;12154:2;12143:9;12139:18;12132:34;12202:3;12197:2;12186:9;12182:18;12175:31;12226:6;12261;12255:13;12292:6;12284;12277:22;12330:3;12319:9;12315:19;12308:26;;12369:2;12361:6;12357:15;12343:29;;12390:1;12400:195;12414:6;12411:1;12408:13;12400:195;;;12479:13;;-1:-1:-1;;;;;12475:39:1;12463:52;;12570:15;;;;12535:12;;;;12511:1;12429:9;12400:195;;;-1:-1:-1;;;;;;;12651:32:1;;;;12646:2;12631:18;;12624:60;-1:-1:-1;;;12715:3:1;12700:19;12693:35;12612:3;11754:980;-1:-1:-1;;;11754:980:1:o;13351:306::-;13439:6;13447;13455;13508:2;13496:9;13487:7;13483:23;13479:32;13476:52;;;13524:1;13521;13514:12;13476:52;13553:9;13547:16;13537:26;;13603:2;13592:9;13588:18;13582:25;13572:35;;13647:2;13636:9;13632:18;13626:25;13616:35;;13351:306;;;;;:::o

Swarm Source

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