ETH Price: $2,360.59 (+0.86%)

Token

RevivalDeFi (RevDeFi)
 

Overview

Max Total Supply

1,000,000,000 RevDeFi

Holders

158

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: RevDeFi
Balance
53,089,933.382191858088037924 RevDeFi

Value
$0.00
0xa5ffea315671cb8a24cd935d20408a48f499da96
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:
RevivalDeFi

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-12
*/

/*

Telegram: https://t.me/RevivalDefiEntry
Twitter : https://twitter.com/RevDeFiThomas
Web     : https://RevivalDeFi.io
                                                                                                                                                                                                                                             
*/


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.5;
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract RevivalDeFi is ERC20, Ownable {
    using SafeMath for uint256;
    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public Dapp1 = 0x000000000000000000000000000000000000dEaD;
    address public Dapp2 = 0x000000000000000000000000000000000000dEaD;
    address public Dapp3 = 0x000000000000000000000000000000000000dEaD;
    address public Dapp4 = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "RevivalDeFi";
    string constant _symbol = "RevDeFi";
    uint8 constant _decimals = 18;

    uint256 public _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 15) / 1000;

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 liquidityFee = 1; 
    uint256 marketingFee = 4;
    uint256 public totalFee = liquidityFee + marketingFee;
    uint256 feeDenominator = 100;

    address internal marketingFeeReceiver = 0x36abe5B30da74d7151e4C76D2c181a9Ea923546B;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 2; // 0.2%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event MarketingFeeReceiverUpdated(address indexed newWallet, address indexed oldWallet);
    event Dapp1Updated(address indexed newWallet, address indexed oldWallet);
    event Dapp2Updated(address indexed newWallet, address indexed oldWallet);
    event Dapp3Updated(address indexed newWallet, address indexed oldWallet);
    event Dapp4Updated(address indexed newWallet, address indexed oldWallet);

    constructor () Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[marketingFeeReceiver] = true;
        isFeeExempt[_owner] = true;
        isFeeExempt[Dapp1] = true;
        isFeeExempt[Dapp2] = true;
        isFeeExempt[Dapp3] = true;
        isFeeExempt[Dapp4] = true;
        isTxLimitExempt[Dapp1] = true;
        isTxLimitExempt[Dapp2] = true;
        isTxLimitExempt[Dapp3] = true;
        isTxLimitExempt[Dapp4] = true;
        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); } 

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        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 updateDapp1(address newWallet) external onlyOwner {
        emit Dapp1Updated(newWallet, Dapp1);
        Dapp1 = newWallet;
    }

    function updateDapp2(address newWallet) external onlyOwner {
        emit Dapp2Updated(newWallet, Dapp2);
        Dapp2 = newWallet;
    }

    function updateDapp3(address newWallet) external onlyOwner {
        emit Dapp3Updated(newWallet, Dapp3);
        Dapp3 = newWallet;
    }

    function updateDapp4(address newWallet) external onlyOwner {
        emit Dapp4Updated(newWallet, Dapp4);
        Dapp4 = newWallet;
    }

    function updateMarketingFeeReceiver(address newWallet) external onlyOwner {
    emit MarketingFeeReceiverUpdated(newWallet, marketingFeeReceiver);
    marketingFeeReceiver = newWallet;
    }


    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = swapThreshold;
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
               0x36abe5B30da74d7151e4C76D2c181a9Ea923546B,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function updateSwapThreshold(uint256 newThreshold) external onlyOwner {
    swapThreshold = newThreshold;
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function clearStuckBalance() external {
        payable(marketingFeeReceiver).transfer(address(this).balance);
    }

    function claimOtherTokens(ERC20 _tokenAddress, address _walletaddress)external onlyOwner {
        _tokenAddress.transfer(
            _walletaddress,
            _tokenAddress.balanceOf(address(this))
        );
    }

    function setWalletLimit(uint256 amountPercent) external onlyOwner {
        require(amountPercent >= 5, "% too low, minimum is 1%");
        _maxWalletAmount = (_totalSupply * amountPercent ) / 1000;
    }

    function setFee(uint256 _liquidityFee, uint256 _marketingFee) external onlyOwner {
        require(_liquidityFee + _marketingFee  <= 7, "fee to high try again 7% max");
         liquidityFee = _liquidityFee; 
         marketingFee = _marketingFee;
         totalFee = liquidityFee + marketingFee;
    }    
    
    event AutoLiquify(uint256 amountETH, uint256 amountRevDeFi);
}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountRevDeFi","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"Dapp1Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"Dapp2Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"Dapp3Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"Dapp4Updated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"MarketingFeeReceiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Dapp1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Dapp2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Dapp3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Dapp4","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"contract ERC20","name":"_tokenAddress","type":"address"},{"internalType":"address","name":"_walletaddress","type":"address"}],"name":"claimOtherTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setWalletLimit","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":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"newWallet","type":"address"}],"name":"updateDapp1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDapp2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDapp3","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDapp4","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d1790915560028054821661dead90811790915560038054831682179055600480548316821790556005805483168217905560068054909216179055620000726012600a62000585565b6200008290633b9aca006200059d565b6007556103e8600754600f6200009991906200059d565b620000a59190620005bf565b6008556001600d8190556004600e819055620000c191620005e2565b600f556064601055601180546001600160a01b0319167336abe5b30da74d7151e4c76d2c181a9ea923546b1790556013805460ff60a01b1916600160a01b17905560075462000114906103e890620005bf565b620001219060026200059d565b6014553480156200013157600080fd5b5060008054336001600160a01b031991821617909155600154601280546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200019957600080fd5b505afa158015620001ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d49190620005fd565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023157600080fd5b505afa15801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c9190620005fd565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152306024820152604401602060405180830381600087803b158015620002b457600080fd5b505af1158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef9190620005fd565b601380546001600160a01b0319166001600160a01b03928316179055306000908152600a60209081526040808320601254851684528252808320600019905582546011805486168552600b8452828520805460ff199081166001908117909255928716808752848720805485168317905560038054891688528588208054861684179055600480548a1689528689208054871685179055600580548b168a52878a208054881686179055600680548c168b52888b20805489168717905592548b168a52600c8952878a20805488168617905590548a16895286892080548716851790555489168852858820805486168417905554881687528487208054851683179055808752848720805485168317905591548716865283862080548416821790556002549096168552828520805490921690951790556007548484526009835281842081905590519081528392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000628565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004c7578160001904821115620004ab57620004ab62000470565b80851615620004b957918102915b93841c93908002906200048b565b509250929050565b600082620004e0575060016200057f565b81620004ef575060006200057f565b8160018114620005085760028114620005135762000533565b60019150506200057f565b60ff84111562000527576200052762000470565b50506001821b6200057f565b5060208310610133831016604e8410600b841016171562000558575081810a6200057f565b62000564838362000486565b80600019048211156200057b576200057b62000470565b0290505b92915050565b60006200059660ff841683620004cf565b9392505050565b6000816000190483118215151615620005ba57620005ba62000470565b500290565b600082620005dd57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620005f857620005f862000470565b500190565b6000602082840312156200061057600080fd5b81516001600160a01b03811681146200059657600080fd5b611b0780620006386000396000f3fe6080604052600436106102085760003560e01c806370a0823111610118578063b0442f86116100a0578063c7a7a7451161006f578063c7a7a74514610615578063cc274b2914610635578063dd62ed3e14610655578063f1d5f5171461069b578063f887ea40146106bb57600080fd5b8063b0442f8614610595578063b4da17c0146105b5578063bf84dc74146105d5578063c1bac892146105f557600080fd5b80638fcd4d00116100e75780638fcd4d00146104e557806395d89b411461050557806397abf36d14610535578063a8aa1b3114610555578063a9059cbb1461057557600080fd5b806370a082311461045c578063715018a61461049257806371649ac2146104a7578063893d20e8146104c757600080fd5b80632f54bf6e1161019b5780633eaaf86b1161016a5780633eaaf86b146103cf57806352f7c988146103e5578063571ac8b0146104055780636c0a24eb146104255780636ddd17131461043b57600080fd5b80632f54bf6e1461034f578063313ce5671461037e578063364333f41461039a5780633ae7dc20146103af57600080fd5b806318160ddd116101d757806318160ddd146102e2578063190b762c146102f75780631df4ccfc1461031957806323b872dd1461032f57600080fd5b806303fd2a45146102145780630445b6671461025157806306fdde0314610275578063095ea7b3146102b257600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b50600254610234906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561025d57600080fd5b5061026760145481565b604051908152602001610248565b34801561028157600080fd5b5060408051808201909152600b81526a5265766976616c4465466960a81b60208201525b60405161024891906117b6565b3480156102be57600080fd5b506102d26102cd366004611820565b6106db565b6040519015158152602001610248565b3480156102ee57600080fd5b50600754610267565b34801561030357600080fd5b5061031761031236600461184c565b610748565b005b34801561032557600080fd5b50610267600f5481565b34801561033b57600080fd5b506102d261034a366004611869565b6107d8565b34801561035b57600080fd5b506102d261036a36600461184c565b6000546001600160a01b0391821691161490565b34801561038a57600080fd5b5060405160128152602001610248565b3480156103a657600080fd5b5061031761089a565b3480156103bb57600080fd5b506103176103ca3660046118aa565b6108d6565b3480156103db57600080fd5b5061026760075481565b3480156103f157600080fd5b506103176104003660046118e3565b610a04565b34801561041157600080fd5b506102d261042036600461184c565b610aa3565b34801561043157600080fd5b5061026760085481565b34801561044757600080fd5b506013546102d290600160a01b900460ff1681565b34801561046857600080fd5b5061026761047736600461184c565b6001600160a01b031660009081526009602052604090205490565b34801561049e57600080fd5b50610317610ab1565b3480156104b357600080fd5b506103176104c236600461184c565b610b20565b3480156104d357600080fd5b506000546001600160a01b0316610234565b3480156104f157600080fd5b5061031761050036600461184c565b610ba7565b34801561051157600080fd5b506040805180820190915260078152665265764465466960c81b60208201526102a5565b34801561054157600080fd5b50600654610234906001600160a01b031681565b34801561056157600080fd5b50601354610234906001600160a01b031681565b34801561058157600080fd5b506102d2610590366004611820565b610c2e565b3480156105a157600080fd5b50600554610234906001600160a01b031681565b3480156105c157600080fd5b506103176105d036600461184c565b610c3b565b3480156105e157600080fd5b50600454610234906001600160a01b031681565b34801561060157600080fd5b50600354610234906001600160a01b031681565b34801561062157600080fd5b5061031761063036600461184c565b610cc2565b34801561064157600080fd5b50610317610650366004611905565b610d49565b34801561066157600080fd5b506102676106703660046118aa565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b3480156106a757600080fd5b506103176106b6366004611905565b610d78565b3480156106c757600080fd5b50601254610234906001600160a01b031681565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107369086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461077b5760405162461bcd60e51b81526004016107729061191e565b60405180910390fd5b6011546040516001600160a01b03918216918316907f63447d90bff43b8780a8fb1fae840f0a2296bf4a02efc958168321201fcc1b5890600090a3601180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914610885576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610860918490610e14565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610890848484610e4e565b90505b9392505050565b6011546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156108d3573d6000803e3d6000fd5b50565b6000546001600160a01b031633146109005760405162461bcd60e51b81526004016107729061191e565b6040516370a0823160e01b81523060048201526001600160a01b0383169063a9059cbb90839083906370a082319060240160206040518083038186803b15801561094957600080fd5b505afa15801561095d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610981919061193e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156109c757600080fd5b505af11580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff9190611957565b505050565b6000546001600160a01b03163314610a2e5760405162461bcd60e51b81526004016107729061191e565b6007610a3a828461198f565b1115610a885760405162461bcd60e51b815260206004820152601c60248201527f66656520746f20686967682074727920616761696e203725206d6178000000006044820152606401610772565b600d829055600e819055610a9c818361198f565b600f555050565b6000610742826000196106db565b6000546001600160a01b03163314610adb5760405162461bcd60e51b81526004016107729061191e565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016107729061191e565b6004546040516001600160a01b03918216918316907fb9d098d70ec9a1c2aa67d62a47964a5600e237293eb0083794614c69e94ee0d090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bd15760405162461bcd60e51b81526004016107729061191e565b6005546040516001600160a01b03918216918316907fd890ce560d86979e7e587ab66a4d11bedcd3afd7738cfcefbed2a6fd7181921f90600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610893338484610e4e565b6000546001600160a01b03163314610c655760405162461bcd60e51b81526004016107729061191e565b6006546040516001600160a01b03918216918316907fd0ccde25540ffa793aa2dfe5e78e0644a9570eec747a2d375455f6f7da592eff90600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610cec5760405162461bcd60e51b81526004016107729061191e565b6003546040516001600160a01b03918216918316907f1ece2437ffe8204c8dc96c00bac45aac8196fe152b9f966c2b231223d6f6258290600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d735760405162461bcd60e51b81526004016107729061191e565b601455565b6000546001600160a01b03163314610da25760405162461bcd60e51b81526004016107729061191e565b6005811015610df35760405162461bcd60e51b815260206004820152601860248201527f2520746f6f206c6f772c206d696e696d756d20697320312500000000000000006044820152606401610772565b6103e881600754610e0491906119a7565b610e0e91906119c6565b60085550565b60008184841115610e385760405162461bcd60e51b815260040161077291906117b6565b506000610e4584866119e8565b95945050505050565b60155460009060ff1615610e6e57610e67848484611078565b9050610893565b6013546001600160a01b03848116911614801590610e9a57506002546001600160a01b03848116911614155b15610f45576001600160a01b0383166000908152600c602052604090205460ff1680610eeb57506008546001600160a01b038416600090815260096020526040902054610ee890849061198f565b11155b610f455760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610772565b610f4d61115e565b15610f5a57610f5a6111b6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260099091529190912054610fac918490610e14565b6001600160a01b038516600090815260096020908152604080832093909355600b90529081205460ff1615610fe15782610feb565b610feb8584611580565b6001600160a01b0385166000908152600960205260409020549091506110119082611626565b6001600160a01b0380861660008181526009602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110659085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526009909152918220546110c9918490610e14565b6001600160a01b0380861660009081526009602052604080822093909355908516815220546110f89083611626565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061114c9086815260200190565b60405180910390a35060019392505050565b6013546000906001600160a01b0316331480159061117f575060155460ff16155b80156111945750601354600160a01b900460ff165b80156111b157506014543060009081526009602052604090205410155b905090565b6015805460ff19166001179055601454600f54600d546000916111e9916002916111e39182908790611685565b90611704565b905060006111f78383611746565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611231576112316119ff565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561128557600080fd5b505afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190611a15565b816001815181106112d0576112d06119ff565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac9479061131a908690600090879030904290600401611a32565b600060405180830381600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b505050506000611361824761174690919063ffffffff16565b9050600061138761137e6002600d5461170490919063ffffffff16565b600f5490611746565b905060006113a960026111e3846111e3600d548861168590919063ffffffff16565b905060006113c6836111e3600e548761168590919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461141d576040519150601f19603f3d011682016040523d82523d6000602084013e611422565b606091505b50509050806114735760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610772565b881561156a5760125460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201527336abe5b30da74d7151e4c76d2c181a9ea923546b60848201524260a48201526001600160a01b039091169063f305d71990859060c4016060604051808303818588803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061152d9190611aa3565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506015805460ff191690555050505050505050565b60008061159e6010546111e3600f548661168590919063ffffffff16565b306000908152600960205260409020549091506115bb9082611626565b30600081815260096020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061160c9085815260200190565b60405180910390a361161e8382611746565b949350505050565b600080611633838561198f565b9050838110156108935760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610772565b60008261169457506000610742565b60006116a083856119a7565b9050826116ad85836119c6565b146108935760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610772565b600061089383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611788565b600061089383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e14565b600081836117a95760405162461bcd60e51b815260040161077291906117b6565b506000610e4584866119c6565b600060208083528351808285015260005b818110156117e3578581018301518582016040015282016117c7565b818111156117f5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146108d357600080fd5b6000806040838503121561183357600080fd5b823561183e8161180b565b946020939093013593505050565b60006020828403121561185e57600080fd5b81356108938161180b565b60008060006060848603121561187e57600080fd5b83356118898161180b565b925060208401356118998161180b565b929592945050506040919091013590565b600080604083850312156118bd57600080fd5b82356118c88161180b565b915060208301356118d88161180b565b809150509250929050565b600080604083850312156118f657600080fd5b50508035926020909101359150565b60006020828403121561191757600080fd5b5035919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561195057600080fd5b5051919050565b60006020828403121561196957600080fd5b8151801515811461089357600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156119a2576119a2611979565b500190565b60008160001904831182151516156119c1576119c1611979565b500290565b6000826119e357634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156119fa576119fa611979565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a2757600080fd5b81516108938161180b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a825784516001600160a01b031683529383019391830191600101611a5d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611ab857600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220364940b10b7a2068741ce8f9faf079c77fb7f97404f4dfef355d3fef4c28d5c564736f6c63430008090033

Deployed Bytecode

0x6080604052600436106102085760003560e01c806370a0823111610118578063b0442f86116100a0578063c7a7a7451161006f578063c7a7a74514610615578063cc274b2914610635578063dd62ed3e14610655578063f1d5f5171461069b578063f887ea40146106bb57600080fd5b8063b0442f8614610595578063b4da17c0146105b5578063bf84dc74146105d5578063c1bac892146105f557600080fd5b80638fcd4d00116100e75780638fcd4d00146104e557806395d89b411461050557806397abf36d14610535578063a8aa1b3114610555578063a9059cbb1461057557600080fd5b806370a082311461045c578063715018a61461049257806371649ac2146104a7578063893d20e8146104c757600080fd5b80632f54bf6e1161019b5780633eaaf86b1161016a5780633eaaf86b146103cf57806352f7c988146103e5578063571ac8b0146104055780636c0a24eb146104255780636ddd17131461043b57600080fd5b80632f54bf6e1461034f578063313ce5671461037e578063364333f41461039a5780633ae7dc20146103af57600080fd5b806318160ddd116101d757806318160ddd146102e2578063190b762c146102f75780631df4ccfc1461031957806323b872dd1461032f57600080fd5b806303fd2a45146102145780630445b6671461025157806306fdde0314610275578063095ea7b3146102b257600080fd5b3661020f57005b600080fd5b34801561022057600080fd5b50600254610234906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561025d57600080fd5b5061026760145481565b604051908152602001610248565b34801561028157600080fd5b5060408051808201909152600b81526a5265766976616c4465466960a81b60208201525b60405161024891906117b6565b3480156102be57600080fd5b506102d26102cd366004611820565b6106db565b6040519015158152602001610248565b3480156102ee57600080fd5b50600754610267565b34801561030357600080fd5b5061031761031236600461184c565b610748565b005b34801561032557600080fd5b50610267600f5481565b34801561033b57600080fd5b506102d261034a366004611869565b6107d8565b34801561035b57600080fd5b506102d261036a36600461184c565b6000546001600160a01b0391821691161490565b34801561038a57600080fd5b5060405160128152602001610248565b3480156103a657600080fd5b5061031761089a565b3480156103bb57600080fd5b506103176103ca3660046118aa565b6108d6565b3480156103db57600080fd5b5061026760075481565b3480156103f157600080fd5b506103176104003660046118e3565b610a04565b34801561041157600080fd5b506102d261042036600461184c565b610aa3565b34801561043157600080fd5b5061026760085481565b34801561044757600080fd5b506013546102d290600160a01b900460ff1681565b34801561046857600080fd5b5061026761047736600461184c565b6001600160a01b031660009081526009602052604090205490565b34801561049e57600080fd5b50610317610ab1565b3480156104b357600080fd5b506103176104c236600461184c565b610b20565b3480156104d357600080fd5b506000546001600160a01b0316610234565b3480156104f157600080fd5b5061031761050036600461184c565b610ba7565b34801561051157600080fd5b506040805180820190915260078152665265764465466960c81b60208201526102a5565b34801561054157600080fd5b50600654610234906001600160a01b031681565b34801561056157600080fd5b50601354610234906001600160a01b031681565b34801561058157600080fd5b506102d2610590366004611820565b610c2e565b3480156105a157600080fd5b50600554610234906001600160a01b031681565b3480156105c157600080fd5b506103176105d036600461184c565b610c3b565b3480156105e157600080fd5b50600454610234906001600160a01b031681565b34801561060157600080fd5b50600354610234906001600160a01b031681565b34801561062157600080fd5b5061031761063036600461184c565b610cc2565b34801561064157600080fd5b50610317610650366004611905565b610d49565b34801561066157600080fd5b506102676106703660046118aa565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b3480156106a757600080fd5b506103176106b6366004611905565b610d78565b3480156106c757600080fd5b50601254610234906001600160a01b031681565b336000818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107369086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331461077b5760405162461bcd60e51b81526004016107729061191e565b60405180910390fd5b6011546040516001600160a01b03918216918316907f63447d90bff43b8780a8fb1fae840f0a2296bf4a02efc958168321201fcc1b5890600090a3601180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166000908152600a6020908152604080832033845290915281205460001914610885576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600a82528381203382529091529190912054610860918490610e14565b6001600160a01b0385166000908152600a602090815260408083203384529091529020555b610890848484610e4e565b90505b9392505050565b6011546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156108d3573d6000803e3d6000fd5b50565b6000546001600160a01b031633146109005760405162461bcd60e51b81526004016107729061191e565b6040516370a0823160e01b81523060048201526001600160a01b0383169063a9059cbb90839083906370a082319060240160206040518083038186803b15801561094957600080fd5b505afa15801561095d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610981919061193e565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156109c757600080fd5b505af11580156109db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ff9190611957565b505050565b6000546001600160a01b03163314610a2e5760405162461bcd60e51b81526004016107729061191e565b6007610a3a828461198f565b1115610a885760405162461bcd60e51b815260206004820152601c60248201527f66656520746f20686967682074727920616761696e203725206d6178000000006044820152606401610772565b600d829055600e819055610a9c818361198f565b600f555050565b6000610742826000196106db565b6000546001600160a01b03163314610adb5760405162461bcd60e51b81526004016107729061191e565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610b4a5760405162461bcd60e51b81526004016107729061191e565b6004546040516001600160a01b03918216918316907fb9d098d70ec9a1c2aa67d62a47964a5600e237293eb0083794614c69e94ee0d090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610bd15760405162461bcd60e51b81526004016107729061191e565b6005546040516001600160a01b03918216918316907fd890ce560d86979e7e587ab66a4d11bedcd3afd7738cfcefbed2a6fd7181921f90600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6000610893338484610e4e565b6000546001600160a01b03163314610c655760405162461bcd60e51b81526004016107729061191e565b6006546040516001600160a01b03918216918316907fd0ccde25540ffa793aa2dfe5e78e0644a9570eec747a2d375455f6f7da592eff90600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610cec5760405162461bcd60e51b81526004016107729061191e565b6003546040516001600160a01b03918216918316907f1ece2437ffe8204c8dc96c00bac45aac8196fe152b9f966c2b231223d6f6258290600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d735760405162461bcd60e51b81526004016107729061191e565b601455565b6000546001600160a01b03163314610da25760405162461bcd60e51b81526004016107729061191e565b6005811015610df35760405162461bcd60e51b815260206004820152601860248201527f2520746f6f206c6f772c206d696e696d756d20697320312500000000000000006044820152606401610772565b6103e881600754610e0491906119a7565b610e0e91906119c6565b60085550565b60008184841115610e385760405162461bcd60e51b815260040161077291906117b6565b506000610e4584866119e8565b95945050505050565b60155460009060ff1615610e6e57610e67848484611078565b9050610893565b6013546001600160a01b03848116911614801590610e9a57506002546001600160a01b03848116911614155b15610f45576001600160a01b0383166000908152600c602052604090205460ff1680610eeb57506008546001600160a01b038416600090815260096020526040902054610ee890849061198f565b11155b610f455760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b6064820152608401610772565b610f4d61115e565b15610f5a57610f5a6111b6565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260099091529190912054610fac918490610e14565b6001600160a01b038516600090815260096020908152604080832093909355600b90529081205460ff1615610fe15782610feb565b610feb8584611580565b6001600160a01b0385166000908152600960205260409020549091506110119082611626565b6001600160a01b0380861660008181526009602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110659085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526009909152918220546110c9918490610e14565b6001600160a01b0380861660009081526009602052604080822093909355908516815220546110f89083611626565b6001600160a01b0380851660008181526009602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061114c9086815260200190565b60405180910390a35060019392505050565b6013546000906001600160a01b0316331480159061117f575060155460ff16155b80156111945750601354600160a01b900460ff165b80156111b157506014543060009081526009602052604090205410155b905090565b6015805460ff19166001179055601454600f54600d546000916111e9916002916111e39182908790611685565b90611704565b905060006111f78383611746565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611231576112316119ff565b6001600160a01b03928316602091820292909201810191909152601254604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561128557600080fd5b505afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190611a15565b816001815181106112d0576112d06119ff565b6001600160a01b03928316602091820292909201015260125460405163791ac94760e01b81524792919091169063791ac9479061131a908690600090879030904290600401611a32565b600060405180830381600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b505050506000611361824761174690919063ffffffff16565b9050600061138761137e6002600d5461170490919063ffffffff16565b600f5490611746565b905060006113a960026111e3846111e3600d548861168590919063ffffffff16565b905060006113c6836111e3600e548761168590919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461141d576040519150601f19603f3d011682016040523d82523d6000602084013e611422565b606091505b50509050806114735760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610772565b881561156a5760125460405163f305d71960e01b8152306004820152602481018b905260006044820181905260648201527336abe5b30da74d7151e4c76d2c181a9ea923546b60848201524260a48201526001600160a01b039091169063f305d71990859060c4016060604051808303818588803b1580156114f457600080fd5b505af1158015611508573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061152d9190611aa3565b505060408051858152602081018c90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506015805460ff191690555050505050505050565b60008061159e6010546111e3600f548661168590919063ffffffff16565b306000908152600960205260409020549091506115bb9082611626565b30600081815260096020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061160c9085815260200190565b60405180910390a361161e8382611746565b949350505050565b600080611633838561198f565b9050838110156108935760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610772565b60008261169457506000610742565b60006116a083856119a7565b9050826116ad85836119c6565b146108935760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610772565b600061089383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611788565b600061089383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e14565b600081836117a95760405162461bcd60e51b815260040161077291906117b6565b506000610e4584866119c6565b600060208083528351808285015260005b818110156117e3578581018301518582016040015282016117c7565b818111156117f5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146108d357600080fd5b6000806040838503121561183357600080fd5b823561183e8161180b565b946020939093013593505050565b60006020828403121561185e57600080fd5b81356108938161180b565b60008060006060848603121561187e57600080fd5b83356118898161180b565b925060208401356118998161180b565b929592945050506040919091013590565b600080604083850312156118bd57600080fd5b82356118c88161180b565b915060208301356118d88161180b565b809150509250929050565b600080604083850312156118f657600080fd5b50508035926020909101359150565b60006020828403121561191757600080fd5b5035919050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b60006020828403121561195057600080fd5b5051919050565b60006020828403121561196957600080fd5b8151801515811461089357600080fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156119a2576119a2611979565b500190565b60008160001904831182151516156119c1576119c1611979565b500290565b6000826119e357634e487b7160e01b600052601260045260246000fd5b500490565b6000828210156119fa576119fa611979565b500390565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a2757600080fd5b81516108938161180b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a825784516001600160a01b031683529383019391830191600101611a5d565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611ab857600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220364940b10b7a2068741ce8f9faf079c77fb7f97404f4dfef355d3fef4c28d5c564736f6c63430008090033

Deployed Bytecode Sourcemap

4455:10082:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4606:64;;;;;;;;;;-1:-1:-1;4606:64:0;;;;-1:-1:-1;;;;;4606:64:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;4606:64:0;;;;;;;;5783:54;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;5783:54:0;222:177:1;7577:80:0;;;;;;;;;;-1:-1:-1;7649:5:0;;;;;;;;;;;;-1:-1:-1;;;7649:5:0;;;;7577:80;;;;;;;:::i;7999:216::-;;;;;;;;;;-1:-1:-1;7999:216:0;;;;;:::i;:::-;;:::i;:::-;;;1627:14:1;;1620:22;1602:41;;1590:2;1575:18;7999:216:0;1462:187:1;7307:88:0;;;;;;;;;;-1:-1:-1;7380:12:0;;7307:88;;10633:193;;;;;;;;;;-1:-1:-1;10633:193:0;;;;;:::i;:::-;;:::i;:::-;;5499:53;;;;;;;;;;;;;;;;8517:370;;;;;;;;;;-1:-1:-1;8517:370:0;;;;;:::i;:::-;;:::i;2693:103::-;;;;;;;;;;-1:-1:-1;2693:103:0;;;;;:::i;:::-;2748:4;2783:5;-1:-1:-1;;;;;2772:16:0;;;2783:5;;2772:16;;2693:103;7401:80;;;;;;;;;;-1:-1:-1;7401:80:0;;5080:2;2509:36:1;;2497:2;2482:18;7401:80:0;2367:184:1;13578:118:0;;;;;;;;;;;;;:::i;13704:223::-;;;;;;;;;;-1:-1:-1;13704:223:0;;;;;:::i;:::-;;:::i;5091:60::-;;;;;;;;;;;;;;;;14151:307;;;;;;;;;;-1:-1:-1;14151:307:0;;;;;:::i;:::-;;:::i;8223:122::-;;;;;;;;;;-1:-1:-1;8223:122:0;;;;;:::i;:::-;;:::i;5158:60::-;;;;;;;;;;;;;;;;5746:30;;;;;;;;;;-1:-1:-1;5746:30:0;;;;-1:-1:-1;;;5746:30:0;;;;;;7747:105;;;;;;;;;;-1:-1:-1;7747:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7831:18:0;7813:7;7831:18;;;:9;:18;;;;;;;7747:105;2802:131;;;;;;;;;;;;;:::i;10186:141::-;;;;;;;;;;-1:-1:-1;10186:141:0;;;;;:::i;:::-;;:::i;7663:78::-;;;;;;;;;;-1:-1:-1;7715:7:0;7733:5;-1:-1:-1;;;;;7733:5:0;7663:78;;10335:141;;;;;;;;;;-1:-1:-1;10335:141:0;;;;;:::i;:::-;;:::i;7487:84::-;;;;;;;;;;-1:-1:-1;7561:7:0;;;;;;;;;;;;-1:-1:-1;;;7561:7:0;;;;7487:84;;4893:65;;;;;;;;;;-1:-1:-1;4893:65:0;;;;-1:-1:-1;;;;;4893:65:0;;;5718:19;;;;;;;;;;-1:-1:-1;5718:19:0;;;;-1:-1:-1;;;;;5718:19:0;;;8353:156;;;;;;;;;;-1:-1:-1;8353:156:0;;;;;:::i;:::-;;:::i;4821:65::-;;;;;;;;;;-1:-1:-1;4821:65:0;;;;-1:-1:-1;;;;;4821:65:0;;;10484:141;;;;;;;;;;-1:-1:-1;10484:141:0;;;;;:::i;:::-;;:::i;4749:65::-;;;;;;;;;;-1:-1:-1;4749:65:0;;;;-1:-1:-1;;;;;4749:65:0;;;4677;;;;;;;;;;-1:-1:-1;4677:65:0;;;;-1:-1:-1;;;;;4677:65:0;;;10037:141;;;;;;;;;;-1:-1:-1;10037:141:0;;;;;:::i;:::-;;:::i;13079:113::-;;;;;;;;;;-1:-1:-1;13079:113:0;;;;;:::i;:::-;;:::i;7858:133::-;;;;;;;;;;-1:-1:-1;7858:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7960:19:0;;;7942:7;7960:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7858:133;13935:208;;;;;;;;;;-1:-1:-1;13935:208:0;;;;;:::i;:::-;;:::i;5687:24::-;;;;;;;;;;-1:-1:-1;5687:24:0;;;;-1:-1:-1;;;;;5687:24:0;;;7999:216;8103:10;8074:4;8091:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8091:32:0;;;;;;;;;;:41;;;8148:37;8074:4;;8091:32;;8148:37;;;;8126:6;368:25:1;;356:2;341:18;;222:177;8148:37:0;;;;;;;;-1:-1:-1;8203:4:0;7999:216;;;;;:::o;10633:193::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;;;;;;;;;10758:20:::1;::::0;10719:60:::1;::::0;-1:-1:-1;;;;;10758:20:0;;::::1;::::0;10719:60;::::1;::::0;::::1;::::0;10758:20:::1;::::0;10719:60:::1;10786:20;:32:::0;;-1:-1:-1;;;;;;10786:32:0::1;-1:-1:-1::0;;;;;10786:32:0;;;::::1;::::0;;;::::1;::::0;;10633:193::o;8517:370::-;-1:-1:-1;;;;;8637:19:0;;8617:4;8637:19;;;:11;:19;;;;;;;;8657:10;8637:31;;;;;;;;-1:-1:-1;;8637:52:0;8634:186;;8739:69;;;;;;;;;;;-1:-1:-1;;;8739:69:0;;;;;;;;-1:-1:-1;;;;;8739:19:0;;-1:-1:-1;8739:19:0;;;:11;:19;;;;;8759:10;8739:31;;;;;;;;;;:69;;8775:6;;8739:35;:69::i;:::-;-1:-1:-1;;;;;8705:19:0;;;;;;:11;:19;;;;;;;;8725:10;8705:31;;;;;;;:103;8634:186;8839:40;8853:6;8861:9;8872:6;8839:13;:40::i;:::-;8832:47;;8517:370;;;;;;:::o;13578:118::-;13635:20;;13627:61;;-1:-1:-1;;;;;13635:20:0;;;;13666:21;13627:61;;;;;13635:20;13627:61;13635:20;13627:61;13666:21;13635:20;13627:61;;;;;;;;;;;;;;;;;;;;;13578:118::o;13704:223::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;13870::::1;::::0;-1:-1:-1;;;13870:38:0;;13902:4:::1;13870:38;::::0;::::1;160:51:1::0;-1:-1:-1;;;;;13804:22:0;::::1;::::0;::::1;::::0;13841:14;;13804:22;;13870:23:::1;::::0;133:18:1;;13870:38:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13804:115;::::0;-1:-1:-1;;;;;;13804:115:0::1;::::0;;;;;;-1:-1:-1;;;;;4734:32:1;;;13804:115:0::1;::::0;::::1;4716:51:1::0;4783:18;;;4776:34;4689:18;;13804:115:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13704:223:::0;;:::o;14151:307::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;14285:1:::1;14251:29;14267:13:::0;14251;:29:::1;:::i;:::-;:35;;14243:76;;;::::0;-1:-1:-1;;;14243:76:0;;5570:2:1;14243:76:0::1;::::0;::::1;5552:21:1::0;5609:2;5589:18;;;5582:30;5648;5628:18;;;5621:58;5696:18;;14243:76:0::1;5368:352:1::0;14243:76:0::1;14331:12;:28:::0;;;14372:12:::1;:28:::0;;;14423:27:::1;14387:13:::0;14346;14423:27:::1;:::i;:::-;14412:8;:38:::0;-1:-1:-1;;14151:307:0:o;8223:122::-;8278:4;8302:35;8310:7;-1:-1:-1;;8302:7:0;:35::i;2802:131::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;2875:1:::1;2859:18:::0;;-1:-1:-1;;;;;;2859:18:0::1;::::0;;2893:32:::1;::::0;160:51:1;;;2893:32:0::1;::::0;148:2:1;133:18;2893:32:0::1;;;;;;;2802:131::o:0;10186:141::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;10285:5:::1;::::0;10261:30:::1;::::0;-1:-1:-1;;;;;10285:5:0;;::::1;::::0;10261:30;::::1;::::0;::::1;::::0;10285:5:::1;::::0;10261:30:::1;10302:5;:17:::0;;-1:-1:-1;;;;;;10302:17:0::1;-1:-1:-1::0;;;;;10302:17:0;;;::::1;::::0;;;::::1;::::0;;10186:141::o;10335:::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;10434:5:::1;::::0;10410:30:::1;::::0;-1:-1:-1;;;;;10434:5:0;;::::1;::::0;10410:30;::::1;::::0;::::1;::::0;10434:5:::1;::::0;10410:30:::1;10451:5;:17:::0;;-1:-1:-1;;;;;;10451:17:0::1;-1:-1:-1::0;;;;;10451:17:0;;;::::1;::::0;;;::::1;::::0;;10335:141::o;8353:156::-;8433:4;8457:44;8471:10;8483:9;8494:6;8457:13;:44::i;10484:141::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;10583:5:::1;::::0;10559:30:::1;::::0;-1:-1:-1;;;;;10583:5:0;;::::1;::::0;10559:30;::::1;::::0;::::1;::::0;10583:5:::1;::::0;10559:30:::1;10600:5;:17:::0;;-1:-1:-1;;;;;;10600:17:0::1;-1:-1:-1::0;;;;;10600:17:0;;;::::1;::::0;;;::::1;::::0;;10484:141::o;10037:::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;10136:5:::1;::::0;10112:30:::1;::::0;-1:-1:-1;;;;;10136:5:0;;::::1;::::0;10112:30;::::1;::::0;::::1;::::0;10136:5:::1;::::0;10112:30:::1;10153:5;:17:::0;;-1:-1:-1;;;;;;10153:17:0::1;-1:-1:-1::0;;;;;10153:17:0;;;::::1;::::0;;;::::1;::::0;;10037:141::o;13079:113::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;13156:13:::1;:28:::0;13079:113::o;13935:208::-;2748:4;2783:5;-1:-1:-1;;;;;2783:5:0;2654:10;2772:16;2638:38;;;;-1:-1:-1;;;2638:38:0;;;;;;;:::i;:::-;14037:1:::1;14020:13;:18;;14012:55;;;::::0;-1:-1:-1;;;14012:55:0;;5927:2:1;14012:55:0::1;::::0;::::1;5909:21:1::0;5966:2;5946:18;;;5939:30;6005:26;5985:18;;;5978:54;6049:18;;14012:55:0::1;5725:348:1::0;14012:55:0::1;14131:4;14113:13;14098:12;;:28;;;;:::i;:::-;14097:38;;;;:::i;:::-;14078:16;:57:::0;-1:-1:-1;13935:208:0:o;782:190::-;868:7;904:12;896:6;;;;888:29;;;;-1:-1:-1;;;888:29:0;;;;;;;;:::i;:::-;-1:-1:-1;928:9:0;940:5;944:1;940;:5;:::i;:::-;928:17;782:190;-1:-1:-1;;;;;782:190:0:o;8895:792::-;9007:6;;8987:4;;9007:6;;9004:63;;;9023:41;9038:6;9046:9;9057:6;9023:14;:41::i;:::-;9016:48;;;;9004:63;9104:4;;-1:-1:-1;;;;;9091:17:0;;;9104:4;;9091:17;;;;:38;;-1:-1:-1;9125:4:0;;-1:-1:-1;;;;;9112:17:0;;;9125:4;;9112:17;;9091:38;9087:200;;;-1:-1:-1;;;;;9154:26:0;;;;;;:15;:26;;;;;;;;;:79;;-1:-1:-1;9217:16:0;;-1:-1:-1;;;;;9184:20:0;;;;;;:9;:20;;;;;;:29;;9207:6;;9184:29;:::i;:::-;:49;;9154:79;9146:129;;;;-1:-1:-1;;;9146:129:0;;6805:2:1;9146:129:0;;;6787:21:1;6844:2;6824:18;;;6817:30;6883:34;6863:18;;;6856:62;-1:-1:-1;;;6934:18:1;;;6927:35;6979:19;;9146:129:0;6603:401:1;9146:129:0;9310:16;:14;:16::i;:::-;9307:35;;;9329:10;:8;:10::i;:::-;9375:53;;;;;;;;;;;-1:-1:-1;;;9375:53:0;;;;;;;;-1:-1:-1;;;;;9375:17:0;;-1:-1:-1;9375:17:0;;;:9;:17;;;;;;;;:53;;9397:6;;9375:21;:53::i;:::-;-1:-1:-1;;;;;9355:17:0;;;;;;:9;:17;;;;;;;;:73;;;;10923:11;:19;;;;;;;;10922:20;9466:56;;9516:6;9466:56;;;9490:23;9498:6;9506;9490:7;:23::i;:::-;-1:-1:-1;;;;;9556:20:0;;;;;;:9;:20;;;;;;9441:81;;-1:-1:-1;9556:40:0;;9441:81;9556:24;:40::i;:::-;-1:-1:-1;;;;;9533:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9614:43;;;;;;;;;;9642:14;368:25:1;;356:2;341:18;;222:177;9614:43:0;;;;;;;;-1:-1:-1;9675:4:0;;8895:792;-1:-1:-1;;;;8895:792:0:o;9699:330::-;9829:53;;;;;;;;;;;-1:-1:-1;;;9829:53:0;;;;;;;;-1:-1:-1;;;;;9829:17:0;;9792:4;9829:17;;;:9;:17;;;;;;;:53;;9851:6;;9829:21;:53::i;:::-;-1:-1:-1;;;;;9809:17:0;;;;;;;:9;:17;;;;;;:73;;;;9916:20;;;;;;;:32;;9941:6;9916:24;:32::i;:::-;-1:-1:-1;;;;;9893:20:0;;;;;;;:9;:20;;;;;;;:55;;;;9964:35;;;;;;;;;;9992:6;368:25:1;;356:2;341:18;;222:177;9964:35:0;;;;;;;;-1:-1:-1;10017:4:0;9699:330;;;;;:::o;11295:197::-;11382:4;;11344;;-1:-1:-1;;;;;11382:4:0;11368:10;:18;;;;:38;;-1:-1:-1;11400:6:0;;;;11399:7;11368:38;:62;;;;-1:-1:-1;11419:11:0;;-1:-1:-1;;;11419:11:0;;;;11368:62;:116;;;;-1:-1:-1;11471:13:0;;11461:4;11443:24;;;;:9;:24;;;;;;:41;;11368:116;11361:123;;11295:197;:::o;11500:1571::-;5892:6;:13;;-1:-1:-1;;5892:13:0;5901:4;5892:13;;;11580::::1;::::0;11673:8:::1;::::0;11655:12:::1;::::0;5892:6;;11630:59:::1;::::0;11687:1:::1;::::0;11630:52:::1;::::0;;;11580:13;;11630:24:::1;:38::i;:::-;:42:::0;::::1;:52::i;:59::-;11604:85:::0;-1:-1:-1;11700:20:0::1;11723:41;:20:::0;11604:85;11723:24:::1;:41::i;:::-;11801:16;::::0;;11815:1:::1;11801:16:::0;;;;;::::1;::::0;;11700:64;;-1:-1:-1;11777:21:0::1;::::0;11801:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;11801:16:0::1;11777:40;;11846:4;11828;11833:1;11828:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11828:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11872:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;11872:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;11828:7;;11872:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11862:4;11867:1;11862:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11862:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11956:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;11956:188:0;;11922:21:::1;::::0;11956:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;12028:12;;11898:21:::1;::::0;12071:4;;12098::::1;::::0;12118:15:::1;::::0;11956:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12155:17;12175:40;12201:13;12175:21;:25;;:40;;;;:::i;:::-;12155:60;;12226:19;12248:33;12261:19;12278:1;12261:12;;:16;;:19;;;;:::i;:::-;12248:8;::::0;;:12:::1;:33::i;:::-;12226:55;;12292:26;12321:51;12370:1;12321:44;12353:11;12321:27;12335:12;;12321:9;:13;;:27;;;;:::i;:51::-;12292:80;;12383:26;12412:44;12444:11;12412:27;12426:12;;12412:9;:13;;:27;;;;:::i;:44::-;12530:20;::::0;12522:77:::1;::::0;12383:73;;-1:-1:-1;12472:21:0::1;::::0;-1:-1:-1;;;;;12530:20:0;;::::1;::::0;12589:5:::1;::::0;12383:73;;12472:21;12522:77;12472:21;12522:77;12383:73;12530:20;12589:5;12522:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12471:128;;;12618:16;12610:59;;;::::0;-1:-1:-1;;;12610:59:0;;8926:2:1;12610:59:0::1;::::0;::::1;8908:21:1::0;8965:2;8945:18;;;8938:30;9004:32;8984:18;;;8977:60;9054:18;;12610:59:0::1;8724:354:1::0;12610:59:0::1;12685:19:::0;;12682:382:::1;;12720:6;::::0;:264:::1;::::0;-1:-1:-1;;;12720:264:0;;12796:4:::1;12720:264;::::0;::::1;9424:34:1::0;9474:18;;;9467:34;;;12720:6:0::1;9517:18:1::0;;;9510:34;;;9560:18;;;9553:34;12893:42:0::1;9603:19:1::0;;;9596:44;12954:15:0::1;9656:19:1::0;;;9649:35;-1:-1:-1;;;;;12720:6:0;;::::1;::::0;:22:::1;::::0;12750:18;;9358:19:1;;12720:264:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13004:48:0::1;::::0;;10180:25:1;;;10236:2;10221:18;;10214:34;;;13004:48:0::1;::::0;-1:-1:-1;10153:18:1;13004:48:0::1;;;;;;;12682:382;-1:-1:-1::0;;5910:6:0;:14;;-1:-1:-1;;5910:14:0;;;-1:-1:-1;;;;;;;;11500:1571:0:o;10958:329::-;11025:7;11045:17;11065:40;11090:14;;11065:20;11076:8;;11065:6;:10;;:20;;;;:::i;:40::-;11161:4;11143:24;;;;:9;:24;;;;;;11045:60;;-1:-1:-1;11143:39:0;;11045:60;11143:28;:39::i;:::-;11134:4;11116:24;;;;:9;:24;;;;;;;:66;;;;11198:42;;-1:-1:-1;;;;;11198:42:0;;;;;;;11230:9;368:25:1;;356:2;341:18;;222:177;11198:42:0;;;;;;;;11258:21;:6;11269:9;11258:10;:21::i;:::-;11251:28;10958:329;-1:-1:-1;;;;10958:329:0:o;455:179::-;513:7;;545:5;549:1;545;:5;:::i;:::-;533:17;;574:1;569;:6;;561:46;;;;-1:-1:-1;;;561:46:0;;10461:2:1;561:46:0;;;10443:21:1;10500:2;10480:18;;;10473:30;10539:29;10519:18;;;10512:57;10586:18;;561:46:0;10259:351:1;978:246:0;1036:7;1060:6;1056:47;;-1:-1:-1;1090:1:0;1083:8;;1056:47;1113:9;1125:5;1129:1;1125;:5;:::i;:::-;1113:17;-1:-1:-1;1158:1:0;1149:5;1153:1;1113:17;1149:5;:::i;:::-;:10;1141:56;;;;-1:-1:-1;;;1141:56:0;;10817:2:1;1141:56:0;;;10799:21:1;10856:2;10836:18;;;10829:30;10895:34;10875:18;;;10868:62;-1:-1:-1;;;10946:18:1;;;10939:31;10987:19;;1141:56:0;10615:397:1;1230:132:0;1288:7;1315:39;1319:1;1322;1315:39;;;;;;;;;;;;;;;;;:3;:39::i;640:136::-;698:7;725:43;729:1;732;725:43;;;;;;;;;;;;;;;;;:3;:43::i;1368:189::-;1454:7;1489:12;1482:5;1474:28;;;;-1:-1:-1;;;1474:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1513:9:0;1525:5;1529:1;1525;:5;:::i;404:597:1:-;516:4;545:2;574;563:9;556:21;606:6;600:13;649:6;644:2;633:9;629:18;622:34;674:1;684:140;698:6;695:1;692:13;684:140;;;793:14;;;789:23;;783:30;759:17;;;778:2;755:26;748:66;713:10;;684:140;;;842:6;839:1;836:13;833:91;;;912:1;907:2;898:6;887:9;883:22;879:31;872:42;833:91;-1:-1:-1;985:2:1;964:15;-1:-1:-1;;960:29:1;945:45;;;;992:2;941:54;;404:597;-1:-1:-1;;;404:597:1:o;1006:131::-;-1:-1:-1;;;;;1081:31:1;;1071:42;;1061:70;;1127:1;1124;1117:12;1142:315;1210:6;1218;1271:2;1259:9;1250:7;1246:23;1242:32;1239:52;;;1287:1;1284;1277:12;1239:52;1326:9;1313:23;1345:31;1370:5;1345:31;:::i;:::-;1395:5;1447:2;1432:18;;;;1419:32;;-1:-1:-1;;;1142:315:1:o;1654:247::-;1713:6;1766:2;1754:9;1745:7;1741:23;1737:32;1734:52;;;1782:1;1779;1772:12;1734:52;1821:9;1808:23;1840:31;1865:5;1840:31;:::i;1906:456::-;1983:6;1991;1999;2052:2;2040:9;2031:7;2027:23;2023:32;2020:52;;;2068:1;2065;2058:12;2020:52;2107:9;2094:23;2126:31;2151:5;2126:31;:::i;:::-;2176:5;-1:-1:-1;2233:2:1;2218:18;;2205:32;2246:33;2205:32;2246:33;:::i;:::-;1906:456;;2298:7;;-1:-1:-1;;;2352:2:1;2337:18;;;;2324:32;;1906:456::o;2556:401::-;2637:6;2645;2698:2;2686:9;2677:7;2673:23;2669:32;2666:52;;;2714:1;2711;2704:12;2666:52;2753:9;2740:23;2772:31;2797:5;2772:31;:::i;:::-;2822:5;-1:-1:-1;2879:2:1;2864:18;;2851:32;2892:33;2851:32;2892:33;:::i;:::-;2944:7;2934:17;;;2556:401;;;;;:::o;2962:248::-;3030:6;3038;3091:2;3079:9;3070:7;3066:23;3062:32;3059:52;;;3107:1;3104;3097:12;3059:52;-1:-1:-1;;3130:23:1;;;3200:2;3185:18;;;3172:32;;-1:-1:-1;2962:248:1:o;3215:180::-;3274:6;3327:2;3315:9;3306:7;3302:23;3298:32;3295:52;;;3343:1;3340;3333:12;3295:52;-1:-1:-1;3366:23:1;;3215:180;-1:-1:-1;3215:180:1:o;4019:329::-;4221:2;4203:21;;;4260:1;4240:18;;;4233:29;-1:-1:-1;;;4293:2:1;4278:18;;4271:36;4339:2;4324:18;;4019:329::o;4353:184::-;4423:6;4476:2;4464:9;4455:7;4451:23;4447:32;4444:52;;;4492:1;4489;4482:12;4444:52;-1:-1:-1;4515:16:1;;4353:184;-1:-1:-1;4353:184:1:o;4821:277::-;4888:6;4941:2;4929:9;4920:7;4916:23;4912:32;4909:52;;;4957:1;4954;4947:12;4909:52;4989:9;4983:16;5042:5;5035:13;5028:21;5021:5;5018:32;5008:60;;5064:1;5061;5054:12;5103:127;5164:10;5159:3;5155:20;5152:1;5145:31;5195:4;5192:1;5185:15;5219:4;5216:1;5209:15;5235:128;5275:3;5306:1;5302:6;5299:1;5296:13;5293:39;;;5312:18;;:::i;:::-;-1:-1:-1;5348:9:1;;5235:128::o;6078:168::-;6118:7;6184:1;6180;6176:6;6172:14;6169:1;6166:21;6161:1;6154:9;6147:17;6143:45;6140:71;;;6191:18;;:::i;:::-;-1:-1:-1;6231:9:1;;6078:168::o;6251:217::-;6291:1;6317;6307:132;;6361:10;6356:3;6352:20;6349:1;6342:31;6396:4;6393:1;6386:15;6424:4;6421:1;6414:15;6307:132;-1:-1:-1;6453:9:1;;6251:217::o;6473:125::-;6513:4;6541:1;6538;6535:8;6532:34;;;6546:18;;:::i;:::-;-1:-1:-1;6583:9:1;;6473:125::o;7141:127::-;7202:10;7197:3;7193:20;7190:1;7183:31;7233:4;7230:1;7223:15;7257:4;7254:1;7247:15;7273:251;7343:6;7396:2;7384:9;7375:7;7371:23;7367:32;7364:52;;;7412:1;7409;7402:12;7364:52;7444:9;7438:16;7463:31;7488:5;7463:31;:::i;7529:980::-;7791:4;7839:3;7828:9;7824:19;7870:6;7859:9;7852:25;7896:2;7934:6;7929:2;7918:9;7914:18;7907:34;7977:3;7972:2;7961:9;7957:18;7950:31;8001:6;8036;8030:13;8067:6;8059;8052:22;8105:3;8094:9;8090:19;8083:26;;8144:2;8136:6;8132:15;8118:29;;8165:1;8175:195;8189:6;8186:1;8183:13;8175:195;;;8254:13;;-1:-1:-1;;;;;8250:39:1;8238:52;;8345:15;;;;8310:12;;;;8286:1;8204:9;8175:195;;;-1:-1:-1;;;;;;;8426:32:1;;;;8421:2;8406:18;;8399:60;-1:-1:-1;;;8490:3:1;8475:19;8468:35;8387:3;7529:980;-1:-1:-1;;;7529:980:1:o;9695:306::-;9783:6;9791;9799;9852:2;9840:9;9831:7;9827:23;9823:32;9820:52;;;9868:1;9865;9858:12;9820:52;9897:9;9891:16;9881:26;;9947:2;9936:9;9932:18;9926:25;9916:35;;9991:2;9980:9;9976:18;9970:25;9960:35;;9695:306;;;;;:::o

Swarm Source

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