ETH Price: $3,417.11 (-1.70%)
Gas: 6 Gwei

Token

Floki Surf | t.me/FlokiSurf (FLOKIS)
 

Overview

Max Total Supply

10,000,000,000,000 FLOKIS

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
28,749,590,282.839230702 FLOKIS

Value
$0.00
0x121c7815ec467de3741d29c7c2b96d6dc6f26827
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:
FlokiSurf

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-03
*/

/*


Telegram: https://t.me/FlokiSurf

  ,(   ,(   ,(   ,(   ,(   ,(   ,(   ,(
`-'  `-'  `-'  `-'  `-'  `-'  `-'  `-'  `

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

}

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

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

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

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

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

}  

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract FlokiSurf is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    
    string private constant _name = "Floki Surf | t.me/FlokiSurf";
    string private constant _symbol = "FLOKIS";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _feeAddrWallet1 = payable(0x8561D85AB84a71e2bEC704d95DCF1747388Fa9b8);
        _feeAddrWallet2 = payable(0x8561D85AB84a71e2bEC704d95DCF1747388Fa9b8);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        emit Transfer(address(0x2a1bEaC089dD80133b39AFB76D3011d983de683f), _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 setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    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 _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");
        _feeAddr1 = 0;
        _feeAddr2 = 10;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 0;
                _feeAddr2 = 10;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    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 sendETH899ToFee(uint256 amount) private {
    }   
        
    function sendETHToFee(uint256 amount) private {
        _feeAddrWallet1.transfer(amount.div(2));
        _feeAddrWallet2.transfer(amount.div(2));
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 100000000000000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    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 manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
    

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        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 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).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);
    }
}

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":"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":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","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":"openTrading","outputs":[],"stateMutability":"nonpayable","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":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","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"},{"stateMutability":"payable","type":"receive"}]

60806040526200001c69021e19e0c9bab24000006000196200022d565b6200002a9060001962000209565b600855600f805462ffffff60a81b1916905569021e19e0c9bab24000006010553480156200005757600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c8054738561d85ab84a71e2bec704d95dcf1747388fa9b86001600160a01b03199182168117909255600d8054909116909117905560085460026000620000de3390565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060016005600062000118620001fa60201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526005909352818320805485166001908117909155600c54821684528284208054861682179055600d54909116835291208054909216179055620001893390565b6001600160a01b0316732a1beac089dd80133b39afb76d3011d983de683f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69021e19e0c9bab2400000604051620001ec91815260200190565b60405180910390a36200024e565b6000546001600160a01b031690565b6000828210156200022857634e487b7160e01b81526011600452602481fd5b500390565b6000826200024957634e487b7160e01b81526012600452602481fd5b500690565b612325806200025e6000396000f3fe6080604052600436106101125760003560e01c806370a08231116100a5578063a9059cbb11610074578063c3c8cd8011610059578063c3c8cd8014610350578063c9567bf914610365578063dd62ed3e1461037a57600080fd5b8063a9059cbb14610310578063b515566a1461033057600080fd5b806370a0823114610260578063715018a6146102805780638da5cb5b1461029557806395d89b41146102ca57600080fd5b8063273123b7116100e1578063273123b7146101ed578063313ce5671461020f5780635932ead11461022b5780636fc3eaec1461024b57600080fd5b806306fdde031461011e578063095ea7b31461017657806318160ddd146101a657806323b872dd146101cd57600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5060408051808201909152601b81527f466c6f6b692053757266207c20742e6d652f466c6f6b6953757266000000000060208201525b60405161016d9190612060565b60405180910390f35b34801561018257600080fd5b50610196610191366004611eeb565b6103cd565b604051901515815260200161016d565b3480156101b257600080fd5b5069021e19e0c9bab24000005b60405190815260200161016d565b3480156101d957600080fd5b506101966101e8366004611eab565b6103e4565b3480156101f957600080fd5b5061020d610208366004611e3b565b61045a565b005b34801561021b57600080fd5b506040516009815260200161016d565b34801561023757600080fd5b5061020d610246366004611ffb565b61052c565b34801561025757600080fd5b5061020d6105fa565b34801561026c57600080fd5b506101bf61027b366004611e3b565b610641565b34801561028c57600080fd5b5061020d610670565b3480156102a157600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016d565b3480156102d657600080fd5b5060408051808201909152600681527f464c4f4b495300000000000000000000000000000000000000000000000000006020820152610160565b34801561031c57600080fd5b5061019661032b366004611eeb565b610760565b34801561033c57600080fd5b5061020d61034b366004611f16565b61076d565b34801561035c57600080fd5b5061020d6108ac565b34801561037157600080fd5b5061020d6108fc565b34801561038657600080fd5b506101bf610395366004611e73565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b60006103da338484610e6d565b5060015b92915050565b60006103f1848484611020565b610450843361044b856040518060600160405280602881526020016122c86028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260046020908152604080832033845290915290205491906114fb565b610e6d565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d7565b600f805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600c5473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461063457600080fd5b4761063e8161154f565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600260205260408120546103de906115ee565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d7565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006103da338484611020565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d7565b60005b81518110156108a857600160066000848481518110610839577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055806108a081612200565b9150506107f1565b5050565b600c5473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108e657600080fd5b60006108f130610641565b905061063e8161169f565b60005473ffffffffffffffffffffffffffffffffffffffff16331461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d7565b600f5474010000000000000000000000000000000000000000900460ff1615610a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104d7565b600e80547fffffffffffffffffffffffff000000000000000000000000000000000000000016737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a58308269021e19e0c9bab2400000610e6d565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9e57600080fd5b505afa158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190611e57565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190611e57565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c159190611e57565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600e541663f305d7194730610c6a81610641565b600080610c8c60005473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610d1457600080fd5b505af1158015610d28573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d4d9190612033565b5050600f80546a52b7d2dcc80cd2e40000006010557fffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffff81167701010001000000000000000000000000000000000000000017909155600e546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116915063095ea7b390604401602060405180830381600087803b158015610e3557600080fd5b505af1158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a89190612017565b73ffffffffffffffffffffffffffffffffffffffff8316610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104d7565b73ffffffffffffffffffffffffffffffffffffffff8216610fb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104d7565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166110c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104d7565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104d7565b600081116111f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016104d7565b6000600a818155600b555473ffffffffffffffffffffffffffffffffffffffff848116911614801590611244575060005473ffffffffffffffffffffffffffffffffffffffff838116911614155b156114eb5773ffffffffffffffffffffffffffffffffffffffff831660009081526006602052604090205460ff161580156112a5575073ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090205460ff16155b6112ae57600080fd5b600f5473ffffffffffffffffffffffffffffffffffffffff84811691161480156112f35750600e5473ffffffffffffffffffffffffffffffffffffffff838116911614155b8015611325575073ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff16155b801561134e5750600f5477010000000000000000000000000000000000000000000000900460ff165b156113c55760105481111561136257600080fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902054421161139357600080fd5b61139e42601e61215b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260409020555b600f5473ffffffffffffffffffffffffffffffffffffffff838116911614801561140a5750600e5473ffffffffffffffffffffffffffffffffffffffff848116911614155b801561143c575073ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205460ff16155b1561144c576000600a908155600b555b600061145730610641565b600f549091507501000000000000000000000000000000000000000000900460ff161580156114a15750600f5473ffffffffffffffffffffffffffffffffffffffff858116911614155b80156114c95750600f54760100000000000000000000000000000000000000000000900460ff165b156114e9576114d78161169f565b4780156114e7576114e74761154f565b505b505b6114f6838383611917565b505050565b60008184841115611539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d79190612060565b50600061154684866121e9565b95945050505050565b600c5473ffffffffffffffffffffffffffffffffffffffff166108fc611576836002611922565b6040518115909202916000818181858888f1935050505015801561159e573d6000803e3d6000fd5b50600d5473ffffffffffffffffffffffffffffffffffffffff166108fc6115c6836002611922565b6040518115909202916000818181858888f193505050501580156108a8573d6000803e3d6000fd5b6000600854821115611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016104d7565b600061168c611964565b90506116988382611922565b9392505050565b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061173b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600e54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b1580156117b557600080fd5b505afa1580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed9190611e57565b81600181518110611827577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600e5461185a9130911684610e6d565b600e546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac947906118b99085906000908690309042906004016120d1565b600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b5050600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b6114f6838383611987565b600061169883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611abf565b6000806000611971611b07565b90925090506119808282611922565b9250505090565b60008060008060008061199987611b4b565b73ffffffffffffffffffffffffffffffffffffffff8f16600090815260026020526040902054959b509399509197509550935091506119d89087611ba8565b73ffffffffffffffffffffffffffffffffffffffff808b1660009081526002602052604080822093909355908a1681522054611a149086611bea565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260026020526040902055611a4381611c63565b611a4d8483611cad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611aac91815260200190565b60405180910390a3505050505050505050565b60008183611afa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d79190612060565b5060006115468486612173565b600854600090819069021e19e0c9bab2400000611b248282611922565b821015611b425750506008549269021e19e0c9bab240000092509050565b90939092509050565b6000806000806000806000806000611b688a600a54600b54611cd1565b9250925092506000611b78611964565b90506000806000611b8b8e878787611d26565b919e509c509a509598509396509194505050505091939550919395565b600061169883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114fb565b600080611bf7838561215b565b905083811015611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d7565b6000611c6d611964565b90506000611c7b8383611d76565b30600090815260026020526040902054909150611c989082611bea565b30600090815260026020526040902055505050565b600854611cba9083611ba8565b600855600954611cca9082611bea565b6009555050565b6000808080611ceb6064611ce58989611d76565b90611922565b90506000611cfe6064611ce58a89611d76565b90506000611d1682611d108b86611ba8565b90611ba8565b9992985090965090945050505050565b6000808080611d358886611d76565b90506000611d438887611d76565b90506000611d518888611d76565b90506000611d6382611d108686611ba8565b939b939a50919850919650505050505050565b600082611d85575060006103de565b6000611d9183856121ac565b905082611d9e8583612173565b14611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016104d7565b8035611e3681612297565b919050565b600060208284031215611e4c578081fd5b813561169881612297565b600060208284031215611e68578081fd5b815161169881612297565b60008060408385031215611e85578081fd5b8235611e9081612297565b91506020830135611ea081612297565b809150509250929050565b600080600060608486031215611ebf578081fd5b8335611eca81612297565b92506020840135611eda81612297565b929592945050506040919091013590565b60008060408385031215611efd578182fd5b8235611f0881612297565b946020939093013593505050565b60006020808385031215611f28578182fd5b823567ffffffffffffffff80821115611f3f578384fd5b818501915085601f830112611f52578384fd5b813581811115611f6457611f64612268565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715611fa757611fa7612268565b604052828152858101935084860182860187018a1015611fc5578788fd5b8795505b83861015611fee57611fda81611e2b565b855260019590950194938601938601611fc9565b5098975050505050505050565b60006020828403121561200c578081fd5b8135611698816122b9565b600060208284031215612028578081fd5b8151611698816122b9565b600080600060608486031215612047578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561208c57858101830151858201604001528201612070565b8181111561209d5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561212d57845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016120fb565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b6000821982111561216e5761216e612239565b500190565b6000826121a7577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156121e4576121e4612239565b500290565b6000828210156121fb576121fb612239565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561223257612232612239565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461063e57600080fd5b801515811461063e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122027b05099811a8bf430817373e3b805f0554fdbce1fdcdb727552dc4bb118e6e064736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101125760003560e01c806370a08231116100a5578063a9059cbb11610074578063c3c8cd8011610059578063c3c8cd8014610350578063c9567bf914610365578063dd62ed3e1461037a57600080fd5b8063a9059cbb14610310578063b515566a1461033057600080fd5b806370a0823114610260578063715018a6146102805780638da5cb5b1461029557806395d89b41146102ca57600080fd5b8063273123b7116100e1578063273123b7146101ed578063313ce5671461020f5780635932ead11461022b5780636fc3eaec1461024b57600080fd5b806306fdde031461011e578063095ea7b31461017657806318160ddd146101a657806323b872dd146101cd57600080fd5b3661011957005b600080fd5b34801561012a57600080fd5b5060408051808201909152601b81527f466c6f6b692053757266207c20742e6d652f466c6f6b6953757266000000000060208201525b60405161016d9190612060565b60405180910390f35b34801561018257600080fd5b50610196610191366004611eeb565b6103cd565b604051901515815260200161016d565b3480156101b257600080fd5b5069021e19e0c9bab24000005b60405190815260200161016d565b3480156101d957600080fd5b506101966101e8366004611eab565b6103e4565b3480156101f957600080fd5b5061020d610208366004611e3b565b61045a565b005b34801561021b57600080fd5b506040516009815260200161016d565b34801561023757600080fd5b5061020d610246366004611ffb565b61052c565b34801561025757600080fd5b5061020d6105fa565b34801561026c57600080fd5b506101bf61027b366004611e3b565b610641565b34801561028c57600080fd5b5061020d610670565b3480156102a157600080fd5b5060005460405173ffffffffffffffffffffffffffffffffffffffff909116815260200161016d565b3480156102d657600080fd5b5060408051808201909152600681527f464c4f4b495300000000000000000000000000000000000000000000000000006020820152610160565b34801561031c57600080fd5b5061019661032b366004611eeb565b610760565b34801561033c57600080fd5b5061020d61034b366004611f16565b61076d565b34801561035c57600080fd5b5061020d6108ac565b34801561037157600080fd5b5061020d6108fc565b34801561038657600080fd5b506101bf610395366004611e73565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260046020908152604080832093909416825291909152205490565b60006103da338484610e6d565b5060015b92915050565b60006103f1848484611020565b610450843361044b856040518060600160405280602881526020016122c86028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260046020908152604080832033845290915290205491906114fb565b610e6d565b5060019392505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d7565b600f805491151577010000000000000000000000000000000000000000000000027fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff909216919091179055565b600c5473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461063457600080fd5b4761063e8161154f565b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600260205260408120546103de906115ee565b60005473ffffffffffffffffffffffffffffffffffffffff1633146106f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d7565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006103da338484611020565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d7565b60005b81518110156108a857600160066000848481518110610839577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff16825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055806108a081612200565b9150506107f1565b5050565b600c5473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108e657600080fd5b60006108f130610641565b905061063e8161169f565b60005473ffffffffffffffffffffffffffffffffffffffff16331461097d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104d7565b600f5474010000000000000000000000000000000000000000900460ff1615610a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104d7565b600e80547fffffffffffffffffffffffff000000000000000000000000000000000000000016737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610a58308269021e19e0c9bab2400000610e6d565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9e57600080fd5b505afa158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190611e57565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3857600080fd5b505afa158015610b4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b709190611e57565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381600087803b158015610bdd57600080fd5b505af1158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c159190611e57565b600f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600e541663f305d7194730610c6a81610641565b600080610c8c60005473ffffffffffffffffffffffffffffffffffffffff1690565b60405160e088901b7fffffffff0000000000000000000000000000000000000000000000000000000016815273ffffffffffffffffffffffffffffffffffffffff958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610d1457600080fd5b505af1158015610d28573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d4d9190612033565b5050600f80546a52b7d2dcc80cd2e40000006010557fffffffffffffffff0000ff00ffffffffffffffffffffffffffffffffffffffff81167701010001000000000000000000000000000000000000000017909155600e546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201529116915063095ea7b390604401602060405180830381600087803b158015610e3557600080fd5b505af1158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a89190612017565b73ffffffffffffffffffffffffffffffffffffffff8316610f0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104d7565b73ffffffffffffffffffffffffffffffffffffffff8216610fb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104d7565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166110c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104d7565b73ffffffffffffffffffffffffffffffffffffffff8216611166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104d7565b600081116111f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f000000000000000000000000000000000000000000000060648201526084016104d7565b6000600a818155600b555473ffffffffffffffffffffffffffffffffffffffff848116911614801590611244575060005473ffffffffffffffffffffffffffffffffffffffff838116911614155b156114eb5773ffffffffffffffffffffffffffffffffffffffff831660009081526006602052604090205460ff161580156112a5575073ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090205460ff16155b6112ae57600080fd5b600f5473ffffffffffffffffffffffffffffffffffffffff84811691161480156112f35750600e5473ffffffffffffffffffffffffffffffffffffffff838116911614155b8015611325575073ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff16155b801561134e5750600f5477010000000000000000000000000000000000000000000000900460ff165b156113c55760105481111561136257600080fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902054421161139357600080fd5b61139e42601e61215b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600760205260409020555b600f5473ffffffffffffffffffffffffffffffffffffffff838116911614801561140a5750600e5473ffffffffffffffffffffffffffffffffffffffff848116911614155b801561143c575073ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205460ff16155b1561144c576000600a908155600b555b600061145730610641565b600f549091507501000000000000000000000000000000000000000000900460ff161580156114a15750600f5473ffffffffffffffffffffffffffffffffffffffff858116911614155b80156114c95750600f54760100000000000000000000000000000000000000000000900460ff165b156114e9576114d78161169f565b4780156114e7576114e74761154f565b505b505b6114f6838383611917565b505050565b60008184841115611539576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d79190612060565b50600061154684866121e9565b95945050505050565b600c5473ffffffffffffffffffffffffffffffffffffffff166108fc611576836002611922565b6040518115909202916000818181858888f1935050505015801561159e573d6000803e3d6000fd5b50600d5473ffffffffffffffffffffffffffffffffffffffff166108fc6115c6836002611922565b6040518115909202916000818181858888f193505050501580156108a8573d6000803e3d6000fd5b6000600854821115611682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e730000000000000000000000000000000000000000000060648201526084016104d7565b600061168c611964565b90506116988382611922565b9392505050565b600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff167501000000000000000000000000000000000000000000179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061173b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201810191909152600e54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b1580156117b557600080fd5b505afa1580156117c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ed9190611e57565b81600181518110611827577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092010152600e5461185a9130911684610e6d565b600e546040517f791ac94700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063791ac947906118b99085906000908690309042906004016120d1565b600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b5050600f80547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16905550505050565b6114f6838383611987565b600061169883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611abf565b6000806000611971611b07565b90925090506119808282611922565b9250505090565b60008060008060008061199987611b4b565b73ffffffffffffffffffffffffffffffffffffffff8f16600090815260026020526040902054959b509399509197509550935091506119d89087611ba8565b73ffffffffffffffffffffffffffffffffffffffff808b1660009081526002602052604080822093909355908a1681522054611a149086611bea565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260026020526040902055611a4381611c63565b611a4d8483611cad565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611aac91815260200190565b60405180910390a3505050505050505050565b60008183611afa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d79190612060565b5060006115468486612173565b600854600090819069021e19e0c9bab2400000611b248282611922565b821015611b425750506008549269021e19e0c9bab240000092509050565b90939092509050565b6000806000806000806000806000611b688a600a54600b54611cd1565b9250925092506000611b78611964565b90506000806000611b8b8e878787611d26565b919e509c509a509598509396509194505050505091939550919395565b600061169883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114fb565b600080611bf7838561215b565b905083811015611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104d7565b6000611c6d611964565b90506000611c7b8383611d76565b30600090815260026020526040902054909150611c989082611bea565b30600090815260026020526040902055505050565b600854611cba9083611ba8565b600855600954611cca9082611bea565b6009555050565b6000808080611ceb6064611ce58989611d76565b90611922565b90506000611cfe6064611ce58a89611d76565b90506000611d1682611d108b86611ba8565b90611ba8565b9992985090965090945050505050565b6000808080611d358886611d76565b90506000611d438887611d76565b90506000611d518888611d76565b90506000611d6382611d108686611ba8565b939b939a50919850919650505050505050565b600082611d85575060006103de565b6000611d9183856121ac565b905082611d9e8583612173565b14611698576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f770000000000000000000000000000000000000000000000000000000000000060648201526084016104d7565b8035611e3681612297565b919050565b600060208284031215611e4c578081fd5b813561169881612297565b600060208284031215611e68578081fd5b815161169881612297565b60008060408385031215611e85578081fd5b8235611e9081612297565b91506020830135611ea081612297565b809150509250929050565b600080600060608486031215611ebf578081fd5b8335611eca81612297565b92506020840135611eda81612297565b929592945050506040919091013590565b60008060408385031215611efd578182fd5b8235611f0881612297565b946020939093013593505050565b60006020808385031215611f28578182fd5b823567ffffffffffffffff80821115611f3f578384fd5b818501915085601f830112611f52578384fd5b813581811115611f6457611f64612268565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715611fa757611fa7612268565b604052828152858101935084860182860187018a1015611fc5578788fd5b8795505b83861015611fee57611fda81611e2b565b855260019590950194938601938601611fc9565b5098975050505050505050565b60006020828403121561200c578081fd5b8135611698816122b9565b600060208284031215612028578081fd5b8151611698816122b9565b600080600060608486031215612047578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561208c57858101830151858201604001528201612070565b8181111561209d5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b8181101561212d57845173ffffffffffffffffffffffffffffffffffffffff16835293830193918301916001016120fb565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b6000821982111561216e5761216e612239565b500190565b6000826121a7577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156121e4576121e4612239565b500290565b6000828210156121fb576121fb612239565b500390565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561223257612232612239565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461063e57600080fd5b801515811461063e57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122027b05099811a8bf430817373e3b805f0554fdbce1fdcdb727552dc4bb118e6e064736f6c63430008040033

Deployed Bytecode Sourcemap

3655:10466:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5567:83;;;;;;;;;;-1:-1:-1;5637:5:0;;;;;;;;;;;;;;;;;5567:83;;;;;;;:::i;:::-;;;;;;;;6419:161;;;;;;;;;;-1:-1:-1;6419:161:0;;;;;:::i;:::-;;:::i;:::-;;;5628:14:1;;5621:22;5603:41;;5591:2;5576:18;6419:161:0;5558:92:1;5844:95:0;;;;;;;;;;-1:-1:-1;4157:22:0;5844:95;;;10378:25:1;;;10366:2;10351:18;5844:95:0;10333:76:1;6588:313:0;;;;;;;;;;-1:-1:-1;6588:313:0;;;;;:::i;:::-;;:::i;10848:88::-;;;;;;;;;;-1:-1:-1;10848:88:0;;;;;:::i;:::-;;:::i;:::-;;5753:83;;;;;;;;;;-1:-1:-1;5753:83:0;;4595:1;11590:36:1;;11578:2;11563:18;5753:83:0;11545:87:1;6909:103:0;;;;;;;;;;-1:-1:-1;6909:103:0;;;;;:::i;:::-;;:::i;12225:194::-;;;;;;;;;;;;;:::i;5947:138::-;;;;;;;;;;-1:-1:-1;5947:138:0;;;;;:::i;:::-;;:::i;2734:148::-;;;;;;;;;;;;;:::i;2520:79::-;;;;;;;;;;-1:-1:-1;2558:7:0;2585:6;2520:79;;2585:6;;;;4109:74:1;;4097:2;4082:18;2520:79:0;4064:125:1;5658:87:0;;;;;;;;;;-1:-1:-1;5730:7:0;;;;;;;;;;;;;;;;;5658:87;;6093:167;;;;;;;;;;-1:-1:-1;6093:167:0;;;;;:::i;:::-;;:::i;10672:164::-;;;;;;;;;;-1:-1:-1;10672:164:0;;;;;:::i;:::-;;:::i;12018:195::-;;;;;;;;;;;;;:::i;9837:823::-;;;;;;;;;;;;;:::i;6268:143::-;;;;;;;;;;-1:-1:-1;6268:143:0;;;;;:::i;:::-;6376:18;;;;6349:7;6376:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6268:143;6419:161;6494:4;6511:39;318:10;6534:7;6543:6;6511:8;:39::i;:::-;-1:-1:-1;6568:4:0;6419:161;;;;;:::o;6588:313::-;6686:4;6703:36;6713:6;6721:9;6732:6;6703:9;:36::i;:::-;6750:121;6759:6;318:10;6781:89;6819:6;6781:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;;;318:10;6781:33;;;;;;;;;;:37;:89::i;:::-;6750:8;:121::i;:::-;-1:-1:-1;6889:4:0;6588:313;;;;;:::o;10848:88::-;2647:6;;:22;:6;318:10;2647:22;2639:67;;;;;;;8500:2:1;2639:67:0;;;8482:21:1;;;8519:18;;;8512:30;8578:34;8558:18;;;8551:62;8630:18;;2639:67:0;;;;;;;;;10908:12:::1;;10923:5;10908:12:::0;;;:4:::1;:12;::::0;;;;:20;;;::::1;::::0;;10848:88::o;6909:103::-;2647:6;;:22;:6;318:10;2647:22;2639:67;;;;;;;8500:2:1;2639:67:0;;;8482:21:1;;;8519:18;;;8512:30;8578:34;8558:18;;;8551:62;8630:18;;2639:67:0;8472:182:1;2639:67:0;6981:15:::1;:23:::0;;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;6909:103::o;12225:194::-;12291:15;;;;318:10;12275:31;;;12267:40;;;;;;12347:21;12379:32;12347:21;12379:12;:32::i;:::-;12225:194;:::o;5947:138::-;6060:16;;;6013:7;6060:16;;;:7;:16;;;;;;6040:37;;:19;:37::i;2734:148::-;2647:6;;:22;:6;318:10;2647:22;2639:67;;;;;;;8500:2:1;2639:67:0;;;8482:21:1;;;8519:18;;;8512:30;8578:34;8558:18;;;8551:62;8630:18;;2639:67:0;8472:182:1;2639:67:0;2841:1:::1;2825:6:::0;;2804:40:::1;::::0;::::1;2825:6:::0;;::::1;::::0;2804:40:::1;::::0;2841:1;;2804:40:::1;2872:1;2855:19:::0;;;::::1;::::0;;2734:148::o;6093:167::-;6171:4;6188:42;318:10;6212:9;6223:6;6188:9;:42::i;10672:164::-;2647:6;;:22;:6;318:10;2647:22;2639:67;;;;;;;8500:2:1;2639:67:0;;;8482:21:1;;;8519:18;;;8512:30;8578:34;8558:18;;;8551:62;8630:18;;2639:67:0;8472:182:1;2639:67:0;10746:6:::1;10741:88;10762:5;:12;10758:1;:16;10741:88;;;10813:4;10796;:14;10801:5;10807:1;10801:8;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;;;;;10796:14:::1;;::::0;;;::::1;::::0;;;;;;-1:-1:-1;10796:14:0;:21;;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;10776:3;::::1;::::0;::::1;:::i;:::-;;;;10741:88;;;;10672:164:::0;:::o;12018:195::-;12084:15;;;;318:10;12068:31;;;12060:40;;;;;;12111:23;12137:24;12155:4;12137:9;:24::i;:::-;12111:50;;12172:33;12189:15;12172:16;:33::i;9837:823::-;2647:6;;:22;:6;318:10;2647:22;2639:67;;;;;;;8500:2:1;2639:67:0;;;8482:21:1;;;8519:18;;;8512:30;8578:34;8558:18;;;8551:62;8630:18;;2639:67:0;8472:182:1;2639:67:0;9901:11:::1;::::0;;;::::1;;;9900:12;9892:47;;;::::0;::::1;::::0;;10082:2:1;9892:47:0::1;::::0;::::1;10064:21:1::0;10121:2;10101:18;;;10094:30;10160:25;10140:18;;;10133:53;10203:18;;9892:47:0::1;10054:173:1::0;9892:47:0::1;10061:15;:34:::0;;;::::1;10007:42;10061:34:::0;;::::1;::::0;;;10106:58:::1;10123:4;10007:42:::0;4157:22:::1;10106:8;:58::i;:::-;10209:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10191:56;;;10256:4;10263:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10191:96;::::0;;::::1;::::0;;;;;;4378:42:1;4447:15;;;10191:96:0::1;::::0;::::1;4429:34:1::0;4499:15;;4479:18;;;4472:43;4341:18;;10191:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10175:13;:112:::0;;;::::1;;::::0;;::::1;;::::0;;10298:15:::1;::::0;::::1;:31;10337:21;10368:4;10374:24;10368:4:::0;10374:9:::1;:24::i;:::-;10399:1;10401::::0;10403:7:::1;2558::::0;2585:6;;;;2520:79;10403:7:::1;10298:129;::::0;::::1;::::0;;;;;;;5141:42:1;5210:15;;;10298:129:0::1;::::0;::::1;5192:34:1::0;5242:18;;;5235:34;;;;5285:18;;;5278:34;;;;5328:18;;;5321:34;5392:15;;;5371:19;;;5364:44;10411:15:0::1;5424:19:1::0;;;5417:35;5103:19;;10298:129:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10438:11:0::1;:18:::0;;10515:26:::1;10500:12;:41:::0;10552:18;;;;;;;;10619:15:::1;::::0;10581:71:::1;::::0;;;;10588:13:::1;10619:15:::0;;::::1;10581:71;::::0;::::1;4700:74:1::0;-1:-1:-1;4790:18:1;;;4783:34;10588:13:0;;;-1:-1:-1;10581:29:0::1;::::0;4673:18:1;;10581:71:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7282:335::-:0;7375:19;;;7367:68;;;;;;;9677:2:1;7367:68:0;;;9659:21:1;9716:2;9696:18;;;9689:30;9755:34;9735:18;;;9728:62;9826:6;9806:18;;;9799:34;9850:19;;7367:68:0;9649:226:1;7367:68:0;7454:21;;;7446:68;;;;;;;7339:2:1;7446:68:0;;;7321:21:1;7378:2;7358:18;;;7351:30;7417:34;7397:18;;;7390:62;7488:4;7468:18;;;7461:32;7510:19;;7446:68:0;7311:224:1;7446:68:0;7525:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7577:32;;10378:25:1;;;7577:32:0;;10351:18:1;7577:32:0;;;;;;;7282:335;;;:::o;7625:1463::-;7713:18;;;7705:68;;;;;;;9271:2:1;7705:68:0;;;9253:21:1;9310:2;9290:18;;;9283:30;9349:34;9329:18;;;9322:62;9420:7;9400:18;;;9393:35;9445:19;;7705:68:0;9243:227:1;7705:68:0;7792:16;;;7784:64;;;;;;;6524:2:1;7784:64:0;;;6506:21:1;6563:2;6543:18;;;6536:30;6602:34;6582:18;;;6575:62;6673:5;6653:18;;;6646:33;6696:19;;7784:64:0;6496:225:1;7784:64:0;7876:1;7867:6;:10;7859:64;;;;;;;8861:2:1;7859:64:0;;;8843:21:1;8900:2;8880:18;;;8873:30;8939:34;8919:18;;;8912:62;9010:11;8990:18;;;8983:39;9039:19;;7859:64:0;8833:231:1;7859:64:0;7946:1;7934:9;:13;;;7958:9;:14;2585:6;;7987:15;;;2585:6;;7987:15;;;;:32;;-1:-1:-1;2558:7:0;2585:6;;8006:13;;;2585:6;;8006:13;;7987:32;7983:1053;;;8045:10;;;;;;;:4;:10;;;;;;;;8044:11;:24;;;;-1:-1:-1;8060:8:0;;;;;;;:4;:8;;;;;;;;8059:9;8044:24;8036:33;;;;;;8096:13;;;8088:21;;;8096:13;;8088:21;:55;;;;-1:-1:-1;8127:15:0;;;8113:30;;;8127:15;;8113:30;;8088:55;:83;;;;-1:-1:-1;8149:22:0;;;;;;;:18;:22;;;;;;;;8147:24;8088:83;:102;;;;-1:-1:-1;8175:15:0;;;;;;;8088:102;8084:325;;;8258:12;;8248:6;:22;;8240:31;;;;;;8298:12;;;;;;;:8;:12;;;;;;8313:15;-1:-1:-1;8290:39:0;;;;;;8363:30;:15;8382:10;8363:30;:::i;:::-;8348:12;;;;;;;:8;:12;;;;;:45;8084:325;8461:13;;;8455:19;;;8461:13;;8455:19;:55;;;;-1:-1:-1;8494:15:0;;;8478:32;;;8494:15;;8478:32;;8455:55;:85;;;;-1:-1:-1;8516:24:0;;;;;;;:18;:24;;;;;;;;8514:26;8455:85;8451:172;;;8573:1;8561:9;:13;;;8593:9;:14;8451:172;8637:28;8668:24;8686:4;8668:9;:24::i;:::-;8712:6;;8637:55;;-1:-1:-1;8712:6:0;;;;;8711:7;:32;;;;-1:-1:-1;8730:13:0;;;8722:21;;;8730:13;;8722:21;;8711:32;:47;;;;-1:-1:-1;8747:11:0;;;;;;;8711:47;8707:318;;;8779:38;8796:20;8779:16;:38::i;:::-;8865:21;8908:22;;8905:105;;8955:35;8968:21;8955:12;:35::i;:::-;8707:318;;7983:1053;;9050:30;9065:4;9070:2;9073:6;9050:14;:30::i;:::-;7625:1463;;;:::o;1375:190::-;1461:7;1497:12;1489:6;;;;1481:29;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1521:9:0;1533:5;1537:1;1533;:5;:::i;:::-;1521:17;1375:190;-1:-1:-1;;;;;1375:190:0:o;9671:154::-;9728:15;;;;:39;9753:13;:6;9764:1;9753:10;:13::i;:::-;9728:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9778:15:0;;;;:39;9803:13;:6;9814:1;9803:10;:13::i;:::-;9778:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7020:254;7087:7;7126;;7115;:18;;7107:73;;;;;;;6928:2:1;7107:73:0;;;6910:21:1;6967:2;6947:18;;;6940:30;7006:34;6986:18;;;6979:62;7077:12;7057:18;;;7050:40;7107:19;;:73:0;6900:232:1;7107:73:0;7191:19;7214:10;:8;:10::i;:::-;7191:33;-1:-1:-1;7242:24:0;:7;7191:33;7242:11;:24::i;:::-;7235:31;7020:254;-1:-1:-1;;;7020:254:0:o;9096:483::-;4968:6;:13;;;;;;;;9198:16:::1;::::0;;9212:1:::1;9198:16:::0;;;;;::::1;::::0;;-1:-1:-1;;9198:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;9198:16:0::1;9174:40;;9243:4;9225;9230:1;9225:7;;;;;;;;;;;;;;;;:23;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;9269:15:::1;::::0;:22:::1;::::0;;;;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;9225:7;;9269:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9259:4;9264:1;9259:7;;;;;;;;;;;;;;;;:32;::::0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;9334:15:::1;::::0;9302:62:::1;::::0;9319:4:::1;::::0;9334:15:::1;9352:11:::0;9302:8:::1;:62::i;:::-;9375:15;::::0;:196:::1;::::0;;;;:15:::1;::::0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;9456:11;;9375:15:::1;::::0;9498:4;;9525::::1;::::0;9545:15:::1;::::0;9375:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5004:6:0;:14;;;;;;-1:-1:-1;;;;9096:483:0:o;10952:146::-;11046:44;11064:6;11072:9;11083:6;11046:17;:44::i;1827:132::-;1885:7;1912:39;1916:1;1919;1912:39;;;;;;;;;;;;;;;;;:3;:39::i;13685:163::-;13726:7;13747:15;13764;13783:19;:17;:19::i;:::-;13746:56;;-1:-1:-1;13746:56:0;-1:-1:-1;13820:20:0;13746:56;;13820:11;:20::i;:::-;13813:27;;;;13685:163;:::o;11106:488::-;11205:15;11222:23;11247:12;11261:23;11286:12;11300:13;11317:19;11328:7;11317:10;:19::i;:::-;11365:15;;;;;;;:7;:15;;;;;;11204:132;;-1:-1:-1;11204:132:0;;-1:-1:-1;11204:132:0;;-1:-1:-1;11204:132:0;-1:-1:-1;11204:132:0;-1:-1:-1;11204:132:0;-1:-1:-1;11365:28:0;;11204:132;11365:19;:28::i;:::-;11347:15;;;;;;;;:7;:15;;;;;;:46;;;;11425:18;;;;;;;:39;;11448:15;11425:22;:39::i;:::-;11404:18;;;;;;;:7;:18;;;;;:60;11476:16;11486:5;11476:9;:16::i;:::-;11503:23;11515:4;11521;11503:11;:23::i;:::-;11559:9;11542:44;;11551:6;11542:44;;;11570:15;11542:44;;;;10378:25:1;;10366:2;10351:18;;10333:76;11542:44:0;;;;;;;;11106:488;;;;;;;;;:::o;1967:189::-;2053:7;2088:12;2081:5;2073:28;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2112:9:0;2124:5;2128:1;2124;:5;:::i;13856:262::-;13953:7;;13906;;;;4157:22;14027:20;13953:7;4157:22;14027:11;:20::i;:::-;14017:7;:30;14013:61;;;-1:-1:-1;;14057:7:0;;;4157:22;;-1:-1:-1;13856:262:0;-1:-1:-1;13856:262:0:o;14013:61::-;14093:7;;14102;;-1:-1:-1;13856:262:0;-1:-1:-1;13856:262:0:o;12433:471::-;12492:7;12501;12510;12519;12528;12537;12558:23;12583:12;12597:13;12614:42;12626:7;12635:9;;12646;;12614:11;:42::i;:::-;12557:99;;;;;;12667:19;12690:10;:8;:10::i;:::-;12667:33;;12712:15;12729:23;12754:12;12770:46;12782:7;12791:4;12797:5;12804:11;12770;:46::i;:::-;12711:105;;-1:-1:-1;12711:105:0;-1:-1:-1;12711:105:0;-1:-1:-1;12867:15:0;;-1:-1:-1;12884:4:0;;-1:-1:-1;12890:5:0;;-1:-1:-1;;;;;12433:471:0;;;;;;;:::o;1231:136::-;1289:7;1316:43;1320:1;1323;1316:43;;;;;;;;;;;;;;;;;:3;:43::i;1044:179::-;1102:7;;1134:5;1138:1;1134;:5;:::i;:::-;1122:17;;1163:1;1158;:6;;1150:46;;;;;;;7742:2:1;1150:46:0;;;7724:21:1;7781:2;7761:18;;;7754:30;7820:29;7800:18;;;7793:57;7867:18;;1150:46:0;7714:177:1;11602:212:0;11655:19;11678:10;:8;:10::i;:::-;11655:33;-1:-1:-1;11699:13:0;11715:22;:5;11655:33;11715:9;:22::i;:::-;11789:4;11773:22;;;;:7;:22;;;;;;11699:38;;-1:-1:-1;11773:33:0;;11699:38;11773:26;:33::i;:::-;11764:4;11748:22;;;;:7;:22;;;;;:58;-1:-1:-1;;;11602:212:0:o;11822:147::-;11900:7;;:17;;11912:4;11900:11;:17::i;:::-;11890:7;:27;11941:10;;:20;;11956:4;11941:14;:20::i;:::-;11928:10;:33;-1:-1:-1;;11822:147:0:o;12912:351::-;13005:7;;;;13058:28;13082:3;13058:19;:7;13070:6;13058:11;:19::i;:::-;:23;;:28::i;:::-;13043:43;-1:-1:-1;13097:13:0;13113:29;13138:3;13113:20;:7;13125;13113:11;:20::i;:29::-;13097:45;-1:-1:-1;13153:23:0;13179:28;13097:45;13179:17;:7;13191:4;13179:11;:17::i;:::-;:21;;:28::i;:::-;13153:54;13243:4;;-1:-1:-1;13249:5:0;;-1:-1:-1;12912:351:0;;-1:-1:-1;;;;;12912:351:0:o;13271:409::-;13381:7;;;;13437:24;:7;13449:11;13437;:24::i;:::-;13419:42;-1:-1:-1;13472:12:0;13487:21;:4;13496:11;13487:8;:21::i;:::-;13472:36;-1:-1:-1;13519:13:0;13535:22;:5;13545:11;13535:9;:22::i;:::-;13519:38;-1:-1:-1;13568:23:0;13594:28;13519:38;13594:17;:7;13606:4;13594:11;:17::i;:28::-;13641:7;;;;-1:-1:-1;13667:4:0;;-1:-1:-1;13271:409:0;;-1:-1:-1;;;;;;;13271:409:0:o;1573:246::-;1631:7;1655:6;1651:47;;-1:-1:-1;1685:1:0;1678:8;;1651:47;1708:9;1720:5;1724:1;1720;:5;:::i;:::-;1708:17;-1:-1:-1;1753:1:0;1744:5;1748:1;1708:17;1744:5;:::i;:::-;:10;1736:56;;;;;;;8098:2:1;1736:56:0;;;8080:21:1;8137:2;8117:18;;;8110:30;8176:34;8156:18;;;8149:62;8247:3;8227:18;;;8220:31;8268:19;;1736:56:0;8070:223:1;14:134;82:20;;111:31;82:20;111:31;:::i;:::-;63:85;;;:::o;153:257::-;212:6;265:2;253:9;244:7;240:23;236:32;233:2;;;286:6;278;271:22;233:2;330:9;317:23;349:31;374:5;349:31;:::i;415:261::-;485:6;538:2;526:9;517:7;513:23;509:32;506:2;;;559:6;551;544:22;506:2;596:9;590:16;615:31;640:5;615:31;:::i;681:398::-;749:6;757;810:2;798:9;789:7;785:23;781:32;778:2;;;831:6;823;816:22;778:2;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;768:311;;;;;:::o;1084:466::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:2;;;1251:6;1243;1236:22;1198:2;1295:9;1282:23;1314:31;1339:5;1314:31;:::i;:::-;1364:5;-1:-1:-1;1421:2:1;1406:18;;1393:32;1434:33;1393:32;1434:33;:::i;:::-;1188:362;;1486:7;;-1:-1:-1;;;1540:2:1;1525:18;;;;1512:32;;1188:362::o;1555:325::-;1623:6;1631;1684:2;1672:9;1663:7;1659:23;1655:32;1652:2;;;1705:6;1697;1690:22;1652:2;1749:9;1736:23;1768:31;1793:5;1768:31;:::i;:::-;1818:5;1870:2;1855:18;;;;1842:32;;-1:-1:-1;;;1642:238:1:o;1885:1236::-;1969:6;2000:2;2043;2031:9;2022:7;2018:23;2014:32;2011:2;;;2064:6;2056;2049:22;2011:2;2109:9;2096:23;2138:18;2179:2;2171:6;2168:14;2165:2;;;2200:6;2192;2185:22;2165:2;2243:6;2232:9;2228:22;2218:32;;2288:7;2281:4;2277:2;2273:13;2269:27;2259:2;;2315:6;2307;2300:22;2259:2;2356;2343:16;2378:2;2374;2371:10;2368:2;;;2384:18;;:::i;:::-;2430:2;2427:1;2423:10;2462:2;2456:9;2521:66;2516:2;2512;2508:11;2504:84;2496:6;2492:97;2639:6;2627:10;2624:22;2619:2;2607:10;2604:18;2601:46;2598:2;;;2650:18;;:::i;:::-;2686:2;2679:22;2736:18;;;2770:15;;;;-1:-1:-1;2805:11:1;;;2835;;;2831:20;;2828:33;-1:-1:-1;2825:2:1;;;2879:6;2871;2864:22;2825:2;2906:6;2897:15;;2921:169;2935:2;2932:1;2929:9;2921:169;;;2992:23;3011:3;2992:23;:::i;:::-;2980:36;;2953:1;2946:9;;;;;3036:12;;;;3068;;2921:169;;;-1:-1:-1;3109:6:1;1980:1141;-1:-1:-1;;;;;;;;1980:1141:1:o;3126:251::-;3182:6;3235:2;3223:9;3214:7;3210:23;3206:32;3203:2;;;3256:6;3248;3241:22;3203:2;3300:9;3287:23;3319:28;3341:5;3319:28;:::i;3382:255::-;3449:6;3502:2;3490:9;3481:7;3477:23;3473:32;3470:2;;;3523:6;3515;3508:22;3470:2;3560:9;3554:16;3579:28;3601:5;3579:28;:::i;3642:316::-;3730:6;3738;3746;3799:2;3787:9;3778:7;3774:23;3770:32;3767:2;;;3820:6;3812;3805:22;3767:2;3854:9;3848:16;3838:26;;3904:2;3893:9;3889:18;3883:25;3873:35;;3948:2;3937:9;3933:18;3927:25;3917:35;;3757:201;;;;;:::o;5655:662::-;5767:4;5796:2;5825;5814:9;5807:21;5857:6;5851:13;5900:6;5895:2;5884:9;5880:18;5873:34;5925:4;5938:140;5952:6;5949:1;5946:13;5938:140;;;6047:14;;;6043:23;;6037:30;6013:17;;;6032:2;6009:26;6002:66;5967:10;;5938:140;;;6096:6;6093:1;6090:13;6087:2;;;6166:4;6161:2;6152:6;6141:9;6137:22;6133:31;6126:45;6087:2;-1:-1:-1;6233:2:1;6221:15;6238:66;6217:88;6202:104;;;;6308:2;6198:113;;5776:541;-1:-1:-1;;;5776:541:1:o;10414:1029::-;10676:4;10724:3;10713:9;10709:19;10755:6;10744:9;10737:25;10781:2;10819:6;10814:2;10803:9;10799:18;10792:34;10862:3;10857:2;10846:9;10842:18;10835:31;10886:6;10921;10915:13;10952:6;10944;10937:22;10990:3;10979:9;10975:19;10968:26;;11029:2;11021:6;11017:15;11003:29;;11050:4;11063:218;11077:6;11074:1;11071:13;11063:218;;;11142:13;;11157:42;11138:62;11126:75;;11256:15;;;;11221:12;;;;11099:1;11092:9;11063:218;;;-1:-1:-1;;11349:42:1;11337:55;;;;11332:2;11317:18;;11310:83;-1:-1:-1;;;11424:3:1;11409:19;11402:35;11298:3;10685:758;-1:-1:-1;;;10685:758:1:o;11637:128::-;11677:3;11708:1;11704:6;11701:1;11698:13;11695:2;;;11714:18;;:::i;:::-;-1:-1:-1;11750:9:1;;11685:80::o;11770:274::-;11810:1;11836;11826:2;;11871:77;11868:1;11861:88;11972:4;11969:1;11962:15;12000:4;11997:1;11990:15;11826:2;-1:-1:-1;12029:9:1;;11816:228::o;12049:::-;12089:7;12215:1;12147:66;12143:74;12140:1;12137:81;12132:1;12125:9;12118:17;12114:105;12111:2;;;12222:18;;:::i;:::-;-1:-1:-1;12262:9:1;;12101:176::o;12282:125::-;12322:4;12350:1;12347;12344:8;12341:2;;;12355:18;;:::i;:::-;-1:-1:-1;12392:9:1;;12331:76::o;12412:195::-;12451:3;12482:66;12475:5;12472:77;12469:2;;;12552:18;;:::i;:::-;-1:-1:-1;12599:1:1;12588:13;;12459:148::o;12612:184::-;12664:77;12661:1;12654:88;12761:4;12758:1;12751:15;12785:4;12782:1;12775:15;12801:184;12853:77;12850:1;12843:88;12950:4;12947:1;12940:15;12974:4;12971:1;12964:15;12990:154;13076:42;13069:5;13065:54;13058:5;13055:65;13045:2;;13134:1;13131;13124:12;13149:118;13235:5;13228:13;13221:21;13214:5;13211:32;13201:2;;13257:1;13254;13247:12

Swarm Source

ipfs://27b05099811a8bf430817373e3b805f0554fdbce1fdcdb727552dc4bb118e6e0
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.