ETH Price: $3,506.78 (-0.08%)
Gas: 2 Gwei

Token

The Blu Arctic Water Company (BARC)
 

Overview

Max Total Supply

109,000,000 BARC

Holders

805 (0.00%)

Market

Price

$0.01 @ 0.000003 ETH (-11.85%)

Onchain Market Cap

$1,285,586.33

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,483.16 BARC

Value
$100.05 ( ~0.0285304449735034 Eth) [0.0078%]
0x9b6408e870b36a0616dae20cf8aedbd21dcce1b1
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Global water company tokenizing resources to outlast any drought.

Market

Volume (24H):$20,383.00
Market Capitalization:$0.00
Circulating Supply:0.00 BARC
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
BARC

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-09
*/

/*
Telegram: https://t.me/bluarctic
Twitter: https://twitter.com/0xBluArctic

*/

// SPDX-License-Identifier:MIT

pragma solidity ^0.8.10;

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

abstract contract Ownable is Context {

    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

library Math {

    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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

//GAS OPTIMIZED ERROR MESSAGES
error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
error ERC20ZeroTransfer();

contract BARC is Context, IERC20, Ownable {
    
    using Math for uint256;

    mapping (address => bool) public ischargepair;
    mapping (address => bool) public isMarketPair;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    string private _name = "The Blu Arctic Water Company"; 
    string private _symbol = "BARC"; 
    uint8 private _decimals = 9; 

    uint256 private _totalSupply = 109_000_000 * 10 ** _decimals;
    uint256 public swapThreshold = _totalSupply.mul(5).div(10000);  // 0.05%

    bool public swapEnabled = true;

    bool sellProtection;  
    bool taxFree;
    uint256 currentIndex;
    uint256 startTime;
    uint256[3] timerSlot = [1800,86400,172800];    // Dynamic Tax Settings.
    uint256[4] timerCharge = [24,20,10,0];         // Dynamix percentage.

    IDexSwapRouter public DexRouter;
    address public DexPair;

    address private marketingWallet = address(0x9f9d9C48D1aE8f5536bc1f25cc2f797041CbE705);
    address private deployer;

    bool inSwap;
    
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        deployer = msg.sender;

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        DexPair = IDexSwapFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );

        DexRouter = _dexRouter;

        ischargepair[address(this)] = true;
        ischargepair[address(msg.sender)] = true;

        isMarketPair[address(DexPair)] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

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

    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 _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

        _allowances[owner][spender] = amount;
        
        emit Approval(owner, spender, amount);
    }

    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        if (sender == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (recipient == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        if(amount == 0) {
            revert ERC20ZeroTransfer();
        }
        
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (startTime != 0 && !taxFree) {
                dynamicTaxSetter();
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isMarketPair[sender] && 
                swapEnabled &&
                !ischargepair[sender] &&
                !ischargepair[recipient]
                ) {
                swapBack(contractTokenBalance);
            }
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        
        if(taxFree) {
            return true;
        }

        if(ischargepair[sender] || ischargepair[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        if(!sellProtection) {
            sellProtection = true;
            startTime = block.timestamp;
        }
        
        uint feeAmount;

        unchecked {
            
            // sell tax
            if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(timerCharge[currentIndex]).div(100);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function dynamicTaxSetter() internal {

        if (block.timestamp <= startTime + timerSlot[0]) {
            currentIndex = 0;
        }
        if (block.timestamp > startTime + timerSlot[0] && block.timestamp <= startTime + timerSlot[1]) {
            currentIndex = 1;
        }
        if (block.timestamp > startTime + timerSlot[1] && block.timestamp <= startTime + timerSlot[2]) {
            currentIndex = 2;
        }
        if (block.timestamp > startTime + timerSlot[2]) {
            currentIndex = 3;
            taxFree = true;
        }
            
    }

    function swapBack(uint contractBalance) internal swapping {

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        if(amountReceived > 0) {
            payable(marketingWallet).transfer(amountReceived);
        }
     
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = DexRouter.WETH();

        _approve(address(this), address(DexRouter), tokenAmount);

        // make the swap
        DexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }
    
    function rescueFunds() external {
        require(msg.sender == deployer,"Unauthorized");
        (bool success,) = payable(deployer).call{value: address(this).balance}("");
        require(success, 'Token payment failed');
    }

    function clearStuckTokens(address _token, uint256 _amount) external {
        require(msg.sender == deployer,"Unauthorized");
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  deployer, _amount));
        require(success, 'Token payment failed');
    }

    function getDynamicInfo() external view returns (bool,bool,uint,uint) {
        return (sellProtection,taxFree,currentIndex,startTime);
    }

    function setMarketingWallet(address _newAddres) external onlyOwner {
        marketingWallet = _newAddres;
    }

    function setDeployerWallet(address _newAddres) external onlyOwner {
        deployer = _newAddres;
    }

    function enableChargePair(address _adr,bool _status) external onlyOwner {
        ischargepair[_adr] = _status;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount)
        external
    {
        require(msg.sender == deployer,"Unauthorized");
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ERC20ZeroTransfer","type":"error"},{"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"DexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DexRouter","outputs":[{"internalType":"contract IDexSwapRouter","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":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"clearStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableChargePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDynamicInfo","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ischargepair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddres","type":"address"}],"name":"setDeployerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddres","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052601c60809081527f54686520426c752041726374696320576174657220436f6d70616e790000000060a0526005906200003e908262000632565b506040805180820190915260048152634241524360e01b602082015260069062000069908262000632565b506007805460ff191660099081179091556200008790600a6200080b565b620000979063067f35406200081b565b6008819055620000b99061271090620000b290600562000399565b906200042c565b600955600a805460ff191660011790556040805160608101825261070881526201518060208201526202a30091810191909152620000fc90600d906003620004fe565b50604080516080810182526018815260146020820152600a918101919091525f60608201526200013190601090600462000548565b50601680546001600160a01b031916739f9d9c48d1ae8f5536bc1f25cc2f797041cbe70517905534801562000164575f80fd5b50620001703362000475565b601780546001600160a01b031916331790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa158015620001d4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001fa919062000835565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000246573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200026c919062000835565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002b7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002dd919062000835565b601580546001600160a01b03199081166001600160a01b0393841617825560148054909116848416179055305f908152600160208181526040808420805460ff19908116851790915533808652828620805483168617905595549096168452600282528084208054909616909217909455600854838352600385528183208190559051908152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620008cb565b5f825f03620003aa57505f62000426565b5f620003b783856200081b565b905082620003c685836200085d565b14620004235760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f6200042383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620004c460201b60201c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f8183620004e75760405162461bcd60e51b81526004016200041a91906200087d565b505f620004f584866200085d565b95945050505050565b826003810192821562000536579160200282015b8281111562000536578251829062ffffff1690559160200191906001019062000512565b50620005449291506200057e565b5090565b826004810192821562000536579160200282015b8281111562000536578251829060ff169055916020019190600101906200055c565b5b8082111562000544575f81556001016200057f565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005bd57607f821691505b602082108103620005dc57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200062d57805f5260205f20601f840160051c81016020851015620006095750805b601f840160051c820191505b818110156200062a575f815560010162000615565b50505b505050565b81516001600160401b038111156200064e576200064e62000594565b62000666816200065f8454620005a8565b84620005e2565b602080601f8311600181146200069c575f8415620006845750858301515b5f19600386901b1c1916600185901b178555620006f6565b5f85815260208120601f198616915b82811015620006cc57888601518255948401946001909101908401620006ab565b5085821015620006ea57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200075257815f1904821115620007365762000736620006fe565b808516156200074457918102915b93841c939080029062000717565b509250929050565b5f826200076a5750600162000426565b816200077857505f62000426565b81600181146200079157600281146200079c57620007bc565b600191505062000426565b60ff841115620007b057620007b0620006fe565b50506001821b62000426565b5060208310610133831016604e8410600b8410161715620007e1575081810a62000426565b620007ed838362000712565b805f1904821115620008035762000803620006fe565b029392505050565b5f6200042360ff8416836200075a565b8082028115828204841417620004265762000426620006fe565b5f6020828403121562000846575f80fd5b81516001600160a01b038116811462000423575f80fd5b5f826200087857634e487b7160e01b5f52601260045260245ffd5b500490565b5f602080835283518060208501525f5b81811015620008ab578581018301518582016040015282016200088d565b505f604082860101526040601f19601f8301168501019250505092915050565b61186780620008d95f395ff3fe608060405260043610610164575f3560e01c806370a08231116100cd57806398ed3bbd11610087578063df20fd4911610062578063df20fd491461048f578063e6b2603b146104ae578063f2a95aa9146104c2578063f2fde38b146104e1575f80fd5b806398ed3bbd1461040d578063a9059cbb1461042c578063dd62ed3e1461044b575f80fd5b806370a082311461033f578063715018a61461037357806372460e7f14610387578063736ce0d4146103be5780638da5cb5b146103dd57806395d89b41146103f9575f80fd5b806323b872dd1161011e57806323b872dd14610278578063313ce5671461029757806333cf5dcf146102b85780633ecad271146102d95780635d098b38146103075780636ddd171314610326575f80fd5b80630445b6671461016f57806306fdde0314610197578063095ea7b3146101b85780630d61f837146101e7578063107530dd1461021557806318160ddd14610264575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5061018460095481565b6040519081526020015b60405180910390f35b3480156101a2575f80fd5b506101ab610500565b60405161018e91906114bd565b3480156101c3575f80fd5b506101d76101d2366004611503565b610590565b604051901515815260200161018e565b3480156101f2575f80fd5b506101d761020136600461152d565b60016020525f908152604090205460ff1681565b348015610220575f80fd5b50610242600a54600b54600c5460ff6101008404811693620100009004169293565b604080519415158552921515602085015291830152606082015260800161018e565b34801561026f575f80fd5b50600854610184565b348015610283575f80fd5b506101d7610292366004611548565b6105a6565b3480156102a2575f80fd5b5060075460405160ff909116815260200161018e565b3480156102c3575f80fd5b506102d76102d236600461152d565b610610565b005b3480156102e4575f80fd5b506101d76102f336600461152d565b60026020525f908152604090205460ff1681565b348015610312575f80fd5b506102d761032136600461152d565b610664565b348015610331575f80fd5b50600a546101d79060ff1681565b34801561034a575f80fd5b5061018461035936600461152d565b6001600160a01b03165f9081526003602052604090205490565b34801561037e575f80fd5b506102d76106af565b348015610392575f80fd5b506015546103a6906001600160a01b031681565b6040516001600160a01b03909116815260200161018e565b3480156103c9575f80fd5b506014546103a6906001600160a01b031681565b3480156103e8575f80fd5b505f546001600160a01b03166103a6565b348015610404575f80fd5b506101ab6106e3565b348015610418575f80fd5b506102d761042736600461159a565b6106f2565b348015610437575f80fd5b506101d7610446366004611503565b610745565b348015610456575f80fd5b506101846104653660046115cd565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561049a575f80fd5b506102d76104a9366004611604565b61075b565b3480156104b9575f80fd5b506102d761079c565b3480156104cd575f80fd5b506102d76104dc366004611503565b610860565b3480156104ec575f80fd5b506102d76104fb36600461152d565b61096f565b60606005805461050f9061161e565b80601f016020809104026020016040519081016040528092919081815260200182805461053b9061161e565b80156105865780601f1061055d57610100808354040283529160200191610586565b820191905f5260205f20905b81548152906001019060200180831161056957829003601f168201915b5050505050905090565b5f61059c338484610a06565b5060015b92915050565b5f6105f884336105f38560405180606001604052806028815260200161180a602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610ab8565b610a06565b610603848484610af0565b50600190505b9392505050565b5f546001600160a01b031633146106425760405162461bcd60e51b815260040161063990611656565b60405180910390fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461068d5760405162461bcd60e51b815260040161063990611656565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146106d85760405162461bcd60e51b815260040161063990611656565b6106e15f610d7b565b565b60606006805461050f9061161e565b5f546001600160a01b0316331461071b5760405162461bcd60e51b815260040161063990611656565b6001600160a01b03919091165f908152600160205260409020805460ff1916911515919091179055565b5f610751338484610af0565b5060019392505050565b6017546001600160a01b031633146107855760405162461bcd60e51b81526004016106399061168b565b600a805460ff191692151592909217909155600955565b6017546001600160a01b031633146107c65760405162461bcd60e51b81526004016106399061168b565b6017546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610810576040519150601f19603f3d011682016040523d82523d5f602084013e610815565b606091505b505090508061085d5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610639565b50565b6017546001600160a01b0316331461088a5760405162461bcd60e51b81526004016106399061168b565b6017546040516001600160a01b039182166024820152604481018390525f9184169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516108e491906116b1565b5f604051808303815f865af19150503d805f811461091d576040519150601f19603f3d011682016040523d82523d5f602084013e610922565b606091505b505090508061096a5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610639565b505050565b5f546001600160a01b031633146109985760405162461bcd60e51b815260040161063990611656565b6001600160a01b0381166109fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610639565b61085d81610d7b565b6001600160a01b038316610a2f5760405163e602df0560e01b81525f6004820152602401610639565b6001600160a01b038216610a5857604051634a1406b160e11b81525f6004820152602401610639565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8184841115610adb5760405162461bcd60e51b815260040161063991906114bd565b505f610ae784866116e0565b95945050505050565b5f6001600160a01b038416610b1a57604051634b637e8f60e11b81525f6004820152602401610639565b6001600160a01b038316610b435760405163ec442f0560e01b81525f6004820152602401610639565b815f03610b63576040516367c8957760e01b815260040160405180910390fd5b601754600160a01b900460ff1615610b8757610b80848484610dca565b9050610609565b600c5415801590610ba15750600a5462010000900460ff16155b15610bae57610bae610ead565b305f9081526003602052604090205460095481108015908190610bdb5750601754600160a01b900460ff16155b8015610bff57506001600160a01b0386165f9081526002602052604090205460ff16155b8015610c0d5750600a5460ff165b8015610c3157506001600160a01b0386165f9081526001602052604090205460ff16155b8015610c5557506001600160a01b0385165f9081526001602052604090205460ff16155b15610c6357610c6382610f67565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260039091529190912054610cb4918690610ab8565b6001600160a01b0387165f90815260036020526040812091909155610cd98787610fe2565b610ced57610ce8878787611097565b610cef565b845b6001600160a01b0387165f90815260036020526040902054909150610d14908261118d565b6001600160a01b038088165f8181526003602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d679085815260200190565b60405180910390a360019350505050610609565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600390915291822054610e1a918490610ab8565b6001600160a01b038086165f908152600360205260408082209390935590851681522054610e48908361118d565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e9b9086815260200190565b60405180910390a35060019392505050565b600d54600c54610ebd9190611707565b4211610ec8575f600b555b600d54600c54610ed89190611707565b42118015610ef55750600e54600c54610ef19190611707565b4211155b15610f00576001600b555b600e54600c54610f109190611707565b42118015610f2d5750600f54600c54610f299190611707565b4211155b15610f38576002600b555b600f54600c54610f489190611707565b4211156106e1576003600b55600a805462ff0000191662010000179055565b6017805460ff60a01b1916600160a01b17905547610f84826111eb565b5f610f8f4783611374565b90508015610fd0576016546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fce573d5f803e3d5ffd5b505b50506017805460ff60a01b1916905550565b600a545f9062010000900460ff1615610ffd575060016105a0565b6001600160a01b0383165f9081526001602052604090205460ff168061103a57506001600160a01b0382165f9081526001602052604090205460ff165b15611047575060016105a0565b6001600160a01b0383165f9081526002602052604090205460ff168061108457506001600160a01b0382165f9081526002602052604090205460ff165b1561109057505f6105a0565b505f6105a0565b600a545f90610100900460ff166110bc57600a805461ff00191661010017905542600c555b6001600160a01b0383165f9081526002602052604081205460ff161561110b5761110860646111026010600b54600481106110f9576110f96116f3565b015486906113b5565b90611433565b90505b801561118357305f9081526003602052604090205461112a908261118d565b305f81815260036020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117a9085815260200190565b60405180910390a35b610ae78382611374565b5f806111998385611707565b9050838110156106095760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610639565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061121e5761121e6116f3565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611275573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611299919061171a565b816001815181106112ac576112ac6116f3565b6001600160a01b0392831660209182029290920101526014546112d29130911684610a06565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061130a9085905f90869030904290600401611778565b5f604051808303815f87803b158015611321575f80fd5b505af1158015611333573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516113689291906117b3565b60405180910390a15050565b5f61060983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ab8565b5f825f036113c457505f6105a0565b5f6113cf83856117d3565b9050826113dc85836117ea565b146106095760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610639565b5f61060983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f818361148f5760405162461bcd60e51b815260040161063991906114bd565b505f610ae784866117ea565b5f5b838110156114b557818101518382015260200161149d565b50505f910152565b602081525f82518060208401526114db81604085016020870161149b565b601f01601f19169190910160400192915050565b6001600160a01b038116811461085d575f80fd5b5f8060408385031215611514575f80fd5b823561151f816114ef565b946020939093013593505050565b5f6020828403121561153d575f80fd5b8135610609816114ef565b5f805f6060848603121561155a575f80fd5b8335611565816114ef565b92506020840135611575816114ef565b929592945050506040919091013590565b80358015158114611595575f80fd5b919050565b5f80604083850312156115ab575f80fd5b82356115b6816114ef565b91506115c460208401611586565b90509250929050565b5f80604083850312156115de575f80fd5b82356115e9816114ef565b915060208301356115f9816114ef565b809150509250929050565b5f8060408385031215611615575f80fd5b61151f83611586565b600181811c9082168061163257607f821691505b60208210810361165057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b155b985d5d1a1bdc9a5e995960a21b604082015260600190565b5f82516116c281846020870161149b565b9190910192915050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156105a0576105a06116cc565b634e487b7160e01b5f52603260045260245ffd5b808201808211156105a0576105a06116cc565b5f6020828403121561172a575f80fd5b8151610609816114ef565b5f815180845260208085019450602084015f5b8381101561176d5781516001600160a01b031687529582019590820190600101611748565b509495945050505050565b85815284602082015260a060408201525f61179660a0830186611735565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6117cb6040830184611735565b949350505050565b80820281158282048414176105a0576105a06116cc565b5f8261180457634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b95f8ba5615787a6800e79dd644bc163be3198cec0f672d848c97c83357616c064736f6c63430008170033

Deployed Bytecode

0x608060405260043610610164575f3560e01c806370a08231116100cd57806398ed3bbd11610087578063df20fd4911610062578063df20fd491461048f578063e6b2603b146104ae578063f2a95aa9146104c2578063f2fde38b146104e1575f80fd5b806398ed3bbd1461040d578063a9059cbb1461042c578063dd62ed3e1461044b575f80fd5b806370a082311461033f578063715018a61461037357806372460e7f14610387578063736ce0d4146103be5780638da5cb5b146103dd57806395d89b41146103f9575f80fd5b806323b872dd1161011e57806323b872dd14610278578063313ce5671461029757806333cf5dcf146102b85780633ecad271146102d95780635d098b38146103075780636ddd171314610326575f80fd5b80630445b6671461016f57806306fdde0314610197578063095ea7b3146101b85780630d61f837146101e7578063107530dd1461021557806318160ddd14610264575f80fd5b3661016b57005b5f80fd5b34801561017a575f80fd5b5061018460095481565b6040519081526020015b60405180910390f35b3480156101a2575f80fd5b506101ab610500565b60405161018e91906114bd565b3480156101c3575f80fd5b506101d76101d2366004611503565b610590565b604051901515815260200161018e565b3480156101f2575f80fd5b506101d761020136600461152d565b60016020525f908152604090205460ff1681565b348015610220575f80fd5b50610242600a54600b54600c5460ff6101008404811693620100009004169293565b604080519415158552921515602085015291830152606082015260800161018e565b34801561026f575f80fd5b50600854610184565b348015610283575f80fd5b506101d7610292366004611548565b6105a6565b3480156102a2575f80fd5b5060075460405160ff909116815260200161018e565b3480156102c3575f80fd5b506102d76102d236600461152d565b610610565b005b3480156102e4575f80fd5b506101d76102f336600461152d565b60026020525f908152604090205460ff1681565b348015610312575f80fd5b506102d761032136600461152d565b610664565b348015610331575f80fd5b50600a546101d79060ff1681565b34801561034a575f80fd5b5061018461035936600461152d565b6001600160a01b03165f9081526003602052604090205490565b34801561037e575f80fd5b506102d76106af565b348015610392575f80fd5b506015546103a6906001600160a01b031681565b6040516001600160a01b03909116815260200161018e565b3480156103c9575f80fd5b506014546103a6906001600160a01b031681565b3480156103e8575f80fd5b505f546001600160a01b03166103a6565b348015610404575f80fd5b506101ab6106e3565b348015610418575f80fd5b506102d761042736600461159a565b6106f2565b348015610437575f80fd5b506101d7610446366004611503565b610745565b348015610456575f80fd5b506101846104653660046115cd565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b34801561049a575f80fd5b506102d76104a9366004611604565b61075b565b3480156104b9575f80fd5b506102d761079c565b3480156104cd575f80fd5b506102d76104dc366004611503565b610860565b3480156104ec575f80fd5b506102d76104fb36600461152d565b61096f565b60606005805461050f9061161e565b80601f016020809104026020016040519081016040528092919081815260200182805461053b9061161e565b80156105865780601f1061055d57610100808354040283529160200191610586565b820191905f5260205f20905b81548152906001019060200180831161056957829003601f168201915b5050505050905090565b5f61059c338484610a06565b5060015b92915050565b5f6105f884336105f38560405180606001604052806028815260200161180a602891396001600160a01b038a165f9081526004602090815260408083203384529091529020549190610ab8565b610a06565b610603848484610af0565b50600190505b9392505050565b5f546001600160a01b031633146106425760405162461bcd60e51b815260040161063990611656565b60405180910390fd5b601780546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461068d5760405162461bcd60e51b815260040161063990611656565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146106d85760405162461bcd60e51b815260040161063990611656565b6106e15f610d7b565b565b60606006805461050f9061161e565b5f546001600160a01b0316331461071b5760405162461bcd60e51b815260040161063990611656565b6001600160a01b03919091165f908152600160205260409020805460ff1916911515919091179055565b5f610751338484610af0565b5060019392505050565b6017546001600160a01b031633146107855760405162461bcd60e51b81526004016106399061168b565b600a805460ff191692151592909217909155600955565b6017546001600160a01b031633146107c65760405162461bcd60e51b81526004016106399061168b565b6017546040515f916001600160a01b03169047908381818185875af1925050503d805f8114610810576040519150601f19603f3d011682016040523d82523d5f602084013e610815565b606091505b505090508061085d5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610639565b50565b6017546001600160a01b0316331461088a5760405162461bcd60e51b81526004016106399061168b565b6017546040516001600160a01b039182166024820152604481018390525f9184169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052516108e491906116b1565b5f604051808303815f865af19150503d805f811461091d576040519150601f19603f3d011682016040523d82523d5f602084013e610922565b606091505b505090508061096a5760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610639565b505050565b5f546001600160a01b031633146109985760405162461bcd60e51b815260040161063990611656565b6001600160a01b0381166109fd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610639565b61085d81610d7b565b6001600160a01b038316610a2f5760405163e602df0560e01b81525f6004820152602401610639565b6001600160a01b038216610a5857604051634a1406b160e11b81525f6004820152602401610639565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8184841115610adb5760405162461bcd60e51b815260040161063991906114bd565b505f610ae784866116e0565b95945050505050565b5f6001600160a01b038416610b1a57604051634b637e8f60e11b81525f6004820152602401610639565b6001600160a01b038316610b435760405163ec442f0560e01b81525f6004820152602401610639565b815f03610b63576040516367c8957760e01b815260040160405180910390fd5b601754600160a01b900460ff1615610b8757610b80848484610dca565b9050610609565b600c5415801590610ba15750600a5462010000900460ff16155b15610bae57610bae610ead565b305f9081526003602052604090205460095481108015908190610bdb5750601754600160a01b900460ff16155b8015610bff57506001600160a01b0386165f9081526002602052604090205460ff16155b8015610c0d5750600a5460ff165b8015610c3157506001600160a01b0386165f9081526001602052604090205460ff16155b8015610c5557506001600160a01b0385165f9081526001602052604090205460ff16155b15610c6357610c6382610f67565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260039091529190912054610cb4918690610ab8565b6001600160a01b0387165f90815260036020526040812091909155610cd98787610fe2565b610ced57610ce8878787611097565b610cef565b845b6001600160a01b0387165f90815260036020526040902054909150610d14908261118d565b6001600160a01b038088165f8181526003602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d679085815260200190565b60405180910390a360019350505050610609565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600390915291822054610e1a918490610ab8565b6001600160a01b038086165f908152600360205260408082209390935590851681522054610e48908361118d565b6001600160a01b038085165f8181526003602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610e9b9086815260200190565b60405180910390a35060019392505050565b600d54600c54610ebd9190611707565b4211610ec8575f600b555b600d54600c54610ed89190611707565b42118015610ef55750600e54600c54610ef19190611707565b4211155b15610f00576001600b555b600e54600c54610f109190611707565b42118015610f2d5750600f54600c54610f299190611707565b4211155b15610f38576002600b555b600f54600c54610f489190611707565b4211156106e1576003600b55600a805462ff0000191662010000179055565b6017805460ff60a01b1916600160a01b17905547610f84826111eb565b5f610f8f4783611374565b90508015610fd0576016546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015610fce573d5f803e3d5ffd5b505b50506017805460ff60a01b1916905550565b600a545f9062010000900460ff1615610ffd575060016105a0565b6001600160a01b0383165f9081526001602052604090205460ff168061103a57506001600160a01b0382165f9081526001602052604090205460ff165b15611047575060016105a0565b6001600160a01b0383165f9081526002602052604090205460ff168061108457506001600160a01b0382165f9081526002602052604090205460ff165b1561109057505f6105a0565b505f6105a0565b600a545f90610100900460ff166110bc57600a805461ff00191661010017905542600c555b6001600160a01b0383165f9081526002602052604081205460ff161561110b5761110860646111026010600b54600481106110f9576110f96116f3565b015486906113b5565b90611433565b90505b801561118357305f9081526003602052604090205461112a908261118d565b305f81815260036020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061117a9085815260200190565b60405180910390a35b610ae78382611374565b5f806111998385611707565b9050838110156106095760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610639565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061121e5761121e6116f3565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611275573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611299919061171a565b816001815181106112ac576112ac6116f3565b6001600160a01b0392831660209182029290920101526014546112d29130911684610a06565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061130a9085905f90869030904290600401611778565b5f604051808303815f87803b158015611321575f80fd5b505af1158015611333573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516113689291906117b3565b60405180910390a15050565b5f61060983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ab8565b5f825f036113c457505f6105a0565b5f6113cf83856117d3565b9050826113dc85836117ea565b146106095760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610639565b5f61060983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f818361148f5760405162461bcd60e51b815260040161063991906114bd565b505f610ae784866117ea565b5f5b838110156114b557818101518382015260200161149d565b50505f910152565b602081525f82518060208401526114db81604085016020870161149b565b601f01601f19169190910160400192915050565b6001600160a01b038116811461085d575f80fd5b5f8060408385031215611514575f80fd5b823561151f816114ef565b946020939093013593505050565b5f6020828403121561153d575f80fd5b8135610609816114ef565b5f805f6060848603121561155a575f80fd5b8335611565816114ef565b92506020840135611575816114ef565b929592945050506040919091013590565b80358015158114611595575f80fd5b919050565b5f80604083850312156115ab575f80fd5b82356115b6816114ef565b91506115c460208401611586565b90509250929050565b5f80604083850312156115de575f80fd5b82356115e9816114ef565b915060208301356115f9816114ef565b809150509250929050565b5f8060408385031215611615575f80fd5b61151f83611586565b600181811c9082168061163257607f821691505b60208210810361165057634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600c908201526b155b985d5d1a1bdc9a5e995960a21b604082015260600190565b5f82516116c281846020870161149b565b9190910192915050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156105a0576105a06116cc565b634e487b7160e01b5f52603260045260245ffd5b808201808211156105a0576105a06116cc565b5f6020828403121561172a575f80fd5b8151610609816114ef565b5f815180845260208085019450602084015f5b8381101561176d5781516001600160a01b031687529582019590820190600101611748565b509495945050505050565b85815284602082015260a060408201525f61179660a0830186611735565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f6117cb6040830184611735565b949350505050565b80820281158282048414176105a0576105a06116cc565b5f8261180457634e487b7160e01b5f52601260045260245ffd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b95f8ba5615787a6800e79dd644bc163be3198cec0f672d848c97c83357616c064736f6c63430008170033

Deployed Bytecode Sourcemap

4291:9644:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4818:61;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4818:61:0;;;;;;;;6218:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;6885:161::-;;;;;;;;;;-1:-1:-1;6885:161:0;;;;;:::i;:::-;;:::i;:::-;;;1473:14:1;;1466:22;1448:41;;1436:2;1421:18;6885:161:0;1308:187:1;4377:45:0;;;;;;;;;;-1:-1:-1;4377:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13200:143;;;;;;;;;;;;13289:14;;13312:12;;13325:9;;13289:14;;;;;;;13304:7;;;;13200:143;;;;;;;1996:14:1;;1989:22;1971:41;;2055:14;;2048:22;2043:2;2028:18;;2021:50;2087:18;;;2080:34;2145:2;2130:18;;2123:34;1958:3;1943:19;13200:143:0;1752:411:1;6495:100:0;;;;;;;;;;-1:-1:-1;6575:12:0;;6495:100;;7666:313;;;;;;;;;;-1:-1:-1;7666:313:0;;;;;:::i;:::-;;:::i;6404:83::-;;;;;;;;;;-1:-1:-1;6470:9:0;;6404:83;;6470:9;;;;2771:36:1;;2759:2;2744:18;6404:83:0;2629:184:1;13473:106:0;;;;;;;;;;-1:-1:-1;13473:106:0;;;;;:::i;:::-;;:::i;:::-;;4429:45;;;;;;;;;;-1:-1:-1;4429:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13351:114;;;;;;;;;;-1:-1:-1;13351:114:0;;;;;:::i;:::-;;:::i;4898:30::-;;;;;;;;;;-1:-1:-1;4898:30:0;;;;;;;;6603:123;;;;;;;;;;-1:-1:-1;6603:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;6695:18:0;6669:7;6695:18;;;:9;:18;;;;;;;6603:123;1713:94;;;;;;;;;;;;;:::i;5227:22::-;;;;;;;;;;-1:-1:-1;5227:22:0;;;;-1:-1:-1;;;;;5227:22:0;;;;;;-1:-1:-1;;;;;2982:32:1;;;2964:51;;2952:2;2937:18;5227:22:0;2818:203:1;5189:31:0;;;;;;;;;;-1:-1:-1;5189:31:0;;;;-1:-1:-1;;;;;5189:31:0;;;1404:87;;;;;;;;;;-1:-1:-1;1450:7:0;1477:6;-1:-1:-1;;;;;1477:6:0;1404:87;;6309;;;;;;;;;;;;;:::i;13587:119::-;;;;;;;;;;-1:-1:-1;13587:119:0;;;;;:::i;:::-;;:::i;7491:167::-;;;;;;;;;;-1:-1:-1;7491:167:0;;;;;:::i;:::-;;:::i;6734:143::-;;;;;;;;;;-1:-1:-1;6734:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;6842:18:0;;;6815:7;6842:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6734:143;13714:216;;;;;;;;;;-1:-1:-1;13714:216:0;;;;;:::i;:::-;;:::i;12643:233::-;;;;;;;;;;;;;:::i;12884:308::-;;;;;;;;;;-1:-1:-1;12884:308:0;;;;;:::i;:::-;;:::i;1815:229::-;;;;;;;;;;-1:-1:-1;1815:229:0;;;;;:::i;:::-;;:::i;6218:83::-;6255:13;6288:5;6281:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6218:83;:::o;6885:161::-;6960:4;6977:39;269:10;7000:7;7009:6;6977:8;:39::i;:::-;-1:-1:-1;7034:4:0;6885:161;;;;;:::o;7666:313::-;7764:4;7781:121;7790:6;269:10;7812:89;7850:6;7812:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7812:19:0;;;;;;:11;:19;;;;;;;;269:10;7812:33;;;;;;;;;;:37;:89::i;:::-;7781:8;:121::i;:::-;7913:36;7923:6;7931:9;7942:6;7913:9;:36::i;:::-;;7967:4;7960:11;;7666:313;;;;;;:::o;13473:106::-;1450:7;1477:6;-1:-1:-1;;;;;1477:6:0;269:10;1625:23;1617:68;;;;-1:-1:-1;;;1617:68:0;;;;;;;:::i;:::-;;;;;;;;;13550:8:::1;:21:::0;;-1:-1:-1;;;;;;13550:21:0::1;-1:-1:-1::0;;;;;13550:21:0;;;::::1;::::0;;;::::1;::::0;;13473:106::o;13351:114::-;1450:7;1477:6;-1:-1:-1;;;;;1477:6:0;269:10;1625:23;1617:68;;;;-1:-1:-1;;;1617:68:0;;;;;;;:::i;:::-;13429:15:::1;:28:::0;;-1:-1:-1;;;;;;13429:28:0::1;-1:-1:-1::0;;;;;13429:28:0;;;::::1;::::0;;;::::1;::::0;;13351:114::o;1713:94::-;1450:7;1477:6;-1:-1:-1;;;;;1477:6:0;269:10;1625:23;1617:68;;;;-1:-1:-1;;;1617:68:0;;;;;;;:::i;:::-;1778:21:::1;1796:1;1778:9;:21::i;:::-;1713:94::o:0;6309:87::-;6348:13;6381:7;6374:14;;;;;:::i;13587:119::-;1450:7;1477:6;-1:-1:-1;;;;;1477:6:0;269:10;1625:23;1617:68;;;;-1:-1:-1;;;1617:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13670:18:0;;;::::1;;::::0;;;:12:::1;:18;::::0;;;;:28;;-1:-1:-1;;13670:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13587:119::o;7491:167::-;7569:4;7586:42;269:10;7610:9;7621:6;7586:9;:42::i;:::-;-1:-1:-1;7646:4:0;;7491:167;-1:-1:-1;;;7491:167:0:o;13714:216::-;13831:8;;-1:-1:-1;;;;;13831:8:0;13817:10;:22;13809:46;;;;-1:-1:-1;;;13809:46:0;;;;;;;:::i;:::-;13866:11;:22;;-1:-1:-1;;13866:22:0;;;;;;;;;;;13899:13;:23;13714:216::o;12643:233::-;12708:8;;-1:-1:-1;;;;;12708:8:0;12694:10;:22;12686:46;;;;-1:-1:-1;;;12686:46:0;;;;;;;:::i;:::-;12769:8;;12761:56;;12744:12;;-1:-1:-1;;;;;12769:8:0;;12791:21;;12744:12;12761:56;12744:12;12761:56;12791:21;12769:8;12761:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12743:74;;;12836:7;12828:40;;;;-1:-1:-1;;;12828:40:0;;5886:2:1;12828:40:0;;;5868:21:1;5925:2;5905:18;;;5898:30;-1:-1:-1;;;5944:18:1;;;5937:50;6004:18;;12828:40:0;5684:344:1;12828:40:0;12675:201;12643:233::o;12884:308::-;12985:8;;-1:-1:-1;;;;;12985:8:0;12971:10;:22;12963:46;;;;-1:-1:-1;;;12963:46:0;;;;;;;:::i;:::-;13114:8;;13060:72;;-1:-1:-1;;;;;13114:8:0;;;13060:72;;;6207:51:1;6274:18;;;6267:34;;;13021:12:0;;13039:20;;;6180:18:1;;13060:72:0;;;-1:-1:-1;;13060:72:0;;;;;;;;;;;;;;-1:-1:-1;;;;;13060:72:0;-1:-1:-1;;;13060:72:0;;;13039:94;;;13060:72;13039:94;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13020:113;;;13152:7;13144:40;;;;-1:-1:-1;;;13144:40:0;;5886:2:1;13144:40:0;;;5868:21:1;5925:2;5905:18;;;5898:30;-1:-1:-1;;;5944:18:1;;;5937:50;6004:18;;13144:40:0;5684:344:1;13144:40:0;12952:240;12884:308;;:::o;1815:229::-;1450:7;1477:6;-1:-1:-1;;;;;1477:6:0;269:10;1625:23;1617:68;;;;-1:-1:-1;;;1617:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1918:22:0;::::1;1896:110;;;::::0;-1:-1:-1;;;1896:110:0;;6806:2:1;1896:110:0::1;::::0;::::1;6788:21:1::0;6845:2;6825:18;;;6818:30;6884:34;6864:18;;;6857:62;-1:-1:-1;;;6935:18:1;;;6928:36;6981:19;;1896:110:0::1;6604:402:1::0;1896:110:0::1;2017:19;2027:8;2017:9;:19::i;7054:392::-:0;-1:-1:-1;;;;;7143:19:0;;7139:91;;7186:32;;-1:-1:-1;;;7186:32:0;;7215:1;7186:32;;;2964:51:1;2937:18;;7186:32:0;2818:203:1;7139:91:0;-1:-1:-1;;;;;7244:21:0;;7240:92;;7289:31;;-1:-1:-1;;;7289:31:0;;7317:1;7289:31;;;2964:51:1;2937:18;;7289:31:0;2818:203:1;7240:92:0;-1:-1:-1;;;;;7344:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7406:32;;160:25:1;;;7406:32:0;;133:18:1;7406:32:0;;;;;;;7054:392;;;:::o;3162:192::-;3248:7;3284:12;3276:6;;;;3268:29;;;;-1:-1:-1;;;3268:29:0;;;;;;;;:::i;:::-;-1:-1:-1;3308:9:0;3320:5;3324:1;3320;:5;:::i;:::-;3308:17;3162:192;-1:-1:-1;;;;;3162:192:0:o;7987:1505::-;8074:4;-1:-1:-1;;;;;8097:20:0;;8093:90;;8141:30;;-1:-1:-1;;;8141:30:0;;8168:1;8141:30;;;2964:51:1;2937:18;;8141:30:0;2818:203:1;8093:90:0;-1:-1:-1;;;;;8197:23:0;;8193:95;;8244:32;;-1:-1:-1;;;8244:32:0;;8273:1;8244:32;;;2964:51:1;2937:18;;8244:32:0;2818:203:1;8193:95:0;8301:6;8311:1;8301:11;8298:69;;8336:19;;-1:-1:-1;;;8336:19:0;;;;;;;;;;;8298:69;8391:6;;-1:-1:-1;;;8391:6:0;;;;8387:1096;;;8421:41;8436:6;8444:9;8455:6;8421:14;:41::i;:::-;8414:48;;;;8387:1096;8510:9;;:14;;;;:26;;-1:-1:-1;8529:7:0;;;;;;;8528:8;8510:26;8506:85;;;8557:18;:16;:18::i;:::-;8656:4;8607:28;6695:18;;;:9;:18;;;;;;8732:13;;8708:37;;;;;;;8784:52;;-1:-1:-1;8830:6:0;;-1:-1:-1;;;8830:6:0;;;;8829:7;8784:52;:95;;;;-1:-1:-1;;;;;;8859:20:0;;;;;;:12;:20;;;;;;;;8858:21;8784:95;:128;;;;-1:-1:-1;8901:11:0;;;;8784:128;:170;;;;-1:-1:-1;;;;;;8934:20:0;;;;;;:12;:20;;;;;;;;8933:21;8784:170;:215;;;;-1:-1:-1;;;;;;8976:23:0;;;;;;:12;:23;;;;;;;;8975:24;8784:215;8762:322;;;9038:30;9047:20;9038:8;:30::i;:::-;9132:53;;;;;;;;;;;-1:-1:-1;;;9132:53:0;;;;;;;;-1:-1:-1;;;;;9132:17:0;;-1:-1:-1;9132:17:0;;;:9;:17;;;;;;;;:53;;9154:6;;9132:21;:53::i;:::-;-1:-1:-1;;;;;9112:17:0;;;;;;:9;:17;;;;;:73;;;;9224:34;9122:6;9248:9;9224:16;:34::i;:::-;:80;;9270:34;9278:6;9286:9;9297:6;9270:7;:34::i;:::-;9224:80;;;9261:6;9224:80;-1:-1:-1;;;;;9344:20:0;;;;;;:9;:20;;;;;;9202:102;;-1:-1:-1;9344:37:0;;9202:102;9344:24;:37::i;:::-;-1:-1:-1;;;;;9321:20:0;;;;;;;:9;:20;;;;;;;:60;;;;9403:40;;;;;;;;;;9431:11;160:25:1;;148:2;133:18;;14:177;9403:40:0;;;;;;;;9465:4;9458:11;;;;;;;2052:173;2108:16;2127:6;;-1:-1:-1;;;;;2144:17:0;;;-1:-1:-1;;;;;;2144:17:0;;;;;;2177:40;;2127:6;;;;;;;2177:40;;2108:16;2177:40;2097:128;2052:173;:::o;9500:330::-;9630:53;;;;;;;;;;;-1:-1:-1;;;9630:53:0;;;;;;;;-1:-1:-1;;;;;9630:17:0;;9593:4;9630:17;;;:9;:17;;;;;;;:53;;9652:6;;9630:21;:53::i;:::-;-1:-1:-1;;;;;9610:17:0;;;;;;;:9;:17;;;;;;:73;;;;9717:20;;;;;;;:32;;9742:6;9717:24;:32::i;:::-;-1:-1:-1;;;;;9694:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9765:35;;;;;;;;;;9793:6;160:25:1;;148:2;133:18;;14:177;9765:35:0;;;;;;;;-1:-1:-1;9818:4:0;9500:330;;;;;:::o;11014:589::-;11099:9;:12;11087:9;;:24;;11099:12;11087:24;:::i;:::-;11068:15;:43;11064:92;;11143:1;11128:12;:16;11064:92;11200:9;:12;11188:9;;:24;;11200:12;11188:24;:::i;:::-;11170:15;:42;:89;;;;-1:-1:-1;11247:12:0;;11235:9;;:24;;11247:12;11235:24;:::i;:::-;11216:15;:43;;11170:89;11166:138;;;11291:1;11276:12;:16;11166:138;11348:12;;11336:9;;:24;;11348:12;11336:24;:::i;:::-;11318:15;:42;:89;;;;-1:-1:-1;11395:12:0;;11383:9;;:24;;11395:12;11383:24;:::i;:::-;11364:15;:43;;11318:89;11314:138;;;11439:1;11424:12;:16;11314:138;11496:12;;11484:9;;:24;;11496:12;11484:24;:::i;:::-;11466:15;:42;11462:120;;;11540:1;11525:12;:16;11556:7;:14;;-1:-1:-1;;11556:14:0;;;;;11014:589::o;11611:364::-;5438:6;:13;;-1:-1:-1;;;;5438:13:0;-1:-1:-1;;;5438:13:0;;;11707:21:::1;11739:33;11756:15:::0;11739:16:::1;:33::i;:::-;11783:22;11808:41;:21;11834:14:::0;11808:25:::1;:41::i;:::-;11783:66:::0;-1:-1:-1;11865:18:0;;11862:99:::1;;11908:15;::::0;11900:49:::1;::::0;-1:-1:-1;;;;;11908:15:0;;::::1;::::0;11900:49;::::1;;;::::0;11934:14;;11908:15:::1;11900:49:::0;11908:15;11900:49;11934:14;11908:15;11900:49;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;11862:99;-1:-1:-1::0;;5474:6:0;:14;;-1:-1:-1;;;;5474:14:0;;;-1:-1:-1;11611:364:0:o;9842:431::-;9956:7;;9926:4;;9956:7;;;;;9953:50;;;-1:-1:-1;9987:4:0;9980:11;;9953:50;-1:-1:-1;;;;;10018:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;10042:23:0;;;;;;:12;:23;;;;;;;;10018:47;10015:251;;;-1:-1:-1;10089:4:0;10082:11;;10015:251;-1:-1:-1;;;;;10124:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;10148:23:0;;;;;;:12;:23;;;;;;;;10124:47;10120:146;;;-1:-1:-1;10195:5:0;10188:12;;10120:146;-1:-1:-1;10249:5:0;10242:12;;10281:725;10393:14;;10367:7;;10393:14;;;;;10389:110;;10424:14;:21;;-1:-1:-1;;10424:21:0;;;;;10472:15;10460:9;:27;10389:110;-1:-1:-1;;;;;10613:23:0;;10519:14;10613:23;;;:12;:23;;;;;;;;10610:122;;;10670:46;10712:3;10670:37;10681:11;10693:12;;10681:25;;;;;;;:::i;:::-;;;10670:6;;:10;:37::i;:::-;:41;;:46::i;:::-;10658:58;;10610:122;10751:13;;10748:185;;10830:4;10812:24;;;;:9;:24;;;;;;:39;;10841:9;10812:28;:39::i;:::-;10803:4;10785:24;;;;:9;:24;;;;;;;:66;;;;10875:42;;-1:-1:-1;;;;;10875:42:0;;;;;;;10907:9;160:25:1;;148:2;133:18;;14:177;10875:42:0;;;;;;;;10748:185;10956:21;:6;10967:9;10956:10;:21::i;2829:181::-;2887:7;;2919:5;2923:1;2919;:5;:::i;:::-;2907:17;;2948:1;2943;:6;;2935:46;;;;-1:-1:-1;;;2935:46:0;;7740:2:1;2935:46:0;;;7722:21:1;7779:2;7759:18;;;7752:30;7818:29;7798:18;;;7791:57;7865:18;;2935:46:0;7538:351:1;11983:648:0;12133:16;;;12147:1;12133:16;;;;;;;;12109:21;;12133:16;;;;;;;;;;-1:-1:-1;12133:16:0;12109:40;;12178:4;12160;12165:1;12160:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12160:23:0;;;:7;;;;;;;;;;:23;;;;12204:9;;:16;;;-1:-1:-1;;;12204:16:0;;;;:9;;;;;:14;;:16;;;;;12160:7;;12204:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12194:4;12199:1;12194:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12194:26:0;;;:7;;;;;;;;;:26;12265:9;;12233:56;;12250:4;;12265:9;12277:11;12233:8;:56::i;:::-;12328:9;;:234;;-1:-1:-1;;;12328:234:0;;-1:-1:-1;;;;;12328:9:0;;;;:60;;:234;;12403:11;;12328:9;;12473:4;;12500;;12536:15;;12328:234;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12588:35;12605:11;12618:4;12588:35;;;;;;;:::i;:::-;;;;;;;;12038:593;11983:648;:::o;3018:136::-;3076:7;3103:43;3107:1;3110;3103:43;;;;;;;;;;;;;;;;;:3;:43::i;3362:250::-;3420:7;3444:1;3449;3444:6;3440:47;;-1:-1:-1;3474:1:0;3467:8;;3440:47;3499:9;3511:5;3515:1;3511;:5;:::i;:::-;3499:17;-1:-1:-1;3544:1:0;3535:5;3539:1;3499:17;3535:5;:::i;:::-;:10;3527:56;;;;-1:-1:-1;;;3527:56:0;;10273:2:1;3527:56:0;;;10255:21:1;10312:2;10292:18;;;10285:30;10351:34;10331:18;;;10324:62;-1:-1:-1;;;10402:18:1;;;10395:31;10443:19;;3527:56:0;10071:397:1;3620:132:0;3678:7;3705:39;3709:1;3712;3705:39;;;;;;;;;;;;;;;;;3846:7;3881:12;3874:5;3866:28;;;;-1:-1:-1;;;3866:28:0;;;;;;;;:::i;:::-;-1:-1:-1;3905:9:0;3917:5;3921:1;3917;:5;:::i;196:250:1:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:1;420:16;;413:27;196:250::o;451:396::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;831:2;810:15;-1:-1:-1;;806:29:1;791:45;;;;838:2;787:54;;451:396;-1:-1:-1;;451:396:1:o;852:131::-;-1:-1:-1;;;;;927:31:1;;917:42;;907:70;;973:1;970;963:12;988:315;1056:6;1064;1117:2;1105:9;1096:7;1092:23;1088:32;1085:52;;;1133:1;1130;1123:12;1085:52;1172:9;1159:23;1191:31;1216:5;1191:31;:::i;:::-;1241:5;1293:2;1278:18;;;;1265:32;;-1:-1:-1;;;988:315:1:o;1500:247::-;1559:6;1612:2;1600:9;1591:7;1587:23;1583:32;1580:52;;;1628:1;1625;1618:12;1580:52;1667:9;1654:23;1686:31;1711:5;1686:31;:::i;2168:456::-;2245:6;2253;2261;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2369:9;2356:23;2388:31;2413:5;2388:31;:::i;:::-;2438:5;-1:-1:-1;2495:2:1;2480:18;;2467:32;2508:33;2467:32;2508:33;:::i;:::-;2168:456;;2560:7;;-1:-1:-1;;;2614:2:1;2599:18;;;;2586:32;;2168:456::o;3256:160::-;3321:20;;3377:13;;3370:21;3360:32;;3350:60;;3406:1;3403;3396:12;3350:60;3256:160;;;:::o;3421:315::-;3486:6;3494;3547:2;3535:9;3526:7;3522:23;3518:32;3515:52;;;3563:1;3560;3553:12;3515:52;3602:9;3589:23;3621:31;3646:5;3621:31;:::i;:::-;3671:5;-1:-1:-1;3695:35:1;3726:2;3711:18;;3695:35;:::i;:::-;3685:45;;3421:315;;;;;:::o;3741:388::-;3809:6;3817;3870:2;3858:9;3849:7;3845:23;3841:32;3838:52;;;3886:1;3883;3876:12;3838:52;3925:9;3912:23;3944:31;3969:5;3944:31;:::i;:::-;3994:5;-1:-1:-1;4051:2:1;4036:18;;4023:32;4064:33;4023:32;4064:33;:::i;:::-;4116:7;4106:17;;;3741:388;;;;;:::o;4134:248::-;4199:6;4207;4260:2;4248:9;4239:7;4235:23;4231:32;4228:52;;;4276:1;4273;4266:12;4228:52;4299:26;4315:9;4299:26;:::i;4387:380::-;4466:1;4462:12;;;;4509;;;4530:61;;4584:4;4576:6;4572:17;4562:27;;4530:61;4637:2;4629:6;4626:14;4606:18;4603:38;4600:161;;4683:10;4678:3;4674:20;4671:1;4664:31;4718:4;4715:1;4708:15;4746:4;4743:1;4736:15;4600:161;;4387:380;;;:::o;4772:356::-;4974:2;4956:21;;;4993:18;;;4986:30;5052:34;5047:2;5032:18;;5025:62;5119:2;5104:18;;4772:356::o;5133:336::-;5335:2;5317:21;;;5374:2;5354:18;;;5347:30;-1:-1:-1;;;5408:2:1;5393:18;;5386:42;5460:2;5445:18;;5133:336::o;6312:287::-;6441:3;6479:6;6473:13;6495:66;6554:6;6549:3;6542:4;6534:6;6530:17;6495:66;:::i;:::-;6577:16;;;;;6312:287;-1:-1:-1;;6312:287:1:o;7011:127::-;7072:10;7067:3;7063:20;7060:1;7053:31;7103:4;7100:1;7093:15;7127:4;7124:1;7117:15;7143:128;7210:9;;;7231:11;;;7228:37;;;7245:18;;:::i;7276:127::-;7337:10;7332:3;7328:20;7325:1;7318:31;7368:4;7365:1;7358:15;7392:4;7389:1;7382:15;7408:125;7473:9;;;7494:10;;;7491:36;;;7507:18;;:::i;8026:251::-;8096:6;8149:2;8137:9;8128:7;8124:23;8120:32;8117:52;;;8165:1;8162;8155:12;8117:52;8197:9;8191:16;8216:31;8241:5;8216:31;:::i;8282:465::-;8335:3;8373:5;8367:12;8400:6;8395:3;8388:19;8426:4;8455;8450:3;8446:14;8439:21;;8494:4;8487:5;8483:16;8517:1;8527:195;8541:6;8538:1;8535:13;8527:195;;;8606:13;;-1:-1:-1;;;;;8602:39:1;8590:52;;8662:12;;;;8697:15;;;;8638:1;8556:9;8527:195;;;-1:-1:-1;8738:3:1;;8282:465;-1:-1:-1;;;;;8282:465:1:o;8752:582::-;9051:6;9040:9;9033:25;9094:6;9089:2;9078:9;9074:18;9067:34;9137:3;9132:2;9121:9;9117:18;9110:31;9014:4;9158:57;9210:3;9199:9;9195:19;9187:6;9158:57;:::i;:::-;-1:-1:-1;;;;;9251:32:1;;;;9246:2;9231:18;;9224:60;-1:-1:-1;9315:3:1;9300:19;9293:35;9150:65;8752:582;-1:-1:-1;;;8752:582:1:o;9339:332::-;9546:6;9535:9;9528:25;9589:2;9584;9573:9;9569:18;9562:30;9509:4;9609:56;9661:2;9650:9;9646:18;9638:6;9609:56;:::i;:::-;9601:64;9339:332;-1:-1:-1;;;;9339:332:1:o;9676:168::-;9749:9;;;9780;;9797:15;;;9791:22;;9777:37;9767:71;;9818:18;;:::i;9849:217::-;9889:1;9915;9905:132;;9959:10;9954:3;9950:20;9947:1;9940:31;9994:4;9991:1;9984:15;10022:4;10019:1;10012:15;9905:132;-1:-1:-1;10051:9:1;;9849:217::o

Swarm Source

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