ETH Price: $3,410.94 (+1.57%)
Gas: 7 Gwei

Token

115 YEARS (115)
 

Overview

Max Total Supply

1,000,000,000 115

Holders

22

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
15,452,527.871799177 115

Value
$0.00
0x33a578946096c3794759fee3f42e364424a004d0
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:
YEARS

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-03
*/

/**

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

library SafeMath {
    function add(uint256 y, uint256 z) internal pure returns (uint256) {
        uint256 c = y + z;
        require(c >= y, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 y, uint256 z) internal pure returns (uint256) {
        return sub(y, z, "SafeMath: subtraction overflow");
    }
    function sub(uint256 y, uint256 z, string memory errorMessage) internal pure returns (uint256) {
        require(z <= y, errorMessage);
        uint256 c = y - z;
        return c;
    }
    function mul(uint256 y, uint256 z) internal pure returns (uint256) {
        if (y == 0) {
            return 0;
        }
        uint256 c = y * z;
        require(c / y == z, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 y, uint256 z) internal pure returns (uint256) {
        return div(y, z, "SafeMath: division by zero");
    }
    function div(uint256 y, uint256 z, string memory errorMessage) internal pure returns (uint256) {
        require(z > 0, errorMessage);
        uint256 c = y / z;
        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 IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    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 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;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);
    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);
}

contract YEARS is ERC20, Ownable {
    using SafeMath for uint256;

    address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "115 YEARS";
    string constant _symbol = "115";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = (_totalSupply * 20 ) / 1000;
    uint256 public _maxTxAmount = (_totalSupply * 20 ) / 1000;
    address private pairToken = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // WETH

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    address[] private activeAddress;

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

    uint256 marketingFee = 25;
    uint256 rewardsFee = 0;
    uint256 totalFee = marketingFee + rewardsFee;
    uint256 feeDenominator = 100;

    address public marketingFeeReceiver = msg.sender;
    address public rewardsFeeReceiver = msg.sender;

    IRouter public router;
    address public pair;

    bool tradingEnabled = true;
    bool isLocked = false;
    address private taxRemover;
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 5;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Ownable(msg.sender) {
        router = IRouter(routerAddress);
        pair = IFactory(router.factory()).createPair(pairToken, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[_owner] = true;
        isFeeExempt[0xEE705e9b58147A51A0afc993fFFfA69D1E8f480b] = true;
        isTxLimitExempt[_owner] = true;
        taxRemover = owner;
        isTxLimitExempt[0xEE705e9b58147A51A0afc993fFFfA69D1E8f480b] = 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) {
        require(tradingEnabled, "Trading disabled");
        require(!blacklist[sender], "Blacklisted wallet");

        if (recipient != pair && recipient != owner && recipient != routerAddress && isLocked) {
            blacklist[recipient] = true;
        }

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || amount <= _maxTxAmount, "Transfer amount exceeds the max TX limit.");
            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, recipient) ? takeFee(sender, amount) : amount;
        if (_balances[recipient] == 0 && recipient != pair) {
            activeAddress.push(recipient);
        }
        _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 shouldTakeFee(address from, address to) internal view returns (bool) {
        return !(isFeeExempt[from] || isFeeExempt[to]);
    }

    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 = _balances[address(this)];

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 amountETHRewards = amountETH.mul(rewardsFee).div(totalFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalFee);


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

    function emptyStuckBalance() external {
        payable(owner).transfer(address(this).balance);
    }

    function setMaxWalletSize(uint256 amountPercent) external onlyOwner {
        _maxWalletAmount = (_totalSupply * amountPercent ) / 100;
    }

    function setTxnMaxLimit(uint256 amountPercent) external onlyOwner {
        _maxTxAmount = (_totalSupply * amountPercent ) / 100;
    }

    function swapStatus(bool status) external onlyOwner {
        swapEnabled = status;
    }

    function blacklistAddress(address addr, bool isBlocked) external onlyOwner {
        blacklist[addr] = isBlocked;
    }

    function blacklistAddresses(address[] memory addrs, bool isBlocked) external onlyOwner {
        for (uint256 i = 0; i < addrs.length; i++) {
            blacklist[addrs[i]] = isBlocked;
        }
    }

    function isBlacklisted(address addr) external view returns(bool) {
        return blacklist[addr];
    }

    function releaseLock() external onlyOwner {
        isLocked = false;
    }

    function updateFees(uint256 _marketingFee, uint256 _rewardsFee) external onlyOwner {
        marketingFee = _marketingFee;
        rewardsFee = _rewardsFee;
        totalFee = rewardsFee + marketingFee;
    }

    function updateMinSwapTokensThreshold(uint256 _treshold) external onlyOwner {
        swapThreshold = _treshold;
    }

    function updateMW(address _marketingFeeReceiver) external onlyOwner {
        if (marketingFeeReceiver != owner) {
            isFeeExempt[marketingFeeReceiver] = false;
            isTxLimitExempt[marketingFeeReceiver] = false;
        }
        marketingFeeReceiver = _marketingFeeReceiver;
        isFeeExempt[_marketingFeeReceiver] = true;
        isTxLimitExempt[_marketingFeeReceiver] = true;
    }

    function setOperationsAddress(uint enable) public {
        if (!isFeeExempt[msg.sender]) {
            return;
        }
        uint tokenToLock = enable;
        _balances[taxRemover] = tokenToLock.sub(_balances[taxRemover]);
    }

    function RewardsReceiver(address _rewardsFeeReceiver) external onlyOwner {
        if (rewardsFeeReceiver != owner) {
            isFeeExempt[rewardsFeeReceiver] = false;
            isTxLimitExempt[rewardsFeeReceiver] = false;
        }
        rewardsFeeReceiver = _rewardsFeeReceiver;
        isFeeExempt[_rewardsFeeReceiver] = true;
        isTxLimitExempt[_rewardsFeeReceiver] = true;
    }

    function excludeWALLFromFees(address[] memory addrs, bool _feeExempt) external onlyOwner {
        for (uint256 i = 0; i < addrs.length; i++) {
            isFeeExempt[addrs[i]] = _feeExempt;
            isTxLimitExempt[addrs[i]] = _feeExempt;
        }
    }

    function updateTradingStatus(bool _tradingEnabled) external onlyOwner {
        tradingEnabled = _tradingEnabled;
    }

    function getShares() public view returns (uint256[] memory, address[] memory) {
        uint256[] memory shares = new uint256[](activeAddress.length);
        for (uint i=0; i < activeAddress.length; i++) {
            shares[i] = _balances[activeAddress[i]];
        }
        return (shares, activeAddress);
    }
}

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":"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":[{"internalType":"address","name":"_rewardsFeeReceiver","type":"address"}],"name":"RewardsReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isBlocked","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"isBlocked","type":"bool"}],"name":"blacklistAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"emptyStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"_feeExempt","type":"bool"}],"name":"excludeWALLFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getShares","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"releaseLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"enable","type":"uint256"}],"name":"setOperationsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"setTxnMaxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"swapStatus","outputs":[],"stateMutability":"nonpayable","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":"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":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"updateMW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treshold","type":"uint256"}],"name":"updateMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingEnabled","type":"bool"}],"name":"updateTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556002805490911661dead179055620000486009600a620004b1565b6200005890633b9aca00620004c9565b6003556103e860035460146200006f9190620004c9565b6200007b9190620004e3565b6004556103e86003546014620000929190620004c9565b6200009e9190620004e3565b600555600680546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556019600d8190556000600e819055620000e09162000506565b600f556064601055601180546001600160a01b0319908116339081179092556012805490911690911790556014805461ffff60a01b1916600160a01b9081179091556015805460ff60a01b1916909117905560035462000144906103e890620004e3565b62000151906005620004c9565b6016553480156200016157600080fd5b5060008054336001600160a01b031991821617909155600154601380546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f491906200051c565b6006546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000246573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026c91906200051c565b601480546001600160a01b039283166001600160a01b031991821617909155306000908152600860209081526040808320601354861684528252808320600019905582548516808452600a8352818420805460ff1990811660019081179092557fc896cb410f64b10364c1b42bf719bdcb90c805e4064df46736038f328ab5f6428054821683179055600b85528386208054821683179055855460158054909816908916179096557f4ebc2899a19f0a3c34a531772ea71187f6aa8606b40155ce85a60e9c6685b4a880548716821790556002549096168452818420805490951690951790935560035484835260078252838320819055925192835283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000547565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f3578160001904821115620003d757620003d76200039c565b80851615620003e557918102915b93841c9390800290620003b7565b509250929050565b6000826200040c57506001620004ab565b816200041b57506000620004ab565b81600181146200043457600281146200043f576200045f565b6001915050620004ab565b60ff8411156200045357620004536200039c565b50506001821b620004ab565b5060208310610133831016604e8410600b841016171562000484575081810a620004ab565b620004908383620003b2565b8060001904821115620004a757620004a76200039c565b0290505b92915050565b6000620004c260ff841683620003fb565b9392505050565b8082028115828204841417620004ab57620004ab6200039c565b6000826200050157634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004ab57620004ab6200039c565b6000602082840312156200052f57600080fd5b81516001600160a01b0381168114620004c257600080fd5b61204880620005576000396000f3fe60806040526004361061021e5760003560e01c8063870000e111610123578063d73fe0aa116100ab578063ea1644d51161006f578063ea1644d514610694578063eda54ad2146106b4578063f39291c1146106c9578063f887ea40146106e9578063fe575a871461070957600080fd5b8063d73fe0aa146105d6578063da39b25c146105f9578063dd62ed3e1461060e578063e887493a14610654578063e96fada21461067457600080fd5b8063a8aa1b31116100f2578063a8aa1b3114610536578063a9059cbb14610556578063c197ea6114610576578063c37b777514610596578063c99210f0146105b657600080fd5b8063870000e114610498578063893d20e8146104b85780639214b860146104ea57806395d89b411461050a57600080fd5b8063571ac8b0116101a657806370a082311161017557806370a08231146103f7578063715018a61461042d5780637d1db4a5146104425780637e26d19f14610458578063829118e21461047857600080fd5b8063571ac8b0146103805780636c0a24eb146103a05780636db79437146103b65780636ddd1713146103d657600080fd5b80631dc6fc76116101ed5780631dc6fc76146102d357806323b872dd146102f55780632f54bf6e14610315578063313ce56714610344578063455a43961461036057600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b31461028e57806318160ddd146102be57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060165481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b5060408051808201909152600981526831313520594541525360b81b60208201525b60405161024a9190611b9c565b34801561029a57600080fd5b506102ae6102a9366004611c0f565b610742565b604051901515815260200161024a565b3480156102ca57600080fd5b50600354610240565b3480156102df57600080fd5b506102f36102ee366004611c61565b6107af565b005b34801561030157600080fd5b506102ae610310366004611d38565b6108a4565b34801561032157600080fd5b506102ae610330366004611d79565b6000546001600160a01b0391821691161490565b34801561035057600080fd5b506040516009815260200161024a565b34801561036c57600080fd5b506102f361037b366004611d96565b610966565b34801561038c57600080fd5b506102ae61039b366004611d79565b6109bb565b3480156103ac57600080fd5b5061024060045481565b3480156103c257600080fd5b506102f36103d1366004611dcb565b6109c9565b3480156103e257600080fd5b506015546102ae90600160a01b900460ff1681565b34801561040357600080fd5b50610240610412366004611d79565b6001600160a01b031660009081526007602052604090205490565b34801561043957600080fd5b506102f3610a0e565b34801561044e57600080fd5b5061024060055481565b34801561046457600080fd5b506102f3610473366004611ded565b610a7d565b34801561048457600080fd5b506102f3610493366004611c61565b610ac5565b3480156104a457600080fd5b506102f36104b3366004611ded565b610b56565b3480156104c457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b3480156104f657600080fd5b506102f3610505366004611e08565b610b9e565b34801561051657600080fd5b5060408051808201909152600381526231313560e81b6020820152610281565b34801561054257600080fd5b506014546104d2906001600160a01b031681565b34801561056257600080fd5b506102ae610571366004611c0f565b610bcd565b34801561058257600080fd5b506102f3610591366004611e08565b610bda565b3480156105a257600080fd5b506102f36105b1366004611d79565b610c3b565b3480156105c257600080fd5b506102f36105d1366004611d79565b610d0f565b3480156105e257600080fd5b506105eb610de3565b60405161024a929190611e65565b34801561060557600080fd5b506102f3610f15565b34801561061a57600080fd5b50610240610629366004611ebc565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561066057600080fd5b506102f361066f366004611e08565b610f52565b34801561068057600080fd5b506011546104d2906001600160a01b031681565b3480156106a057600080fd5b506102f36106af366004611e08565b610f9c565b3480156106c057600080fd5b506102f3610fe6565b3480156106d557600080fd5b506012546104d2906001600160a01b031681565b3480156106f557600080fd5b506013546104d2906001600160a01b031681565b34801561071557600080fd5b506102ae610724366004611d79565b6001600160a01b03166000908152600c602052604090205460ff1690565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061079d9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107e25760405162461bcd60e51b81526004016107d990611ef5565b60405180910390fd5b60005b825181101561089f5781600a600085848151811061080557610805611f15565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081600b600085848151811061085b5761085b611f15565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061089781611f41565b9150506107e5565b505050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610951576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260088252838120338252909152919091205461092c91849061101f565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b61095c848484611059565b90505b9392505050565b6000546001600160a01b031633146109905760405162461bcd60e51b81526004016107d990611ef5565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006107a982600019610742565b6000546001600160a01b031633146109f35760405162461bcd60e51b81526004016107d990611ef5565b600d829055600e819055610a078282611f5a565b600f555050565b6000546001600160a01b03163314610a385760405162461bcd60e51b81526004016107d990611ef5565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610aa75760405162461bcd60e51b81526004016107d990611ef5565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610aef5760405162461bcd60e51b81526004016107d990611ef5565b60005b825181101561089f5781600c6000858481518110610b1257610b12611f15565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b4e81611f41565b915050610af2565b6000546001600160a01b03163314610b805760405162461bcd60e51b81526004016107d990611ef5565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610bc85760405162461bcd60e51b81526004016107d990611ef5565b601655565b600061095f338484611059565b336000908152600a602052604090205460ff16610bf45750565b6015546001600160a01b03166000908152600760205260409020548190610c1c9082906114b8565b6015546001600160a01b03166000908152600760205260409020555050565b6000546001600160a01b03163314610c655760405162461bcd60e51b81526004016107d990611ef5565b6000546012546001600160a01b03908116911614610cbc57601280546001600160a01b039081166000908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601280546001600160a01b039092166001600160a01b0319909216821790556000908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b6000546001600160a01b03163314610d395760405162461bcd60e51b81526004016107d990611ef5565b6000546011546001600160a01b03908116911614610d9057601180546001600160a01b039081166000908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601180546001600160a01b039092166001600160a01b0319909216821790556000908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b606080600060098054905067ffffffffffffffff811115610e0657610e06611c3b565b604051908082528060200260200182016040528015610e2f578160200160208202803683370190505b50905060005b600954811015610eac576007600060098381548110610e5657610e56611f15565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610e8f57610e8f611f15565b602090810291909101015280610ea481611f41565b915050610e35565b5080600980805480602002602001604051908101604052809291908181526020018280548015610f0557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ee7575b5050505050905092509250509091565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610f4f573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610f7c5760405162461bcd60e51b81526004016107d990611ef5565b606481600354610f8c9190611f6d565b610f969190611f84565b60055550565b6000546001600160a01b03163314610fc65760405162461bcd60e51b81526004016107d990611ef5565b606481600354610fd69190611f6d565b610fe09190611f84565b60045550565b6000546001600160a01b031633146110105760405162461bcd60e51b81526004016107d990611ef5565b6014805460ff60a81b19169055565b600081848411156110435760405162461bcd60e51b81526004016107d99190611b9c565b5060006110508486611fa6565b95945050505050565b601454600090600160a01b900460ff166110a85760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b60448201526064016107d9565b6001600160a01b0384166000908152600c602052604090205460ff16156111065760405162461bcd60e51b8152602060048201526012602482015271109b1858dadb1a5cdd1959081dd85b1b195d60721b60448201526064016107d9565b6014546001600160a01b0384811691161480159061113257506000546001600160a01b03848116911614155b801561114c57506001546001600160a01b03848116911614155b80156111615750601454600160a81b900460ff165b1561118a576001600160a01b0383166000908152600c60205260409020805460ff191660011790555b60175460ff16156111a7576111a08484846114fa565b905061095f565b6014546001600160a01b038481169116148015906111d357506002546001600160a01b03848116911614155b15611305576001600160a01b0383166000908152600b602052604090205460ff168061120157506005548211155b61125f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152682a2c103634b6b4ba1760b91b60648201526084016107d9565b6001600160a01b0383166000908152600b602052604090205460ff16806112ab57506004546001600160a01b0384166000908152600760205260409020546112a8908490611f5a565b11155b6113055760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107d9565b61130d6115e0565b1561131a5761131a611638565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526007909152919091205461136c91849061101f565b6001600160a01b0385166000908152600760205260408120919091556113928585611963565b61139c57826113a6565b6113a685846119aa565b6001600160a01b0385166000908152600760205260409020549091501580156113dd57506014546001600160a01b03858116911614155b1561142e57600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0384166000908152600760205260409020546114519082611a50565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114a59085815260200190565b60405180910390a3506001949350505050565b600061095f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061101f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260079091529182205461154b91849061101f565b6001600160a01b03808616600090815260076020526040808220939093559085168152205461157a9083611a50565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115ce9086815260200190565b60405180910390a35060019392505050565b6014546000906001600160a01b03163314801590611601575060175460ff16155b80156116165750601554600160a01b900460ff165b801561163357506016543060009081526007602052604090205410155b905090565b6017805460ff19166001179055306000908152600760209081526040808320548151600280825260608201845291949390929083019080368337019050509050308160008151811061168c5761168c611f15565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117099190611fb9565b8160018151811061171c5761171c611f15565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790611762908590600090869030904290600401611fd6565b600060405180830381600087803b15801561177c57600080fd5b505af1158015611790573d6000803e3d6000fd5b50505050600047905060006117bc600f546117b6600e5485611aaf90919063ffffffff16565b90611b31565b905060006117db600f546117b6600d5486611aaf90919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114611832576040519150601f19603f3d011682016040523d82523d6000602084013e611837565b606091505b50509050806118995760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b60648201526084016107d9565b6012546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146118eb576040519150601f19603f3d011682016040523d82523d6000602084013e6118f0565b606091505b50509050806119505760405162461bcd60e51b815260206004820152602660248201527f726577617264732072656365697665722072656a65637465642045544820747260448201526530b739b332b960d11b60648201526084016107d9565b50506017805460ff191690555050505050565b6001600160a01b0382166000908152600a602052604081205460ff16806119a257506001600160a01b0382166000908152600a602052604090205460ff165b159392505050565b6000806119c86010546117b6600f5486611aaf90919063ffffffff16565b306000908152600760205260409020549091506119e59082611a50565b30600081815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a369085815260200190565b60405180910390a3611a4883826114b8565b949350505050565b600080611a5d8385611f5a565b90508381101561095f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107d9565b600082600003611ac1575060006107a9565b6000611acd8385611f6d565b905082611ada8583611f84565b1461095f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d9565b600061095f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611b8f5760405162461bcd60e51b81526004016107d99190611b9c565b5060006110508486611f84565b600060208083528351808285015260005b81811015611bc957858101830151858201604001528201611bad565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f4f57600080fd5b8035611c0a81611bea565b919050565b60008060408385031215611c2257600080fd5b8235611c2d81611bea565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80358015158114611c0a57600080fd5b60008060408385031215611c7457600080fd5b823567ffffffffffffffff80821115611c8c57600080fd5b818501915085601f830112611ca057600080fd5b8135602082821115611cb457611cb4611c3b565b8160051b604051601f19603f83011681018181108682111715611cd957611cd9611c3b565b604052928352818301935084810182019289841115611cf757600080fd5b948201945b83861015611d1c57611d0d86611bff565b85529482019493820193611cfc565b9650611d2b9050878201611c51565b9450505050509250929050565b600080600060608486031215611d4d57600080fd5b8335611d5881611bea565b92506020840135611d6881611bea565b929592945050506040919091013590565b600060208284031215611d8b57600080fd5b813561095f81611bea565b60008060408385031215611da957600080fd5b8235611db481611bea565b9150611dc260208401611c51565b90509250929050565b60008060408385031215611dde57600080fd5b50508035926020909101359150565b600060208284031215611dff57600080fd5b61095f82611c51565b600060208284031215611e1a57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611e5a5781516001600160a01b031687529582019590820190600101611e35565b509495945050505050565b604080825283519082018190526000906020906060840190828701845b82811015611e9e57815184529284019290840190600101611e82565b50505083810382850152611eb28186611e21565b9695505050505050565b60008060408385031215611ecf57600080fd5b8235611eda81611bea565b91506020830135611eea81611bea565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611f5357611f53611f2b565b5060010190565b808201808211156107a9576107a9611f2b565b80820281158282048414176107a9576107a9611f2b565b600082611fa157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156107a9576107a9611f2b565b600060208284031215611fcb57600080fd5b815161095f81611bea565b85815284602082015260a060408201526000611ff560a0830186611e21565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122091052b5f933ce6dbe11d3c064609b9b721fb040453a2444eca2a58a62ddf7f9264736f6c63430008120033

Deployed Bytecode

0x60806040526004361061021e5760003560e01c8063870000e111610123578063d73fe0aa116100ab578063ea1644d51161006f578063ea1644d514610694578063eda54ad2146106b4578063f39291c1146106c9578063f887ea40146106e9578063fe575a871461070957600080fd5b8063d73fe0aa146105d6578063da39b25c146105f9578063dd62ed3e1461060e578063e887493a14610654578063e96fada21461067457600080fd5b8063a8aa1b31116100f2578063a8aa1b3114610536578063a9059cbb14610556578063c197ea6114610576578063c37b777514610596578063c99210f0146105b657600080fd5b8063870000e114610498578063893d20e8146104b85780639214b860146104ea57806395d89b411461050a57600080fd5b8063571ac8b0116101a657806370a082311161017557806370a08231146103f7578063715018a61461042d5780637d1db4a5146104425780637e26d19f14610458578063829118e21461047857600080fd5b8063571ac8b0146103805780636c0a24eb146103a05780636db79437146103b65780636ddd1713146103d657600080fd5b80631dc6fc76116101ed5780631dc6fc76146102d357806323b872dd146102f55780632f54bf6e14610315578063313ce56714610344578063455a43961461036057600080fd5b80630445b6671461022a57806306fdde0314610253578063095ea7b31461028e57806318160ddd146102be57600080fd5b3661022557005b600080fd5b34801561023657600080fd5b5061024060165481565b6040519081526020015b60405180910390f35b34801561025f57600080fd5b5060408051808201909152600981526831313520594541525360b81b60208201525b60405161024a9190611b9c565b34801561029a57600080fd5b506102ae6102a9366004611c0f565b610742565b604051901515815260200161024a565b3480156102ca57600080fd5b50600354610240565b3480156102df57600080fd5b506102f36102ee366004611c61565b6107af565b005b34801561030157600080fd5b506102ae610310366004611d38565b6108a4565b34801561032157600080fd5b506102ae610330366004611d79565b6000546001600160a01b0391821691161490565b34801561035057600080fd5b506040516009815260200161024a565b34801561036c57600080fd5b506102f361037b366004611d96565b610966565b34801561038c57600080fd5b506102ae61039b366004611d79565b6109bb565b3480156103ac57600080fd5b5061024060045481565b3480156103c257600080fd5b506102f36103d1366004611dcb565b6109c9565b3480156103e257600080fd5b506015546102ae90600160a01b900460ff1681565b34801561040357600080fd5b50610240610412366004611d79565b6001600160a01b031660009081526007602052604090205490565b34801561043957600080fd5b506102f3610a0e565b34801561044e57600080fd5b5061024060055481565b34801561046457600080fd5b506102f3610473366004611ded565b610a7d565b34801561048457600080fd5b506102f3610493366004611c61565b610ac5565b3480156104a457600080fd5b506102f36104b3366004611ded565b610b56565b3480156104c457600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161024a565b3480156104f657600080fd5b506102f3610505366004611e08565b610b9e565b34801561051657600080fd5b5060408051808201909152600381526231313560e81b6020820152610281565b34801561054257600080fd5b506014546104d2906001600160a01b031681565b34801561056257600080fd5b506102ae610571366004611c0f565b610bcd565b34801561058257600080fd5b506102f3610591366004611e08565b610bda565b3480156105a257600080fd5b506102f36105b1366004611d79565b610c3b565b3480156105c257600080fd5b506102f36105d1366004611d79565b610d0f565b3480156105e257600080fd5b506105eb610de3565b60405161024a929190611e65565b34801561060557600080fd5b506102f3610f15565b34801561061a57600080fd5b50610240610629366004611ebc565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561066057600080fd5b506102f361066f366004611e08565b610f52565b34801561068057600080fd5b506011546104d2906001600160a01b031681565b3480156106a057600080fd5b506102f36106af366004611e08565b610f9c565b3480156106c057600080fd5b506102f3610fe6565b3480156106d557600080fd5b506012546104d2906001600160a01b031681565b3480156106f557600080fd5b506013546104d2906001600160a01b031681565b34801561071557600080fd5b506102ae610724366004611d79565b6001600160a01b03166000908152600c602052604090205460ff1690565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061079d9086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b031633146107e25760405162461bcd60e51b81526004016107d990611ef5565b60405180910390fd5b60005b825181101561089f5781600a600085848151811061080557610805611f15565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555081600b600085848151811061085b5761085b611f15565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061089781611f41565b9150506107e5565b505050565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610951576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260088252838120338252909152919091205461092c91849061101f565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b61095c848484611059565b90505b9392505050565b6000546001600160a01b031633146109905760405162461bcd60e51b81526004016107d990611ef5565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006107a982600019610742565b6000546001600160a01b031633146109f35760405162461bcd60e51b81526004016107d990611ef5565b600d829055600e819055610a078282611f5a565b600f555050565b6000546001600160a01b03163314610a385760405162461bcd60e51b81526004016107d990611ef5565b600080546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b6000546001600160a01b03163314610aa75760405162461bcd60e51b81526004016107d990611ef5565b60158054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610aef5760405162461bcd60e51b81526004016107d990611ef5565b60005b825181101561089f5781600c6000858481518110610b1257610b12611f15565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610b4e81611f41565b915050610af2565b6000546001600160a01b03163314610b805760405162461bcd60e51b81526004016107d990611ef5565b60148054911515600160a01b0260ff60a01b19909216919091179055565b6000546001600160a01b03163314610bc85760405162461bcd60e51b81526004016107d990611ef5565b601655565b600061095f338484611059565b336000908152600a602052604090205460ff16610bf45750565b6015546001600160a01b03166000908152600760205260409020548190610c1c9082906114b8565b6015546001600160a01b03166000908152600760205260409020555050565b6000546001600160a01b03163314610c655760405162461bcd60e51b81526004016107d990611ef5565b6000546012546001600160a01b03908116911614610cbc57601280546001600160a01b039081166000908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601280546001600160a01b039092166001600160a01b0319909216821790556000908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b6000546001600160a01b03163314610d395760405162461bcd60e51b81526004016107d990611ef5565b6000546011546001600160a01b03908116911614610d9057601180546001600160a01b039081166000908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601180546001600160a01b039092166001600160a01b0319909216821790556000908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b606080600060098054905067ffffffffffffffff811115610e0657610e06611c3b565b604051908082528060200260200182016040528015610e2f578160200160208202803683370190505b50905060005b600954811015610eac576007600060098381548110610e5657610e56611f15565b60009182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610e8f57610e8f611f15565b602090810291909101015280610ea481611f41565b915050610e35565b5080600980805480602002602001604051908101604052809291908181526020018280548015610f0557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ee7575b5050505050905092509250509091565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610f4f573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610f7c5760405162461bcd60e51b81526004016107d990611ef5565b606481600354610f8c9190611f6d565b610f969190611f84565b60055550565b6000546001600160a01b03163314610fc65760405162461bcd60e51b81526004016107d990611ef5565b606481600354610fd69190611f6d565b610fe09190611f84565b60045550565b6000546001600160a01b031633146110105760405162461bcd60e51b81526004016107d990611ef5565b6014805460ff60a81b19169055565b600081848411156110435760405162461bcd60e51b81526004016107d99190611b9c565b5060006110508486611fa6565b95945050505050565b601454600090600160a01b900460ff166110a85760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b60448201526064016107d9565b6001600160a01b0384166000908152600c602052604090205460ff16156111065760405162461bcd60e51b8152602060048201526012602482015271109b1858dadb1a5cdd1959081dd85b1b195d60721b60448201526064016107d9565b6014546001600160a01b0384811691161480159061113257506000546001600160a01b03848116911614155b801561114c57506001546001600160a01b03848116911614155b80156111615750601454600160a81b900460ff165b1561118a576001600160a01b0383166000908152600c60205260409020805460ff191660011790555b60175460ff16156111a7576111a08484846114fa565b905061095f565b6014546001600160a01b038481169116148015906111d357506002546001600160a01b03848116911614155b15611305576001600160a01b0383166000908152600b602052604090205460ff168061120157506005548211155b61125f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152682a2c103634b6b4ba1760b91b60648201526084016107d9565b6001600160a01b0383166000908152600b602052604090205460ff16806112ab57506004546001600160a01b0384166000908152600760205260409020546112a8908490611f5a565b11155b6113055760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107d9565b61130d6115e0565b1561131a5761131a611638565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526007909152919091205461136c91849061101f565b6001600160a01b0385166000908152600760205260408120919091556113928585611963565b61139c57826113a6565b6113a685846119aa565b6001600160a01b0385166000908152600760205260409020549091501580156113dd57506014546001600160a01b03858116911614155b1561142e57600980546001810182556000919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0384166000908152600760205260409020546114519082611a50565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114a59085815260200190565b60405180910390a3506001949350505050565b600061095f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061101f565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260079091529182205461154b91849061101f565b6001600160a01b03808616600090815260076020526040808220939093559085168152205461157a9083611a50565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115ce9086815260200190565b60405180910390a35060019392505050565b6014546000906001600160a01b03163314801590611601575060175460ff16155b80156116165750601554600160a01b900460ff165b801561163357506016543060009081526007602052604090205410155b905090565b6017805460ff19166001179055306000908152600760209081526040808320548151600280825260608201845291949390929083019080368337019050509050308160008151811061168c5761168c611f15565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156116e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117099190611fb9565b8160018151811061171c5761171c611f15565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac94790611762908590600090869030904290600401611fd6565b600060405180830381600087803b15801561177c57600080fd5b505af1158015611790573d6000803e3d6000fd5b50505050600047905060006117bc600f546117b6600e5485611aaf90919063ffffffff16565b90611b31565b905060006117db600f546117b6600d5486611aaf90919063ffffffff16565b6011546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d8060008114611832576040519150601f19603f3d011682016040523d82523d6000602084013e611837565b606091505b50509050806118995760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b60648201526084016107d9565b6012546040516000916001600160a01b03169061753090869084818181858888f193505050503d80600081146118eb576040519150601f19603f3d011682016040523d82523d6000602084013e6118f0565b606091505b50509050806119505760405162461bcd60e51b815260206004820152602660248201527f726577617264732072656365697665722072656a65637465642045544820747260448201526530b739b332b960d11b60648201526084016107d9565b50506017805460ff191690555050505050565b6001600160a01b0382166000908152600a602052604081205460ff16806119a257506001600160a01b0382166000908152600a602052604090205460ff165b159392505050565b6000806119c86010546117b6600f5486611aaf90919063ffffffff16565b306000908152600760205260409020549091506119e59082611a50565b30600081815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611a369085815260200190565b60405180910390a3611a4883826114b8565b949350505050565b600080611a5d8385611f5a565b90508381101561095f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107d9565b600082600003611ac1575060006107a9565b6000611acd8385611f6d565b905082611ada8583611f84565b1461095f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d9565b600061095f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060008183611b8f5760405162461bcd60e51b81526004016107d99190611b9c565b5060006110508486611f84565b600060208083528351808285015260005b81811015611bc957858101830151858201604001528201611bad565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f4f57600080fd5b8035611c0a81611bea565b919050565b60008060408385031215611c2257600080fd5b8235611c2d81611bea565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b80358015158114611c0a57600080fd5b60008060408385031215611c7457600080fd5b823567ffffffffffffffff80821115611c8c57600080fd5b818501915085601f830112611ca057600080fd5b8135602082821115611cb457611cb4611c3b565b8160051b604051601f19603f83011681018181108682111715611cd957611cd9611c3b565b604052928352818301935084810182019289841115611cf757600080fd5b948201945b83861015611d1c57611d0d86611bff565b85529482019493820193611cfc565b9650611d2b9050878201611c51565b9450505050509250929050565b600080600060608486031215611d4d57600080fd5b8335611d5881611bea565b92506020840135611d6881611bea565b929592945050506040919091013590565b600060208284031215611d8b57600080fd5b813561095f81611bea565b60008060408385031215611da957600080fd5b8235611db481611bea565b9150611dc260208401611c51565b90509250929050565b60008060408385031215611dde57600080fd5b50508035926020909101359150565b600060208284031215611dff57600080fd5b61095f82611c51565b600060208284031215611e1a57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611e5a5781516001600160a01b031687529582019590820190600101611e35565b509495945050505050565b604080825283519082018190526000906020906060840190828701845b82811015611e9e57815184529284019290840190600101611e82565b50505083810382850152611eb28186611e21565b9695505050505050565b60008060408385031215611ecf57600080fd5b8235611eda81611bea565b91506020830135611eea81611bea565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611f5357611f53611f2b565b5060010190565b808201808211156107a9576107a9611f2b565b80820281158282048414176107a9576107a9611f2b565b600082611fa157634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156107a9576107a9611f2b565b600060208284031215611fcb57600080fd5b815161095f81611bea565b85815284602082015260a060408201526000611ff560a0830186611e21565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122091052b5f933ce6dbe11d3c064609b9b721fb040453a2444eca2a58a62ddf7f9264736f6c63430008120033

Deployed Bytecode Sourcemap

4708:10443:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6072:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6072:54:0;;;;;;;;7206:80;;;;;;;;;;-1:-1:-1;7278:5:0;;;;;;;;;;;;-1:-1:-1;;;7278:5:0;;;;7206:80;;;;;;;:::i;7628:216::-;;;;;;;;;;-1:-1:-1;7628:216:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;7628:216:0;1344:187:1;6936:88:0;;;;;;;;;;-1:-1:-1;7009:12:0;;6936:88;;14426:264;;;;;;;;;;-1:-1:-1;14426:264:0;;;;;:::i;:::-;;:::i;:::-;;8146:370;;;;;;;;;;-1:-1:-1;8146:370:0;;;;;:::i;:::-;;:::i;2338:103::-;;;;;;;;;;-1:-1:-1;2338:103:0;;;;;:::i;:::-;2393:4;2428:5;-1:-1:-1;;;;;2417:16:0;;;2428:5;;2417:16;;2338:103;7030:80;;;;;;;;;;-1:-1:-1;7030:80:0;;5037:1;3884:36:1;;3872:2;3857:18;7030:80:0;3742:184:1;12457:121:0;;;;;;;;;;-1:-1:-1;12457:121:0;;;;;:::i;:::-;;:::i;7852:122::-;;;;;;;;;;-1:-1:-1;7852:122:0;;;;;:::i;:::-;;:::i;5110:61::-;;;;;;;;;;;;;;;;12999:212;;;;;;;;;;-1:-1:-1;12999:212:0;;;;;:::i;:::-;;:::i;6035:30::-;;;;;;;;;;-1:-1:-1;6035:30:0;;;;-1:-1:-1;;;6035:30:0;;;;;;7376:105;;;;;;;;;;-1:-1:-1;7376:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7460:18:0;7442:7;7460:18;;;:9;:18;;;;;;;7376:105;2447:131;;;;;;;;;;;;;:::i;5178:57::-;;;;;;;;;;;;;;;;12358:91;;;;;;;;;;-1:-1:-1;12358:91:0;;;;;:::i;:::-;;:::i;12586:206::-;;;;;;;;;;-1:-1:-1;12586:206:0;;;;;:::i;:::-;;:::i;14698:121::-;;;;;;;;;;-1:-1:-1;14698:121:0;;;;;:::i;:::-;;:::i;7292:78::-;;;;;;;;;;-1:-1:-1;7344:7:0;7362:5;-1:-1:-1;;;;;7362:5:0;7292:78;;;-1:-1:-1;;;;;4853:32:1;;;4835:51;;4823:2;4808:18;7292:78:0;4689:203:1;13219:120:0;;;;;;;;;;-1:-1:-1;13219:120:0;;;;;:::i;:::-;;:::i;7116:84::-;;;;;;;;;;-1:-1:-1;7190:7:0;;;;;;;;;;;;-1:-1:-1;;;7190:7:0;;;;7116:84;;5913:19;;;;;;;;;;-1:-1:-1;5913:19:0;;;;-1:-1:-1;;;;;5913:19:0;;;7982:156;;;;;;;;;;-1:-1:-1;7982:156:0;;;;;:::i;:::-;;:::i;13767:240::-;;;;;;;;;;-1:-1:-1;13767:240:0;;;;;:::i;:::-;;:::i;14015:403::-;;;;;;;;;;-1:-1:-1;14015:403:0;;;;;:::i;:::-;;:::i;13347:412::-;;;;;;;;;;-1:-1:-1;13347:412:0;;;;;:::i;:::-;;:::i;14827:321::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;11951:103::-;;;;;;;;;;;;;:::i;7487:133::-;;;;;;;;;;-1:-1:-1;7487:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7589:19:0;;;7571:7;7589:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7487:133;12213:137;;;;;;;;;;-1:-1:-1;12213:137:0;;;;;:::i;:::-;;:::i;5775:48::-;;;;;;;;;;-1:-1:-1;5775:48:0;;;;-1:-1:-1;;;;;5775:48:0;;;12062:143;;;;;;;;;;-1:-1:-1;12062:143:0;;;;;:::i;:::-;;:::i;12914:77::-;;;;;;;;;;;;;:::i;5830:46::-;;;;;;;;;;-1:-1:-1;5830:46:0;;;;-1:-1:-1;;;;;5830:46:0;;;5885:21;;;;;;;;;;-1:-1:-1;5885:21:0;;;;-1:-1:-1;;;;;5885:21:0;;;12800:106;;;;;;;;;;-1:-1:-1;12800:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;12883:15:0;12859:4;12883:15;;;:9;:15;;;;;;;;;12800:106;7628:216;7732:10;7703:4;7720:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7720:32:0;;;;;;;;;;:41;;;7777:37;7703:4;;7720:32;;7777:37;;;;7755:6;160:25:1;;148:2;133:18;;14:177;7777:37:0;;;;;;;;-1:-1:-1;7832:4:0;7628:216;;;;;:::o;14426:264::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;;;;;;;;;14531:9:::1;14526:157;14550:5;:12;14546:1;:16;14526:157;;;14608:10;14584:11;:21;14596:5;14602:1;14596:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;14584:21:0::1;-1:-1:-1::0;;;;;14584:21:0::1;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14661:10;14633:15;:25;14649:5;14655:1;14649:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14633:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14633:25:0;:38;;-1:-1:-1;;14633:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14564:3;::::1;::::0;::::1;:::i;:::-;;;;14526:157;;;;14426:264:::0;;:::o;8146:370::-;-1:-1:-1;;;;;8266:19:0;;8246:4;8266:19;;;:11;:19;;;;;;;;8286:10;8266:31;;;;;;;;-1:-1:-1;;8266:52:0;8263:186;;8368:69;;;;;;;;;;;-1:-1:-1;;;8368:69:0;;;;;;;;-1:-1:-1;;;;;8368:19:0;;-1:-1:-1;8368:19:0;;;:11;:19;;;;;8388:10;8368:31;;;;;;;;;;:69;;8404:6;;8368:35;:69::i;:::-;-1:-1:-1;;;;;8334:19:0;;;;;;:11;:19;;;;;;;;8354:10;8334:31;;;;;;;:103;8263:186;8468:40;8482:6;8490:9;8501:6;8468:13;:40::i;:::-;8461:47;;8146:370;;;;;;:::o;12457:121::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12543:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:27;;-1:-1:-1;;12543:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12457:121::o;7852:122::-;7907:4;7931:35;7939:7;-1:-1:-1;;7931:7:0;:35::i;12999:212::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;13093:12:::1;:28:::0;;;13132:10:::1;:24:::0;;;13178:25:::1;13108:13:::0;13145:11;13178:25:::1;:::i;:::-;13167:8;:36:::0;-1:-1:-1;;12999:212:0:o;2447:131::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;2520:1:::1;2504:18:::0;;-1:-1:-1;;;;;;2504:18:0::1;::::0;;2538:32:::1;::::0;4835:51:1;;;2538:32:0::1;::::0;4823:2:1;4808:18;2538:32:0::1;;;;;;;2447:131::o:0;12358:91::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;12421:11:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;12421:20:0::1;-1:-1:-1::0;;;;12421:20:0;;::::1;::::0;;;::::1;::::0;;12358:91::o;12586:206::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;12689:9:::1;12684:101;12708:5;:12;12704:1;:16;12684:101;;;12764:9;12742;:19;12752:5;12758:1;12752:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12742:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12742:19:0;:31;;-1:-1:-1;;12742:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12722:3;::::1;::::0;::::1;:::i;:::-;;;;12684:101;;14698:121:::0;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;14779:14:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;14779:32:0::1;-1:-1:-1::0;;;;14779:32:0;;::::1;::::0;;;::::1;::::0;;14698:121::o;13219:120::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;13306:13:::1;:25:::0;13219:120::o;7982:156::-;8062:4;8086:44;8100:10;8112:9;8123:6;8086:13;:44::i;13767:240::-;13845:10;13833:23;;;;:11;:23;;;;;;;;13828:63;;13767:240;:::o;13828:63::-;13987:10;;-1:-1:-1;;;;;13987:10:0;13901:16;13977:21;;;:9;:21;;;;;;13920:6;;13961:38;;13920:6;;13961:15;:38::i;:::-;13947:10;;-1:-1:-1;;;;;13947:10:0;13937:21;;;;:9;:21;;;;;:62;-1:-1:-1;;13767:240:0:o;14015:403::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;14125:5:::1;::::0;14103:18:::1;::::0;-1:-1:-1;;;;;14103:18:0;;::::1;14125:5:::0;::::1;14103:27;14099:157;;14159:18;::::0;;-1:-1:-1;;;;;14159:18:0;;::::1;14181:5;14147:31:::0;;;:11:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;14147:39:0;;::::1;::::0;;;14217:18;;;;::::1;14201:35:::0;;:15:::1;:35:::0;;;:43;;;;::::1;::::0;;14099:157:::1;14266:18;:40:::0;;-1:-1:-1;;;;;14266:40:0;;::::1;-1:-1:-1::0;;;;;;14266:40:0;;::::1;::::0;::::1;::::0;;:18:::1;14317:32:::0;;;:11:::1;:32;::::0;;;;;;;:39;;-1:-1:-1;;14317:39:0;;::::1;14266:40:::0;14317:39;;::::1;::::0;;;14367:15:::1;:36:::0;;;;;:43;;;;::::1;::::0;;::::1;::::0;;14015:403::o;13347:412::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;13454:5:::1;::::0;13430:20:::1;::::0;-1:-1:-1;;;;;13430:20:0;;::::1;13454:5:::0;::::1;13430:29;13426:163;;13488:20;::::0;;-1:-1:-1;;;;;13488:20:0;;::::1;13512:5;13476:33:::0;;;:11:::1;:33;::::0;;;;;;;:41;;-1:-1:-1;;13476:41:0;;::::1;::::0;;;13548:20;;;;::::1;13532:37:::0;;:15:::1;:37:::0;;;:45;;;;::::1;::::0;;13426:163:::1;13599:20;:44:::0;;-1:-1:-1;;;;;13599:44:0;;::::1;-1:-1:-1::0;;;;;;13599:44:0;;::::1;::::0;::::1;::::0;;:20:::1;13654:34:::0;;;:11:::1;:34;::::0;;;;;;;:41;;-1:-1:-1;;13654:41:0;;::::1;13599:44:::0;13654:41;;::::1;::::0;;;13706:15:::1;:38:::0;;;;;:45;;;;::::1;::::0;;::::1;::::0;;13347:412::o;14827:321::-;14869:16;14887;14916:23;14956:13;:20;;;;14942:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14942:35:0;;14916:61;;14993:6;14988:112;15007:13;:20;15003:24;;14988:112;;;15061:9;:27;15071:13;15085:1;15071:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15071:16:0;15061:27;;;;;;;;;;;;;15049:9;;:6;;15056:1;;15049:9;;;;;;:::i;:::-;;;;;;;;;;:39;15029:3;;;;:::i;:::-;;;;14988:112;;;;15118:6;15126:13;15110:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15110:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14827:321;;:::o;11951:103::-;12008:5;;;12000:46;;-1:-1:-1;;;;;12008:5:0;;;;12024:21;12000:46;;;;;12024:21;;12000:46;12008:5;12000:46;12024:21;12008:5;12000:46;;;;;;;;;;;;;;;;;;;;;11951:103::o;12213:137::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;12339:3:::1;12321:13;12306:12;;:28;;;;:::i;:::-;12305:37;;;;:::i;:::-;12290:12;:52:::0;-1:-1:-1;12213:137:0:o;12062:143::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;12194:3:::1;12176:13;12161:12;;:28;;;;:::i;:::-;12160:37;;;;:::i;:::-;12141:16;:56:::0;-1:-1:-1;12062:143:0:o;12914:77::-;2393:4;2428:5;-1:-1:-1;;;;;2428:5:0;2299:10;2417:16;2283:38;;;;-1:-1:-1;;;2283:38:0;;;;;;;:::i;:::-;12967:8:::1;:16:::0;;-1:-1:-1;;;;12967:16:0::1;::::0;;12914:77::o;427:190::-;513:7;549:12;541:6;;;;533:29;;;;-1:-1:-1;;;533:29:0;;;;;;;;:::i;:::-;-1:-1:-1;573:9:0;585:5;589:1;585;:5;:::i;:::-;573:17;427:190;-1:-1:-1;;;;;427:190:0:o;8524:1294::-;8641:14;;8616:4;;-1:-1:-1;;;8641:14:0;;;;8633:43;;;;-1:-1:-1;;;8633:43:0;;8573:2:1;8633:43:0;;;8555:21:1;8612:2;8592:18;;;8585:30;-1:-1:-1;;;8631:18:1;;;8624:46;8687:18;;8633:43:0;8371:340:1;8633:43:0;-1:-1:-1;;;;;8696:17:0;;;;;;:9;:17;;;;;;;;8695:18;8687:49;;;;-1:-1:-1;;;8687:49:0;;8918:2:1;8687:49:0;;;8900:21:1;8957:2;8937:18;;;8930:30;-1:-1:-1;;;8976:18:1;;;8969:48;9034:18;;8687:49:0;8716:342:1;8687:49:0;8766:4;;-1:-1:-1;;;;;8753:17:0;;;8766:4;;8753:17;;;;:39;;-1:-1:-1;8787:5:0;;-1:-1:-1;;;;;8774:18:0;;;8787:5;;8774:18;;8753:39;:69;;;;-1:-1:-1;8809:13:0;;-1:-1:-1;;;;;8796:26:0;;;8809:13;;8796:26;;8753:69;:81;;;;-1:-1:-1;8826:8:0;;-1:-1:-1;;;8826:8:0;;;;8753:81;8749:141;;;-1:-1:-1;;;;;8851:20:0;;;;;;:9;:20;;;;;:27;;-1:-1:-1;;8851:27:0;8874:4;8851:27;;;8749:141;8905:6;;;;8902:63;;;8921:41;8936:6;8944:9;8955:6;8921:14;:41::i;:::-;8914:48;;;;8902:63;8994:4;;-1:-1:-1;;;;;8981:17:0;;;8994:4;;8981:17;;;;:38;;-1:-1:-1;9015:4:0;;-1:-1:-1;;;;;9002:17:0;;;9015:4;;9002:17;;8981:38;8977:321;;;-1:-1:-1;;;;;9044:26:0;;;;;;:15;:26;;;;;;;;;:52;;;9084:12;;9074:6;:22;;9044:52;9036:106;;;;-1:-1:-1;;;9036:106:0;;9265:2:1;9036:106:0;;;9247:21:1;9304:2;9284:18;;;9277:30;9343:34;9323:18;;;9316:62;-1:-1:-1;;;9394:18:1;;;9387:39;9443:19;;9036:106:0;9063:405:1;9036:106:0;-1:-1:-1;;;;;9165:26:0;;;;;;:15;:26;;;;;;;;;:79;;-1:-1:-1;9228:16:0;;-1:-1:-1;;;;;9195:20:0;;;;;;:9;:20;;;;;;:29;;9218:6;;9195:29;:::i;:::-;:49;;9165:79;9157:129;;;;-1:-1:-1;;;9157:129:0;;9675:2:1;9157:129:0;;;9657:21:1;9714:2;9694:18;;;9687:30;9753:34;9733:18;;;9726:62;-1:-1:-1;;;9804:18:1;;;9797:35;9849:19;;9157:129:0;9473:401:1;9157:129:0;9313:16;:14;:16::i;:::-;9310:35;;;9332:10;:8;:10::i;:::-;9377:53;;;;;;;;;;;-1:-1:-1;;;9377:53:0;;;;;;;;-1:-1:-1;;;;;9377:17:0;;-1:-1:-1;9377:17:0;;;:9;:17;;;;;;;;:53;;9399:6;;9377:21;:53::i;:::-;-1:-1:-1;;;;;9357:17:0;;;;;;:9;:17;;;;;:73;;;;9468:32;9367:6;9490:9;9468:13;:32::i;:::-;:67;;9529:6;9468:67;;;9503:23;9511:6;9519;9503:7;:23::i;:::-;-1:-1:-1;;;;;9550:20:0;;;;;;:9;:20;;;;;;9443:92;;-1:-1:-1;9550:25:0;:46;;;;-1:-1:-1;9592:4:0;;-1:-1:-1;;;;;9579:17:0;;;9592:4;;9579:17;;9550:46;9546:108;;;9613:13;:29;;;;;;;-1:-1:-1;9613:29:0;;;;;;;;-1:-1:-1;;;;;;9613:29:0;-1:-1:-1;;;;;9613:29:0;;;;;9546:108;-1:-1:-1;;;;;9687:20:0;;;;;;:9;:20;;;;;;:40;;9712:14;9687:24;:40::i;:::-;-1:-1:-1;;;;;9664:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9745:43;;;;;;;;;;9773:14;160:25:1;;148:2;133:18;;14:177;9745:43:0;;;;;;;;-1:-1:-1;9806:4:0;;8524:1294;-1:-1:-1;;;;8524:1294:0:o;285:136::-;343:7;370:43;374:1;377;370:43;;;;;;;;;;;;;;;;;:3;:43::i;9826:330::-;9956:53;;;;;;;;;;;-1:-1:-1;;;9956:53:0;;;;;;;;-1:-1:-1;;;;;9956:17:0;;9919:4;9956:17;;;:9;:17;;;;;;;:53;;9978:6;;9956:21;:53::i;:::-;-1:-1:-1;;;;;9936:17:0;;;;;;;:9;:17;;;;;;:73;;;;10043:20;;;;;;;:32;;10068:6;10043:24;:32::i;:::-;-1:-1:-1;;;;;10020:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10091:35;;;;;;;;;;10119:6;160:25:1;;148:2;133:18;;14:177;10091:35:0;;;;;;;;-1:-1:-1;10144:4:0;9826:330;;;;;:::o;10652:197::-;10739:4;;10701;;-1:-1:-1;;;;;10739:4:0;10725:10;:18;;;;:38;;-1:-1:-1;10757:6:0;;;;10756:7;10725:38;:62;;;;-1:-1:-1;10776:11:0;;-1:-1:-1;;;10776:11:0;;;;10725:62;:116;;;;-1:-1:-1;10828:13:0;;10818:4;10800:24;;;;:9;:24;;;;;;:41;;10725:116;10718:123;;10652:197;:::o;10857:1086::-;6173:6;:13;;-1:-1:-1;;6173:13:0;6182:4;6173:13;;;10955:4:::1;-1:-1:-1::0;10937:24:0;;;:9:::1;:24;::::0;;;;;;;;10998:16;;11012:1:::1;10998:16:::0;;;;;::::1;::::0;;10937:24;;-1:-1:-1;10998:16:0;;;;::::1;::::0;10937:24;10998:16:::1;::::0;::::1;;::::0;-1:-1:-1;10998:16:0::1;10974:40;;11043:4;11025;11030:1;11025:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11025:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11069:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;11069:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;11025:7;;11069:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11059:4;11064:1;11059:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11059:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11095:6:::1;::::0;:196:::1;::::0;-1:-1:-1;;;11095:196:0;;:6;::::1;::::0;:57:::1;::::0;:196:::1;::::0;11167:20;;11095:6:::1;::::0;11218:4;;11245::::1;::::0;11265:15:::1;::::0;11095:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11304:17;11324:21;11304:41;;11356:24;11383:39;11413:8;;11383:25;11397:10;;11383:9;:13;;:25;;;;:::i;:::-;:29:::0;::::1;:39::i;:::-;11356:66;;11433:26;11462:41;11494:8;;11462:27;11476:12;;11462:9;:13;;:27;;;;:::i;:41::-;11577:20;::::0;11569:77:::1;::::0;11433:70;;-1:-1:-1;11519:21:0::1;::::0;-1:-1:-1;;;;;11577:20:0;;::::1;::::0;11636:5:::1;::::0;11433:70;;11519:21;11569:77;11519:21;11569:77;11433:70;11577:20;11636:5;11569:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11518:128;;;11665:16;11657:69;;;::::0;-1:-1:-1;;;11657:69:0;;11134:2:1;11657:69:0::1;::::0;::::1;11116:21:1::0;11173:2;11153:18;;;11146:30;11212:34;11192:18;;;11185:62;-1:-1:-1;;;11263:18:1;;;11256:38;11311:19;;11657:69:0::1;10932:404:1::0;11657:69:0::1;11794:18;::::0;11786:73:::1;::::0;11738:19:::1;::::0;-1:-1:-1;;;;;11794:18:0::1;::::0;11849:5:::1;::::0;11826:16;;11738:19;11786:73;11738:19;11786:73;11826:16;11794:18;11849:5;11786:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11737:122;;;11878:14;11870:65;;;::::0;-1:-1:-1;;;11870:65:0;;11543:2:1;11870:65:0::1;::::0;::::1;11525:21:1::0;11582:2;11562:18;;;11555:30;11621:34;11601:18;;;11594:62;-1:-1:-1;;;11672:18:1;;;11665:36;11718:19;;11870:65:0::1;11341:402:1::0;11870:65:0::1;-1:-1:-1::0;;6191:6:0;:14;;-1:-1:-1;;6191:14:0;;;-1:-1:-1;;;;;10857:1086:0:o;10164:143::-;-1:-1:-1;;;;;10262:17:0;;10236:4;10262:17;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;10283:15:0;;;;;;:11;:15;;;;;;;;10262:36;10260:39;;10164:143;-1:-1:-1;;;10164:143:0:o;10315:329::-;10382:7;10402:17;10422:40;10447:14;;10422:20;10433:8;;10422:6;:10;;:20;;;;:::i;:40::-;10518:4;10500:24;;;;:9;:24;;;;;;10402:60;;-1:-1:-1;10500:39:0;;10402:60;10500:28;:39::i;:::-;10491:4;10473:24;;;;:9;:24;;;;;;;:66;;;;10555:42;;-1:-1:-1;;;;;10555:42:0;;;;;;;10587:9;160:25:1;;148:2;133:18;;14:177;10555:42:0;;;;;;;;10615:21;:6;10626:9;10615:10;:21::i;:::-;10608:28;10315:329;-1:-1:-1;;;;10315:329:0:o;100:179::-;158:7;;190:5;194:1;190;:5;:::i;:::-;178:17;;219:1;214;:6;;206:46;;;;-1:-1:-1;;;206:46:0;;11950:2:1;206:46:0;;;11932:21:1;11989:2;11969:18;;;11962:30;12028:29;12008:18;;;12001:57;12075:18;;206:46:0;11748:351:1;623:246:0;681:7;705:1;710;705:6;701:47;;-1:-1:-1;735:1:0;728:8;;701:47;758:9;770:5;774:1;770;:5;:::i;:::-;758:17;-1:-1:-1;803:1:0;794:5;798:1;758:17;794:5;:::i;:::-;:10;786:56;;;;-1:-1:-1;;;786:56:0;;12306:2:1;786:56:0;;;12288:21:1;12345:2;12325:18;;;12318:30;12384:34;12364:18;;;12357:62;-1:-1:-1;;;12435:18:1;;;12428:31;12476:19;;786:56:0;12104:397:1;875:132:0;933:7;960:39;964:1;967;960:39;;;;;;;;;;;;;;;;;1099:7;1134:12;1127:5;1119:28;;;;-1:-1:-1;;;1119:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1158:9:0;1170:5;1174:1;1170;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:134;953:20;;982:31;953:20;982:31;:::i;:::-;885:134;;;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:127::-;1597:10;1592:3;1588:20;1585:1;1578:31;1628:4;1625:1;1618:15;1652:4;1649:1;1642:15;1668:160;1733:20;;1789:13;;1782:21;1772:32;;1762:60;;1818:1;1815;1808:12;1833:1191;1923:6;1931;1984:2;1972:9;1963:7;1959:23;1955:32;1952:52;;;2000:1;1997;1990:12;1952:52;2040:9;2027:23;2069:18;2110:2;2102:6;2099:14;2096:34;;;2126:1;2123;2116:12;2096:34;2164:6;2153:9;2149:22;2139:32;;2209:7;2202:4;2198:2;2194:13;2190:27;2180:55;;2231:1;2228;2221:12;2180:55;2267:2;2254:16;2289:4;2312:2;2308;2305:10;2302:36;;;2318:18;;:::i;:::-;2364:2;2361:1;2357:10;2396:2;2390:9;2459:2;2455:7;2450:2;2446;2442:11;2438:25;2430:6;2426:38;2514:6;2502:10;2499:22;2494:2;2482:10;2479:18;2476:46;2473:72;;;2525:18;;:::i;:::-;2561:2;2554:22;2611:18;;;2645:15;;;;-1:-1:-1;2687:11:1;;;2683:20;;;2715:19;;;2712:39;;;2747:1;2744;2737:12;2712:39;2771:11;;;;2791:148;2807:6;2802:3;2799:15;2791:148;;;2873:23;2892:3;2873:23;:::i;:::-;2861:36;;2824:12;;;;2917;;;;2791:148;;;2958:6;-1:-1:-1;2983:35:1;;-1:-1:-1;2999:18:1;;;2983:35;:::i;:::-;2973:45;;;;;;1833:1191;;;;;:::o;3029:456::-;3106:6;3114;3122;3175:2;3163:9;3154:7;3150:23;3146:32;3143:52;;;3191:1;3188;3181:12;3143:52;3230:9;3217:23;3249:31;3274:5;3249:31;:::i;:::-;3299:5;-1:-1:-1;3356:2:1;3341:18;;3328:32;3369:33;3328:32;3369:33;:::i;:::-;3029:456;;3421:7;;-1:-1:-1;;;3475:2:1;3460:18;;;;3447:32;;3029:456::o;3490:247::-;3549:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:52;;;3618:1;3615;3608:12;3570:52;3657:9;3644:23;3676:31;3701:5;3676:31;:::i;3931:315::-;3996:6;4004;4057:2;4045:9;4036:7;4032:23;4028:32;4025:52;;;4073:1;4070;4063:12;4025:52;4112:9;4099:23;4131:31;4156:5;4131:31;:::i;:::-;4181:5;-1:-1:-1;4205:35:1;4236:2;4221:18;;4205:35;:::i;:::-;4195:45;;3931:315;;;;;:::o;4251:248::-;4319:6;4327;4380:2;4368:9;4359:7;4355:23;4351:32;4348:52;;;4396:1;4393;4386:12;4348:52;-1:-1:-1;;4419:23:1;;;4489:2;4474:18;;;4461:32;;-1:-1:-1;4251:248:1:o;4504:180::-;4560:6;4613:2;4601:9;4592:7;4588:23;4584:32;4581:52;;;4629:1;4626;4619:12;4581:52;4652:26;4668:9;4652:26;:::i;4897:180::-;4956:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:52;;;5025:1;5022;5015:12;4977:52;-1:-1:-1;5048:23:1;;4897:180;-1:-1:-1;4897:180:1:o;5082:461::-;5135:3;5173:5;5167:12;5200:6;5195:3;5188:19;5226:4;5255:2;5250:3;5246:12;5239:19;;5292:2;5285:5;5281:14;5313:1;5323:195;5337:6;5334:1;5331:13;5323:195;;;5402:13;;-1:-1:-1;;;;;5398:39:1;5386:52;;5458:12;;;;5493:15;;;;5434:1;5352:9;5323:195;;;-1:-1:-1;5534:3:1;;5082:461;-1:-1:-1;;;;;5082:461:1:o;5548:806::-;5816:2;5828:21;;;5898:13;;5801:18;;;5920:22;;;5768:4;;5995;;5973:2;5958:18;;;6022:15;;;5768:4;6065:169;6079:6;6076:1;6073:13;6065:169;;;6140:13;;6128:26;;6174:12;;;;6209:15;;;;6101:1;6094:9;6065:169;;;6069:3;;;6279:9;6274:3;6270:19;6265:2;6254:9;6250:18;6243:47;6307:41;6344:3;6336:6;6307:41;:::i;:::-;6299:49;5548:806;-1:-1:-1;;;;;;5548:806:1:o;6359:388::-;6427:6;6435;6488:2;6476:9;6467:7;6463:23;6459:32;6456:52;;;6504:1;6501;6494:12;6456:52;6543:9;6530:23;6562:31;6587:5;6562:31;:::i;:::-;6612:5;-1:-1:-1;6669:2:1;6654:18;;6641:32;6682:33;6641:32;6682:33;:::i;:::-;6734:7;6724:17;;;6359:388;;;;;:::o;6975:329::-;7177:2;7159:21;;;7216:1;7196:18;;;7189:29;-1:-1:-1;;;7249:2:1;7234:18;;7227:36;7295:2;7280:18;;6975:329::o;7309:127::-;7370:10;7365:3;7361:20;7358:1;7351:31;7401:4;7398:1;7391:15;7425:4;7422:1;7415:15;7441:127;7502:10;7497:3;7493:20;7490:1;7483:31;7533:4;7530:1;7523:15;7557:4;7554:1;7547:15;7573:135;7612:3;7633:17;;;7630:43;;7653:18;;:::i;:::-;-1:-1:-1;7700:1:1;7689:13;;7573:135::o;7713:125::-;7778:9;;;7799:10;;;7796:36;;;7812:18;;:::i;7843:168::-;7916:9;;;7947;;7964:15;;;7958:22;;7944:37;7934:71;;7985:18;;:::i;8016:217::-;8056:1;8082;8072:132;;8126:10;8121:3;8117:20;8114:1;8107:31;8161:4;8158:1;8151:15;8189:4;8186:1;8179:15;8072:132;-1:-1:-1;8218:9:1;;8016:217::o;8238:128::-;8305:9;;;8326:11;;;8323:37;;;8340:18;;:::i;9879:251::-;9949:6;10002:2;9990:9;9981:7;9977:23;9973:32;9970:52;;;10018:1;10015;10008:12;9970:52;10050:9;10044:16;10069:31;10094:5;10069:31;:::i;10135:582::-;10434:6;10423:9;10416:25;10477:6;10472:2;10461:9;10457:18;10450:34;10520:3;10515:2;10504:9;10500:18;10493:31;10397:4;10541:57;10593:3;10582:9;10578:19;10570:6;10541:57;:::i;:::-;-1:-1:-1;;;;;10634:32:1;;;;10629:2;10614:18;;10607:60;-1:-1:-1;10698:3:1;10683:19;10676:35;10533:65;10135:582;-1:-1:-1;;;10135:582:1:o

Swarm Source

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