ETH Price: $2,398.44 (-0.29%)

Token

Optimus Squared (OPTIMUS²)
 

Overview

Max Total Supply

10,000,000,000 OPTIMUS²

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
189,999,999.05 OPTIMUS²

Value
$0.00
0x85eca64aa86c14262bb9ec9c599e72aa4874363d
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:
Optimus2

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/*
    Website: https://optimussquared.com/
    Telegram: https://t.me/Optimus_sq
    Twitter: https://twitter.com/Optimus_sq
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.19;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

contract Optimus2 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = unicode"Optimus Squared";
    string private constant _symbol = unicode"OPTIMUS²";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 10000000000 * 10**_decimals;

    uint256 public _maxWalletAmount = 200000000 * 10**_decimals;

    // fees
    uint256 public _liquidityFeeOnBuy = 0; 
    uint256 public _marketingFeeOnBuy = 5; 

    uint256 public _liquidityFeeOnSell = 0; 
    uint256 public _marketingFeeOnSell = 5; 
    
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 private _liquidityFee;
    uint256 private _marketingFee;
    
    struct FeeBreakdown {
        uint256 tLiquidity;
        uint256 tMarketing;
        uint256 tAmount;
    }

    mapping(address => bool) private bots;
    address payable private _marketingAddress = payable(0xA9A9BFaE9c6F2A6F275A716b74844444F32F21f1);
    address payable private deploymentWallet = payable(0xA779030D1c1285FC5B3ACbd3eD13d255Cb34BF55);

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 public swapAmount;

    bool private inSwap = false;

    event FeesUpdated(uint256 _marketingFee, uint256 _liquidityFee);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);
        swapAmount = 1000000 * 10**_decimals;
        
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[deploymentWallet] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 totalSupply() external pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function removeAllFee() private {
        if (_marketingFee == 0 && _liquidityFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;

        _marketingFee = 0;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        
        _liquidityFee = _previousLiquidityFee;
        _marketingFee = _previousMarketingFee;
    }

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

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        bool takeFee = true;

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
            require(!bots[to] && !bots[from]);

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _liquidityFee = _liquidityFeeOnBuy;
                _marketingFee = _marketingFeeOnBuy;
            }
                
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _liquidityFee = _liquidityFeeOnSell;
                _marketingFee = _marketingFeeOnSell;
            }
            
            if (!inSwap && from != uniswapV2Pair) {

                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance > swapAmount) {
                    swapAndLiquify(contractTokenBalance);
                }

                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                    
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from, to, amount, takeFee);
        restoreAllFee();
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
              address(this),
              tokenAmount,
              0, // slippage is unavoidable
              0, // slippage is unavoidable
              deploymentWallet,
              block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLPamount = _liquidityFee.mul(contractTokenBalance).div(_marketingFee.add(_liquidityFee));

        // split the contract balance into halves
        uint256 half =  autoLPamount.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(otherHalf); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = ((address(this).balance.sub(initialBalance)).mul(half)).div(otherHalf);

        addLiquidity(half, newBalance);
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function manualSwap() external {
        require(_msgSender() == deploymentWallet);
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSend() external {
        require(_msgSender() == deploymentWallet);
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) { 
                removeAllFee();
        }
        _transferStandard(sender, recipient, amount);
        restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 amount) private {
        FeeBreakdown memory fees;
        fees.tMarketing = amount.mul(_marketingFee).div(100);
        fees.tLiquidity = amount.mul(_liquidityFee).div(100);
        
        fees.tAmount = amount.sub(fees.tMarketing).sub(fees.tLiquidity);
        
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tMarketing.add(fees.tLiquidity));
        
        emit Transfer(sender, recipient, fees.tAmount);
    }
    
    receive() external payable {}

    function setMaxWalletAmount(uint256 maxWalletAmount) external {
        require(_msgSender() == deploymentWallet);
        require(maxWalletAmount > _tTotal.div(200), "Amount must be greater than 0.5% of supply");
        require(maxWalletAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setSwapAmount(uint256 _swapAmount) external {
        require(_msgSender() == deploymentWallet);
        swapAmount = _swapAmount;
    }

}

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":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"_liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","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":"pure","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000661565b6200002290630bebc20062000679565b6005908155600060068190556007829055600855600955600c54600a55600d54600b55600f80546001600160a01b031990811673a9a9bfae9c6f2a6f275a716b74844444f32f21f1179091556010805490911673a779030d1c1285fc5b3acbd3ed13d255cb34bf551790556014805460ff19169055348015620000a457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556200013a3082620001236009600a62000661565b62000134906402540be40062000679565b62000420565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000179573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019f919062000693565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000213919062000693565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000261573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000287919062000693565b601280546001600160a01b0319166001600160a01b0392831690811790915560115460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b3906044016020604051808303816000875af1158015620002ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003159190620006be565b50620003246009600a62000661565b6200033390620f424062000679565b601355620003446009600a62000661565b62000355906402540be40062000679565b3360008181526002602090815260408083209490945581546001600160a01b03908116835260049091528382208054600160ff199182168117909255601054831684528584208054821683179055600f54909216835284832080548316821790553083529382208054909116909317909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003f76009600a62000661565b62000408906402540be40062000679565b60405190815260200160405180910390a350620006e2565b6001600160a01b038316620004885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200047f565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005a35781600019048211156200058757620005876200054c565b808516156200059557918102915b93841c939080029062000567565b509250929050565b600082620005bc575060016200065b565b81620005cb575060006200065b565b8160018114620005e45760028114620005ef576200060f565b60019150506200065b565b60ff8411156200060357620006036200054c565b50506001821b6200065b565b5060208310610133831016604e8410600b841016171562000634575081810a6200065b565b62000640838362000562565b80600019048211156200065757620006576200054c565b0290505b92915050565b60006200067260ff841683620005ab565b9392505050565b80820281158282048414176200065b576200065b6200054c565b600060208284031215620006a657600080fd5b81516001600160a01b03811681146200067257600080fd5b600060208284031215620006d157600080fd5b815180151581146200067257600080fd5b61181f80620006f26000396000f3fe6080604052600436106101445760003560e01c806370a08231116100b6578063d52dfc141161006f578063d52dfc14146103ab578063dd62ed3e146103c1578063e581dc7114610407578063e632313c1461041d578063f2fde38b1461043d578063f42938901461045d57600080fd5b806370a08231146102da578063715018a6146103105780638da5cb5b1461032557806395d89b4114610343578063a9059cbb14610375578063c4066f2f1461039557600080fd5b80632e8fa821116101085780632e8fa8211461022f578063313ce567146102455780633c0a73ae1461026157806349bd5a5e1461027757806351bc3c85146102af5780636c0a24eb146102c457600080fd5b806306fdde0314610150578063095ea7b31461019a57806318160ddd146101ca57806323b872dd146101ed57806327a14fc21461020d57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600f81526e13dc1d1a5b5d5cc814dc5d585c9959608a1b60208201525b6040516101919190611448565b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046114ab565b610472565b6040519015158152602001610191565b3480156101d657600080fd5b506101df610489565b604051908152602001610191565b3480156101f957600080fd5b506101ba6102083660046114d7565b6104ab565b34801561021957600080fd5b5061022d610228366004611518565b610514565b005b34801561023b57600080fd5b506101df60135481565b34801561025157600080fd5b5060405160098152602001610191565b34801561026d57600080fd5b506101df60065481565b34801561028357600080fd5b50601254610297906001600160a01b031681565b6040516001600160a01b039091168152602001610191565b3480156102bb57600080fd5b5061022d610648565b3480156102d057600080fd5b506101df60055481565b3480156102e657600080fd5b506101df6102f5366004611531565b6001600160a01b031660009081526002602052604090205490565b34801561031c57600080fd5b5061022d61068a565b34801561033157600080fd5b506000546001600160a01b0316610297565b34801561034f57600080fd5b5060408051808201909152600981526827a82a24a6aaa9e15960b91b6020820152610184565b34801561038157600080fd5b506101ba6103903660046114ab565b61072e565b3480156103a157600080fd5b506101df60095481565b3480156103b757600080fd5b506101df60085481565b3480156103cd57600080fd5b506101df6103dc36600461154e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561041357600080fd5b506101df60075481565b34801561042957600080fd5b5061022d610438366004611518565b61073b565b34801561044957600080fd5b5061022d610458366004611531565b610760565b34801561046957600080fd5b5061022d61087a565b600061047f3384846108aa565b5060015b92915050565b60006104976009600a611681565b6104a6906402540be400611690565b905090565b60006104b88484846109ce565b61050a8433610505856040518060600160405280602881526020016117c2602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610dce565b6108aa565b5060019392505050565b6010546001600160a01b0316336001600160a01b03161461053457600080fd5b61055a60c86105456009600a611681565b610554906402540be400611690565b90610e08565b81116105c05760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b60648201526084015b60405180910390fd5b6105cc6009600a611681565b6105db906402540be400611690565b8111156106435760405162461bcd60e51b815260206004820152603060248201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160448201526f6c20746f20746f74616c537570706c7960801b60648201526084016105b7565b600555565b6010546001600160a01b0316336001600160a01b03161461066857600080fd5b3060009081526002602052604090205480156106875761068781610e51565b50565b6000546001600160a01b031633146106e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105b7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061047f3384846109ce565b6010546001600160a01b0316336001600160a01b03161461075b57600080fd5b601355565b6000546001600160a01b031633146107ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105b7565b6001600160a01b03811661081f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b0316336001600160a01b03161461089a57600080fd5b4780156106875761068781610fc2565b6001600160a01b03831661090c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b7565b6001600160a01b03821661096d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b7565b6001600160a01b038216610a945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b7565b60008111610af65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105b7565b6001610b0a6000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610b3957506000546001600160a01b03848116911614155b8015610b4e57506001600160a01b0384163014155b8015610b6357506001600160a01b0383163014155b15610d63576001600160a01b0383166000908152600e602052604090205460ff16158015610baa57506001600160a01b0384166000908152600e602052604090205460ff16155b610bb357600080fd5b6012546001600160a01b038581169116148015610bde57506011546001600160a01b03848116911614155b15610c8d57600554610c0f83610c09866001600160a01b031660009081526002602052604090205490565b90611000565b1115610c8d5760405162461bcd60e51b815260206004820152604160248201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560448201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6064820152601d60fa1b608482015260a4016105b7565b6012546001600160a01b038581169116148015610cb857506011546001600160a01b03848116911614155b15610cca57600654600c55600754600d555b6012546001600160a01b038481169116148015610cf557506011546001600160a01b03858116911614155b15610d0757600854600c55600954600d555b60145460ff16158015610d2857506012546001600160a01b03858116911614155b15610d635730600090815260026020526040902054601354811115610d5057610d508161105f565b478015610d6057610d6047610fc2565b50505b6001600160a01b03841660009081526004602052604090205460ff1680610da257506001600160a01b03831660009081526004602052604090205460ff165b15610dab575060005b610db7848484846110de565b610dc8600a54600c55600b54600d55565b50505050565b60008184841115610df25760405162461bcd60e51b81526004016105b79190611448565b506000610dff84866116a7565b95945050505050565b6000610e4a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110f6565b9392505050565b6014805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e9357610e936116ba565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610eec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1091906116d0565b81600181518110610f2357610f236116ba565b6001600160a01b039283166020918202929092010152601154610f4991309116846108aa565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f829085906000908690309042906004016116ed565b600060405180830381600087803b158015610f9c57600080fd5b505af1158015610fb0573d6000803e3d6000fd5b50506014805460ff1916905550505050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ffc573d6000803e3d6000fd5b5050565b60008061100d838561175e565b905083811015610e4a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105b7565b6014805460ff19166001179055600c54600d5460009161108f9161108291611000565b600c546105549085611124565b9050600061109e826002610e08565b905060006110ac84836111a6565b9050476110b882610e51565b60006110d283610554866110cc47876111a6565b90611124565b9050610fb084826111e8565b806110eb576110eb61129c565b610db78484846112ca565b600081836111175760405162461bcd60e51b81526004016105b79190611448565b506000610dff8486611771565b60008260000361113657506000610483565b60006111428385611690565b90508261114f8583611771565b14610e4a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105b7565b6000610e4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dce565b6011546112009030906001600160a01b0316846108aa565b60115460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611270573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112959190611793565b5050505050565b600d541580156112ac5750600c54155b156112b357565b600d8054600b55600c8054600a5560009182905555565b6112ee60405180606001604052806000815260200160008152602001600081525090565b6113086064610554600d548561112490919063ffffffff16565b6020820152600c5461132290606490610554908590611124565b8082526020820151611340919061133a9085906111a6565b906111a6565b6040808301919091526001600160a01b03851660009081526002602052205461136990836111a6565b6001600160a01b0380861660009081526002602052604080822093909355838301519186168152919091205461139e91611000565b6001600160a01b0384166000908152600260209081526040909120919091558151908201516113e7916113d19190611000565b3060009081526002602052604090205490611000565b30600090815260026020908152604091829020929092558281015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600060208083528351808285015260005b8181101561147557858101830151858201604001528201611459565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461068757600080fd5b600080604083850312156114be57600080fd5b82356114c981611496565b946020939093013593505050565b6000806000606084860312156114ec57600080fd5b83356114f781611496565b9250602084013561150781611496565b929592945050506040919091013590565b60006020828403121561152a57600080fd5b5035919050565b60006020828403121561154357600080fd5b8135610e4a81611496565b6000806040838503121561156157600080fd5b823561156c81611496565b9150602083013561157c81611496565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156115d85781600019048211156115be576115be611587565b808516156115cb57918102915b93841c93908002906115a2565b509250929050565b6000826115ef57506001610483565b816115fc57506000610483565b8160018114611612576002811461161c57611638565b6001915050610483565b60ff84111561162d5761162d611587565b50506001821b610483565b5060208310610133831016604e8410600b841016171561165b575081810a610483565b611665838361159d565b806000190482111561167957611679611587565b029392505050565b6000610e4a60ff8416836115e0565b808202811582820484141761048357610483611587565b8181038181111561048357610483611587565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156116e257600080fd5b8151610e4a81611496565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561173d5784516001600160a01b031683529383019391830191600101611718565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561048357610483611587565b60008261178e57634e487b7160e01b600052601260045260246000fd5b500490565b6000806000606084860312156117a857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220571b351ad3fe48447c27084ce9903bd030b3b0ed91ae1cce23ec137dd2dbb6bf64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806370a08231116100b6578063d52dfc141161006f578063d52dfc14146103ab578063dd62ed3e146103c1578063e581dc7114610407578063e632313c1461041d578063f2fde38b1461043d578063f42938901461045d57600080fd5b806370a08231146102da578063715018a6146103105780638da5cb5b1461032557806395d89b4114610343578063a9059cbb14610375578063c4066f2f1461039557600080fd5b80632e8fa821116101085780632e8fa8211461022f578063313ce567146102455780633c0a73ae1461026157806349bd5a5e1461027757806351bc3c85146102af5780636c0a24eb146102c457600080fd5b806306fdde0314610150578063095ea7b31461019a57806318160ddd146101ca57806323b872dd146101ed57806327a14fc21461020d57600080fd5b3661014b57005b600080fd5b34801561015c57600080fd5b5060408051808201909152600f81526e13dc1d1a5b5d5cc814dc5d585c9959608a1b60208201525b6040516101919190611448565b60405180910390f35b3480156101a657600080fd5b506101ba6101b53660046114ab565b610472565b6040519015158152602001610191565b3480156101d657600080fd5b506101df610489565b604051908152602001610191565b3480156101f957600080fd5b506101ba6102083660046114d7565b6104ab565b34801561021957600080fd5b5061022d610228366004611518565b610514565b005b34801561023b57600080fd5b506101df60135481565b34801561025157600080fd5b5060405160098152602001610191565b34801561026d57600080fd5b506101df60065481565b34801561028357600080fd5b50601254610297906001600160a01b031681565b6040516001600160a01b039091168152602001610191565b3480156102bb57600080fd5b5061022d610648565b3480156102d057600080fd5b506101df60055481565b3480156102e657600080fd5b506101df6102f5366004611531565b6001600160a01b031660009081526002602052604090205490565b34801561031c57600080fd5b5061022d61068a565b34801561033157600080fd5b506000546001600160a01b0316610297565b34801561034f57600080fd5b5060408051808201909152600981526827a82a24a6aaa9e15960b91b6020820152610184565b34801561038157600080fd5b506101ba6103903660046114ab565b61072e565b3480156103a157600080fd5b506101df60095481565b3480156103b757600080fd5b506101df60085481565b3480156103cd57600080fd5b506101df6103dc36600461154e565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561041357600080fd5b506101df60075481565b34801561042957600080fd5b5061022d610438366004611518565b61073b565b34801561044957600080fd5b5061022d610458366004611531565b610760565b34801561046957600080fd5b5061022d61087a565b600061047f3384846108aa565b5060015b92915050565b60006104976009600a611681565b6104a6906402540be400611690565b905090565b60006104b88484846109ce565b61050a8433610505856040518060600160405280602881526020016117c2602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610dce565b6108aa565b5060019392505050565b6010546001600160a01b0316336001600160a01b03161461053457600080fd5b61055a60c86105456009600a611681565b610554906402540be400611690565b90610e08565b81116105c05760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b60648201526084015b60405180910390fd5b6105cc6009600a611681565b6105db906402540be400611690565b8111156106435760405162461bcd60e51b815260206004820152603060248201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160448201526f6c20746f20746f74616c537570706c7960801b60648201526084016105b7565b600555565b6010546001600160a01b0316336001600160a01b03161461066857600080fd5b3060009081526002602052604090205480156106875761068781610e51565b50565b6000546001600160a01b031633146106e45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105b7565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061047f3384846109ce565b6010546001600160a01b0316336001600160a01b03161461075b57600080fd5b601355565b6000546001600160a01b031633146107ba5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105b7565b6001600160a01b03811661081f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b7565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b0316336001600160a01b03161461089a57600080fd5b4780156106875761068781610fc2565b6001600160a01b03831661090c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b7565b6001600160a01b03821661096d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a325760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b7565b6001600160a01b038216610a945760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b7565b60008111610af65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105b7565b6001610b0a6000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610b3957506000546001600160a01b03848116911614155b8015610b4e57506001600160a01b0384163014155b8015610b6357506001600160a01b0383163014155b15610d63576001600160a01b0383166000908152600e602052604090205460ff16158015610baa57506001600160a01b0384166000908152600e602052604090205460ff16155b610bb357600080fd5b6012546001600160a01b038581169116148015610bde57506011546001600160a01b03848116911614155b15610c8d57600554610c0f83610c09866001600160a01b031660009081526002602052604090205490565b90611000565b1115610c8d5760405162461bcd60e51b815260206004820152604160248201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560448201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6064820152601d60fa1b608482015260a4016105b7565b6012546001600160a01b038581169116148015610cb857506011546001600160a01b03848116911614155b15610cca57600654600c55600754600d555b6012546001600160a01b038481169116148015610cf557506011546001600160a01b03858116911614155b15610d0757600854600c55600954600d555b60145460ff16158015610d2857506012546001600160a01b03858116911614155b15610d635730600090815260026020526040902054601354811115610d5057610d508161105f565b478015610d6057610d6047610fc2565b50505b6001600160a01b03841660009081526004602052604090205460ff1680610da257506001600160a01b03831660009081526004602052604090205460ff165b15610dab575060005b610db7848484846110de565b610dc8600a54600c55600b54600d55565b50505050565b60008184841115610df25760405162461bcd60e51b81526004016105b79190611448565b506000610dff84866116a7565b95945050505050565b6000610e4a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110f6565b9392505050565b6014805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610e9357610e936116ba565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610eec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1091906116d0565b81600181518110610f2357610f236116ba565b6001600160a01b039283166020918202929092010152601154610f4991309116846108aa565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610f829085906000908690309042906004016116ed565b600060405180830381600087803b158015610f9c57600080fd5b505af1158015610fb0573d6000803e3d6000fd5b50506014805460ff1916905550505050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610ffc573d6000803e3d6000fd5b5050565b60008061100d838561175e565b905083811015610e4a5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105b7565b6014805460ff19166001179055600c54600d5460009161108f9161108291611000565b600c546105549085611124565b9050600061109e826002610e08565b905060006110ac84836111a6565b9050476110b882610e51565b60006110d283610554866110cc47876111a6565b90611124565b9050610fb084826111e8565b806110eb576110eb61129c565b610db78484846112ca565b600081836111175760405162461bcd60e51b81526004016105b79190611448565b506000610dff8486611771565b60008260000361113657506000610483565b60006111428385611690565b90508261114f8583611771565b14610e4a5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105b7565b6000610e4a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610dce565b6011546112009030906001600160a01b0316846108aa565b60115460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611270573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112959190611793565b5050505050565b600d541580156112ac5750600c54155b156112b357565b600d8054600b55600c8054600a5560009182905555565b6112ee60405180606001604052806000815260200160008152602001600081525090565b6113086064610554600d548561112490919063ffffffff16565b6020820152600c5461132290606490610554908590611124565b8082526020820151611340919061133a9085906111a6565b906111a6565b6040808301919091526001600160a01b03851660009081526002602052205461136990836111a6565b6001600160a01b0380861660009081526002602052604080822093909355838301519186168152919091205461139e91611000565b6001600160a01b0384166000908152600260209081526040909120919091558151908201516113e7916113d19190611000565b3060009081526002602052604090205490611000565b30600090815260026020908152604091829020929092558281015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b600060208083528351808285015260005b8181101561147557858101830151858201604001528201611459565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461068757600080fd5b600080604083850312156114be57600080fd5b82356114c981611496565b946020939093013593505050565b6000806000606084860312156114ec57600080fd5b83356114f781611496565b9250602084013561150781611496565b929592945050506040919091013590565b60006020828403121561152a57600080fd5b5035919050565b60006020828403121561154357600080fd5b8135610e4a81611496565b6000806040838503121561156157600080fd5b823561156c81611496565b9150602083013561157c81611496565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156115d85781600019048211156115be576115be611587565b808516156115cb57918102915b93841c93908002906115a2565b509250929050565b6000826115ef57506001610483565b816115fc57506000610483565b8160018114611612576002811461161c57611638565b6001915050610483565b60ff84111561162d5761162d611587565b50506001821b610483565b5060208310610133831016604e8410600b841016171561165b575081810a610483565b611665838361159d565b806000190482111561167957611679611587565b029392505050565b6000610e4a60ff8416836115e0565b808202811582820484141761048357610483611587565b8181038181111561048357610483611587565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156116e257600080fd5b8151610e4a81611496565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561173d5784516001600160a01b031683529383019391830191600101611718565b50506001600160a01b03969096166060850152505050608001529392505050565b8082018082111561048357610483611587565b60008261178e57634e487b7160e01b600052601260045260246000fd5b500490565b6000806000606084860312156117a857600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220571b351ad3fe48447c27084ce9903bd030b3b0ed91ae1cce23ec137dd2dbb6bf64736f6c63430008130033

Deployed Bytecode Sourcemap

7185:10500:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9682:83;;;;;;;;;;-1:-1:-1;9752:5:0;;;;;;;;;;;;-1:-1:-1;;;9752:5:0;;;;9682:83;;;;;;;:::i;:::-;;;;;;;;10525:163;;;;;;;;;;-1:-1:-1;10525:163:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10525:163:0;1023:187:1;9959:97:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9959:97:0;1215:177:1;10696:312:0;;;;;;;;;;-1:-1:-1;10696:312:0;;;;;:::i;:::-;;:::i;17159:365::-;;;;;;;;;;-1:-1:-1;17159:365:0;;;;;:::i;:::-;;:::i;:::-;;8615:25;;;;;;;;;;;;;;;;9868:83;;;;;;;;;;-1:-1:-1;9868:83:0;;7428:1;2185:36:1;;2173:2;2158:18;9868:83:0;2043:184:1;7774:37:0;;;;;;;;;;;;;;;;8580:28;;;;;;;;;;-1:-1:-1;8580:28:0;;;;-1:-1:-1;;;;;8580:28:0;;;;;;-1:-1:-1;;;;;2396:32:1;;;2378:51;;2366:2;2351:18;8580:28:0;2232:203:1;15682:247:0;;;;;;;;;;;;;:::i;7693:59::-;;;;;;;;;;;;;;;;10064:119;;;;;;;;;;-1:-1:-1;10064:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;10157:18:0;10130:7;10157:18;;;:9;:18;;;;;;;10064:119;2757:148;;;;;;;;;;;;;:::i;2543:79::-;;;;;;;;;;-1:-1:-1;2581:7:0;2608:6;-1:-1:-1;;;;;2608:6:0;2543:79;;9773:87;;;;;;;;;;-1:-1:-1;9845:7:0;;;;;;;;;;;;-1:-1:-1;;;9845:7:0;;;;9773:87;;10195:169;;;;;;;;;;-1:-1:-1;10195:169:0;;;;;:::i;:::-;;:::i;7912:38::-;;;;;;;;;;;;;;;;7866;;;;;;;;;;;;;;;;10372:145;;;;;;;;;;-1:-1:-1;10372:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;10482:18:0;;;10455:7;10482:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10372:145;7819:37;;;;;;;;;;;;;;;;17532:148;;;;;;;;;;-1:-1:-1;17532:148:0;;;;;:::i;:::-;;:::i;2913:244::-;;;;;;;;;;-1:-1:-1;2913:244:0;;;;;:::i;:::-;;:::i;15937:249::-;;;;;;;;;;;;;:::i;10525:163::-;10602:4;10619:39;319:10;10642:7;10651:6;10619:8;:39::i;:::-;-1:-1:-1;10676:4:0;10525:163;;;;;:::o;9959:97::-;10014:7;7671:13;7428:1;7671:2;:13;:::i;:::-;7657:27;;:11;:27;:::i;:::-;10034:14;;9959:97;:::o;10696:312::-;10796:4;10813:36;10823:6;10831:9;10842:6;10813:9;:36::i;:::-;10860:118;10869:6;319:10;10889:88;10927:6;10889:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10889:19:0;;;;;;:11;:19;;;;;;;;319:10;10889:33;;;;;;;;;;:37;:88::i;:::-;10860:8;:118::i;:::-;-1:-1:-1;10996:4:0;10696:312;;;;;:::o;17159:365::-;17256:16;;-1:-1:-1;;;;;17256:16:0;319:10;-1:-1:-1;;;;;17240:32:0;;17232:41;;;;;;17310:16;17322:3;7671:13;7428:1;7671:2;:13;:::i;:::-;7657:27;;:11;:27;:::i;:::-;17310:11;;:16::i;:::-;17292:15;:34;17284:89;;;;-1:-1:-1;;;17284:89:0;;4975:2:1;17284:89:0;;;4957:21:1;5014:2;4994:18;;;4987:30;5053:34;5033:18;;;5026:62;-1:-1:-1;;;5104:18:1;;;5097:40;5154:19;;17284:89:0;;;;;;;;;7671:13;7428:1;7671:2;:13;:::i;:::-;7657:27;;:11;:27;:::i;:::-;17392:15;:26;;17384:87;;;;-1:-1:-1;;;17384:87:0;;5386:2:1;17384:87:0;;;5368:21:1;5425:2;5405:18;;;5398:30;5464:34;5444:18;;;5437:62;-1:-1:-1;;;5515:18:1;;;5508:46;5571:19;;17384:87:0;5184:412:1;17384:87:0;17482:16;:34;17159:365::o;15682:247::-;15748:16;;-1:-1:-1;;;;;15748:16:0;319:10;-1:-1:-1;;;;;15732:32:0;;15724:41;;;;;;15820:4;15776:23;10157:18;;;:9;:18;;;;;;15841:19;;15837:85;;15877:33;15894:15;15877:16;:33::i;:::-;15713:216;15682:247::o;2757:148::-;2670:6;;-1:-1:-1;;;;;2670:6:0;319:10;2670:22;2662:67;;;;-1:-1:-1;;;2662:67:0;;5803:2:1;2662:67:0;;;5785:21:1;;;5822:18;;;5815:30;5881:34;5861:18;;;5854:62;5933:18;;2662:67:0;5601:356:1;2662:67:0;2864:1:::1;2848:6:::0;;2827:40:::1;::::0;-1:-1:-1;;;;;2848:6:0;;::::1;::::0;2827:40:::1;::::0;2864:1;;2827:40:::1;2895:1;2878:19:::0;;-1:-1:-1;;;;;;2878:19:0::1;::::0;;2757:148::o;10195:169::-;10275:4;10292:42;319:10;10316:9;10327:6;10292:9;:42::i;17532:148::-;17620:16;;-1:-1:-1;;;;;17620:16:0;319:10;-1:-1:-1;;;;;17604:32:0;;17596:41;;;;;;17648:10;:24;17532:148::o;2913:244::-;2670:6;;-1:-1:-1;;;;;2670:6:0;319:10;2670:22;2662:67;;;;-1:-1:-1;;;2662:67:0;;5803:2:1;2662:67:0;;;5785:21:1;;;5822:18;;;5815:30;5881:34;5861:18;;;5854:62;5933:18;;2662:67:0;5601:356:1;2662:67:0;-1:-1:-1;;;;;3002:22:0;::::1;2994:73;;;::::0;-1:-1:-1;;;2994:73:0;;6164:2:1;2994:73:0::1;::::0;::::1;6146:21:1::0;6203:2;6183:18;;;6176:30;6242:34;6222:18;;;6215:62;-1:-1:-1;;;6293:18:1;;;6286:36;6339:19;;2994:73:0::1;5962:402:1::0;2994:73:0::1;3104:6;::::0;;3083:38:::1;::::0;-1:-1:-1;;;;;3083:38:0;;::::1;::::0;3104:6;::::1;::::0;3083:38:::1;::::0;::::1;3132:6;:17:::0;;-1:-1:-1;;;;;;3132:17:0::1;-1:-1:-1::0;;;;;3132:17:0;;;::::1;::::0;;;::::1;::::0;;2913:244::o;15937:249::-;16003:16;;-1:-1:-1;;;;;16003:16:0;319:10;-1:-1:-1;;;;;15987:32:0;;15979:41;;;;;;16060:21;16096:22;;16092:87;;16135:32;16148:18;16135:12;:32::i;11440:335::-;-1:-1:-1;;;;;11533:19:0;;11525:68;;;;-1:-1:-1;;;11525:68:0;;6571:2:1;11525:68:0;;;6553:21:1;6610:2;6590:18;;;6583:30;6649:34;6629:18;;;6622:62;-1:-1:-1;;;6700:18:1;;;6693:34;6744:19;;11525:68:0;6369:400:1;11525:68:0;-1:-1:-1;;;;;11612:21:0;;11604:68;;;;-1:-1:-1;;;11604:68:0;;6976:2:1;11604:68:0;;;6958:21:1;7015:2;6995:18;;;6988:30;7054:34;7034:18;;;7027:62;-1:-1:-1;;;7105:18:1;;;7098:32;7147:19;;11604:68:0;6774:398:1;11604:68:0;-1:-1:-1;;;;;11683:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11735:32;;1361:25:1;;;11735:32:0;;1334:18:1;11735:32:0;;;;;;;11440:335;;;:::o;11787:1860::-;-1:-1:-1;;;;;11877:18:0;;11869:68;;;;-1:-1:-1;;;11869:68:0;;7379:2:1;11869:68:0;;;7361:21:1;7418:2;7398:18;;;7391:30;7457:34;7437:18;;;7430:62;-1:-1:-1;;;7508:18:1;;;7501:35;7553:19;;11869:68:0;7177:401:1;11869:68:0;-1:-1:-1;;;;;11956:16:0;;11948:64;;;;-1:-1:-1;;;11948:64:0;;7785:2:1;11948:64:0;;;7767:21:1;7824:2;7804:18;;;7797:30;7863:34;7843:18;;;7836:62;-1:-1:-1;;;7914:18:1;;;7907:33;7957:19;;11948:64:0;7583:399:1;11948:64:0;12040:1;12031:6;:10;12023:64;;;;-1:-1:-1;;;12023:64:0;;8189:2:1;12023:64:0;;;8171:21:1;8228:2;8208:18;;;8201:30;8267:34;8247:18;;;8240:62;-1:-1:-1;;;8318:18:1;;;8311:39;8367:19;;12023:64:0;7987:405:1;12023:64:0;12115:4;12144:7;2581;2608:6;-1:-1:-1;;;;;2608:6:0;;2543:79;12144:7;-1:-1:-1;;;;;12136:15:0;:4;-1:-1:-1;;;;;12136:15:0;;;:32;;;;-1:-1:-1;2581:7:0;2608:6;-1:-1:-1;;;;;12155:13:0;;;2608:6;;12155:13;;12136:32;:57;;;;-1:-1:-1;;;;;;12172:21:0;;12188:4;12172:21;;12136:57;:80;;;;-1:-1:-1;;;;;;12197:19:0;;12211:4;12197:19;;12136:80;12132:1310;;;-1:-1:-1;;;;;12242:8:0;;;;;;:4;:8;;;;;;;;12241:9;:24;;;;-1:-1:-1;;;;;;12255:10:0;;;;;;:4;:10;;;;;;;;12254:11;12241:24;12233:33;;;;;;12295:13;;-1:-1:-1;;;;;12287:21:0;;;12295:13;;12287:21;:55;;;;-1:-1:-1;12326:15:0;;-1:-1:-1;;;;;12312:30:0;;;12326:15;;12312:30;;12287:55;12283:219;;;12400:16;;12371:25;12389:6;12371:13;12381:2;-1:-1:-1;;;;;10157:18:0;10130:7;10157:18;;;:9;:18;;;;;;;10064:119;12371:13;:17;;:25::i;:::-;:45;;12363:123;;;;-1:-1:-1;;;12363:123:0;;8599:2:1;12363:123:0;;;8581:21:1;8638:2;8618:18;;;8611:30;8677:34;8657:18;;;8650:62;8748:34;8728:18;;;8721:62;-1:-1:-1;;;8799:19:1;;;8792:32;8841:19;;12363:123:0;8397:469:1;12363:123:0;12530:13;;-1:-1:-1;;;;;12522:21:0;;;12530:13;;12522:21;:55;;;;-1:-1:-1;12561:15:0;;-1:-1:-1;;;;;12547:30:0;;;12561:15;;12547:30;;12522:55;12518:183;;;12614:18;;12598:13;:34;12667:18;;12651:13;:34;12518:183;12743:13;;-1:-1:-1;;;;;12737:19:0;;;12743:13;;12737:19;:55;;;;-1:-1:-1;12776:15:0;;-1:-1:-1;;;;;12760:32:0;;;12776:15;;12760:32;;12737:55;12733:185;;;12829:19;;12813:13;:35;12883:19;;12867:13;:35;12733:185;12951:6;;;;12950:7;:32;;;;-1:-1:-1;12969:13:0;;-1:-1:-1;;;;;12961:21:0;;;12969:13;;12961:21;;12950:32;12946:485;;;13054:4;13005:28;10157:18;;;:9;:18;;;;;;13108:10;;13085:33;;13081:118;;;13143:36;13158:20;13143:14;:36::i;:::-;13248:21;13292:22;;13288:106;;13339:35;13352:21;13339:12;:35::i;:::-;12984:447;;12946:485;-1:-1:-1;;;;;13458:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;13486:22:0;;;;;;:18;:22;;;;;;;;13458:50;13454:98;;;-1:-1:-1;13535:5:0;13454:98;13572:41;13587:4;13593:2;13597:6;13605:7;13572:14;:41::i;:::-;13624:15;11355:21;;11339:13;:37;11403:21;;11387:13;:37;11285:147;13624:15;11856:1791;11787:1860;;;:::o;1376:190::-;1462:7;1498:12;1490:6;;;;1482:29;;;;-1:-1:-1;;;1482:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1522:9:0;1534:5;1538:1;1534;:5;:::i;:::-;1522:17;1376:190;-1:-1:-1;;;;;1376:190:0:o;1828:132::-;1886:7;1913:39;1917:1;1920;1913:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1906:46;1828:132;-1:-1:-1;;;1828:132:0:o;13655:407::-;8789:6;:13;;-1:-1:-1;;8789:13:0;8798:4;8789:13;;;13757:16:::1;::::0;;13771:1:::1;13757:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13757:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13757:16:0::1;13733:40;;13802:4;13784;13789:1;13784:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13784:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13828:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13828:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13784:7;;13828:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13818:4;13823:1;13818:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13818:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13893:15:::1;::::0;13861:62:::1;::::0;13878:4:::1;::::0;13893:15:::1;13911:11:::0;13861:8:::1;:62::i;:::-;13934:15;::::0;:120:::1;::::0;-1:-1:-1;;;13934:120:0;;-1:-1:-1;;;;;13934:15:0;;::::1;::::0;:66:::1;::::0;:120:::1;::::0;14001:11;;13934:15:::1;::::0;14017:4;;14031::::1;::::0;14038:15:::1;::::0;13934:120:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8825:6:0;:14;;-1:-1:-1;;8825:14:0;;;-1:-1:-1;;;;13655:407:0:o;15575:99::-;15632:17;;:34;;-1:-1:-1;;;;;15632:17:0;;;;:34;;;;;15659:6;;15632:17;:34;:17;:34;15659:6;15632:17;:34;;;;;;;;;;;;;;;;;;;;;15575:99;:::o;1045:179::-;1103:7;;1135:5;1139:1;1135;:5;:::i;:::-;1123:17;;1164:1;1159;:6;;1151:46;;;;-1:-1:-1;;;1151:46:0;;10841:2:1;1151:46:0;;;10823:21:1;10880:2;10860:18;;;10853:30;10919:29;10899:18;;;10892:57;10966:18;;1151:46:0;10639:351:1;14553:1014:0;8789:6;:13;;-1:-1:-1;;8789:13:0;8798:4;8789:13;;;14723::::1;::::0;14705::::1;::::0;8789:6;;14661:77:::1;::::0;14705:32:::1;::::0;:17:::1;:32::i;:::-;14661:13;::::0;:39:::1;::::0;14679:20;14661:17:::1;:39::i;:77::-;14638:100:::0;-1:-1:-1;14802:12:0::1;14818:19;14638:100:::0;14835:1:::1;14818:16;:19::i;:::-;14802:35:::0;-1:-1:-1;14848:17:0::1;14868:30;:20:::0;14802:35;14868:24:::1;:30::i;:::-;14848:50:::0;-1:-1:-1;15201:21:0::1;15267:27;14848:50:::0;15267:16:::1;:27::i;:::-;15425:18;15446:70;15506:9:::0;15447:53:::1;15495:4:::0;15448:41:::1;:21;15474:14:::0;15448:25:::1;:41::i;:::-;15447:47:::0;::::1;:53::i;15446:70::-;15425:91;;15529:30;15542:4;15548:10;15529:12;:30::i;16194:256::-:0;16307:7;16302:60;;16336:14;:12;:14::i;:::-;16372:44;16390:6;16398:9;16409:6;16372:17;:44::i;1968:189::-;2054:7;2089:12;2082:5;2074:28;;;;-1:-1:-1;;;2074:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2113:9:0;2125:5;2129:1;2125;:5;:::i;1574:246::-;1632:7;1656:1;1661;1656:6;1652:47;;-1:-1:-1;1686:1:0;1679:8;;1652:47;1709:9;1721:5;1725:1;1721;:5;:::i;:::-;1709:17;-1:-1:-1;1754:1:0;1745:5;1749:1;1709:17;1745:5;:::i;:::-;:10;1737:56;;;;-1:-1:-1;;;1737:56:0;;11419:2:1;1737:56:0;;;11401:21:1;11458:2;11438:18;;;11431:30;11497:34;11477:18;;;11470:62;-1:-1:-1;;;11548:18:1;;;11541:31;11589:19;;1737:56:0;11217:397:1;1232:136:0;1290:7;1317:43;1321:1;1324;1317:43;;;;;;;;;;;;;;;;;:3;:43::i;14074:469::-;14187:15;;14155:62;;14172:4;;-1:-1:-1;;;;;14187:15:0;14205:11;14155:8;:62::i;:::-;14260:15;;14474:16;;14260:275;;-1:-1:-1;;;14260:275:0;;14334:4;14260:275;;;11968:34:1;12018:18;;;12011:34;;;14260:15:0;12061:18:1;;;12054:34;;;12104:18;;;12097:34;-1:-1:-1;;;;;14474:16:0;;;12147:19:1;;;12140:44;14507:15:0;12200:19:1;;;12193:35;14260:15:0;;;:31;;14299:9;;11902:19:1;;14260:275:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14074:469;;:::o;11016:257::-;11063:13;;:18;:40;;;;-1:-1:-1;11085:13:0;;:18;11063:40;11059:53;;;11016:257::o;11059:53::-;11146:13;;;11122:21;:37;11194:13;;;11170:21;:37;-1:-1:-1;11220:17:0;;;;11248;11016:257::o;16458:652::-;16555:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;16555:24:0;16608:34;16638:3;16608:25;16619:13;;16608:6;:10;;:25;;;;:::i;:34::-;16590:15;;;:52;16682:13;;16671:34;;16701:3;;16671:25;;:6;;:10;:25::i;:34::-;16653:52;;;16752:15;;;;16741:48;;16653:52;16741:27;;:6;;:10;:27::i;:::-;:31;;:48::i;:::-;16726:12;;;;:63;;;;-1:-1:-1;;;;;16830:17:0;;;;;;:9;:17;;;;:29;;16852:6;16830:21;:29::i;:::-;-1:-1:-1;;;;;16810:17:0;;;;;;;:9;:17;;;;;;:49;;;;16918:12;;;;16893:20;;;;;;;;;;:38;;:24;:38::i;:::-;-1:-1:-1;;;;;16870:20:0;;;;;;:9;:20;;;;;;;;:61;;;;17018:15;;16998;;;;16969:66;;16998:36;;:15;:19;:36::i;:::-;16987:4;16969:24;;;;:9;:24;;;;;;;:28;:66::i;:::-;16960:4;16942:24;;;;:9;:24;;;;;;;;;:93;;;;17089:12;;;;17061:41;;1361:25:1;;;-1:-1:-1;;;;;17061:41:0;;;;;;;;;;1334:18:1;17061:41:0;;;;;;;16544:566;16458:652;;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703: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;2440:247::-;2499:6;2552:2;2540:9;2531:7;2527:23;2523:32;2520:52;;;2568:1;2565;2558:12;2520:52;2607:9;2594:23;2626:31;2651:5;2626:31;:::i;2692:388::-;2760:6;2768;2821:2;2809:9;2800:7;2796:23;2792:32;2789:52;;;2837:1;2834;2827:12;2789:52;2876:9;2863:23;2895:31;2920:5;2895:31;:::i;:::-;2945:5;-1:-1:-1;3002:2:1;2987:18;;2974:32;3015:33;2974:32;3015:33;:::i;:::-;3067:7;3057:17;;;2692:388;;;;;:::o;3085:127::-;3146:10;3141:3;3137:20;3134:1;3127:31;3177:4;3174:1;3167:15;3201:4;3198:1;3191:15;3217:422;3306:1;3349:5;3306:1;3363:270;3384:7;3374:8;3371:21;3363:270;;;3443:4;3439:1;3435:6;3431:17;3425:4;3422:27;3419:53;;;3452:18;;:::i;:::-;3502:7;3492:8;3488:22;3485:55;;;3522:16;;;;3485:55;3601:22;;;;3561:15;;;;3363:270;;;3367:3;3217:422;;;;;:::o;3644:806::-;3693:5;3723:8;3713:80;;-1:-1:-1;3764:1:1;3778:5;;3713:80;3812:4;3802:76;;-1:-1:-1;3849:1:1;3863:5;;3802:76;3894:4;3912:1;3907:59;;;;3980:1;3975:130;;;;3887:218;;3907:59;3937:1;3928:10;;3951:5;;;3975:130;4012:3;4002:8;3999:17;3996:43;;;4019:18;;:::i;:::-;-1:-1:-1;;4075:1:1;4061:16;;4090:5;;3887:218;;4189:2;4179:8;4176:16;4170:3;4164:4;4161:13;4157:36;4151:2;4141:8;4138:16;4133:2;4127:4;4124:12;4120:35;4117:77;4114:159;;;-1:-1:-1;4226:19:1;;;4258:5;;4114:159;4305:34;4330:8;4324:4;4305:34;:::i;:::-;4375:6;4371:1;4367:6;4363:19;4354:7;4351:32;4348:58;;;4386:18;;:::i;:::-;4424:20;;3644:806;-1:-1:-1;;;3644:806:1:o;4455:140::-;4513:5;4542:47;4583:4;4573:8;4569:19;4563:4;4542:47;:::i;4600:168::-;4673:9;;;4704;;4721:15;;;4715:22;;4701:37;4691:71;;4742:18;;:::i;8871:128::-;8938:9;;;8959:11;;;8956:37;;;8973:18;;:::i;9136:127::-;9197:10;9192:3;9188:20;9185:1;9178:31;9228:4;9225:1;9218:15;9252:4;9249:1;9242:15;9268:251;9338:6;9391:2;9379:9;9370:7;9366:23;9362:32;9359:52;;;9407:1;9404;9397:12;9359:52;9439:9;9433:16;9458:31;9483:5;9458:31;:::i;9524:980::-;9786:4;9834:3;9823:9;9819:19;9865:6;9854:9;9847:25;9891:2;9929:6;9924:2;9913:9;9909:18;9902:34;9972:3;9967:2;9956:9;9952:18;9945:31;9996:6;10031;10025:13;10062:6;10054;10047:22;10100:3;10089:9;10085:19;10078:26;;10139:2;10131:6;10127:15;10113:29;;10160:1;10170:195;10184:6;10181:1;10178:13;10170:195;;;10249:13;;-1:-1:-1;;;;;10245:39:1;10233:52;;10340:15;;;;10305:12;;;;10281:1;10199:9;10170:195;;;-1:-1:-1;;;;;;;10421:32:1;;;;10416:2;10401:18;;10394:60;-1:-1:-1;;;10485:3:1;10470:19;10463:35;10382:3;9524:980;-1:-1:-1;;;9524:980:1:o;10509:125::-;10574:9;;;10595:10;;;10592:36;;;10608:18;;:::i;10995:217::-;11035:1;11061;11051:132;;11105:10;11100:3;11096:20;11093:1;11086:31;11140:4;11137:1;11130:15;11168:4;11165:1;11158:15;11051:132;-1:-1:-1;11197:9:1;;10995:217::o;12239:306::-;12327:6;12335;12343;12396:2;12384:9;12375:7;12371:23;12367:32;12364:52;;;12412:1;12409;12402:12;12364:52;12441:9;12435:16;12425:26;;12491:2;12480:9;12476:18;12470:25;12460:35;;12535:2;12524:9;12520:18;12514:25;12504:35;;12239:306;;;;;:::o

Swarm Source

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