ETH Price: $2,916.23 (+3.28%)
 

Overview

Max Total Supply

100,000,000 $TehSimps

Holders

139

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
urtooslow.eth
Balance
0.690291428 $TehSimps

Value
$0.00
0x702f99334E19c045a35Ca22F2274EC49Ca002d94
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:
tehsimpson

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed
// http://www.tehsimpsons.vip/
// https://t.me/tehsimpsons
// https://twitter.com/tehsimpsons_erc
pragma solidity ^0.8.9;

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

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

}

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

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

contract tehsimpson is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"Teh Simpsons";
    string private constant _symbol = unicode"$TehSimps";
    uint8 private constant _decimals = 9;
 
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100_000_000 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 15;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 25;

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x00dFDE70D18502E193F9B1941fB64A1d7bdF42Bc);
    address payable private _marketingAddress = payable(0x00dFDE70D18502E193F9B1941fB64A1d7bdF42Bc);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount =  2 * (_tTotal/100);
    uint256 public _maxWalletSize = 2 * (_tTotal/100);
    uint256 public _swapTokensAtAmount = 1 *(_tTotal/1000);

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _; 
        inSwap = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = 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() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    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 sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }


    function setMaxAll() public onlyOwner {
        _maxWalletSize = _tTotal;
        _maxTxAmount = _tTotal;
    }
}

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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","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":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setMaxAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a6200055f565b62000022906305f5e10062000577565b6200003090600019620005af565b6200003e90600019620005c6565b60065560006008819055600f6009818155600a8381556019600b819055600c859055600d819055600e9490945592909155601280546001600160a01b031990811672dfde70d18502e193f9b1941fb64a1d7bdf42bc9081179092556013805490911690911790556015805462ffffff60a01b1916600160b01b179055606491620000c991906200055f565b620000d9906305f5e10062000577565b620000e59190620005e0565b620000f290600262000577565b6016556064620001056009600a6200055f565b62000115906305f5e10062000577565b620001219190620005e0565b6200012e90600262000577565b6017556103e8620001426009600a6200055f565b62000152906305f5e10062000577565b6200015e9190620005e0565b6200016b90600162000577565b6018553480156200017b57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506006543360009081526002602090815260409182902092909255601480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155815163c45a015560e01b815291519092839263c45a01559260048083019392829003018186803b1580156200023457600080fd5b505afa15801562000249573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026f9190620005f7565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b857600080fd5b505afa158015620002cd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f39190620005f7565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200033c57600080fd5b505af115801562000351573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003779190620005f7565b601580546001600160a01b0319166001600160a01b03928316179055600080548216815260056020526040808220805460ff1990811660019081179092553084528284208054821683179055601254851684528284208054821683179055601354909416835291208054909216179055336001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620004226009600a6200055f565b62000432906305f5e10062000577565b60405190815260200160405180910390a35062000622565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004a15781600019048211156200048557620004856200044a565b808516156200049357918102915b93841c939080029062000465565b509250929050565b600082620004ba5750600162000559565b81620004c95750600062000559565b8160018114620004e25760028114620004ed576200050d565b600191505062000559565b60ff8411156200050157620005016200044a565b50506001821b62000559565b5060208310610133831016604e8410600b841016171562000532575081810a62000559565b6200053e838362000460565b80600019048211156200055557620005556200044a565b0290505b92915050565b60006200057060ff841683620004a9565b9392505050565b60008160001904831182151516156200059457620005946200044a565b500290565b634e487b7160e01b600052601260045260246000fd5b600082620005c157620005c162000599565b500690565b600082821015620005db57620005db6200044a565b500390565b600082620005f257620005f262000599565b500490565b6000602082840312156200060a57600080fd5b81516001600160a01b03811681146200057057600080fd5b611b9080620006326000396000f3fe6080604052600436106101855760003560e01c80637d1db4a5116100d157806398a5c3151161008a578063bfd7928411610064578063bfd792841461047f578063c3c8cd80146104af578063dd62ed3e146104c4578063f2fde38b1461050a57600080fd5b806398a5c3151461041f578063a2a957bb1461043f578063a9059cbb1461045f57600080fd5b80637d1db4a5146103565780637f2feddc1461036c5780638da5cb5b146103995780638f70ccf7146103b75780638f9a55c0146103d757806395d89b41146103ed57600080fd5b8063313ce5671161013e5780636d8aa8f8116101185780636d8aa8f8146102ec5780636fc3eaec1461030c57806370a0823114610321578063715018a61461034157600080fd5b8063313ce5671461029957806341c2bd55146102b557806349bd5a5e146102cc57600080fd5b806306fdde0314610191578063095ea7b3146101d85780631694505e1461020857806318160ddd1461024057806323b872dd146102635780632fd689e31461028357600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152600c81526b5465682053696d70736f6e7360a01b60208201525b6040516101cf9190611746565b60405180910390f35b3480156101e457600080fd5b506101f86101f33660046117b0565b61052a565b60405190151581526020016101cf565b34801561021457600080fd5b50601454610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101cf565b34801561024c57600080fd5b50610255610541565b6040519081526020016101cf565b34801561026f57600080fd5b506101f861027e3660046117dc565b610562565b34801561028f57600080fd5b5061025560185481565b3480156102a557600080fd5b50604051600981526020016101cf565b3480156102c157600080fd5b506102ca6105cb565b005b3480156102d857600080fd5b50601554610228906001600160a01b031681565b3480156102f857600080fd5b506102ca61030736600461181d565b61063a565b34801561031857600080fd5b506102ca610682565b34801561032d57600080fd5b5061025561033c36600461183f565b6106cd565b34801561034d57600080fd5b506102ca6106ef565b34801561036257600080fd5b5061025560165481565b34801561037857600080fd5b5061025561038736600461183f565b60116020526000908152604090205481565b3480156103a557600080fd5b506000546001600160a01b0316610228565b3480156103c357600080fd5b506102ca6103d236600461181d565b610763565b3480156103e357600080fd5b5061025560175481565b3480156103f957600080fd5b506040805180820190915260098152682454656853696d707360b81b60208201526101c2565b34801561042b57600080fd5b506102ca61043a36600461185c565b6107ab565b34801561044b57600080fd5b506102ca61045a366004611875565b6107da565b34801561046b57600080fd5b506101f861047a3660046117b0565b610818565b34801561048b57600080fd5b506101f861049a36600461183f565b60106020526000908152604090205460ff1681565b3480156104bb57600080fd5b506102ca610825565b3480156104d057600080fd5b506102556104df3660046118a7565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561051657600080fd5b506102ca61052536600461183f565b610879565b6000610537338484610963565b5060015b92915050565b600061054f6009600a6119da565b61055d906305f5e1006119e9565b905090565b600061056f848484610a87565b6105c184336105bc85604051806060016040528060288152602001611b33602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610fc9565b610963565b5060019392505050565b6000546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105f590611a08565b60405180910390fd5b61060a6009600a6119da565b610618906305f5e1006119e9565b6017556106276009600a6119da565b610635906305f5e1006119e9565b601655565b6000546001600160a01b031633146106645760405162461bcd60e51b81526004016105f590611a08565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b031614806106b757506013546001600160a01b0316336001600160a01b0316145b6106c057600080fd5b476106ca81611003565b50565b6001600160a01b03811660009081526002602052604081205461053b90611041565b6000546001600160a01b031633146107195760405162461bcd60e51b81526004016105f590611a08565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461078d5760405162461bcd60e51b81526004016105f590611a08565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146107d55760405162461bcd60e51b81526004016105f590611a08565b601855565b6000546001600160a01b031633146108045760405162461bcd60e51b81526004016105f590611a08565b600893909355600a91909155600955600b55565b6000610537338484610a87565b6012546001600160a01b0316336001600160a01b0316148061085a57506013546001600160a01b0316336001600160a01b0316145b61086357600080fd5b600061086e306106cd565b90506106ca816110c5565b6000546001600160a01b031633146108a35760405162461bcd60e51b81526004016105f590611a08565b6001600160a01b0381166109085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109c55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f5565b6001600160a01b038216610a265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f5565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610aeb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f5565b6001600160a01b038216610b4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f5565b60008111610baf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105f5565b6000546001600160a01b03848116911614801590610bdb57506000546001600160a01b03838116911614155b15610ebc57601554600160a01b900460ff16610c74576000546001600160a01b03848116911614610c745760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105f5565b601654811115610cc65760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105f5565b6001600160a01b03831660009081526010602052604090205460ff16158015610d0857506001600160a01b03821660009081526010602052604090205460ff16155b610d605760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105f5565b6015546001600160a01b03838116911614610de55760175481610d82846106cd565b610d8c9190611a3d565b10610de55760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105f5565b6000610df0306106cd565b601854601654919250821015908210610e095760165491505b808015610e205750601554600160a81b900460ff16155b8015610e3a57506015546001600160a01b03868116911614155b8015610e4f5750601554600160b01b900460ff165b8015610e7457506001600160a01b03851660009081526005602052604090205460ff16155b8015610e9957506001600160a01b03841660009081526005602052604090205460ff16155b15610eb957610ea7826110c5565b478015610eb757610eb747611003565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610efe57506001600160a01b03831660009081526005602052604090205460ff165b80610f3057506015546001600160a01b03858116911614801590610f3057506015546001600160a01b03848116911614155b15610f3d57506000610fb7565b6015546001600160a01b038581169116148015610f6857506014546001600160a01b03848116911614155b15610f7a57600854600c55600954600d555b6015546001600160a01b038481169116148015610fa557506014546001600160a01b03858116911614155b15610fb757600a54600c55600b54600d555b610fc38484848461124e565b50505050565b60008184841115610fed5760405162461bcd60e51b81526004016105f59190611746565b506000610ffa8486611a55565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561103d573d6000803e3d6000fd5b5050565b60006006548211156110a85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105f5565b60006110b261127c565b90506110be838261129f565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061110d5761110d611a6c565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561116157600080fd5b505afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190611a82565b816001815181106111ac576111ac611a6c565b6001600160a01b0392831660209182029290920101526014546111d29130911684610963565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061120b908590600090869030904290600401611a9f565b600060405180830381600087803b15801561122557600080fd5b505af1158015611239573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b8061125b5761125b6112e1565b61126684848461130f565b80610fc357610fc3600e54600c55600f54600d55565b6000806000611289611406565b9092509050611298828261129f565b9250505090565b60006110be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611488565b600c541580156112f15750600d54155b156112f857565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611321876114b6565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506113539087611513565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113829086611555565b6001600160a01b0389166000908152600260205260409020556113a4816115b4565b6113ae84836115fe565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113f391815260200190565b60405180910390a3505050505050505050565b60065460009081908161141b6009600a6119da565b611429906305f5e1006119e9565b905061145161143a6009600a6119da565b611448906305f5e1006119e9565b6006549061129f565b82101561147f576006546114676009600a6119da565b611475906305f5e1006119e9565b9350935050509091565b90939092509050565b600081836114a95760405162461bcd60e51b81526004016105f59190611746565b506000610ffa8486611b10565b60008060008060008060008060006114d38a600c54600d54611622565b92509250925060006114e361127c565b905060008060006114f68e878787611677565b919e509c509a509598509396509194505050505091939550919395565b60006110be83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc9565b6000806115628385611a3d565b9050838110156110be5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f5565b60006115be61127c565b905060006115cc83836116c7565b306000908152600260205260409020549091506115e99082611555565b30600090815260026020526040902055505050565b60065461160b9083611513565b60065560075461161b9082611555565b6007555050565b600080808061163c606461163689896116c7565b9061129f565b9050600061164f60646116368a896116c7565b90506000611667826116618b86611513565b90611513565b9992985090965090945050505050565b600080808061168688866116c7565b9050600061169488876116c7565b905060006116a288886116c7565b905060006116b4826116618686611513565b939b939a50919850919650505050505050565b6000826116d65750600061053b565b60006116e283856119e9565b9050826116ef8583611b10565b146110be5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f5565b600060208083528351808285015260005b8181101561177357858101830151858201604001528201611757565b81811115611785576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146106ca57600080fd5b600080604083850312156117c357600080fd5b82356117ce8161179b565b946020939093013593505050565b6000806000606084860312156117f157600080fd5b83356117fc8161179b565b9250602084013561180c8161179b565b929592945050506040919091013590565b60006020828403121561182f57600080fd5b813580151581146110be57600080fd5b60006020828403121561185157600080fd5b81356110be8161179b565b60006020828403121561186e57600080fd5b5035919050565b6000806000806080858703121561188b57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156118ba57600080fd5b82356118c58161179b565b915060208301356118d58161179b565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611931578160001904821115611917576119176118e0565b8085161561192457918102915b93841c93908002906118fb565b509250929050565b6000826119485750600161053b565b816119555750600061053b565b816001811461196b576002811461197557611991565b600191505061053b565b60ff841115611986576119866118e0565b50506001821b61053b565b5060208310610133831016604e8410600b84101617156119b4575081810a61053b565b6119be83836118f6565b80600019048211156119d2576119d26118e0565b029392505050565b60006110be60ff841683611939565b6000816000190483118215151615611a0357611a036118e0565b500290565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611a5057611a506118e0565b500190565b600082821015611a6757611a676118e0565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a9457600080fd5b81516110be8161179b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611aef5784516001600160a01b031683529383019391830191600101611aca565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b2d57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205e06a2433c7c1a2608874fe54a5010352da65eb689f35ba66d684716ae91481364736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80637d1db4a5116100d157806398a5c3151161008a578063bfd7928411610064578063bfd792841461047f578063c3c8cd80146104af578063dd62ed3e146104c4578063f2fde38b1461050a57600080fd5b806398a5c3151461041f578063a2a957bb1461043f578063a9059cbb1461045f57600080fd5b80637d1db4a5146103565780637f2feddc1461036c5780638da5cb5b146103995780638f70ccf7146103b75780638f9a55c0146103d757806395d89b41146103ed57600080fd5b8063313ce5671161013e5780636d8aa8f8116101185780636d8aa8f8146102ec5780636fc3eaec1461030c57806370a0823114610321578063715018a61461034157600080fd5b8063313ce5671461029957806341c2bd55146102b557806349bd5a5e146102cc57600080fd5b806306fdde0314610191578063095ea7b3146101d85780631694505e1461020857806318160ddd1461024057806323b872dd146102635780632fd689e31461028357600080fd5b3661018c57005b600080fd5b34801561019d57600080fd5b5060408051808201909152600c81526b5465682053696d70736f6e7360a01b60208201525b6040516101cf9190611746565b60405180910390f35b3480156101e457600080fd5b506101f86101f33660046117b0565b61052a565b60405190151581526020016101cf565b34801561021457600080fd5b50601454610228906001600160a01b031681565b6040516001600160a01b0390911681526020016101cf565b34801561024c57600080fd5b50610255610541565b6040519081526020016101cf565b34801561026f57600080fd5b506101f861027e3660046117dc565b610562565b34801561028f57600080fd5b5061025560185481565b3480156102a557600080fd5b50604051600981526020016101cf565b3480156102c157600080fd5b506102ca6105cb565b005b3480156102d857600080fd5b50601554610228906001600160a01b031681565b3480156102f857600080fd5b506102ca61030736600461181d565b61063a565b34801561031857600080fd5b506102ca610682565b34801561032d57600080fd5b5061025561033c36600461183f565b6106cd565b34801561034d57600080fd5b506102ca6106ef565b34801561036257600080fd5b5061025560165481565b34801561037857600080fd5b5061025561038736600461183f565b60116020526000908152604090205481565b3480156103a557600080fd5b506000546001600160a01b0316610228565b3480156103c357600080fd5b506102ca6103d236600461181d565b610763565b3480156103e357600080fd5b5061025560175481565b3480156103f957600080fd5b506040805180820190915260098152682454656853696d707360b81b60208201526101c2565b34801561042b57600080fd5b506102ca61043a36600461185c565b6107ab565b34801561044b57600080fd5b506102ca61045a366004611875565b6107da565b34801561046b57600080fd5b506101f861047a3660046117b0565b610818565b34801561048b57600080fd5b506101f861049a36600461183f565b60106020526000908152604090205460ff1681565b3480156104bb57600080fd5b506102ca610825565b3480156104d057600080fd5b506102556104df3660046118a7565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561051657600080fd5b506102ca61052536600461183f565b610879565b6000610537338484610963565b5060015b92915050565b600061054f6009600a6119da565b61055d906305f5e1006119e9565b905090565b600061056f848484610a87565b6105c184336105bc85604051806060016040528060288152602001611b33602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610fc9565b610963565b5060019392505050565b6000546001600160a01b031633146105fe5760405162461bcd60e51b81526004016105f590611a08565b60405180910390fd5b61060a6009600a6119da565b610618906305f5e1006119e9565b6017556106276009600a6119da565b610635906305f5e1006119e9565b601655565b6000546001600160a01b031633146106645760405162461bcd60e51b81526004016105f590611a08565b60158054911515600160b01b0260ff60b01b19909216919091179055565b6012546001600160a01b0316336001600160a01b031614806106b757506013546001600160a01b0316336001600160a01b0316145b6106c057600080fd5b476106ca81611003565b50565b6001600160a01b03811660009081526002602052604081205461053b90611041565b6000546001600160a01b031633146107195760405162461bcd60e51b81526004016105f590611a08565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461078d5760405162461bcd60e51b81526004016105f590611a08565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b031633146107d55760405162461bcd60e51b81526004016105f590611a08565b601855565b6000546001600160a01b031633146108045760405162461bcd60e51b81526004016105f590611a08565b600893909355600a91909155600955600b55565b6000610537338484610a87565b6012546001600160a01b0316336001600160a01b0316148061085a57506013546001600160a01b0316336001600160a01b0316145b61086357600080fd5b600061086e306106cd565b90506106ca816110c5565b6000546001600160a01b031633146108a35760405162461bcd60e51b81526004016105f590611a08565b6001600160a01b0381166109085760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105f5565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166109c55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105f5565b6001600160a01b038216610a265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105f5565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610aeb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105f5565b6001600160a01b038216610b4d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105f5565b60008111610baf5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105f5565b6000546001600160a01b03848116911614801590610bdb57506000546001600160a01b03838116911614155b15610ebc57601554600160a01b900460ff16610c74576000546001600160a01b03848116911614610c745760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c65640060648201526084016105f5565b601654811115610cc65760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d69740000000060448201526064016105f5565b6001600160a01b03831660009081526010602052604090205460ff16158015610d0857506001600160a01b03821660009081526010602052604090205460ff16155b610d605760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460448201526265642160e81b60648201526084016105f5565b6015546001600160a01b03838116911614610de55760175481610d82846106cd565b610d8c9190611a3d565b10610de55760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b60648201526084016105f5565b6000610df0306106cd565b601854601654919250821015908210610e095760165491505b808015610e205750601554600160a81b900460ff16155b8015610e3a57506015546001600160a01b03868116911614155b8015610e4f5750601554600160b01b900460ff165b8015610e7457506001600160a01b03851660009081526005602052604090205460ff16155b8015610e9957506001600160a01b03841660009081526005602052604090205460ff16155b15610eb957610ea7826110c5565b478015610eb757610eb747611003565b505b50505b6001600160a01b03831660009081526005602052604090205460019060ff1680610efe57506001600160a01b03831660009081526005602052604090205460ff165b80610f3057506015546001600160a01b03858116911614801590610f3057506015546001600160a01b03848116911614155b15610f3d57506000610fb7565b6015546001600160a01b038581169116148015610f6857506014546001600160a01b03848116911614155b15610f7a57600854600c55600954600d555b6015546001600160a01b038481169116148015610fa557506014546001600160a01b03858116911614155b15610fb757600a54600c55600b54600d555b610fc38484848461124e565b50505050565b60008184841115610fed5760405162461bcd60e51b81526004016105f59190611746565b506000610ffa8486611a55565b95945050505050565b6013546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561103d573d6000803e3d6000fd5b5050565b60006006548211156110a85760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105f5565b60006110b261127c565b90506110be838261129f565b9392505050565b6015805460ff60a81b1916600160a81b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061110d5761110d611a6c565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561116157600080fd5b505afa158015611175573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111999190611a82565b816001815181106111ac576111ac611a6c565b6001600160a01b0392831660209182029290920101526014546111d29130911684610963565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061120b908590600090869030904290600401611a9f565b600060405180830381600087803b15801561122557600080fd5b505af1158015611239573d6000803e3d6000fd5b50506015805460ff60a81b1916905550505050565b8061125b5761125b6112e1565b61126684848461130f565b80610fc357610fc3600e54600c55600f54600d55565b6000806000611289611406565b9092509050611298828261129f565b9250505090565b60006110be83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611488565b600c541580156112f15750600d54155b156112f857565b600c8054600e55600d8054600f5560009182905555565b600080600080600080611321876114b6565b6001600160a01b038f16600090815260026020526040902054959b509399509197509550935091506113539087611513565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113829086611555565b6001600160a01b0389166000908152600260205260409020556113a4816115b4565b6113ae84836115fe565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516113f391815260200190565b60405180910390a3505050505050505050565b60065460009081908161141b6009600a6119da565b611429906305f5e1006119e9565b905061145161143a6009600a6119da565b611448906305f5e1006119e9565b6006549061129f565b82101561147f576006546114676009600a6119da565b611475906305f5e1006119e9565b9350935050509091565b90939092509050565b600081836114a95760405162461bcd60e51b81526004016105f59190611746565b506000610ffa8486611b10565b60008060008060008060008060006114d38a600c54600d54611622565b92509250925060006114e361127c565b905060008060006114f68e878787611677565b919e509c509a509598509396509194505050505091939550919395565b60006110be83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fc9565b6000806115628385611a3d565b9050838110156110be5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105f5565b60006115be61127c565b905060006115cc83836116c7565b306000908152600260205260409020549091506115e99082611555565b30600090815260026020526040902055505050565b60065461160b9083611513565b60065560075461161b9082611555565b6007555050565b600080808061163c606461163689896116c7565b9061129f565b9050600061164f60646116368a896116c7565b90506000611667826116618b86611513565b90611513565b9992985090965090945050505050565b600080808061168688866116c7565b9050600061169488876116c7565b905060006116a288886116c7565b905060006116b4826116618686611513565b939b939a50919850919650505050505050565b6000826116d65750600061053b565b60006116e283856119e9565b9050826116ef8583611b10565b146110be5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105f5565b600060208083528351808285015260005b8181101561177357858101830151858201604001528201611757565b81811115611785576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146106ca57600080fd5b600080604083850312156117c357600080fd5b82356117ce8161179b565b946020939093013593505050565b6000806000606084860312156117f157600080fd5b83356117fc8161179b565b9250602084013561180c8161179b565b929592945050506040919091013590565b60006020828403121561182f57600080fd5b813580151581146110be57600080fd5b60006020828403121561185157600080fd5b81356110be8161179b565b60006020828403121561186e57600080fd5b5035919050565b6000806000806080858703121561188b57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156118ba57600080fd5b82356118c58161179b565b915060208301356118d58161179b565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611931578160001904821115611917576119176118e0565b8085161561192457918102915b93841c93908002906118fb565b509250929050565b6000826119485750600161053b565b816119555750600061053b565b816001811461196b576002811461197557611991565b600191505061053b565b60ff841115611986576119866118e0565b50506001821b61053b565b5060208310610133831016604e8410600b84101617156119b4575081810a61053b565b6119be83836118f6565b80600019048211156119d2576119d26118e0565b029392505050565b60006110be60ff841683611939565b6000816000190483118215151615611a0357611a036118e0565b500290565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115611a5057611a506118e0565b500190565b600082821015611a6757611a676118e0565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a9457600080fd5b81516110be8161179b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611aef5784516001600160a01b031683529383019391830191600101611aca565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b2d57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205e06a2433c7c1a2608874fe54a5010352da65eb689f35ba66d684716ae91481364736f6c63430008090033

Deployed Bytecode Sourcemap

4172:12850:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6690:83;;;;;;;;;;-1:-1:-1;6760:5:0;;;;;;;;;;;;-1:-1:-1;;;6760:5:0;;;;6690:83;;;;;;;:::i;:::-;;;;;;;;7615:193;;;;;;;;;;-1:-1:-1;7615:193:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;7615:193:0;1072:187:1;5530:41:0;;;;;;;;;;-1:-1:-1;5530:41:0;;;;-1:-1:-1;;;;;5530:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;5530:41:0;1264:229:1;6967:95:0;;;;;;;;;;;;;:::i;:::-;;;1644:25:1;;;1632:2;1617:18;6967:95:0;1498:177:1;7816:446:0;;;;;;;;;;-1:-1:-1;7816:446:0;;;;;:::i;:::-;;:::i;5839:54::-;;;;;;;;;;;;;;;;6876:83;;;;;;;;;;-1:-1:-1;6876:83:0;;4418:1;2283:36:1;;2271:2;2256:18;6876:83:0;2141:184:1;16905:114:0;;;;;;;;;;;;;:::i;:::-;;5578:28;;;;;;;;;;-1:-1:-1;5578:28:0;;;;-1:-1:-1;;;;;5578:28:0;;;16794:101;;;;;;;;;;-1:-1:-1;16794:101:0;;;;;:::i;:::-;;:::i;12619:235::-;;;;;;;;;;;;;:::i;7070:138::-;;;;;;;;;;-1:-1:-1;7070:138:0;;;;;:::i;:::-;;:::i;1658:148::-;;;;;;;;;;;;;:::i;5728:48::-;;;;;;;;;;;;;;;;5272:43;;;;;;;;;;-1:-1:-1;5272:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;1444:79;;;;;;;;;;-1:-1:-1;1482:7:0;1509:6;-1:-1:-1;;;;;1509:6:0;1444:79;;12266:101;;;;;;;;;;-1:-1:-1;12266:101:0;;;;;:::i;:::-;;:::i;5783:49::-;;;;;;;;;;;;;;;;6781:87;;;;;;;;;;-1:-1:-1;6853:7:0;;;;;;;;;;;;-1:-1:-1;;;6853:7:0;;;;6781:87;;16603:139;;;;;;;;;;-1:-1:-1;16603:139:0;;;;;:::i;:::-;;:::i;16260:291::-;;;;;;;;;;-1:-1:-1;16260:291:0;;;;;:::i;:::-;;:::i;7216:199::-;;;;;;;;;;-1:-1:-1;7216:199:0;;;;;:::i;:::-;;:::i;5234:36::-;;;;;;;;;;-1:-1:-1;5234:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;12375:236;;;;;;;;;;;;;:::i;7423:184::-;;;;;;;;;;-1:-1:-1;7423:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;7572:18:0;;;7540:7;7572:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7423:184;1814:244;;;;;;;;;;-1:-1:-1;1814:244:0;;;;;:::i;:::-;;:::i;7615:193::-;7717:4;7739:39;281:10;7762:7;7771:6;7739:8;:39::i;:::-;-1:-1:-1;7796:4:0;7615:193;;;;;:::o;6967:95::-;7020:7;4759:13;4418:1;4759:2;:13;:::i;:::-;4745:27;;:11;:27;:::i;:::-;7040:14;;6967:95;:::o;7816:446::-;7948:4;7965:36;7975:6;7983:9;7994:6;7965:9;:36::i;:::-;8012:220;8035:6;281:10;8083:138;8139:6;8083:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8083:19:0;;;;;;:11;:19;;;;;;;;281:10;8083:33;;;;;;;;;;:37;:138::i;:::-;8012:8;:220::i;:::-;-1:-1:-1;8250:4:0;7816:446;;;;;:::o;16905:114::-;1571:6;;-1:-1:-1;;;;;1571:6:0;281:10;1571:22;1563:67;;;;-1:-1:-1;;;1563:67:0;;;;;;;:::i;:::-;;;;;;;;;4759:13:::1;4418:1;4759:2;:13;:::i;:::-;4745:27;::::0;:11:::1;:27;:::i;:::-;16954:14;:24:::0;4759:13:::1;4418:1;4759:2;:13;:::i;:::-;4745:27;::::0;:11:::1;:27;:::i;:::-;16989:12;:22:::0;16905:114::o;16794:101::-;1571:6;;-1:-1:-1;;;;;1571:6:0;281:10;1571:22;1563:67;;;;-1:-1:-1;;;1563:67:0;;;;;;;:::i;:::-;16861:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16861:26:0::1;-1:-1:-1::0;;;;16861:26:0;;::::1;::::0;;;::::1;::::0;;16794:101::o;12619:235::-;12685:19;;-1:-1:-1;;;;;12685:19:0;281:10;-1:-1:-1;;;;;12669:35:0;;:72;;;-1:-1:-1;12724:17:0;;-1:-1:-1;;;;;12724:17:0;281:10;-1:-1:-1;;;;;12708:33:0;;12669:72;12661:81;;;;;;12782:21;12814:32;12782:21;12814:12;:32::i;:::-;12650:204;12619:235::o;7070:138::-;-1:-1:-1;;;;;7183:16:0;;7136:7;7183:16;;;:7;:16;;;;;;7163:37;;:19;:37::i;1658:148::-;1571:6;;-1:-1:-1;;;;;1571:6:0;281:10;1571:22;1563:67;;;;-1:-1:-1;;;1563:67:0;;;;;;;:::i;:::-;1765:1:::1;1749:6:::0;;1728:40:::1;::::0;-1:-1:-1;;;;;1749:6:0;;::::1;::::0;1728:40:::1;::::0;1765:1;;1728:40:::1;1796:1;1779:19:::0;;-1:-1:-1;;;;;;1779:19:0::1;::::0;;1658:148::o;12266:101::-;1571:6;;-1:-1:-1;;;;;1571:6:0;281:10;1571:22;1563:67;;;;-1:-1:-1;;;1563:67:0;;;;;;;:::i;:::-;12333:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;12333:26:0::1;-1:-1:-1::0;;;;12333:26:0;;::::1;::::0;;;::::1;::::0;;12266:101::o;16603:139::-;1571:6;;-1:-1:-1;;;;;1571:6:0;281:10;1571:22;1563:67;;;;-1:-1:-1;;;1563:67:0;;;;;;;:::i;:::-;16694:19:::1;:40:::0;16603:139::o;16260:291::-;1571:6;;-1:-1:-1;;;;;1571:6:0;281:10;1571:22;1563:67;;;;-1:-1:-1;;;1563:67:0;;;;;;;:::i;:::-;16394:14:::1;:30:::0;;;;16435:15:::1;:32:::0;;;;16478:12:::1;:26:::0;16515:13:::1;:28:::0;16260:291::o;7216:199::-;7321:4;7343:42;281:10;7367:9;7378:6;7343:9;:42::i;12375:236::-;12441:19;;-1:-1:-1;;;;;12441:19:0;281:10;-1:-1:-1;;;;;12425:35:0;;:72;;;-1:-1:-1;12480:17:0;;-1:-1:-1;;;;;12480:17:0;281:10;-1:-1:-1;;;;;12464:33:0;;12425:72;12417:81;;;;;;12509:23;12535:24;12553:4;12535:9;:24::i;:::-;12509:50;;12570:33;12587:15;12570:16;:33::i;1814:244::-;1571:6;;-1:-1:-1;;;;;1571:6:0;281:10;1571:22;1563:67;;;;-1:-1:-1;;;1563:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1903:22:0;::::1;1895:73;;;::::0;-1:-1:-1;;;1895:73:0;;6287:2:1;1895:73:0::1;::::0;::::1;6269:21:1::0;6326:2;6306:18;;;6299:30;6365:34;6345:18;;;6338:62;-1:-1:-1;;;6416:18:1;;;6409:36;6462:19;;1895:73:0::1;6085:402:1::0;1895:73:0::1;2005:6;::::0;;1984:38:::1;::::0;-1:-1:-1;;;;;1984:38:0;;::::1;::::0;2005:6;::::1;::::0;1984:38:::1;::::0;::::1;2033:6;:17:::0;;-1:-1:-1;;;;;;2033:17:0::1;-1:-1:-1::0;;;;;2033:17:0;;;::::1;::::0;;;::::1;::::0;;1814:244::o;8953:369::-;-1:-1:-1;;;;;9080:19:0;;9072:68;;;;-1:-1:-1;;;9072:68:0;;6694:2:1;9072:68:0;;;6676:21:1;6733:2;6713:18;;;6706:30;6772:34;6752:18;;;6745:62;-1:-1:-1;;;6823:18:1;;;6816:34;6867:19;;9072:68:0;6492:400:1;9072:68:0;-1:-1:-1;;;;;9159:21:0;;9151:68;;;;-1:-1:-1;;;9151:68:0;;7099:2:1;9151:68:0;;;7081:21:1;7138:2;7118:18;;;7111:30;7177:34;7157:18;;;7150:62;-1:-1:-1;;;7228:18:1;;;7221:32;7270:19;;9151:68:0;6897:398:1;9151:68:0;-1:-1:-1;;;;;9230:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9282:32;;1644:25:1;;;9282:32:0;;1617:18:1;9282:32:0;;;;;;;8953:369;;;:::o;9330:2330::-;-1:-1:-1;;;;;9452:18:0;;9444:68;;;;-1:-1:-1;;;9444:68:0;;7502:2:1;9444:68:0;;;7484:21:1;7541:2;7521:18;;;7514:30;7580:34;7560:18;;;7553:62;-1:-1:-1;;;7631:18:1;;;7624:35;7676:19;;9444:68:0;7300:401:1;9444:68:0;-1:-1:-1;;;;;9531:16:0;;9523:64;;;;-1:-1:-1;;;9523:64:0;;7908:2:1;9523:64:0;;;7890:21:1;7947:2;7927:18;;;7920:30;7986:34;7966:18;;;7959:62;-1:-1:-1;;;8037:18:1;;;8030:33;8080:19;;9523:64:0;7706:399:1;9523:64:0;9615:1;9606:6;:10;9598:64;;;;-1:-1:-1;;;9598:64:0;;8312:2:1;9598:64:0;;;8294:21:1;8351:2;8331:18;;;8324:30;8390:34;8370:18;;;8363:62;-1:-1:-1;;;8441:18:1;;;8434:39;8490:19;;9598:64:0;8110:405:1;9598:64:0;1482:7;1509:6;-1:-1:-1;;;;;9679:15:0;;;1509:6;;9679:15;;;;:32;;-1:-1:-1;1482:7:0;1509:6;-1:-1:-1;;;;;9698:13:0;;;1509:6;;9698:13;;9679:32;9675:1259;;;9768:11;;-1:-1:-1;;;9768:11:0;;;;9763:144;;1482:7;1509:6;-1:-1:-1;;;;;9808:15:0;;;1509:6;;9808:15;9800:91;;;;-1:-1:-1;;;9800:91:0;;8722:2:1;9800:91:0;;;8704:21:1;8761:2;8741:18;;;8734:30;8800:34;8780:18;;;8773:62;8871:33;8851:18;;;8844:61;8922:19;;9800:91:0;8520:427:1;9800:91:0;9941:12;;9931:6;:22;;9923:63;;;;-1:-1:-1;;;9923:63:0;;9154:2:1;9923:63:0;;;9136:21:1;9193:2;9173:18;;;9166:30;9232;9212:18;;;9205:58;9280:18;;9923:63:0;8952:352:1;9923:63:0;-1:-1:-1;;;;;10010:10:0;;;;;;:4;:10;;;;;;;;10009:11;:24;;;;-1:-1:-1;;;;;;10025:8:0;;;;;;:4;:8;;;;;;;;10024:9;10009:24;10001:72;;;;-1:-1:-1;;;10001:72:0;;9511:2:1;10001:72:0;;;9493:21:1;9550:2;9530:18;;;9523:30;9589:34;9569:18;;;9562:62;-1:-1:-1;;;9640:18:1;;;9633:33;9683:19;;10001:72:0;9309:399:1;10001:72:0;10099:13;;-1:-1:-1;;;;;10093:19:0;;;10099:13;;10093:19;10090:146;;10166:14;;10157:6;10141:13;10151:2;10141:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10133:87;;;;-1:-1:-1;;;10133:87:0;;10048:2:1;10133:87:0;;;10030:21:1;10087:2;10067:18;;;10060:30;10126:34;10106:18;;;10099:62;-1:-1:-1;;;10177:18:1;;;10170:33;10220:19;;10133:87:0;9846:399:1;10133:87:0;10252:28;10283:24;10301:4;10283:9;:24::i;:::-;10361:19;;10424:12;;10252:55;;-1:-1:-1;10337:43:0;;;;10400:36;;10397:124;;10493:12;;10470:35;;10397:124;10541:7;:18;;;;-1:-1:-1;10553:6:0;;-1:-1:-1;;;10553:6:0;;;;10552:7;10541:18;:43;;;;-1:-1:-1;10571:13:0;;-1:-1:-1;;;;;10563:21:0;;;10571:13;;10563:21;;10541:43;:58;;;;-1:-1:-1;10588:11:0;;-1:-1:-1;;;10588:11:0;;;;10541:58;:87;;;;-1:-1:-1;;;;;;10604:24:0;;;;;;:18;:24;;;;;;;;10603:25;10541:87;:114;;;;-1:-1:-1;;;;;;10633:22:0;;;;;;:18;:22;;;;;;;;10632:23;10541:114;10537:386;;;10676:38;10693:20;10676:16;:38::i;:::-;10762:21;10806:22;;10802:106;;10853:35;10866:21;10853:12;:35::i;:::-;10657:266;10537:386;9713:1221;;9675:1259;-1:-1:-1;;;;;11010:24:0;;10946:12;11010:24;;;:18;:24;;;;;;10961:4;;11010:24;;;:50;;-1:-1:-1;;;;;;11038:22:0;;;;;;:18;:22;;;;;;;;11010:50;11009:102;;;-1:-1:-1;11074:13:0;;-1:-1:-1;;;;;11066:21:0;;;11074:13;;11066:21;;;;:44;;-1:-1:-1;11097:13:0;;-1:-1:-1;;;;;11091:19:0;;;11097:13;;11091:19;;11066:44;11005:594;;;-1:-1:-1;11138:5:0;11005:594;;;11221:13;;-1:-1:-1;;;;;11213:21:0;;;11221:13;;11213:21;:55;;;;-1:-1:-1;11252:15:0;;-1:-1:-1;;;;;11238:30:0;;;11252:15;;11238:30;;11213:55;11210:162;;;11301:14;;11289:9;:26;11344:12;;11334:7;:22;11210:162;11431:13;;-1:-1:-1;;;;;11425:19:0;;;11431:13;;11425:19;:55;;;;-1:-1:-1;11464:15:0;;-1:-1:-1;;;;;11448:32:0;;;11464:15;;11448:32;;11425:55;11421:165;;;11513:15;;11501:9;:27;11557:13;;11547:7;:23;11421:165;11611:41;11626:4;11632:2;11636:6;11644:7;11611:14;:41::i;:::-;9433:2227;9330:2330;;;:::o;2422:224::-;2542:7;2578:12;2570:6;;;;2562:29;;;;-1:-1:-1;;;2562:29:0;;;;;;;;:::i;:::-;-1:-1:-1;2602:9:0;2614:5;2618:1;2614;:5;:::i;:::-;2602:17;2422:224;-1:-1:-1;;;;;2422:224:0:o;12159:99::-;12216:17;;:34;;-1:-1:-1;;;;;12216:17:0;;;;:34;;;;;12243:6;;12216:17;:34;:17;:34;12243:6;12216:17;:34;;;;;;;;;;;;;;;;;;;;;12159:99;:::o;8270:323::-;8365:7;8423;;8412;:18;;8390:110;;;;-1:-1:-1;;;8390:110:0;;10582:2:1;8390:110:0;;;10564:21:1;10621:2;10601:18;;;10594:30;10660:34;10640:18;;;10633:62;-1:-1:-1;;;10711:18:1;;;10704:40;10761:19;;8390:110:0;10380:406:1;8390:110:0;8511:19;8533:10;:8;:10::i;:::-;8511:32;-1:-1:-1;8561:24:0;:7;8511:32;8561:11;:24::i;:::-;8554:31;8270:323;-1:-1:-1;;;8270:323:0:o;11668:483::-;5987:6;:13;;-1:-1:-1;;;;5987:13:0;-1:-1:-1;;;5987:13:0;;;11770:16:::1;::::0;;11784:1:::1;11770:16:::0;;;;;::::1;::::0;;-1:-1:-1;;11770:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11770:16:0::1;11746:40;;11815:4;11797;11802:1;11797:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11797:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11841:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;11841:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;11797:7;;11841:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11831:4;11836:1;11831:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11831:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;11906:15:::1;::::0;11874:62:::1;::::0;11891:4:::1;::::0;11906:15:::1;11924:11:::0;11874:8:::1;:62::i;:::-;11947:15;::::0;:196:::1;::::0;-1:-1:-1;;;11947:196:0;;-1:-1:-1;;;;;11947:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12028:11;;11947:15:::1;::::0;12070:4;;12097::::1;::::0;12117:15:::1;::::0;11947:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6024:6:0;:14;;-1:-1:-1;;;;6024:14:0;;;-1:-1:-1;;;;11668:483:0:o;12862:282::-;13018:7;13013:28;;13027:14;:12;:14::i;:::-;13052:44;13070:6;13078:9;13089:6;13052:17;:44::i;:::-;13112:7;13107:29;;13121:15;8884:17;;8872:9;:29;8922:15;;8912:7;:25;8828:117;15823:164;15865:7;15886:15;15903;15922:19;:17;:19::i;:::-;15885:56;;-1:-1:-1;15885:56:0;-1:-1:-1;15959:20:0;15885:56;;15959:11;:20::i;:::-;15952:27;;;;15823:164;:::o;2908:132::-;2966:7;2993:39;2997:1;3000;2993:39;;;;;;;;;;;;;;;;;:3;:39::i;8601:219::-;8648:9;;:14;:30;;;;-1:-1:-1;8666:7:0;;:12;8648:30;8644:43;;;8601:219::o;8644:43::-;8719:9;;;8699:17;:29;8757:7;;;8739:15;:25;-1:-1:-1;8777:13:0;;;;8801:11;8601:219::o;13152:610::-;13299:15;13329:23;13367:12;13394:23;13432:12;13459:13;13486:19;13497:7;13486:10;:19::i;:::-;-1:-1:-1;;;;;13534:15:0;;;;;;:7;:15;;;;;;13284:221;;-1:-1:-1;13284:221:0;;-1:-1:-1;13284:221:0;;-1:-1:-1;13284:221:0;-1:-1:-1;13284:221:0;-1:-1:-1;13284:221:0;-1:-1:-1;13534:28:0;;13284:221;13534:19;:28::i;:::-;-1:-1:-1;;;;;13516:15:0;;;;;;;:7;:15;;;;;;:46;;;;13594:18;;;;;;;:39;;13617:15;13594:22;:39::i;:::-;-1:-1:-1;;;;;13573:18:0;;;;;;:7;:18;;;;;:60;13644:16;13654:5;13644:9;:16::i;:::-;13671:23;13683:4;13689;13671:11;:23::i;:::-;13727:9;-1:-1:-1;;;;;13710:44:0;13719:6;-1:-1:-1;;;;;13710:44:0;;13738:15;13710:44;;;;1644:25:1;;1632:2;1617:18;;1498:177;13710:44:0;;;;;;;;13273:489;;;;;;13152:610;;;:::o;15995:257::-;16093:7;;16046;;;;;4759:13;4418:1;4759:2;:13;:::i;:::-;4745:27;;:11;:27;:::i;:::-;16111:25;-1:-1:-1;16161:20:0;4759:13;4418:1;4759:2;:13;:::i;:::-;4745:27;;:11;:27;:::i;:::-;16161:7;;;:11;:20::i;:::-;16151:7;:30;16147:61;;;16191:7;;4759:13;4418:1;4759:2;:13;:::i;:::-;4745:27;;:11;:27;:::i;:::-;16183:25;;;;;;15995:257;;:::o;16147:61::-;16227:7;;16236;;-1:-1:-1;15995:257:0;-1:-1:-1;15995:257:0:o;3048:223::-;3168:7;3203:12;3196:5;3188:28;;;;-1:-1:-1;;;3188:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3227:9:0;3239:5;3243:1;3239;:5;:::i;14181:615::-;14281:7;14303;14325;14347;14369;14391;14427:23;14452:12;14466:13;14496:40;14508:7;14517:9;;14528:7;;14496:11;:40::i;:::-;14426:110;;;;;;14547:19;14569:10;:8;:10::i;:::-;14547:32;;14591:15;14608:23;14633:12;14662:46;14674:7;14683:4;14689:5;14696:11;14662;:46::i;:::-;14590:118;;-1:-1:-1;14590:118:0;-1:-1:-1;14590:118:0;-1:-1:-1;14759:15:0;;-1:-1:-1;14776:4:0;;-1:-1:-1;14782:5:0;;-1:-1:-1;;;;;14181:615:0;;;;;;;:::o;2278:136::-;2336:7;2363:43;2367:1;2370;2363:43;;;;;;;;;;;;;;;;;:3;:43::i;2091:179::-;2149:7;;2181:5;2185:1;2181;:5;:::i;:::-;2169:17;;2210:1;2205;:6;;2197:46;;;;-1:-1:-1;;;2197:46:0;;12720:2:1;2197:46:0;;;12702:21:1;12759:2;12739:18;;;12732:30;12798:29;12778:18;;;12771:57;12845:18;;2197:46:0;12518:351:1;13770:211:0;13823:19;13845:10;:8;:10::i;:::-;13823:32;-1:-1:-1;13866:13:0;13882:22;:5;13823:32;13882:9;:22::i;:::-;13956:4;13940:22;;;;:7;:22;;;;;;13866:38;;-1:-1:-1;13940:33:0;;13866:38;13940:26;:33::i;:::-;13931:4;13915:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;13770:211:0:o;13989:147::-;14067:7;;:17;;14079:4;14067:11;:17::i;:::-;14057:7;:27;14108:10;;:20;;14123:4;14108:14;:20::i;:::-;14095:10;:33;-1:-1:-1;;13989:147:0:o;14804:469::-;14973:7;;;;15067:30;15093:3;15067:21;:7;15079:8;15067:11;:21::i;:::-;:25;;:30::i;:::-;15052:45;-1:-1:-1;15108:13:0;15124:28;15148:3;15124:19;:7;15136:6;15124:11;:19::i;:28::-;15108:44;-1:-1:-1;15163:23:0;15189:28;15108:44;15189:17;:7;15201:4;15189:11;:17::i;:::-;:21;;:28::i;:::-;15163:54;15253:4;;-1:-1:-1;15259:5:0;;-1:-1:-1;14804:469:0;;-1:-1:-1;;;;;14804:469:0:o;15281:534::-;15475:7;;;;15572:24;:7;15584:11;15572;:24::i;:::-;15554:42;-1:-1:-1;15607:12:0;15622:21;:4;15631:11;15622:8;:21::i;:::-;15607:36;-1:-1:-1;15654:13:0;15670:22;:5;15680:11;15670:9;:22::i;:::-;15654:38;-1:-1:-1;15703:23:0;15729:28;15654:38;15729:17;:7;15741:4;15729:11;:17::i;:28::-;15776:7;;;;-1:-1:-1;15802:4:0;;-1:-1:-1;15281:534:0;;-1:-1:-1;;;;;;;15281:534:0:o;2654:246::-;2712:7;2736:6;2732:47;;-1:-1:-1;2766:1:0;2759:8;;2732:47;2789:9;2801:5;2805:1;2801;:5;:::i;:::-;2789:17;-1:-1:-1;2834:1:0;2825:5;2829:1;2789:17;2825:5;:::i;:::-;:10;2817:56;;;;-1:-1:-1;;;2817:56:0;;13076:2:1;2817:56:0;;;13058:21:1;13115:2;13095:18;;;13088:30;13154:34;13134:18;;;13127:62;-1:-1:-1;;;13205:18:1;;;13198:31;13246:19;;2817:56:0;12874:397:1;14:597;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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1680:456::-;1757:6;1765;1773;1826:2;1814:9;1805:7;1801:23;1797:32;1794:52;;;1842:1;1839;1832:12;1794:52;1881:9;1868:23;1900:31;1925:5;1900:31;:::i;:::-;1950:5;-1:-1:-1;2007:2:1;1992:18;;1979:32;2020:33;1979:32;2020:33;:::i;:::-;1680:456;;2072:7;;-1:-1:-1;;;2126:2:1;2111:18;;;;2098:32;;1680:456::o;2538:273::-;2594:6;2647:2;2635:9;2626:7;2622:23;2618:32;2615:52;;;2663:1;2660;2653:12;2615:52;2702:9;2689:23;2755:5;2748:13;2741:21;2734:5;2731:32;2721:60;;2777:1;2774;2767:12;2816:247;2875:6;2928:2;2916:9;2907:7;2903:23;2899:32;2896:52;;;2944:1;2941;2934:12;2896:52;2983:9;2970:23;3002:31;3027:5;3002:31;:::i;3068:180::-;3127:6;3180:2;3168:9;3159:7;3155:23;3151:32;3148:52;;;3196:1;3193;3186:12;3148:52;-1:-1:-1;3219:23:1;;3068:180;-1:-1:-1;3068:180:1:o;3253:385::-;3339:6;3347;3355;3363;3416:3;3404:9;3395:7;3391:23;3387:33;3384:53;;;3433:1;3430;3423:12;3384:53;-1:-1:-1;;3456:23:1;;;3526:2;3511:18;;3498:32;;-1:-1:-1;3577:2:1;3562:18;;3549:32;;3628:2;3613:18;3600:32;;-1:-1:-1;3253:385:1;-1:-1:-1;3253:385:1:o;3643:388::-;3711:6;3719;3772:2;3760:9;3751:7;3747:23;3743:32;3740:52;;;3788:1;3785;3778:12;3740:52;3827:9;3814:23;3846:31;3871:5;3846:31;:::i;:::-;3896:5;-1:-1:-1;3953:2:1;3938:18;;3925:32;3966:33;3925:32;3966:33;:::i;:::-;4018:7;4008:17;;;3643:388;;;;;:::o;4036:127::-;4097:10;4092:3;4088:20;4085:1;4078:31;4128:4;4125:1;4118:15;4152:4;4149:1;4142:15;4168:422;4257:1;4300:5;4257:1;4314:270;4335:7;4325:8;4322:21;4314:270;;;4394:4;4390:1;4386:6;4382:17;4376:4;4373:27;4370:53;;;4403:18;;:::i;:::-;4453:7;4443:8;4439:22;4436:55;;;4473:16;;;;4436:55;4552:22;;;;4512:15;;;;4314:270;;;4318:3;4168:422;;;;;:::o;4595:806::-;4644:5;4674:8;4664:80;;-1:-1:-1;4715:1:1;4729:5;;4664:80;4763:4;4753:76;;-1:-1:-1;4800:1:1;4814:5;;4753:76;4845:4;4863:1;4858:59;;;;4931:1;4926:130;;;;4838:218;;4858:59;4888:1;4879:10;;4902:5;;;4926:130;4963:3;4953:8;4950:17;4947:43;;;4970:18;;:::i;:::-;-1:-1:-1;;5026:1:1;5012:16;;5041:5;;4838:218;;5140:2;5130:8;5127:16;5121:3;5115:4;5112:13;5108:36;5102:2;5092:8;5089:16;5084:2;5078:4;5075:12;5071:35;5068:77;5065:159;;;-1:-1:-1;5177:19:1;;;5209:5;;5065:159;5256:34;5281:8;5275:4;5256:34;:::i;:::-;5326:6;5322:1;5318:6;5314:19;5305:7;5302:32;5299:58;;;5337:18;;:::i;:::-;5375:20;;4595:806;-1:-1:-1;;;4595:806:1:o;5406:140::-;5464:5;5493:47;5534:4;5524:8;5520:19;5514:4;5493:47;:::i;5551:168::-;5591:7;5657:1;5653;5649:6;5645:14;5642:1;5639:21;5634:1;5627:9;5620:17;5616:45;5613:71;;;5664:18;;:::i;:::-;-1:-1:-1;5704:9:1;;5551:168::o;5724:356::-;5926:2;5908:21;;;5945:18;;;5938:30;6004:34;5999:2;5984:18;;5977:62;6071:2;6056:18;;5724:356::o;9713:128::-;9753:3;9784:1;9780:6;9777:1;9774:13;9771:39;;;9790:18;;:::i;:::-;-1:-1:-1;9826:9:1;;9713:128::o;10250:125::-;10290:4;10318:1;10315;10312:8;10309:34;;;10323:18;;:::i;:::-;-1:-1:-1;10360:9:1;;10250:125::o;10923:127::-;10984:10;10979:3;10975:20;10972:1;10965:31;11015:4;11012:1;11005:15;11039:4;11036:1;11029:15;11055:251;11125:6;11178:2;11166:9;11157:7;11153:23;11149:32;11146:52;;;11194:1;11191;11184:12;11146:52;11226:9;11220:16;11245:31;11270:5;11245:31;:::i;11311:980::-;11573:4;11621:3;11610:9;11606:19;11652:6;11641:9;11634:25;11678:2;11716:6;11711:2;11700:9;11696:18;11689:34;11759:3;11754:2;11743:9;11739:18;11732:31;11783:6;11818;11812:13;11849:6;11841;11834:22;11887:3;11876:9;11872:19;11865:26;;11926:2;11918:6;11914:15;11900:29;;11947:1;11957:195;11971:6;11968:1;11965:13;11957:195;;;12036:13;;-1:-1:-1;;;;;12032:39:1;12020:52;;12127:15;;;;12092:12;;;;12068:1;11986:9;11957:195;;;-1:-1:-1;;;;;;;12208:32:1;;;;12203:2;12188:18;;12181:60;-1:-1:-1;;;12272:3:1;12257:19;12250:35;12169:3;11311:980;-1:-1:-1;;;11311:980:1:o;12296:217::-;12336:1;12362;12352:132;;12406:10;12401:3;12397:20;12394:1;12387:31;12441:4;12438:1;12431:15;12469:4;12466:1;12459:15;12352:132;-1:-1:-1;12498:9:1;;12296:217::o

Swarm Source

ipfs://5e06a2433c7c1a2608874fe54a5010352da65eb689f35ba66d684716ae914813
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.